@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.
- package/dist/adaptercloud/AdapterCloudRoot.js +65 -121
- package/dist/adaptercloud/AdapterCloudRoot.js.map +1 -1
- package/dist/adaptercloud/AdapterCloudRoutes.js +70 -182
- package/dist/adaptercloud/AdapterCloudRoutes.js.map +1 -1
- package/dist/adaptercloud/components/DataState.js +42 -0
- package/dist/adaptercloud/components/DataState.js.map +1 -0
- package/dist/adaptercloud/components/SeverityBadge.js +12 -0
- package/dist/adaptercloud/components/SeverityBadge.js.map +1 -0
- package/dist/adaptercloud/components/StatusBadge.js +43 -44
- package/dist/adaptercloud/components/StatusBadge.js.map +1 -1
- package/dist/adaptercloud/context/AdapterCloudContext.js +22 -30
- package/dist/adaptercloud/context/AdapterCloudContext.js.map +1 -1
- package/dist/adaptercloud/hooks/useAdapterCloudApi.js +397 -194
- package/dist/adaptercloud/hooks/useAdapterCloudApi.js.map +1 -1
- package/dist/adaptercloud/index.js +1 -0
- package/dist/adaptercloud/pages/OverviewPage.js +334 -0
- package/dist/adaptercloud/pages/OverviewPage.js.map +1 -0
- package/dist/adaptercloud/pages/adapters/AdapterDetailPage.js +187 -0
- package/dist/adaptercloud/pages/adapters/AdapterDetailPage.js.map +1 -0
- package/dist/adaptercloud/pages/adapters/AdapterFormPage.js +278 -0
- package/dist/adaptercloud/pages/adapters/AdapterFormPage.js.map +1 -0
- package/dist/adaptercloud/pages/adapters/AdaptersListPage.js +172 -0
- package/dist/adaptercloud/pages/adapters/AdaptersListPage.js.map +1 -0
- package/dist/adaptercloud/pages/connections/ConnectionDetailPage.js +247 -0
- package/dist/adaptercloud/pages/connections/ConnectionDetailPage.js.map +1 -0
- package/dist/adaptercloud/pages/connections/ConnectionFormPage.js +271 -0
- package/dist/adaptercloud/pages/connections/ConnectionFormPage.js.map +1 -0
- package/dist/adaptercloud/pages/connections/ConnectionsListPage.js +167 -0
- package/dist/adaptercloud/pages/connections/ConnectionsListPage.js.map +1 -0
- package/dist/adaptercloud/pages/costs/CostsPage.js +169 -0
- package/dist/adaptercloud/pages/costs/CostsPage.js.map +1 -0
- package/dist/adaptercloud/pages/drift/DriftListPage.js +132 -0
- package/dist/adaptercloud/pages/drift/DriftListPage.js.map +1 -0
- package/dist/adaptercloud/pages/policies/PoliciesListPage.js +171 -0
- package/dist/adaptercloud/pages/policies/PoliciesListPage.js.map +1 -0
- package/dist/adaptercloud/pages/policies/PolicyDetailPage.js +185 -0
- package/dist/adaptercloud/pages/policies/PolicyDetailPage.js.map +1 -0
- package/dist/adaptercloud/pages/policies/PolicyFormPage.js +215 -0
- package/dist/adaptercloud/pages/policies/PolicyFormPage.js.map +1 -0
- package/dist/adaptercloud/pages/resources/ResourceDetailPage.js +207 -0
- package/dist/adaptercloud/pages/resources/ResourceDetailPage.js.map +1 -0
- package/dist/adaptercloud/pages/resources/ResourcesListPage.js +182 -0
- package/dist/adaptercloud/pages/resources/ResourcesListPage.js.map +1 -0
- package/dist/adaptercloud/pages/sync-runs/SyncRunsListPage.js +196 -0
- package/dist/adaptercloud/pages/sync-runs/SyncRunsListPage.js.map +1 -0
- package/dist/adaptercloud/pages/violations/ViolationsListPage.js +258 -0
- package/dist/adaptercloud/pages/violations/ViolationsListPage.js.map +1 -0
- package/dist/adaptercloud/store/adaptercloudStore.js +1 -7
- package/dist/adaptercloud/store/adaptercloudStore.js.map +1 -1
- package/dist/adaptercloud/utils/domain.js +105 -0
- package/dist/adaptercloud/utils/domain.js.map +1 -0
- package/dist/adaptercloud/utils/formatters.js +1 -12
- package/dist/adaptercloud/utils/formatters.js.map +1 -1
- package/dist/index.js +5 -4
- package/package.json +1 -1
- package/dist/adaptercloud/components/InvestmentCard.js +0 -98
- package/dist/adaptercloud/components/InvestmentCard.js.map +0 -1
- package/dist/adaptercloud/components/RatingDisplay.js +0 -35
- package/dist/adaptercloud/components/RatingDisplay.js.map +0 -1
- package/dist/adaptercloud/mocks/data.js +0 -1517
- package/dist/adaptercloud/mocks/data.js.map +0 -1
- package/dist/adaptercloud/mocks/users.js +0 -34
- package/dist/adaptercloud/mocks/users.js.map +0 -1
- package/dist/adaptercloud/pages/HomePage.js +0 -934
- package/dist/adaptercloud/pages/HomePage.js.map +0 -1
- package/dist/adaptercloud/pages/admin/AdminAnalyticsPage.js +0 -653
- package/dist/adaptercloud/pages/admin/AdminAnalyticsPage.js.map +0 -1
- package/dist/adaptercloud/pages/admin/AdminDashboard.js +0 -665
- package/dist/adaptercloud/pages/admin/AdminDashboard.js.map +0 -1
- package/dist/adaptercloud/pages/admin/AdminFinancialPage.js +0 -426
- package/dist/adaptercloud/pages/admin/AdminFinancialPage.js.map +0 -1
- package/dist/adaptercloud/pages/admin/AdminOrdersPage.js +0 -665
- package/dist/adaptercloud/pages/admin/AdminOrdersPage.js.map +0 -1
- package/dist/adaptercloud/pages/admin/AdminProfilePage.js +0 -261
- package/dist/adaptercloud/pages/admin/AdminProfilePage.js.map +0 -1
- package/dist/adaptercloud/pages/admin/AdminSettingsPage.js +0 -663
- package/dist/adaptercloud/pages/admin/AdminSettingsPage.js.map +0 -1
- package/dist/adaptercloud/pages/admin/CartManagementPage.js +0 -874
- package/dist/adaptercloud/pages/admin/CartManagementPage.js.map +0 -1
- package/dist/adaptercloud/pages/admin/UserManagementPage.js +0 -898
- package/dist/adaptercloud/pages/admin/UserManagementPage.js.map +0 -1
- package/dist/adaptercloud/pages/cart-owner/AnalyticsDashboard.js +0 -840
- package/dist/adaptercloud/pages/cart-owner/AnalyticsDashboard.js.map +0 -1
- package/dist/adaptercloud/pages/cart-owner/BusinessSettingsPage.js +0 -714
- package/dist/adaptercloud/pages/cart-owner/BusinessSettingsPage.js.map +0 -1
- package/dist/adaptercloud/pages/cart-owner/CartOwnerDashboard.js +0 -788
- package/dist/adaptercloud/pages/cart-owner/CartOwnerDashboard.js.map +0 -1
- package/dist/adaptercloud/pages/cart-owner/CartOwnerProfilePage.js +0 -888
- package/dist/adaptercloud/pages/cart-owner/CartOwnerProfilePage.js.map +0 -1
- package/dist/adaptercloud/pages/cart-owner/CartServiceConfigPage.js +0 -634
- package/dist/adaptercloud/pages/cart-owner/CartServiceConfigPage.js.map +0 -1
- package/dist/adaptercloud/pages/cart-owner/InventoryManagementPage.js +0 -907
- package/dist/adaptercloud/pages/cart-owner/InventoryManagementPage.js.map +0 -1
- package/dist/adaptercloud/pages/cart-owner/OrderManagementPage.js +0 -875
- package/dist/adaptercloud/pages/cart-owner/OrderManagementPage.js.map +0 -1
- package/dist/adaptercloud/pages/cart-owner/StaffManagementPage.js +0 -827
- package/dist/adaptercloud/pages/cart-owner/StaffManagementPage.js.map +0 -1
- package/dist/adaptercloud/pages/common/HelpSupportPage.js +0 -1329
- package/dist/adaptercloud/pages/common/HelpSupportPage.js.map +0 -1
- package/dist/adaptercloud/pages/common/NotificationCenterPage.js +0 -671
- package/dist/adaptercloud/pages/common/NotificationCenterPage.js.map +0 -1
- package/dist/adaptercloud/pages/common/SettingsPage.js +0 -982
- package/dist/adaptercloud/pages/common/SettingsPage.js.map +0 -1
- package/dist/adaptercloud/pages/customer/BookingDetailsPage.js +0 -596
- package/dist/adaptercloud/pages/customer/BookingDetailsPage.js.map +0 -1
- package/dist/adaptercloud/pages/customer/CartDetailPage.js +0 -623
- package/dist/adaptercloud/pages/customer/CartDetailPage.js.map +0 -1
- package/dist/adaptercloud/pages/customer/CartDiscoveryPage.js +0 -552
- package/dist/adaptercloud/pages/customer/CartDiscoveryPage.js.map +0 -1
- package/dist/adaptercloud/pages/customer/CheckoutPage.js +0 -534
- package/dist/adaptercloud/pages/customer/CheckoutPage.js.map +0 -1
- package/dist/adaptercloud/pages/customer/CustomerDashboard.js +0 -525
- package/dist/adaptercloud/pages/customer/CustomerDashboard.js.map +0 -1
- package/dist/adaptercloud/pages/customer/CustomerProfilePage.js +0 -623
- package/dist/adaptercloud/pages/customer/CustomerProfilePage.js.map +0 -1
- package/dist/adaptercloud/pages/customer/DirectServiceBookingPage.js +0 -629
- package/dist/adaptercloud/pages/customer/DirectServiceBookingPage.js.map +0 -1
- package/dist/adaptercloud/pages/customer/FavoritesPage.js +0 -480
- package/dist/adaptercloud/pages/customer/FavoritesPage.js.map +0 -1
- package/dist/adaptercloud/pages/customer/OrderHistoryPage.js +0 -444
- package/dist/adaptercloud/pages/customer/OrderHistoryPage.js.map +0 -1
- package/dist/adaptercloud/pages/customer/OrderTrackingPage.js +0 -391
- package/dist/adaptercloud/pages/customer/OrderTrackingPage.js.map +0 -1
- package/dist/adaptercloud/pages/customer/PaymentMethodsPage.js +0 -504
- package/dist/adaptercloud/pages/customer/PaymentMethodsPage.js.map +0 -1
- package/dist/adaptercloud/pages/customer/ReviewsPage.js +0 -609
- package/dist/adaptercloud/pages/customer/ReviewsPage.js.map +0 -1
- package/dist/adaptercloud/pages/customer/SavedAddressesPage.js +0 -459
- package/dist/adaptercloud/pages/customer/SavedAddressesPage.js.map +0 -1
- package/dist/adaptercloud/pages/investor/InvestmentDetailsPage.js +0 -851
- package/dist/adaptercloud/pages/investor/InvestmentDetailsPage.js.map +0 -1
- package/dist/adaptercloud/pages/investor/InvestmentOpportunitiesPage.js +0 -942
- package/dist/adaptercloud/pages/investor/InvestmentOpportunitiesPage.js.map +0 -1
- package/dist/adaptercloud/pages/investor/InvestorAnalyticsPage.js +0 -683
- package/dist/adaptercloud/pages/investor/InvestorAnalyticsPage.js.map +0 -1
- package/dist/adaptercloud/pages/investor/InvestorDashboard.js +0 -452
- package/dist/adaptercloud/pages/investor/InvestorDashboard.js.map +0 -1
- package/dist/adaptercloud/pages/investor/InvestorInvestmentsPage.js +0 -402
- package/dist/adaptercloud/pages/investor/InvestorInvestmentsPage.js.map +0 -1
- package/dist/adaptercloud/pages/investor/InvestorPortfolioPage.js +0 -571
- package/dist/adaptercloud/pages/investor/InvestorPortfolioPage.js.map +0 -1
- package/dist/adaptercloud/pages/investor/InvestorProfilePage.js +0 -1067
- package/dist/adaptercloud/pages/investor/InvestorProfilePage.js.map +0 -1
- package/dist/adaptercloud/pages/worker/TaskDetailsPage.js +0 -526
- package/dist/adaptercloud/pages/worker/TaskDetailsPage.js.map +0 -1
- package/dist/adaptercloud/pages/worker/WorkerDashboard.js +0 -659
- package/dist/adaptercloud/pages/worker/WorkerDashboard.js.map +0 -1
- package/dist/adaptercloud/pages/worker/WorkerOrdersPage.js +0 -678
- package/dist/adaptercloud/pages/worker/WorkerOrdersPage.js.map +0 -1
- package/dist/adaptercloud/pages/worker/WorkerProfilePage.js +0 -689
- package/dist/adaptercloud/pages/worker/WorkerProfilePage.js.map +0 -1
- package/dist/adaptercloud/pages/worker/WorkerSchedulePage.js +0 -582
- 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"}
|