@burdenoff/microfe-adaptercloud 2026.614.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/README.md +12 -0
- package/dist/adaptercloud/AdapterCloudRoot.js +177 -0
- package/dist/adaptercloud/AdapterCloudRoot.js.map +1 -0
- package/dist/adaptercloud/AdapterCloudRoutes.js +215 -0
- package/dist/adaptercloud/AdapterCloudRoutes.js.map +1 -0
- package/dist/adaptercloud/components/EmptyState.js +28 -0
- package/dist/adaptercloud/components/EmptyState.js.map +1 -0
- package/dist/adaptercloud/components/InvestmentCard.js +96 -0
- package/dist/adaptercloud/components/InvestmentCard.js.map +1 -0
- package/dist/adaptercloud/components/MetricsCard.js +46 -0
- package/dist/adaptercloud/components/MetricsCard.js.map +1 -0
- package/dist/adaptercloud/components/PageLayout.js +26 -0
- package/dist/adaptercloud/components/PageLayout.js.map +1 -0
- package/dist/adaptercloud/components/RatingDisplay.js +35 -0
- package/dist/adaptercloud/components/RatingDisplay.js.map +1 -0
- package/dist/adaptercloud/components/StatusBadge.js +45 -0
- package/dist/adaptercloud/components/StatusBadge.js.map +1 -0
- package/dist/adaptercloud/context/AdapterCloudContext.js +93 -0
- package/dist/adaptercloud/context/AdapterCloudContext.js.map +1 -0
- package/dist/adaptercloud/context/index.js +1 -0
- package/dist/adaptercloud/hooks/useAdapterCloudApi.js +223 -0
- package/dist/adaptercloud/hooks/useAdapterCloudApi.js.map +1 -0
- package/dist/adaptercloud/index.js +7 -0
- package/dist/adaptercloud/mocks/data.js +1517 -0
- package/dist/adaptercloud/mocks/data.js.map +1 -0
- package/dist/adaptercloud/mocks/users.js +34 -0
- package/dist/adaptercloud/mocks/users.js.map +1 -0
- package/dist/adaptercloud/pages/HomePage.js +921 -0
- package/dist/adaptercloud/pages/HomePage.js.map +1 -0
- package/dist/adaptercloud/pages/admin/AdminAnalyticsPage.js +645 -0
- package/dist/adaptercloud/pages/admin/AdminAnalyticsPage.js.map +1 -0
- package/dist/adaptercloud/pages/admin/AdminDashboard.js +639 -0
- package/dist/adaptercloud/pages/admin/AdminDashboard.js.map +1 -0
- package/dist/adaptercloud/pages/admin/AdminFinancialPage.js +421 -0
- package/dist/adaptercloud/pages/admin/AdminFinancialPage.js.map +1 -0
- package/dist/adaptercloud/pages/admin/AdminOrdersPage.js +660 -0
- package/dist/adaptercloud/pages/admin/AdminOrdersPage.js.map +1 -0
- package/dist/adaptercloud/pages/admin/AdminProfilePage.js +259 -0
- package/dist/adaptercloud/pages/admin/AdminProfilePage.js.map +1 -0
- package/dist/adaptercloud/pages/admin/AdminSettingsPage.js +649 -0
- package/dist/adaptercloud/pages/admin/AdminSettingsPage.js.map +1 -0
- package/dist/adaptercloud/pages/admin/CartManagementPage.js +869 -0
- package/dist/adaptercloud/pages/admin/CartManagementPage.js.map +1 -0
- package/dist/adaptercloud/pages/admin/UserManagementPage.js +893 -0
- package/dist/adaptercloud/pages/admin/UserManagementPage.js.map +1 -0
- package/dist/adaptercloud/pages/cart-owner/AnalyticsDashboard.js +834 -0
- package/dist/adaptercloud/pages/cart-owner/AnalyticsDashboard.js.map +1 -0
- package/dist/adaptercloud/pages/cart-owner/BusinessSettingsPage.js +700 -0
- package/dist/adaptercloud/pages/cart-owner/BusinessSettingsPage.js.map +1 -0
- package/dist/adaptercloud/pages/cart-owner/CartOwnerDashboard.js +760 -0
- package/dist/adaptercloud/pages/cart-owner/CartOwnerDashboard.js.map +1 -0
- package/dist/adaptercloud/pages/cart-owner/CartOwnerProfilePage.js +886 -0
- package/dist/adaptercloud/pages/cart-owner/CartOwnerProfilePage.js.map +1 -0
- package/dist/adaptercloud/pages/cart-owner/CartServiceConfigPage.js +631 -0
- package/dist/adaptercloud/pages/cart-owner/CartServiceConfigPage.js.map +1 -0
- package/dist/adaptercloud/pages/cart-owner/InventoryManagementPage.js +913 -0
- package/dist/adaptercloud/pages/cart-owner/InventoryManagementPage.js.map +1 -0
- package/dist/adaptercloud/pages/cart-owner/OrderManagementPage.js +881 -0
- package/dist/adaptercloud/pages/cart-owner/OrderManagementPage.js.map +1 -0
- package/dist/adaptercloud/pages/cart-owner/StaffManagementPage.js +833 -0
- package/dist/adaptercloud/pages/cart-owner/StaffManagementPage.js.map +1 -0
- package/dist/adaptercloud/pages/common/HelpSupportPage.js +1325 -0
- package/dist/adaptercloud/pages/common/HelpSupportPage.js.map +1 -0
- package/dist/adaptercloud/pages/common/NotificationCenterPage.js +665 -0
- package/dist/adaptercloud/pages/common/NotificationCenterPage.js.map +1 -0
- package/dist/adaptercloud/pages/common/SettingsPage.js +964 -0
- package/dist/adaptercloud/pages/common/SettingsPage.js.map +1 -0
- package/dist/adaptercloud/pages/customer/BookingDetailsPage.js +593 -0
- package/dist/adaptercloud/pages/customer/BookingDetailsPage.js.map +1 -0
- package/dist/adaptercloud/pages/customer/CartDetailPage.js +620 -0
- package/dist/adaptercloud/pages/customer/CartDetailPage.js.map +1 -0
- package/dist/adaptercloud/pages/customer/CartDiscoveryPage.js +547 -0
- package/dist/adaptercloud/pages/customer/CartDiscoveryPage.js.map +1 -0
- package/dist/adaptercloud/pages/customer/CheckoutPage.js +532 -0
- package/dist/adaptercloud/pages/customer/CheckoutPage.js.map +1 -0
- package/dist/adaptercloud/pages/customer/CustomerDashboard.js +496 -0
- package/dist/adaptercloud/pages/customer/CustomerDashboard.js.map +1 -0
- package/dist/adaptercloud/pages/customer/CustomerProfilePage.js +621 -0
- package/dist/adaptercloud/pages/customer/CustomerProfilePage.js.map +1 -0
- package/dist/adaptercloud/pages/customer/DirectServiceBookingPage.js +623 -0
- package/dist/adaptercloud/pages/customer/DirectServiceBookingPage.js.map +1 -0
- package/dist/adaptercloud/pages/customer/FavoritesPage.js +477 -0
- package/dist/adaptercloud/pages/customer/FavoritesPage.js.map +1 -0
- package/dist/adaptercloud/pages/customer/OrderHistoryPage.js +438 -0
- package/dist/adaptercloud/pages/customer/OrderHistoryPage.js.map +1 -0
- package/dist/adaptercloud/pages/customer/OrderTrackingPage.js +388 -0
- package/dist/adaptercloud/pages/customer/OrderTrackingPage.js.map +1 -0
- package/dist/adaptercloud/pages/customer/PaymentMethodsPage.js +488 -0
- package/dist/adaptercloud/pages/customer/PaymentMethodsPage.js.map +1 -0
- package/dist/adaptercloud/pages/customer/ReviewsPage.js +606 -0
- package/dist/adaptercloud/pages/customer/ReviewsPage.js.map +1 -0
- package/dist/adaptercloud/pages/customer/SavedAddressesPage.js +443 -0
- package/dist/adaptercloud/pages/customer/SavedAddressesPage.js.map +1 -0
- package/dist/adaptercloud/pages/investor/InvestmentDetailsPage.js +849 -0
- package/dist/adaptercloud/pages/investor/InvestmentDetailsPage.js.map +1 -0
- package/dist/adaptercloud/pages/investor/InvestmentOpportunitiesPage.js +939 -0
- package/dist/adaptercloud/pages/investor/InvestmentOpportunitiesPage.js.map +1 -0
- package/dist/adaptercloud/pages/investor/InvestorAnalyticsPage.js +681 -0
- package/dist/adaptercloud/pages/investor/InvestorAnalyticsPage.js.map +1 -0
- package/dist/adaptercloud/pages/investor/InvestorDashboard.js +419 -0
- package/dist/adaptercloud/pages/investor/InvestorDashboard.js.map +1 -0
- package/dist/adaptercloud/pages/investor/InvestorInvestmentsPage.js +399 -0
- package/dist/adaptercloud/pages/investor/InvestorInvestmentsPage.js.map +1 -0
- package/dist/adaptercloud/pages/investor/InvestorPortfolioPage.js +569 -0
- package/dist/adaptercloud/pages/investor/InvestorPortfolioPage.js.map +1 -0
- package/dist/adaptercloud/pages/investor/InvestorProfilePage.js +1065 -0
- package/dist/adaptercloud/pages/investor/InvestorProfilePage.js.map +1 -0
- package/dist/adaptercloud/pages/worker/TaskDetailsPage.js +496 -0
- package/dist/adaptercloud/pages/worker/TaskDetailsPage.js.map +1 -0
- package/dist/adaptercloud/pages/worker/WorkerDashboard.js +634 -0
- package/dist/adaptercloud/pages/worker/WorkerDashboard.js.map +1 -0
- package/dist/adaptercloud/pages/worker/WorkerOrdersPage.js +675 -0
- package/dist/adaptercloud/pages/worker/WorkerOrdersPage.js.map +1 -0
- package/dist/adaptercloud/pages/worker/WorkerProfilePage.js +687 -0
- package/dist/adaptercloud/pages/worker/WorkerProfilePage.js.map +1 -0
- package/dist/adaptercloud/pages/worker/WorkerSchedulePage.js +578 -0
- package/dist/adaptercloud/pages/worker/WorkerSchedulePage.js.map +1 -0
- package/dist/adaptercloud/store/adaptercloudStore.js +38 -0
- package/dist/adaptercloud/store/adaptercloudStore.js.map +1 -0
- package/dist/adaptercloud/store/index.js +1 -0
- package/dist/adaptercloud/utils/cn.js +10 -0
- package/dist/adaptercloud/utils/cn.js.map +1 -0
- package/dist/adaptercloud/utils/formatters.js +51 -0
- package/dist/adaptercloud/utils/formatters.js.map +1 -0
- package/dist/adaptercloud/utils/navigation.js +9 -0
- package/dist/adaptercloud/utils/navigation.js.map +1 -0
- package/dist/index.js +7 -0
- package/dist/node_modules/.bun/clsx@2.1.1/node_modules/clsx/dist/clsx.js +18 -0
- package/dist/node_modules/.bun/clsx@2.1.1/node_modules/clsx/dist/clsx.js.map +1 -0
- package/dist/node_modules/.bun/tailwind-merge@3.5.0/node_modules/tailwind-merge/dist/bundle-mjs.js +1674 -0
- package/dist/node_modules/.bun/tailwind-merge@3.5.0/node_modules/tailwind-merge/dist/bundle-mjs.js.map +1 -0
- package/package.json +106 -0
|
@@ -0,0 +1,488 @@
|
|
|
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
|
+
//#region src/adaptercloud/pages/customer/PaymentMethodsPage.tsx
|
|
9
|
+
var _ = [
|
|
10
|
+
{
|
|
11
|
+
id: "pm-1",
|
|
12
|
+
type: "upi",
|
|
13
|
+
label: "Google Pay",
|
|
14
|
+
detail: "priya@okaxis",
|
|
15
|
+
icon: d,
|
|
16
|
+
isDefault: !0
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
id: "pm-2",
|
|
20
|
+
type: "upi",
|
|
21
|
+
label: "PhonePe",
|
|
22
|
+
detail: "priya@ybl",
|
|
23
|
+
icon: d,
|
|
24
|
+
isDefault: !1
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
id: "pm-3",
|
|
28
|
+
type: "card",
|
|
29
|
+
label: "HDFC Credit Card",
|
|
30
|
+
detail: "**** **** **** 4242",
|
|
31
|
+
icon: s,
|
|
32
|
+
isDefault: !1
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
id: "pm-4",
|
|
36
|
+
type: "card",
|
|
37
|
+
label: "SBI Debit Card",
|
|
38
|
+
detail: "**** **** **** 8765",
|
|
39
|
+
icon: s,
|
|
40
|
+
isDefault: !1
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
id: "pm-5",
|
|
44
|
+
type: "wallet",
|
|
45
|
+
label: "AdapterCloud Wallet",
|
|
46
|
+
detail: "Balance: ₹ 1,250.00",
|
|
47
|
+
icon: p,
|
|
48
|
+
isDefault: !1
|
|
49
|
+
}
|
|
50
|
+
];
|
|
51
|
+
function v({ method: e, onRemove: n, onSetDefault: r }) {
|
|
52
|
+
let i = e.icon;
|
|
53
|
+
return /* @__PURE__ */ g("div", {
|
|
54
|
+
className: t("flex items-center gap-4 rounded-lg border p-4", e.isDefault ? "border-foreground/30 bg-accent/50" : "border-border bg-card"),
|
|
55
|
+
children: [
|
|
56
|
+
/* @__PURE__ */ h("div", {
|
|
57
|
+
className: "flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-muted",
|
|
58
|
+
children: /* @__PURE__ */ h(i, { className: "h-5 w-5 text-muted-foreground" })
|
|
59
|
+
}),
|
|
60
|
+
/* @__PURE__ */ g("div", {
|
|
61
|
+
className: "flex-1 min-w-0",
|
|
62
|
+
children: [/* @__PURE__ */ g("div", {
|
|
63
|
+
className: "flex items-center gap-2",
|
|
64
|
+
children: [/* @__PURE__ */ h("p", {
|
|
65
|
+
className: "text-sm font-medium text-foreground",
|
|
66
|
+
children: e.label
|
|
67
|
+
}), e.isDefault && /* @__PURE__ */ g("span", {
|
|
68
|
+
className: "inline-flex items-center gap-1 rounded-full bg-green-500/10 px-2 py-0.5 text-[10px] font-medium text-green-600 dark:text-green-400",
|
|
69
|
+
children: [/* @__PURE__ */ h(o, { className: "h-3 w-3" }), "Default"]
|
|
70
|
+
})]
|
|
71
|
+
}), /* @__PURE__ */ h("p", {
|
|
72
|
+
className: "mt-0.5 text-xs text-muted-foreground font-mono",
|
|
73
|
+
children: e.detail
|
|
74
|
+
})]
|
|
75
|
+
}),
|
|
76
|
+
/* @__PURE__ */ g("div", {
|
|
77
|
+
className: "flex items-center gap-1",
|
|
78
|
+
children: [!e.isDefault && /* @__PURE__ */ h("button", {
|
|
79
|
+
type: "button",
|
|
80
|
+
onClick: () => r(e.id),
|
|
81
|
+
title: "Set as default",
|
|
82
|
+
className: "rounded-md px-2 py-1 text-xs text-muted-foreground hover:bg-accent hover:text-foreground transition-colors",
|
|
83
|
+
children: "Set Default"
|
|
84
|
+
}), /* @__PURE__ */ h("button", {
|
|
85
|
+
type: "button",
|
|
86
|
+
onClick: () => n(e.id),
|
|
87
|
+
title: "Remove payment method",
|
|
88
|
+
className: "rounded-md p-2 text-muted-foreground hover:bg-destructive/10 hover:text-destructive transition-colors",
|
|
89
|
+
children: /* @__PURE__ */ h(f, { className: "h-4 w-4" })
|
|
90
|
+
})]
|
|
91
|
+
})
|
|
92
|
+
]
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
function y() {
|
|
96
|
+
let { navigateTo: f } = e(), [y, b] = i(_), [x, S] = i(!1), [C, w] = i("card"), [T, E] = i(null), [D, O] = i({
|
|
97
|
+
cardNumber: "",
|
|
98
|
+
expiry: "",
|
|
99
|
+
cvv: "",
|
|
100
|
+
nameOnCard: ""
|
|
101
|
+
}), [k, A] = i({ upiId: "" }), [j, M] = i({
|
|
102
|
+
walletProvider: "Paytm",
|
|
103
|
+
mobile: ""
|
|
104
|
+
}), N = (e) => {
|
|
105
|
+
E(e), setTimeout(() => E(null), 3e3);
|
|
106
|
+
}, P = () => {
|
|
107
|
+
O({
|
|
108
|
+
cardNumber: "",
|
|
109
|
+
expiry: "",
|
|
110
|
+
cvv: "",
|
|
111
|
+
nameOnCard: ""
|
|
112
|
+
}), A({ upiId: "" }), M({
|
|
113
|
+
walletProvider: "Paytm",
|
|
114
|
+
mobile: ""
|
|
115
|
+
}), w("card");
|
|
116
|
+
}, F = (e) => {
|
|
117
|
+
b((t) => t.filter((t) => t.id !== e)), N("Payment method removed");
|
|
118
|
+
}, I = (e) => {
|
|
119
|
+
b((t) => t.map((t) => ({
|
|
120
|
+
...t,
|
|
121
|
+
isDefault: t.id === e
|
|
122
|
+
}))), N("Default payment method updated");
|
|
123
|
+
}, L = () => {
|
|
124
|
+
let e = "", t = "", n = s;
|
|
125
|
+
if (C === "card") {
|
|
126
|
+
if (!D.cardNumber.trim() || !D.expiry.trim() || !D.cvv.trim() || !D.nameOnCard.trim()) {
|
|
127
|
+
alert("Please fill in all card fields.");
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
e = `${D.nameOnCard}'s Card`, t = `**** **** **** ${D.cardNumber.slice(-4)}`, n = s;
|
|
131
|
+
} else if (C === "upi") {
|
|
132
|
+
if (!k.upiId.trim()) {
|
|
133
|
+
alert("Please enter a UPI ID.");
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
e = "UPI", t = k.upiId, n = d;
|
|
137
|
+
} else {
|
|
138
|
+
if (!j.mobile.trim()) {
|
|
139
|
+
alert("Please enter mobile number.");
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
e = j.walletProvider, t = `Mobile: ${j.mobile}`, n = p;
|
|
143
|
+
}
|
|
144
|
+
let r = {
|
|
145
|
+
id: `pm-${Date.now()}`,
|
|
146
|
+
type: C,
|
|
147
|
+
label: e,
|
|
148
|
+
detail: t,
|
|
149
|
+
icon: n,
|
|
150
|
+
isDefault: !1
|
|
151
|
+
};
|
|
152
|
+
b((e) => [...e, r]), P(), S(!1), N("Payment method added successfully");
|
|
153
|
+
}, R = {
|
|
154
|
+
upi: y.filter((e) => e.type === "upi"),
|
|
155
|
+
card: y.filter((e) => e.type === "card"),
|
|
156
|
+
wallet: y.filter((e) => e.type === "wallet")
|
|
157
|
+
};
|
|
158
|
+
return /* @__PURE__ */ g(n, {
|
|
159
|
+
title: "Payment Methods",
|
|
160
|
+
description: "Manage your saved payment options",
|
|
161
|
+
actions: /* @__PURE__ */ g("button", {
|
|
162
|
+
type: "button",
|
|
163
|
+
onClick: () => S(!0),
|
|
164
|
+
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"),
|
|
165
|
+
children: [/* @__PURE__ */ h(c, { className: "h-4 w-4" }), "Add Method"]
|
|
166
|
+
}),
|
|
167
|
+
children: [
|
|
168
|
+
T && /* @__PURE__ */ g("div", {
|
|
169
|
+
className: "mb-4 rounded-lg border border-green-500/30 bg-green-500/10 p-3 flex items-center gap-2",
|
|
170
|
+
children: [/* @__PURE__ */ h(o, { className: "h-4 w-4 text-green-600 dark:text-green-400 shrink-0" }), /* @__PURE__ */ h("p", {
|
|
171
|
+
className: "text-sm text-green-600 dark:text-green-400",
|
|
172
|
+
children: T
|
|
173
|
+
})]
|
|
174
|
+
}),
|
|
175
|
+
y.length > 0 ? /* @__PURE__ */ g("div", {
|
|
176
|
+
className: "space-y-6",
|
|
177
|
+
children: [
|
|
178
|
+
R.upi.length > 0 && /* @__PURE__ */ g("section", { children: [/* @__PURE__ */ g("h3", {
|
|
179
|
+
className: "text-sm font-semibold text-foreground mb-3 flex items-center gap-2",
|
|
180
|
+
children: [/* @__PURE__ */ h(d, { className: "h-4 w-4 text-muted-foreground" }), "UPI"]
|
|
181
|
+
}), /* @__PURE__ */ h("div", {
|
|
182
|
+
className: "space-y-2",
|
|
183
|
+
children: R.upi.map((e) => /* @__PURE__ */ h(v, {
|
|
184
|
+
method: e,
|
|
185
|
+
onRemove: F,
|
|
186
|
+
onSetDefault: I
|
|
187
|
+
}, e.id))
|
|
188
|
+
})] }),
|
|
189
|
+
R.card.length > 0 && /* @__PURE__ */ g("section", { children: [/* @__PURE__ */ g("h3", {
|
|
190
|
+
className: "text-sm font-semibold text-foreground mb-3 flex items-center gap-2",
|
|
191
|
+
children: [/* @__PURE__ */ h(s, { className: "h-4 w-4 text-muted-foreground" }), "Cards"]
|
|
192
|
+
}), /* @__PURE__ */ h("div", {
|
|
193
|
+
className: "space-y-2",
|
|
194
|
+
children: R.card.map((e) => /* @__PURE__ */ h(v, {
|
|
195
|
+
method: e,
|
|
196
|
+
onRemove: F,
|
|
197
|
+
onSetDefault: I
|
|
198
|
+
}, e.id))
|
|
199
|
+
})] }),
|
|
200
|
+
R.wallet.length > 0 && /* @__PURE__ */ g("section", { children: [/* @__PURE__ */ g("h3", {
|
|
201
|
+
className: "text-sm font-semibold text-foreground mb-3 flex items-center gap-2",
|
|
202
|
+
children: [/* @__PURE__ */ h(p, { className: "h-4 w-4 text-muted-foreground" }), "Wallets"]
|
|
203
|
+
}), /* @__PURE__ */ h("div", {
|
|
204
|
+
className: "space-y-2",
|
|
205
|
+
children: R.wallet.map((e) => /* @__PURE__ */ h(v, {
|
|
206
|
+
method: e,
|
|
207
|
+
onRemove: F,
|
|
208
|
+
onSetDefault: I
|
|
209
|
+
}, e.id))
|
|
210
|
+
})] }),
|
|
211
|
+
/* @__PURE__ */ g("div", {
|
|
212
|
+
className: "flex items-start gap-3 rounded-lg border border-border bg-card p-4",
|
|
213
|
+
children: [/* @__PURE__ */ h(l, { className: "mt-0.5 h-5 w-5 shrink-0 text-muted-foreground" }), /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("p", {
|
|
214
|
+
className: "text-sm font-medium text-foreground",
|
|
215
|
+
children: "Secure Payments"
|
|
216
|
+
}), /* @__PURE__ */ h("p", {
|
|
217
|
+
className: "mt-0.5 text-xs text-muted-foreground",
|
|
218
|
+
children: "Your payment information is encrypted and securely stored. We never share your financial details with third parties."
|
|
219
|
+
})] })]
|
|
220
|
+
})
|
|
221
|
+
]
|
|
222
|
+
}) : /* @__PURE__ */ h(r, {
|
|
223
|
+
icon: /* @__PURE__ */ h(s, { className: "h-12 w-12" }),
|
|
224
|
+
title: "No payment methods",
|
|
225
|
+
description: "Add a payment method to make faster checkouts.",
|
|
226
|
+
action: /* @__PURE__ */ h("button", {
|
|
227
|
+
type: "button",
|
|
228
|
+
onClick: () => S(!0),
|
|
229
|
+
className: "rounded-lg bg-foreground px-4 py-2 text-sm font-medium text-background hover:opacity-90 transition-opacity",
|
|
230
|
+
children: "Add Payment Method"
|
|
231
|
+
})
|
|
232
|
+
}),
|
|
233
|
+
/* @__PURE__ */ g("div", {
|
|
234
|
+
className: "mt-8",
|
|
235
|
+
children: [/* @__PURE__ */ h("h2", {
|
|
236
|
+
className: "text-base font-semibold text-foreground mb-4",
|
|
237
|
+
children: "Quick Pay Options"
|
|
238
|
+
}), /* @__PURE__ */ g("div", {
|
|
239
|
+
className: "grid grid-cols-1 sm:grid-cols-2 gap-4",
|
|
240
|
+
children: [/* @__PURE__ */ g("div", {
|
|
241
|
+
className: "rounded-lg border border-border bg-card p-5",
|
|
242
|
+
children: [
|
|
243
|
+
/* @__PURE__ */ g("div", {
|
|
244
|
+
className: "flex items-center gap-3 mb-2",
|
|
245
|
+
children: [/* @__PURE__ */ h("div", {
|
|
246
|
+
className: "flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-muted",
|
|
247
|
+
children: /* @__PURE__ */ h(a, { className: "h-5 w-5 text-muted-foreground" })
|
|
248
|
+
}), /* @__PURE__ */ h("h3", {
|
|
249
|
+
className: "text-sm font-semibold text-foreground",
|
|
250
|
+
children: "Cash on Delivery"
|
|
251
|
+
})]
|
|
252
|
+
}),
|
|
253
|
+
/* @__PURE__ */ h("p", {
|
|
254
|
+
className: "text-xs text-muted-foreground mb-3",
|
|
255
|
+
children: "Pay when you receive your order"
|
|
256
|
+
}),
|
|
257
|
+
/* @__PURE__ */ g("div", {
|
|
258
|
+
className: "flex items-center gap-2 text-green-600 dark:text-green-400",
|
|
259
|
+
children: [/* @__PURE__ */ h(o, { className: "h-3.5 w-3.5 shrink-0" }), /* @__PURE__ */ h("span", {
|
|
260
|
+
className: "text-xs",
|
|
261
|
+
children: "Available for all orders"
|
|
262
|
+
})]
|
|
263
|
+
})
|
|
264
|
+
]
|
|
265
|
+
}), /* @__PURE__ */ g("div", {
|
|
266
|
+
className: "rounded-lg border border-border bg-card p-5",
|
|
267
|
+
children: [
|
|
268
|
+
/* @__PURE__ */ g("div", {
|
|
269
|
+
className: "flex items-center gap-3 mb-2",
|
|
270
|
+
children: [/* @__PURE__ */ h("div", {
|
|
271
|
+
className: "flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-muted",
|
|
272
|
+
children: /* @__PURE__ */ h(u, { className: "h-5 w-5 text-muted-foreground" })
|
|
273
|
+
}), /* @__PURE__ */ h("h3", {
|
|
274
|
+
className: "text-sm font-semibold text-foreground",
|
|
275
|
+
children: "Pay at Cart"
|
|
276
|
+
})]
|
|
277
|
+
}),
|
|
278
|
+
/* @__PURE__ */ h("p", {
|
|
279
|
+
className: "text-xs text-muted-foreground mb-3",
|
|
280
|
+
children: "Pay directly to the vendor"
|
|
281
|
+
}),
|
|
282
|
+
/* @__PURE__ */ g("div", {
|
|
283
|
+
className: "flex items-center gap-2 text-green-600 dark:text-green-400",
|
|
284
|
+
children: [/* @__PURE__ */ h(o, { className: "h-3.5 w-3.5 shrink-0" }), /* @__PURE__ */ h("span", {
|
|
285
|
+
className: "text-xs",
|
|
286
|
+
children: "Supports all payment methods"
|
|
287
|
+
})]
|
|
288
|
+
})
|
|
289
|
+
]
|
|
290
|
+
})]
|
|
291
|
+
})]
|
|
292
|
+
}),
|
|
293
|
+
x && /* @__PURE__ */ h("div", {
|
|
294
|
+
className: "fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4",
|
|
295
|
+
children: /* @__PURE__ */ h("div", {
|
|
296
|
+
className: "w-full max-w-md max-h-[90vh] overflow-y-auto rounded-lg border border-border bg-card shadow-lg",
|
|
297
|
+
children: /* @__PURE__ */ g("div", {
|
|
298
|
+
className: "p-5",
|
|
299
|
+
children: [
|
|
300
|
+
/* @__PURE__ */ g("div", {
|
|
301
|
+
className: "flex items-center justify-between mb-4",
|
|
302
|
+
children: [/* @__PURE__ */ h("h2", {
|
|
303
|
+
className: "text-lg font-semibold text-foreground",
|
|
304
|
+
children: "Add Payment Method"
|
|
305
|
+
}), /* @__PURE__ */ h("button", {
|
|
306
|
+
type: "button",
|
|
307
|
+
onClick: () => {
|
|
308
|
+
S(!1), P();
|
|
309
|
+
},
|
|
310
|
+
className: "rounded-md p-2 text-muted-foreground hover:bg-accent hover:text-foreground transition-colors",
|
|
311
|
+
children: /* @__PURE__ */ h(m, { className: "h-4 w-4" })
|
|
312
|
+
})]
|
|
313
|
+
}),
|
|
314
|
+
/* @__PURE__ */ h("p", {
|
|
315
|
+
className: "text-sm text-muted-foreground mb-5",
|
|
316
|
+
children: "Choose a payment method to add to your account"
|
|
317
|
+
}),
|
|
318
|
+
/* @__PURE__ */ h("div", {
|
|
319
|
+
className: "space-y-2 mb-5",
|
|
320
|
+
children: [
|
|
321
|
+
{
|
|
322
|
+
value: "card",
|
|
323
|
+
label: "Credit/Debit Card",
|
|
324
|
+
sub: "Visa, Mastercard, Rupay",
|
|
325
|
+
Icon: s
|
|
326
|
+
},
|
|
327
|
+
{
|
|
328
|
+
value: "upi",
|
|
329
|
+
label: "UPI",
|
|
330
|
+
sub: "Google Pay, PhonePe, Paytm",
|
|
331
|
+
Icon: d
|
|
332
|
+
},
|
|
333
|
+
{
|
|
334
|
+
value: "wallet",
|
|
335
|
+
label: "Wallet",
|
|
336
|
+
sub: "Paytm, Amazon Pay, Mobikwik",
|
|
337
|
+
Icon: p
|
|
338
|
+
}
|
|
339
|
+
].map(({ value: e, label: n, sub: r, Icon: i }) => /* @__PURE__ */ g("label", {
|
|
340
|
+
className: t("flex items-center gap-3 rounded-lg border p-3 cursor-pointer transition-colors", C === e ? "border-foreground bg-accent" : "border-border hover:bg-accent"),
|
|
341
|
+
children: [
|
|
342
|
+
/* @__PURE__ */ h("input", {
|
|
343
|
+
type: "radio",
|
|
344
|
+
name: "paymentType",
|
|
345
|
+
value: e,
|
|
346
|
+
checked: C === e,
|
|
347
|
+
onChange: () => w(e),
|
|
348
|
+
className: "h-4 w-4 shrink-0"
|
|
349
|
+
}),
|
|
350
|
+
/* @__PURE__ */ h(i, { className: "h-5 w-5 text-muted-foreground shrink-0" }),
|
|
351
|
+
/* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("p", {
|
|
352
|
+
className: "text-sm font-medium text-foreground",
|
|
353
|
+
children: n
|
|
354
|
+
}), /* @__PURE__ */ h("p", {
|
|
355
|
+
className: "text-xs text-muted-foreground",
|
|
356
|
+
children: r
|
|
357
|
+
})] })
|
|
358
|
+
]
|
|
359
|
+
}, e))
|
|
360
|
+
}),
|
|
361
|
+
C === "card" && /* @__PURE__ */ g("div", {
|
|
362
|
+
className: "space-y-3",
|
|
363
|
+
children: [
|
|
364
|
+
/* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("label", {
|
|
365
|
+
className: "block text-sm font-medium text-foreground mb-1",
|
|
366
|
+
children: "Card Number"
|
|
367
|
+
}), /* @__PURE__ */ h("input", {
|
|
368
|
+
type: "text",
|
|
369
|
+
placeholder: "1234 5678 9012 3456",
|
|
370
|
+
value: D.cardNumber,
|
|
371
|
+
onChange: (e) => O((t) => ({
|
|
372
|
+
...t,
|
|
373
|
+
cardNumber: e.target.value
|
|
374
|
+
})),
|
|
375
|
+
className: "w-full rounded-lg border border-border bg-card px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring"
|
|
376
|
+
})] }),
|
|
377
|
+
/* @__PURE__ */ g("div", {
|
|
378
|
+
className: "grid grid-cols-2 gap-3",
|
|
379
|
+
children: [/* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("label", {
|
|
380
|
+
className: "block text-sm font-medium text-foreground mb-1",
|
|
381
|
+
children: "Expiry Date"
|
|
382
|
+
}), /* @__PURE__ */ h("input", {
|
|
383
|
+
type: "text",
|
|
384
|
+
placeholder: "MM/YY",
|
|
385
|
+
value: D.expiry,
|
|
386
|
+
onChange: (e) => O((t) => ({
|
|
387
|
+
...t,
|
|
388
|
+
expiry: e.target.value
|
|
389
|
+
})),
|
|
390
|
+
className: "w-full rounded-lg border border-border bg-card px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring"
|
|
391
|
+
})] }), /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("label", {
|
|
392
|
+
className: "block text-sm font-medium text-foreground mb-1",
|
|
393
|
+
children: "CVV"
|
|
394
|
+
}), /* @__PURE__ */ h("input", {
|
|
395
|
+
type: "password",
|
|
396
|
+
placeholder: "123",
|
|
397
|
+
value: D.cvv,
|
|
398
|
+
onChange: (e) => O((t) => ({
|
|
399
|
+
...t,
|
|
400
|
+
cvv: e.target.value
|
|
401
|
+
})),
|
|
402
|
+
className: "w-full rounded-lg border border-border bg-card px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring"
|
|
403
|
+
})] })]
|
|
404
|
+
}),
|
|
405
|
+
/* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("label", {
|
|
406
|
+
className: "block text-sm font-medium text-foreground mb-1",
|
|
407
|
+
children: "Name on Card"
|
|
408
|
+
}), /* @__PURE__ */ h("input", {
|
|
409
|
+
type: "text",
|
|
410
|
+
placeholder: "John Doe",
|
|
411
|
+
value: D.nameOnCard,
|
|
412
|
+
onChange: (e) => O((t) => ({
|
|
413
|
+
...t,
|
|
414
|
+
nameOnCard: e.target.value
|
|
415
|
+
})),
|
|
416
|
+
className: "w-full rounded-lg border border-border bg-card px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring"
|
|
417
|
+
})] })
|
|
418
|
+
]
|
|
419
|
+
}),
|
|
420
|
+
C === "upi" && /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("label", {
|
|
421
|
+
className: "block text-sm font-medium text-foreground mb-1",
|
|
422
|
+
children: "UPI ID"
|
|
423
|
+
}), /* @__PURE__ */ h("input", {
|
|
424
|
+
type: "text",
|
|
425
|
+
placeholder: "yourname@paytm",
|
|
426
|
+
value: k.upiId,
|
|
427
|
+
onChange: (e) => A({ upiId: e.target.value }),
|
|
428
|
+
className: "w-full rounded-lg border border-border bg-card px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring"
|
|
429
|
+
})] }),
|
|
430
|
+
C === "wallet" && /* @__PURE__ */ g("div", {
|
|
431
|
+
className: "space-y-3",
|
|
432
|
+
children: [/* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("label", {
|
|
433
|
+
className: "block text-sm font-medium text-foreground mb-1",
|
|
434
|
+
children: "Select Wallet"
|
|
435
|
+
}), /* @__PURE__ */ g("select", {
|
|
436
|
+
value: j.walletProvider,
|
|
437
|
+
onChange: (e) => M((t) => ({
|
|
438
|
+
...t,
|
|
439
|
+
walletProvider: e.target.value
|
|
440
|
+
})),
|
|
441
|
+
className: "w-full rounded-lg border border-border bg-card px-3 py-2 text-sm text-foreground focus:outline-none focus:ring-2 focus:ring-ring",
|
|
442
|
+
children: [
|
|
443
|
+
/* @__PURE__ */ h("option", { children: "Paytm" }),
|
|
444
|
+
/* @__PURE__ */ h("option", { children: "Amazon Pay" }),
|
|
445
|
+
/* @__PURE__ */ h("option", { children: "Mobikwik" }),
|
|
446
|
+
/* @__PURE__ */ h("option", { children: "Freecharge" })
|
|
447
|
+
]
|
|
448
|
+
})] }), /* @__PURE__ */ g("div", { children: [/* @__PURE__ */ h("label", {
|
|
449
|
+
className: "block text-sm font-medium text-foreground mb-1",
|
|
450
|
+
children: "Mobile Number"
|
|
451
|
+
}), /* @__PURE__ */ h("input", {
|
|
452
|
+
type: "tel",
|
|
453
|
+
placeholder: "9876543210",
|
|
454
|
+
value: j.mobile,
|
|
455
|
+
onChange: (e) => M((t) => ({
|
|
456
|
+
...t,
|
|
457
|
+
mobile: e.target.value
|
|
458
|
+
})),
|
|
459
|
+
className: "w-full rounded-lg border border-border bg-card px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring"
|
|
460
|
+
})] })]
|
|
461
|
+
}),
|
|
462
|
+
/* @__PURE__ */ g("div", {
|
|
463
|
+
className: "flex items-center gap-3 pt-5",
|
|
464
|
+
children: [/* @__PURE__ */ h("button", {
|
|
465
|
+
type: "button",
|
|
466
|
+
onClick: L,
|
|
467
|
+
className: "flex-1 rounded-lg bg-foreground px-4 py-2 text-sm font-medium text-background hover:opacity-90 transition-opacity",
|
|
468
|
+
children: "Add Payment Method"
|
|
469
|
+
}), /* @__PURE__ */ h("button", {
|
|
470
|
+
type: "button",
|
|
471
|
+
onClick: () => {
|
|
472
|
+
S(!1), P();
|
|
473
|
+
},
|
|
474
|
+
className: "flex-1 rounded-lg border border-border px-4 py-2 text-sm font-medium text-foreground hover:bg-accent transition-colors",
|
|
475
|
+
children: "Cancel"
|
|
476
|
+
})]
|
|
477
|
+
})
|
|
478
|
+
]
|
|
479
|
+
})
|
|
480
|
+
})
|
|
481
|
+
})
|
|
482
|
+
]
|
|
483
|
+
});
|
|
484
|
+
}
|
|
485
|
+
//#endregion
|
|
486
|
+
export { y as PaymentMethodsPage };
|
|
487
|
+
|
|
488
|
+
//# sourceMappingURL=PaymentMethodsPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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 { 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 bg-card'\n )}\n >\n <div className=\"flex h-10 w-10 shrink-0 items-center justify-center rounded-lg bg-muted\">\n <Icon className=\"h-5 w-5 text-muted-foreground\" />\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-foreground\">{method.label}</p>\n {method.isDefault && (\n <span className=\"inline-flex items-center gap-1 rounded-full bg-green-500/10 px-2 py-0.5 text-[10px] font-medium text-green-600 dark:text-green-400\">\n <CheckCircle2 className=\"h-3 w-3\" />\n Default\n </span>\n )}\n </div>\n <p className=\"mt-0.5 text-xs text-muted-foreground 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-muted-foreground hover:bg-accent hover:text-foreground 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-muted-foreground hover:bg-destructive/10 hover:text-destructive 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 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-green-500/30 bg-green-500/10 p-3 flex items-center gap-2\">\n <CheckCircle2 className=\"h-4 w-4 text-green-600 dark:text-green-400 shrink-0\" />\n <p className=\"text-sm text-green-600 dark:text-green-400\">{statusMessage}</p>\n </div>\n )}\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-foreground mb-3 flex items-center gap-2\">\n <Smartphone className=\"h-4 w-4 text-muted-foreground\" />\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-foreground mb-3 flex items-center gap-2\">\n <CreditCard className=\"h-4 w-4 text-muted-foreground\" />\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-foreground mb-3 flex items-center gap-2\">\n <Wallet className=\"h-4 w-4 text-muted-foreground\" />\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 bg-card p-4\">\n <Shield className=\"mt-0.5 h-5 w-5 shrink-0 text-muted-foreground\" />\n <div>\n <p className=\"text-sm font-medium text-foreground\">Secure Payments</p>\n <p className=\"mt-0.5 text-xs text-muted-foreground\">\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 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-foreground 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 bg-card p-5\">\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-muted\">\n <Banknote className=\"h-5 w-5 text-muted-foreground\" />\n </div>\n <h3 className=\"text-sm font-semibold text-foreground\">Cash on Delivery</h3>\n </div>\n <p className=\"text-xs text-muted-foreground mb-3\">Pay when you receive your order</p>\n <div className=\"flex items-center gap-2 text-green-600 dark:text-green-400\">\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 bg-card p-5\">\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-muted\">\n <ShoppingCart className=\"h-5 w-5 text-muted-foreground\" />\n </div>\n <h3 className=\"text-sm font-semibold text-foreground\">Pay at Cart</h3>\n </div>\n <p className=\"text-xs text-muted-foreground mb-3\">Pay directly to the vendor</p>\n <div className=\"flex items-center gap-2 text-green-600 dark:text-green-400\">\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 bg-card 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-foreground\">Add Payment Method</h2>\n <button\n type=\"button\"\n onClick={() => {\n setShowAddModal(false);\n resetForms();\n }}\n className=\"rounded-md p-2 text-muted-foreground hover:bg-accent hover:text-foreground transition-colors\"\n >\n <X className=\"h-4 w-4\" />\n </button>\n </div>\n <p className=\"text-sm text-muted-foreground 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 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-muted-foreground shrink-0\" />\n <div>\n <p className=\"text-sm font-medium text-foreground\">{label}</p>\n <p className=\"text-xs text-muted-foreground\">{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-foreground 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 bg-card px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring\"\n />\n </div>\n <div className=\"grid grid-cols-2 gap-3\">\n <div>\n <label className=\"block text-sm font-medium text-foreground 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 bg-card px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring\"\n />\n </div>\n <div>\n <label className=\"block text-sm font-medium text-foreground 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 bg-card px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring\"\n />\n </div>\n </div>\n <div>\n <label className=\"block text-sm font-medium text-foreground 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 bg-card px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-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-foreground 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 bg-card px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-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-foreground 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 bg-card px-3 py-2 text-sm text-foreground focus:outline-none focus:ring-2 focus:ring-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-foreground 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 bg-card px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-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 px-4 py-2 text-sm font-medium text-foreground 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":"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"}
|