@samsheena/payment-ui 1.0.4 → 1.0.6
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/index.cjs.js +30 -60
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +30 -60
- package/dist/index.esm.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var React = require('react');
|
|
4
|
+
var reactDom = require('react-dom');
|
|
4
5
|
|
|
5
6
|
const PRICE_PER_MONTH = 5;
|
|
6
7
|
const PLAN_LIST = [{
|
|
@@ -19,7 +20,7 @@ const PLAN_LIST = [{
|
|
|
19
20
|
months: 6,
|
|
20
21
|
enabled: true
|
|
21
22
|
},
|
|
22
|
-
//
|
|
23
|
+
// Only enabled
|
|
23
24
|
{
|
|
24
25
|
key: "1y",
|
|
25
26
|
label: "Yearly",
|
|
@@ -36,27 +37,21 @@ function PaymentModal({
|
|
|
36
37
|
onClose
|
|
37
38
|
}) {
|
|
38
39
|
const defaultPlanKey = "6m";
|
|
39
|
-
const [fullName, setFullName] = React.useState("");
|
|
40
|
-
const [email, setEmail] = React.useState("");
|
|
41
40
|
const [planKey, setPlanKey] = React.useState(defaultPlanKey);
|
|
42
41
|
const [accountCreated, setAccountCreated] = React.useState(false);
|
|
43
42
|
const selectedPlan = React.useMemo(() => {
|
|
44
43
|
return PLAN_LIST.find(p => p.key === planKey) || PLAN_LIST[2];
|
|
45
44
|
}, [planKey]);
|
|
46
|
-
const total =
|
|
45
|
+
const total = selectedPlan.months * PRICE_PER_MONTH;
|
|
47
46
|
const discountPercent = 100;
|
|
48
|
-
const discountAmount = total;
|
|
49
|
-
const netPayable = 0;
|
|
50
|
-
|
|
47
|
+
const discountAmount = total;
|
|
48
|
+
const netPayable = 0;
|
|
51
49
|
function handleBackdropClick(e) {
|
|
52
50
|
if (e.target?.classList?.contains("glh-pay-backdrop")) onClose?.();
|
|
53
51
|
}
|
|
54
52
|
function createAccountAndSubscribe() {
|
|
55
|
-
// Frontend-only: store in localStorage so app can show "created" state later
|
|
56
53
|
const payload = {
|
|
57
54
|
createdAt: new Date().toISOString(),
|
|
58
|
-
fullName,
|
|
59
|
-
email,
|
|
60
55
|
plan: selectedPlan,
|
|
61
56
|
pricePerMonth: PRICE_PER_MONTH,
|
|
62
57
|
total,
|
|
@@ -68,12 +63,11 @@ function PaymentModal({
|
|
|
68
63
|
localStorage.setItem("glh_payment_account", JSON.stringify(payload));
|
|
69
64
|
setAccountCreated(true);
|
|
70
65
|
} catch (err) {
|
|
71
|
-
// ignore; still show UI success
|
|
72
66
|
setAccountCreated(true);
|
|
73
67
|
}
|
|
74
68
|
}
|
|
75
69
|
if (!open) return null;
|
|
76
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
70
|
+
return /*#__PURE__*/reactDom.createPortal(/*#__PURE__*/React.createElement("div", {
|
|
77
71
|
className: "glh-pay-backdrop",
|
|
78
72
|
onMouseDown: handleBackdropClick,
|
|
79
73
|
role: "dialog",
|
|
@@ -92,22 +86,6 @@ function PaymentModal({
|
|
|
92
86
|
}, "\u2715")), /*#__PURE__*/React.createElement("div", {
|
|
93
87
|
className: "glh-pay-body"
|
|
94
88
|
}, !accountCreated ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
|
95
|
-
className: "glh-pay-row"
|
|
96
|
-
}, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", {
|
|
97
|
-
className: "glh-pay-label"
|
|
98
|
-
}, "Full Name"), /*#__PURE__*/React.createElement("input", {
|
|
99
|
-
className: "glh-pay-input",
|
|
100
|
-
value: fullName,
|
|
101
|
-
onChange: e => setFullName(e.target.value),
|
|
102
|
-
placeholder: "Enter your name"
|
|
103
|
-
})), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", {
|
|
104
|
-
className: "glh-pay-label"
|
|
105
|
-
}, "Email"), /*#__PURE__*/React.createElement("input", {
|
|
106
|
-
className: "glh-pay-input",
|
|
107
|
-
value: email,
|
|
108
|
-
onChange: e => setEmail(e.target.value),
|
|
109
|
-
placeholder: "Enter your email"
|
|
110
|
-
}))), /*#__PURE__*/React.createElement("div", {
|
|
111
89
|
className: "glh-pay-label",
|
|
112
90
|
style: {
|
|
113
91
|
marginBottom: 8
|
|
@@ -117,21 +95,21 @@ function PaymentModal({
|
|
|
117
95
|
}, PLAN_LIST.map(p => {
|
|
118
96
|
const disabled = !p.enabled;
|
|
119
97
|
const selected = p.key === planKey;
|
|
120
|
-
|
|
98
|
+
const pickPlan = () => {
|
|
121
99
|
if (disabled) return;
|
|
122
100
|
setPlanKey(p.key);
|
|
123
|
-
}
|
|
101
|
+
};
|
|
124
102
|
return /*#__PURE__*/React.createElement("div", {
|
|
125
103
|
key: p.key,
|
|
126
104
|
className: ["glh-pay-plan", disabled ? "glh-pay-planDisabled" : "", selected ? "glh-pay-selected" : ""].join(" "),
|
|
127
105
|
onClick: pickPlan,
|
|
128
106
|
role: "button",
|
|
129
107
|
tabIndex: disabled ? -1 : 0,
|
|
108
|
+
"aria-disabled": disabled,
|
|
109
|
+
"aria-pressed": selected,
|
|
130
110
|
onKeyDown: e => {
|
|
131
111
|
if ((e.key === "Enter" || e.key === " ") && !disabled) pickPlan();
|
|
132
|
-
}
|
|
133
|
-
"aria-disabled": disabled,
|
|
134
|
-
"aria-pressed": selected
|
|
112
|
+
}
|
|
135
113
|
}, /*#__PURE__*/React.createElement("div", {
|
|
136
114
|
style: {
|
|
137
115
|
display: "grid",
|
|
@@ -149,14 +127,11 @@ function PaymentModal({
|
|
|
149
127
|
}, "Duration: ", p.months, " month(s)")), /*#__PURE__*/React.createElement("div", {
|
|
150
128
|
style: {
|
|
151
129
|
display: "flex",
|
|
152
|
-
gap: 8
|
|
153
|
-
alignItems: "center"
|
|
130
|
+
gap: 8
|
|
154
131
|
}
|
|
155
|
-
},
|
|
156
|
-
className: "glh-pay-pill"
|
|
157
|
-
}, "ENABLED") : /*#__PURE__*/React.createElement("span", {
|
|
132
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
158
133
|
className: "glh-pay-pill"
|
|
159
|
-
}, "DISABLED"), selected ? /*#__PURE__*/React.createElement("span", {
|
|
134
|
+
}, p.enabled ? "ENABLED" : "DISABLED"), selected ? /*#__PURE__*/React.createElement("span", {
|
|
160
135
|
className: "glh-pay-pill"
|
|
161
136
|
}, "SELECTED") : null));
|
|
162
137
|
})), /*#__PURE__*/React.createElement("div", {
|
|
@@ -188,11 +163,6 @@ function PaymentModal({
|
|
|
188
163
|
marginBottom: 8
|
|
189
164
|
}
|
|
190
165
|
}, "\u2705 Account Created"), /*#__PURE__*/React.createElement("div", {
|
|
191
|
-
style: {
|
|
192
|
-
fontSize: 13,
|
|
193
|
-
color: "rgba(0,0,0,0.7)"
|
|
194
|
-
}
|
|
195
|
-
}, "Your subscription is ready with ", /*#__PURE__*/React.createElement("b", null, "100% discount"), ". Net payable is ", /*#__PURE__*/React.createElement("b", null, "\u20B90"), "."), /*#__PURE__*/React.createElement("div", {
|
|
196
166
|
className: "glh-pay-summary",
|
|
197
167
|
style: {
|
|
198
168
|
marginTop: 14
|
|
@@ -222,43 +192,42 @@ function PaymentModal({
|
|
|
222
192
|
onClick: onClose
|
|
223
193
|
}, "Cancel"), /*#__PURE__*/React.createElement("button", {
|
|
224
194
|
className: "glh-pay-primary",
|
|
225
|
-
onClick: createAccountAndSubscribe
|
|
226
|
-
disabled: !fullName || !email,
|
|
227
|
-
title: !fullName || !email ? "Enter name & email" : "Create account",
|
|
228
|
-
style: !fullName || !email ? {
|
|
229
|
-
opacity: 0.6,
|
|
230
|
-
cursor: "not-allowed"
|
|
231
|
-
} : null
|
|
195
|
+
onClick: createAccountAndSubscribe
|
|
232
196
|
}, "Create Account")) : /*#__PURE__*/React.createElement("button", {
|
|
233
197
|
className: "glh-pay-primary",
|
|
234
198
|
onClick: onClose
|
|
235
|
-
}, "Done"))));
|
|
199
|
+
}, "Done")))), document.body);
|
|
236
200
|
}
|
|
237
201
|
|
|
238
202
|
/**
|
|
239
203
|
* AccountButton
|
|
240
|
-
* -
|
|
241
|
-
* -
|
|
204
|
+
* - Navbar center ನಲ್ಲಿ place ಮಾಡಬಹುದು
|
|
205
|
+
* - localStorage ನಲ್ಲಿ glh_payment_account ಇದ್ದರೆ button "Subscribed ✓" ಆಗಿ show ಆಗುತ್ತದೆ
|
|
242
206
|
*/
|
|
243
207
|
function AccountButton({
|
|
244
208
|
buttonText = "Account",
|
|
209
|
+
subscribedText = "Subscribed ✓",
|
|
245
210
|
wrapperClassName = "",
|
|
246
211
|
buttonClassName = "",
|
|
247
212
|
onAccountCreated
|
|
248
213
|
}) {
|
|
249
214
|
const [open, setOpen] = React.useState(false);
|
|
250
215
|
const [hasAccount, setHasAccount] = React.useState(false);
|
|
251
|
-
|
|
216
|
+
function readAccountFlag() {
|
|
252
217
|
try {
|
|
253
218
|
const saved = localStorage.getItem("glh_payment_account");
|
|
254
|
-
|
|
219
|
+
return !!saved;
|
|
255
220
|
} catch (e) {
|
|
256
|
-
|
|
221
|
+
return false;
|
|
257
222
|
}
|
|
258
|
-
}
|
|
223
|
+
}
|
|
224
|
+
React.useEffect(() => {
|
|
225
|
+
setHasAccount(readAccountFlag());
|
|
226
|
+
}, []);
|
|
259
227
|
function handleClose() {
|
|
260
228
|
setOpen(false);
|
|
261
|
-
|
|
229
|
+
|
|
230
|
+
// close ಆದಮೇಲೆ storage re-check ಮಾಡಿ button text update
|
|
262
231
|
try {
|
|
263
232
|
const saved = localStorage.getItem("glh_payment_account");
|
|
264
233
|
const ok = !!saved;
|
|
@@ -270,13 +239,14 @@ function AccountButton({
|
|
|
270
239
|
// ignore
|
|
271
240
|
}
|
|
272
241
|
}
|
|
242
|
+
const label = hasAccount ? subscribedText : buttonText;
|
|
273
243
|
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
|
274
244
|
className: `glh-pay-centerWrap ${wrapperClassName}`
|
|
275
245
|
}, /*#__PURE__*/React.createElement("button", {
|
|
276
246
|
className: `glh-pay-btn ${buttonClassName}`,
|
|
277
247
|
onClick: () => setOpen(true),
|
|
278
248
|
type: "button"
|
|
279
|
-
},
|
|
249
|
+
}, label)), /*#__PURE__*/React.createElement(PaymentModal, {
|
|
280
250
|
open: open,
|
|
281
251
|
onClose: handleClose
|
|
282
252
|
}));
|
package/dist/index.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs.js","sources":["../src/components/PaymentModal.jsx","../src/components/AccountButton.jsx"],"sourcesContent":["import React, { useMemo, useState } from \"react\";\r\nimport \"./styles.css\";\r\n\r\nconst PRICE_PER_MONTH = 5;\r\n\r\nconst PLAN_LIST = [\r\n { key: \"monthly\", label: \"Monthly\", months: 1, enabled: false },\r\n { key: \"3m\", label: \"3 Months\", months: 3, enabled: false },\r\n { key: \"6m\", label: \"6 Months\", months: 6, enabled: true }, // ONLY enabled + default\r\n { key: \"1y\", label: \"Yearly\", months: 12, enabled: false },\r\n { key: \"3y\", label: \"3 Years\", months: 36, enabled: false }\r\n];\r\n\r\nexport function PaymentModal({ open, onClose }) {\r\n const defaultPlanKey = \"6m\";\r\n\r\n const [fullName, setFullName] = useState(\"\");\r\n const [email, setEmail] = useState(\"\");\r\n const [planKey, setPlanKey] = useState(defaultPlanKey);\r\n const [accountCreated, setAccountCreated] = useState(false);\r\n\r\n const selectedPlan = useMemo(() => {\r\n return PLAN_LIST.find((p) => p.key === planKey) || PLAN_LIST[2];\r\n }, [planKey]);\r\n\r\n const total = useMemo(() => selectedPlan.months * PRICE_PER_MONTH, [selectedPlan]);\r\n const discountPercent = 100;\r\n const discountAmount = total; // 100% discount\r\n const netPayable = 0; // always zero\r\n\r\n function handleBackdropClick(e) {\r\n if (e.target?.classList?.contains(\"glh-pay-backdrop\")) onClose?.();\r\n }\r\n\r\n function createAccountAndSubscribe() {\r\n // Frontend-only: store in localStorage so app can show \"created\" state later\r\n const payload = {\r\n createdAt: new Date().toISOString(),\r\n fullName,\r\n email,\r\n plan: selectedPlan,\r\n pricePerMonth: PRICE_PER_MONTH,\r\n total,\r\n discountPercent,\r\n discountAmount,\r\n netPayable\r\n };\r\n try {\r\n localStorage.setItem(\"glh_payment_account\", JSON.stringify(payload));\r\n setAccountCreated(true);\r\n } catch (err) {\r\n // ignore; still show UI success\r\n setAccountCreated(true);\r\n }\r\n }\r\n\r\n if (!open) return null;\r\n\r\n return (\r\n <div className=\"glh-pay-backdrop\" onMouseDown={handleBackdropClick} role=\"dialog\" aria-modal=\"true\">\r\n <div className=\"glh-pay-modal\" onMouseDown={(e) => e.stopPropagation()}>\r\n <div className=\"glh-pay-header\">\r\n <h3 className=\"glh-pay-title\">Create Payment Account</h3>\r\n <button className=\"glh-pay-close\" onClick={onClose} aria-label=\"Close\">✕</button>\r\n </div>\r\n\r\n <div className=\"glh-pay-body\">\r\n {!accountCreated ? (\r\n <>\r\n <div className=\"glh-pay-row\">\r\n <div>\r\n <div className=\"glh-pay-label\">Full Name</div>\r\n <input\r\n className=\"glh-pay-input\"\r\n value={fullName}\r\n onChange={(e) => setFullName(e.target.value)}\r\n placeholder=\"Enter your name\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <div className=\"glh-pay-label\">Email</div>\r\n <input\r\n className=\"glh-pay-input\"\r\n value={email}\r\n onChange={(e) => setEmail(e.target.value)}\r\n placeholder=\"Enter your email\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <div className=\"glh-pay-label\" style={{ marginBottom: 8 }}>\r\n Subscription Plans (₹{PRICE_PER_MONTH} / month)\r\n </div>\r\n\r\n <div className=\"glh-pay-plans\">\r\n {PLAN_LIST.map((p) => {\r\n const disabled = !p.enabled;\r\n const selected = p.key === planKey;\r\n\r\n function pickPlan() {\r\n if (disabled) return;\r\n setPlanKey(p.key);\r\n }\r\n\r\n return (\r\n <div\r\n key={p.key}\r\n className={[\r\n \"glh-pay-plan\",\r\n disabled ? \"glh-pay-planDisabled\" : \"\",\r\n selected ? \"glh-pay-selected\" : \"\"\r\n ].join(\" \")}\r\n onClick={pickPlan}\r\n role=\"button\"\r\n tabIndex={disabled ? -1 : 0}\r\n onKeyDown={(e) => {\r\n if ((e.key === \"Enter\" || e.key === \" \") && !disabled) pickPlan();\r\n }}\r\n aria-disabled={disabled}\r\n aria-pressed={selected}\r\n >\r\n <div style={{ display: \"grid\", gap: 4 }}>\r\n <div style={{ fontWeight: 900 }}>{p.label}</div>\r\n <div style={{ fontSize: 12, color: \"rgba(0,0,0,0.65)\" }}>\r\n Duration: {p.months} month(s)\r\n </div>\r\n </div>\r\n\r\n <div style={{ display: \"flex\", gap: 8, alignItems: \"center\" }}>\r\n {p.enabled ? <span className=\"glh-pay-pill\">ENABLED</span> : <span className=\"glh-pay-pill\">DISABLED</span>}\r\n {selected ? <span className=\"glh-pay-pill\">SELECTED</span> : null}\r\n </div>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n\r\n <div className=\"glh-pay-summary\">\r\n <div className=\"glh-pay-line\">\r\n <span>Total ({selectedPlan.months} × ₹{PRICE_PER_MONTH})</span>\r\n <span className=\"glh-pay-strong\">₹{total}</span>\r\n </div>\r\n <div className=\"glh-pay-line\">\r\n <span>Discount</span>\r\n <span className=\"glh-pay-strong\">{discountPercent}% (-₹{discountAmount})</span>\r\n </div>\r\n <div className=\"glh-pay-line\">\r\n <span className=\"glh-pay-strong\">Net Payable</span>\r\n <span className=\"glh-pay-strong\">₹{netPayable}</span>\r\n </div>\r\n </div>\r\n\r\n <div className=\"glh-pay-note\">\r\n Note: This package is frontend-only. Payment is always ₹0 because 100% discount is applied.\r\n </div>\r\n </>\r\n ) : (\r\n <div style={{ padding: 6 }}>\r\n <div style={{ fontWeight: 900, fontSize: 16, marginBottom: 8 }}>✅ Account Created</div>\r\n <div style={{ fontSize: 13, color: \"rgba(0,0,0,0.7)\" }}>\r\n Your subscription is ready with <b>100% discount</b>. Net payable is <b>₹0</b>.\r\n </div>\r\n\r\n <div className=\"glh-pay-summary\" style={{ marginTop: 14 }}>\r\n <div className=\"glh-pay-line\">\r\n <span>Selected Plan</span>\r\n <span className=\"glh-pay-strong\">{selectedPlan.label}</span>\r\n </div>\r\n <div className=\"glh-pay-line\">\r\n <span>Total</span>\r\n <span className=\"glh-pay-strong\">₹{total}</span>\r\n </div>\r\n <div className=\"glh-pay-line\">\r\n <span>Discount</span>\r\n <span className=\"glh-pay-strong\">100% (-₹{total})</span>\r\n </div>\r\n <div className=\"glh-pay-line\">\r\n <span className=\"glh-pay-strong\">Net Payable</span>\r\n <span className=\"glh-pay-strong\">₹0</span>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n\r\n <div className=\"glh-pay-footer\">\r\n {!accountCreated ? (\r\n <>\r\n <button className=\"glh-pay-secondary\" onClick={onClose}>Cancel</button>\r\n <button\r\n className=\"glh-pay-primary\"\r\n onClick={createAccountAndSubscribe}\r\n disabled={!fullName || !email}\r\n title={!fullName || !email ? \"Enter name & email\" : \"Create account\"}\r\n style={!fullName || !email ? { opacity: 0.6, cursor: \"not-allowed\" } : null}\r\n >\r\n Create Account\r\n </button>\r\n </>\r\n ) : (\r\n <button className=\"glh-pay-primary\" onClick={onClose}>Done</button>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { PaymentModal } from \"./PaymentModal.jsx\";\r\nimport \"./styles.css\";\r\n\r\n/**\r\n * AccountButton\r\n * - Place this component in the CENTER area of your navbar.\r\n * - It renders a button and a modal for account creation + subscription summary.\r\n */\r\nexport function AccountButton({\r\n buttonText = \"Account\",\r\n wrapperClassName = \"\",\r\n buttonClassName = \"\",\r\n onAccountCreated\r\n}) {\r\n const [open, setOpen] = useState(false);\r\n const [hasAccount, setHasAccount] = useState(false);\r\n\r\n useEffect(() => {\r\n try {\r\n const saved = localStorage.getItem(\"glh_payment_account\");\r\n setHasAccount(!!saved);\r\n } catch (e) {\r\n setHasAccount(false);\r\n }\r\n }, [open]);\r\n\r\n function handleClose() {\r\n setOpen(false);\r\n // refresh state after close\r\n try {\r\n const saved = localStorage.getItem(\"glh_payment_account\");\r\n const ok = !!saved;\r\n setHasAccount(ok);\r\n if (ok && typeof onAccountCreated === \"function\") {\r\n onAccountCreated(JSON.parse(saved));\r\n }\r\n } catch (e) {\r\n // ignore\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n <div className={`glh-pay-centerWrap ${wrapperClassName}`}>\r\n <button\r\n className={`glh-pay-btn ${buttonClassName}`}\r\n onClick={() => setOpen(true)}\r\n type=\"button\"\r\n >\r\n {hasAccount ? `${buttonText} ✓` : buttonText}\r\n </button>\r\n </div>\r\n\r\n <PaymentModal open={open} onClose={handleClose} />\r\n </>\r\n );\r\n}\r\n"],"names":["PRICE_PER_MONTH","PLAN_LIST","key","label","months","enabled","PaymentModal","open","onClose","defaultPlanKey","fullName","setFullName","useState","email","setEmail","planKey","setPlanKey","accountCreated","setAccountCreated","selectedPlan","useMemo","find","p","total","discountPercent","discountAmount","netPayable","handleBackdropClick","e","target","classList","contains","createAccountAndSubscribe","payload","createdAt","Date","toISOString","plan","pricePerMonth","localStorage","setItem","JSON","stringify","err","React","createElement","className","onMouseDown","role","stopPropagation","onClick","Fragment","value","onChange","placeholder","style","marginBottom","map","disabled","selected","pickPlan","join","tabIndex","onKeyDown","display","gap","fontWeight","fontSize","color","alignItems","padding","marginTop","title","opacity","cursor","AccountButton","buttonText","wrapperClassName","buttonClassName","onAccountCreated","setOpen","hasAccount","setHasAccount","useEffect","saved","getItem","handleClose","ok","parse","type"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.cjs.js","sources":["../src/components/PaymentModal.jsx","../src/components/AccountButton.jsx"],"sourcesContent":["import React, { useMemo, useState } from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\nimport \"./styles.css\";\r\n\r\nconst PRICE_PER_MONTH = 5;\r\n\r\nconst PLAN_LIST = [\r\n { key: \"monthly\", label: \"Monthly\", months: 1, enabled: false },\r\n { key: \"3m\", label: \"3 Months\", months: 3, enabled: false },\r\n { key: \"6m\", label: \"6 Months\", months: 6, enabled: true }, // Only enabled\r\n { key: \"1y\", label: \"Yearly\", months: 12, enabled: false },\r\n { key: \"3y\", label: \"3 Years\", months: 36, enabled: false }\r\n];\r\n\r\nexport function PaymentModal({ open, onClose }) {\r\n const defaultPlanKey = \"6m\";\r\n const [planKey, setPlanKey] = useState(defaultPlanKey);\r\n const [accountCreated, setAccountCreated] = useState(false);\r\n\r\n const selectedPlan = useMemo(() => {\r\n return PLAN_LIST.find((p) => p.key === planKey) || PLAN_LIST[2];\r\n }, [planKey]);\r\n\r\n const total = selectedPlan.months * PRICE_PER_MONTH;\r\n const discountPercent = 100;\r\n const discountAmount = total;\r\n const netPayable = 0;\r\n\r\n function handleBackdropClick(e) {\r\n if (e.target?.classList?.contains(\"glh-pay-backdrop\")) onClose?.();\r\n }\r\n\r\n function createAccountAndSubscribe() {\r\n const payload = {\r\n createdAt: new Date().toISOString(),\r\n plan: selectedPlan,\r\n pricePerMonth: PRICE_PER_MONTH,\r\n total,\r\n discountPercent,\r\n discountAmount,\r\n netPayable\r\n };\r\n\r\n try {\r\n localStorage.setItem(\"glh_payment_account\", JSON.stringify(payload));\r\n setAccountCreated(true);\r\n } catch (err) {\r\n setAccountCreated(true);\r\n }\r\n }\r\n\r\n if (!open) return null;\r\n\r\n return createPortal(\r\n <div\r\n className=\"glh-pay-backdrop\"\r\n onMouseDown={handleBackdropClick}\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n >\r\n <div className=\"glh-pay-modal\" onMouseDown={(e) => e.stopPropagation()}>\r\n <div className=\"glh-pay-header\">\r\n <h3 className=\"glh-pay-title\">Create Payment Account</h3>\r\n <button className=\"glh-pay-close\" onClick={onClose} aria-label=\"Close\">\r\n ✕\r\n </button>\r\n </div>\r\n\r\n <div className=\"glh-pay-body\">\r\n {!accountCreated ? (\r\n <>\r\n <div className=\"glh-pay-label\" style={{ marginBottom: 8 }}>\r\n Subscription Plans (₹{PRICE_PER_MONTH} / month)\r\n </div>\r\n\r\n <div className=\"glh-pay-plans\">\r\n {PLAN_LIST.map((p) => {\r\n const disabled = !p.enabled;\r\n const selected = p.key === planKey;\r\n\r\n const pickPlan = () => {\r\n if (disabled) return;\r\n setPlanKey(p.key);\r\n };\r\n\r\n return (\r\n <div\r\n key={p.key}\r\n className={[\r\n \"glh-pay-plan\",\r\n disabled ? \"glh-pay-planDisabled\" : \"\",\r\n selected ? \"glh-pay-selected\" : \"\"\r\n ].join(\" \")}\r\n onClick={pickPlan}\r\n role=\"button\"\r\n tabIndex={disabled ? -1 : 0}\r\n aria-disabled={disabled}\r\n aria-pressed={selected}\r\n onKeyDown={(e) => {\r\n if ((e.key === \"Enter\" || e.key === \" \") && !disabled) pickPlan();\r\n }}\r\n >\r\n <div style={{ display: \"grid\", gap: 4 }}>\r\n <div style={{ fontWeight: 900 }}>{p.label}</div>\r\n <div style={{ fontSize: 12, color: \"rgba(0,0,0,0.65)\" }}>\r\n Duration: {p.months} month(s)\r\n </div>\r\n </div>\r\n\r\n <div style={{ display: \"flex\", gap: 8 }}>\r\n <span className=\"glh-pay-pill\">{p.enabled ? \"ENABLED\" : \"DISABLED\"}</span>\r\n {selected ? <span className=\"glh-pay-pill\">SELECTED</span> : null}\r\n </div>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n\r\n <div className=\"glh-pay-summary\">\r\n <div className=\"glh-pay-line\">\r\n <span>\r\n Total ({selectedPlan.months} × ₹{PRICE_PER_MONTH})\r\n </span>\r\n <span className=\"glh-pay-strong\">₹{total}</span>\r\n </div>\r\n <div className=\"glh-pay-line\">\r\n <span>Discount</span>\r\n <span className=\"glh-pay-strong\">\r\n {discountPercent}% (-₹{discountAmount})\r\n </span>\r\n </div>\r\n <div className=\"glh-pay-line\">\r\n <span className=\"glh-pay-strong\">Net Payable</span>\r\n <span className=\"glh-pay-strong\">₹{netPayable}</span>\r\n </div>\r\n </div>\r\n\r\n <div className=\"glh-pay-note\">\r\n Note: This package is frontend-only. Payment is always ₹0 because 100% discount is applied.\r\n </div>\r\n </>\r\n ) : (\r\n <div style={{ padding: 6 }}>\r\n <div style={{ fontWeight: 900, fontSize: 16, marginBottom: 8 }}>✅ Account Created</div>\r\n\r\n <div className=\"glh-pay-summary\" style={{ marginTop: 14 }}>\r\n <div className=\"glh-pay-line\">\r\n <span>Selected Plan</span>\r\n <span className=\"glh-pay-strong\">{selectedPlan.label}</span>\r\n </div>\r\n <div className=\"glh-pay-line\">\r\n <span>Total</span>\r\n <span className=\"glh-pay-strong\">₹{total}</span>\r\n </div>\r\n <div className=\"glh-pay-line\">\r\n <span>Discount</span>\r\n <span className=\"glh-pay-strong\">100% (-₹{total})</span>\r\n </div>\r\n <div className=\"glh-pay-line\">\r\n <span className=\"glh-pay-strong\">Net Payable</span>\r\n <span className=\"glh-pay-strong\">₹0</span>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n\r\n <div className=\"glh-pay-footer\">\r\n {!accountCreated ? (\r\n <>\r\n <button className=\"glh-pay-secondary\" onClick={onClose}>\r\n Cancel\r\n </button>\r\n <button className=\"glh-pay-primary\" onClick={createAccountAndSubscribe}>\r\n Create Account\r\n </button>\r\n </>\r\n ) : (\r\n <button className=\"glh-pay-primary\" onClick={onClose}>\r\n Done\r\n </button>\r\n )}\r\n </div>\r\n </div>\r\n </div>,\r\n document.body\r\n );\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { PaymentModal } from \"./PaymentModal.jsx\";\r\nimport \"./styles.css\";\r\n\r\n/**\r\n * AccountButton\r\n * - Navbar center ನಲ್ಲಿ place ಮಾಡಬಹುದು\r\n * - localStorage ನಲ್ಲಿ glh_payment_account ಇದ್ದರೆ button \"Subscribed ✓\" ಆಗಿ show ಆಗುತ್ತದೆ\r\n */\r\nexport function AccountButton({\r\n buttonText = \"Account\",\r\n subscribedText = \"Subscribed ✓\",\r\n wrapperClassName = \"\",\r\n buttonClassName = \"\",\r\n onAccountCreated\r\n}) {\r\n const [open, setOpen] = useState(false);\r\n const [hasAccount, setHasAccount] = useState(false);\r\n\r\n function readAccountFlag() {\r\n try {\r\n const saved = localStorage.getItem(\"glh_payment_account\");\r\n return !!saved;\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n setHasAccount(readAccountFlag());\r\n }, []);\r\n\r\n function handleClose() {\r\n setOpen(false);\r\n\r\n // close ಆದಮೇಲೆ storage re-check ಮಾಡಿ button text update\r\n try {\r\n const saved = localStorage.getItem(\"glh_payment_account\");\r\n const ok = !!saved;\r\n setHasAccount(ok);\r\n\r\n if (ok && typeof onAccountCreated === \"function\") {\r\n onAccountCreated(JSON.parse(saved));\r\n }\r\n } catch (e) {\r\n // ignore\r\n }\r\n }\r\n\r\n const label = hasAccount ? subscribedText : buttonText;\r\n\r\n return (\r\n <>\r\n <div className={`glh-pay-centerWrap ${wrapperClassName}`}>\r\n <button\r\n className={`glh-pay-btn ${buttonClassName}`}\r\n onClick={() => setOpen(true)}\r\n type=\"button\"\r\n >\r\n {label}\r\n </button>\r\n </div>\r\n\r\n <PaymentModal open={open} onClose={handleClose} />\r\n </>\r\n );\r\n}\r\n"],"names":["PRICE_PER_MONTH","PLAN_LIST","key","label","months","enabled","PaymentModal","open","onClose","defaultPlanKey","planKey","setPlanKey","useState","accountCreated","setAccountCreated","selectedPlan","useMemo","find","p","total","discountPercent","discountAmount","netPayable","handleBackdropClick","e","target","classList","contains","createAccountAndSubscribe","payload","createdAt","Date","toISOString","plan","pricePerMonth","localStorage","setItem","JSON","stringify","err","createPortal","React","createElement","className","onMouseDown","role","stopPropagation","onClick","Fragment","style","marginBottom","map","disabled","selected","pickPlan","join","tabIndex","onKeyDown","display","gap","fontWeight","fontSize","color","padding","marginTop","document","body","AccountButton","buttonText","subscribedText","wrapperClassName","buttonClassName","onAccountCreated","setOpen","hasAccount","setHasAccount","readAccountFlag","saved","getItem","useEffect","handleClose","ok","parse","type"],"mappings":"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"}
|
package/dist/index.esm.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React, { useState, useMemo, useEffect } from 'react';
|
|
2
|
+
import { createPortal } from 'react-dom';
|
|
2
3
|
|
|
3
4
|
const PRICE_PER_MONTH = 5;
|
|
4
5
|
const PLAN_LIST = [{
|
|
@@ -17,7 +18,7 @@ const PLAN_LIST = [{
|
|
|
17
18
|
months: 6,
|
|
18
19
|
enabled: true
|
|
19
20
|
},
|
|
20
|
-
//
|
|
21
|
+
// Only enabled
|
|
21
22
|
{
|
|
22
23
|
key: "1y",
|
|
23
24
|
label: "Yearly",
|
|
@@ -34,27 +35,21 @@ function PaymentModal({
|
|
|
34
35
|
onClose
|
|
35
36
|
}) {
|
|
36
37
|
const defaultPlanKey = "6m";
|
|
37
|
-
const [fullName, setFullName] = useState("");
|
|
38
|
-
const [email, setEmail] = useState("");
|
|
39
38
|
const [planKey, setPlanKey] = useState(defaultPlanKey);
|
|
40
39
|
const [accountCreated, setAccountCreated] = useState(false);
|
|
41
40
|
const selectedPlan = useMemo(() => {
|
|
42
41
|
return PLAN_LIST.find(p => p.key === planKey) || PLAN_LIST[2];
|
|
43
42
|
}, [planKey]);
|
|
44
|
-
const total =
|
|
43
|
+
const total = selectedPlan.months * PRICE_PER_MONTH;
|
|
45
44
|
const discountPercent = 100;
|
|
46
|
-
const discountAmount = total;
|
|
47
|
-
const netPayable = 0;
|
|
48
|
-
|
|
45
|
+
const discountAmount = total;
|
|
46
|
+
const netPayable = 0;
|
|
49
47
|
function handleBackdropClick(e) {
|
|
50
48
|
if (e.target?.classList?.contains("glh-pay-backdrop")) onClose?.();
|
|
51
49
|
}
|
|
52
50
|
function createAccountAndSubscribe() {
|
|
53
|
-
// Frontend-only: store in localStorage so app can show "created" state later
|
|
54
51
|
const payload = {
|
|
55
52
|
createdAt: new Date().toISOString(),
|
|
56
|
-
fullName,
|
|
57
|
-
email,
|
|
58
53
|
plan: selectedPlan,
|
|
59
54
|
pricePerMonth: PRICE_PER_MONTH,
|
|
60
55
|
total,
|
|
@@ -66,12 +61,11 @@ function PaymentModal({
|
|
|
66
61
|
localStorage.setItem("glh_payment_account", JSON.stringify(payload));
|
|
67
62
|
setAccountCreated(true);
|
|
68
63
|
} catch (err) {
|
|
69
|
-
// ignore; still show UI success
|
|
70
64
|
setAccountCreated(true);
|
|
71
65
|
}
|
|
72
66
|
}
|
|
73
67
|
if (!open) return null;
|
|
74
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
68
|
+
return /*#__PURE__*/createPortal(/*#__PURE__*/React.createElement("div", {
|
|
75
69
|
className: "glh-pay-backdrop",
|
|
76
70
|
onMouseDown: handleBackdropClick,
|
|
77
71
|
role: "dialog",
|
|
@@ -90,22 +84,6 @@ function PaymentModal({
|
|
|
90
84
|
}, "\u2715")), /*#__PURE__*/React.createElement("div", {
|
|
91
85
|
className: "glh-pay-body"
|
|
92
86
|
}, !accountCreated ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
|
93
|
-
className: "glh-pay-row"
|
|
94
|
-
}, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", {
|
|
95
|
-
className: "glh-pay-label"
|
|
96
|
-
}, "Full Name"), /*#__PURE__*/React.createElement("input", {
|
|
97
|
-
className: "glh-pay-input",
|
|
98
|
-
value: fullName,
|
|
99
|
-
onChange: e => setFullName(e.target.value),
|
|
100
|
-
placeholder: "Enter your name"
|
|
101
|
-
})), /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("div", {
|
|
102
|
-
className: "glh-pay-label"
|
|
103
|
-
}, "Email"), /*#__PURE__*/React.createElement("input", {
|
|
104
|
-
className: "glh-pay-input",
|
|
105
|
-
value: email,
|
|
106
|
-
onChange: e => setEmail(e.target.value),
|
|
107
|
-
placeholder: "Enter your email"
|
|
108
|
-
}))), /*#__PURE__*/React.createElement("div", {
|
|
109
87
|
className: "glh-pay-label",
|
|
110
88
|
style: {
|
|
111
89
|
marginBottom: 8
|
|
@@ -115,21 +93,21 @@ function PaymentModal({
|
|
|
115
93
|
}, PLAN_LIST.map(p => {
|
|
116
94
|
const disabled = !p.enabled;
|
|
117
95
|
const selected = p.key === planKey;
|
|
118
|
-
|
|
96
|
+
const pickPlan = () => {
|
|
119
97
|
if (disabled) return;
|
|
120
98
|
setPlanKey(p.key);
|
|
121
|
-
}
|
|
99
|
+
};
|
|
122
100
|
return /*#__PURE__*/React.createElement("div", {
|
|
123
101
|
key: p.key,
|
|
124
102
|
className: ["glh-pay-plan", disabled ? "glh-pay-planDisabled" : "", selected ? "glh-pay-selected" : ""].join(" "),
|
|
125
103
|
onClick: pickPlan,
|
|
126
104
|
role: "button",
|
|
127
105
|
tabIndex: disabled ? -1 : 0,
|
|
106
|
+
"aria-disabled": disabled,
|
|
107
|
+
"aria-pressed": selected,
|
|
128
108
|
onKeyDown: e => {
|
|
129
109
|
if ((e.key === "Enter" || e.key === " ") && !disabled) pickPlan();
|
|
130
|
-
}
|
|
131
|
-
"aria-disabled": disabled,
|
|
132
|
-
"aria-pressed": selected
|
|
110
|
+
}
|
|
133
111
|
}, /*#__PURE__*/React.createElement("div", {
|
|
134
112
|
style: {
|
|
135
113
|
display: "grid",
|
|
@@ -147,14 +125,11 @@ function PaymentModal({
|
|
|
147
125
|
}, "Duration: ", p.months, " month(s)")), /*#__PURE__*/React.createElement("div", {
|
|
148
126
|
style: {
|
|
149
127
|
display: "flex",
|
|
150
|
-
gap: 8
|
|
151
|
-
alignItems: "center"
|
|
128
|
+
gap: 8
|
|
152
129
|
}
|
|
153
|
-
},
|
|
154
|
-
className: "glh-pay-pill"
|
|
155
|
-
}, "ENABLED") : /*#__PURE__*/React.createElement("span", {
|
|
130
|
+
}, /*#__PURE__*/React.createElement("span", {
|
|
156
131
|
className: "glh-pay-pill"
|
|
157
|
-
}, "DISABLED"), selected ? /*#__PURE__*/React.createElement("span", {
|
|
132
|
+
}, p.enabled ? "ENABLED" : "DISABLED"), selected ? /*#__PURE__*/React.createElement("span", {
|
|
158
133
|
className: "glh-pay-pill"
|
|
159
134
|
}, "SELECTED") : null));
|
|
160
135
|
})), /*#__PURE__*/React.createElement("div", {
|
|
@@ -186,11 +161,6 @@ function PaymentModal({
|
|
|
186
161
|
marginBottom: 8
|
|
187
162
|
}
|
|
188
163
|
}, "\u2705 Account Created"), /*#__PURE__*/React.createElement("div", {
|
|
189
|
-
style: {
|
|
190
|
-
fontSize: 13,
|
|
191
|
-
color: "rgba(0,0,0,0.7)"
|
|
192
|
-
}
|
|
193
|
-
}, "Your subscription is ready with ", /*#__PURE__*/React.createElement("b", null, "100% discount"), ". Net payable is ", /*#__PURE__*/React.createElement("b", null, "\u20B90"), "."), /*#__PURE__*/React.createElement("div", {
|
|
194
164
|
className: "glh-pay-summary",
|
|
195
165
|
style: {
|
|
196
166
|
marginTop: 14
|
|
@@ -220,43 +190,42 @@ function PaymentModal({
|
|
|
220
190
|
onClick: onClose
|
|
221
191
|
}, "Cancel"), /*#__PURE__*/React.createElement("button", {
|
|
222
192
|
className: "glh-pay-primary",
|
|
223
|
-
onClick: createAccountAndSubscribe
|
|
224
|
-
disabled: !fullName || !email,
|
|
225
|
-
title: !fullName || !email ? "Enter name & email" : "Create account",
|
|
226
|
-
style: !fullName || !email ? {
|
|
227
|
-
opacity: 0.6,
|
|
228
|
-
cursor: "not-allowed"
|
|
229
|
-
} : null
|
|
193
|
+
onClick: createAccountAndSubscribe
|
|
230
194
|
}, "Create Account")) : /*#__PURE__*/React.createElement("button", {
|
|
231
195
|
className: "glh-pay-primary",
|
|
232
196
|
onClick: onClose
|
|
233
|
-
}, "Done"))));
|
|
197
|
+
}, "Done")))), document.body);
|
|
234
198
|
}
|
|
235
199
|
|
|
236
200
|
/**
|
|
237
201
|
* AccountButton
|
|
238
|
-
* -
|
|
239
|
-
* -
|
|
202
|
+
* - Navbar center ನಲ್ಲಿ place ಮಾಡಬಹುದು
|
|
203
|
+
* - localStorage ನಲ್ಲಿ glh_payment_account ಇದ್ದರೆ button "Subscribed ✓" ಆಗಿ show ಆಗುತ್ತದೆ
|
|
240
204
|
*/
|
|
241
205
|
function AccountButton({
|
|
242
206
|
buttonText = "Account",
|
|
207
|
+
subscribedText = "Subscribed ✓",
|
|
243
208
|
wrapperClassName = "",
|
|
244
209
|
buttonClassName = "",
|
|
245
210
|
onAccountCreated
|
|
246
211
|
}) {
|
|
247
212
|
const [open, setOpen] = useState(false);
|
|
248
213
|
const [hasAccount, setHasAccount] = useState(false);
|
|
249
|
-
|
|
214
|
+
function readAccountFlag() {
|
|
250
215
|
try {
|
|
251
216
|
const saved = localStorage.getItem("glh_payment_account");
|
|
252
|
-
|
|
217
|
+
return !!saved;
|
|
253
218
|
} catch (e) {
|
|
254
|
-
|
|
219
|
+
return false;
|
|
255
220
|
}
|
|
256
|
-
}
|
|
221
|
+
}
|
|
222
|
+
useEffect(() => {
|
|
223
|
+
setHasAccount(readAccountFlag());
|
|
224
|
+
}, []);
|
|
257
225
|
function handleClose() {
|
|
258
226
|
setOpen(false);
|
|
259
|
-
|
|
227
|
+
|
|
228
|
+
// close ಆದಮೇಲೆ storage re-check ಮಾಡಿ button text update
|
|
260
229
|
try {
|
|
261
230
|
const saved = localStorage.getItem("glh_payment_account");
|
|
262
231
|
const ok = !!saved;
|
|
@@ -268,13 +237,14 @@ function AccountButton({
|
|
|
268
237
|
// ignore
|
|
269
238
|
}
|
|
270
239
|
}
|
|
240
|
+
const label = hasAccount ? subscribedText : buttonText;
|
|
271
241
|
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
|
|
272
242
|
className: `glh-pay-centerWrap ${wrapperClassName}`
|
|
273
243
|
}, /*#__PURE__*/React.createElement("button", {
|
|
274
244
|
className: `glh-pay-btn ${buttonClassName}`,
|
|
275
245
|
onClick: () => setOpen(true),
|
|
276
246
|
type: "button"
|
|
277
|
-
},
|
|
247
|
+
}, label)), /*#__PURE__*/React.createElement(PaymentModal, {
|
|
278
248
|
open: open,
|
|
279
249
|
onClose: handleClose
|
|
280
250
|
}));
|
package/dist/index.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.esm.js","sources":["../src/components/PaymentModal.jsx","../src/components/AccountButton.jsx"],"sourcesContent":["import React, { useMemo, useState } from \"react\";\r\nimport \"./styles.css\";\r\n\r\nconst PRICE_PER_MONTH = 5;\r\n\r\nconst PLAN_LIST = [\r\n { key: \"monthly\", label: \"Monthly\", months: 1, enabled: false },\r\n { key: \"3m\", label: \"3 Months\", months: 3, enabled: false },\r\n { key: \"6m\", label: \"6 Months\", months: 6, enabled: true }, // ONLY enabled + default\r\n { key: \"1y\", label: \"Yearly\", months: 12, enabled: false },\r\n { key: \"3y\", label: \"3 Years\", months: 36, enabled: false }\r\n];\r\n\r\nexport function PaymentModal({ open, onClose }) {\r\n const defaultPlanKey = \"6m\";\r\n\r\n const [fullName, setFullName] = useState(\"\");\r\n const [email, setEmail] = useState(\"\");\r\n const [planKey, setPlanKey] = useState(defaultPlanKey);\r\n const [accountCreated, setAccountCreated] = useState(false);\r\n\r\n const selectedPlan = useMemo(() => {\r\n return PLAN_LIST.find((p) => p.key === planKey) || PLAN_LIST[2];\r\n }, [planKey]);\r\n\r\n const total = useMemo(() => selectedPlan.months * PRICE_PER_MONTH, [selectedPlan]);\r\n const discountPercent = 100;\r\n const discountAmount = total; // 100% discount\r\n const netPayable = 0; // always zero\r\n\r\n function handleBackdropClick(e) {\r\n if (e.target?.classList?.contains(\"glh-pay-backdrop\")) onClose?.();\r\n }\r\n\r\n function createAccountAndSubscribe() {\r\n // Frontend-only: store in localStorage so app can show \"created\" state later\r\n const payload = {\r\n createdAt: new Date().toISOString(),\r\n fullName,\r\n email,\r\n plan: selectedPlan,\r\n pricePerMonth: PRICE_PER_MONTH,\r\n total,\r\n discountPercent,\r\n discountAmount,\r\n netPayable\r\n };\r\n try {\r\n localStorage.setItem(\"glh_payment_account\", JSON.stringify(payload));\r\n setAccountCreated(true);\r\n } catch (err) {\r\n // ignore; still show UI success\r\n setAccountCreated(true);\r\n }\r\n }\r\n\r\n if (!open) return null;\r\n\r\n return (\r\n <div className=\"glh-pay-backdrop\" onMouseDown={handleBackdropClick} role=\"dialog\" aria-modal=\"true\">\r\n <div className=\"glh-pay-modal\" onMouseDown={(e) => e.stopPropagation()}>\r\n <div className=\"glh-pay-header\">\r\n <h3 className=\"glh-pay-title\">Create Payment Account</h3>\r\n <button className=\"glh-pay-close\" onClick={onClose} aria-label=\"Close\">✕</button>\r\n </div>\r\n\r\n <div className=\"glh-pay-body\">\r\n {!accountCreated ? (\r\n <>\r\n <div className=\"glh-pay-row\">\r\n <div>\r\n <div className=\"glh-pay-label\">Full Name</div>\r\n <input\r\n className=\"glh-pay-input\"\r\n value={fullName}\r\n onChange={(e) => setFullName(e.target.value)}\r\n placeholder=\"Enter your name\"\r\n />\r\n </div>\r\n\r\n <div>\r\n <div className=\"glh-pay-label\">Email</div>\r\n <input\r\n className=\"glh-pay-input\"\r\n value={email}\r\n onChange={(e) => setEmail(e.target.value)}\r\n placeholder=\"Enter your email\"\r\n />\r\n </div>\r\n </div>\r\n\r\n <div className=\"glh-pay-label\" style={{ marginBottom: 8 }}>\r\n Subscription Plans (₹{PRICE_PER_MONTH} / month)\r\n </div>\r\n\r\n <div className=\"glh-pay-plans\">\r\n {PLAN_LIST.map((p) => {\r\n const disabled = !p.enabled;\r\n const selected = p.key === planKey;\r\n\r\n function pickPlan() {\r\n if (disabled) return;\r\n setPlanKey(p.key);\r\n }\r\n\r\n return (\r\n <div\r\n key={p.key}\r\n className={[\r\n \"glh-pay-plan\",\r\n disabled ? \"glh-pay-planDisabled\" : \"\",\r\n selected ? \"glh-pay-selected\" : \"\"\r\n ].join(\" \")}\r\n onClick={pickPlan}\r\n role=\"button\"\r\n tabIndex={disabled ? -1 : 0}\r\n onKeyDown={(e) => {\r\n if ((e.key === \"Enter\" || e.key === \" \") && !disabled) pickPlan();\r\n }}\r\n aria-disabled={disabled}\r\n aria-pressed={selected}\r\n >\r\n <div style={{ display: \"grid\", gap: 4 }}>\r\n <div style={{ fontWeight: 900 }}>{p.label}</div>\r\n <div style={{ fontSize: 12, color: \"rgba(0,0,0,0.65)\" }}>\r\n Duration: {p.months} month(s)\r\n </div>\r\n </div>\r\n\r\n <div style={{ display: \"flex\", gap: 8, alignItems: \"center\" }}>\r\n {p.enabled ? <span className=\"glh-pay-pill\">ENABLED</span> : <span className=\"glh-pay-pill\">DISABLED</span>}\r\n {selected ? <span className=\"glh-pay-pill\">SELECTED</span> : null}\r\n </div>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n\r\n <div className=\"glh-pay-summary\">\r\n <div className=\"glh-pay-line\">\r\n <span>Total ({selectedPlan.months} × ₹{PRICE_PER_MONTH})</span>\r\n <span className=\"glh-pay-strong\">₹{total}</span>\r\n </div>\r\n <div className=\"glh-pay-line\">\r\n <span>Discount</span>\r\n <span className=\"glh-pay-strong\">{discountPercent}% (-₹{discountAmount})</span>\r\n </div>\r\n <div className=\"glh-pay-line\">\r\n <span className=\"glh-pay-strong\">Net Payable</span>\r\n <span className=\"glh-pay-strong\">₹{netPayable}</span>\r\n </div>\r\n </div>\r\n\r\n <div className=\"glh-pay-note\">\r\n Note: This package is frontend-only. Payment is always ₹0 because 100% discount is applied.\r\n </div>\r\n </>\r\n ) : (\r\n <div style={{ padding: 6 }}>\r\n <div style={{ fontWeight: 900, fontSize: 16, marginBottom: 8 }}>✅ Account Created</div>\r\n <div style={{ fontSize: 13, color: \"rgba(0,0,0,0.7)\" }}>\r\n Your subscription is ready with <b>100% discount</b>. Net payable is <b>₹0</b>.\r\n </div>\r\n\r\n <div className=\"glh-pay-summary\" style={{ marginTop: 14 }}>\r\n <div className=\"glh-pay-line\">\r\n <span>Selected Plan</span>\r\n <span className=\"glh-pay-strong\">{selectedPlan.label}</span>\r\n </div>\r\n <div className=\"glh-pay-line\">\r\n <span>Total</span>\r\n <span className=\"glh-pay-strong\">₹{total}</span>\r\n </div>\r\n <div className=\"glh-pay-line\">\r\n <span>Discount</span>\r\n <span className=\"glh-pay-strong\">100% (-₹{total})</span>\r\n </div>\r\n <div className=\"glh-pay-line\">\r\n <span className=\"glh-pay-strong\">Net Payable</span>\r\n <span className=\"glh-pay-strong\">₹0</span>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n\r\n <div className=\"glh-pay-footer\">\r\n {!accountCreated ? (\r\n <>\r\n <button className=\"glh-pay-secondary\" onClick={onClose}>Cancel</button>\r\n <button\r\n className=\"glh-pay-primary\"\r\n onClick={createAccountAndSubscribe}\r\n disabled={!fullName || !email}\r\n title={!fullName || !email ? \"Enter name & email\" : \"Create account\"}\r\n style={!fullName || !email ? { opacity: 0.6, cursor: \"not-allowed\" } : null}\r\n >\r\n Create Account\r\n </button>\r\n </>\r\n ) : (\r\n <button className=\"glh-pay-primary\" onClick={onClose}>Done</button>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { PaymentModal } from \"./PaymentModal.jsx\";\r\nimport \"./styles.css\";\r\n\r\n/**\r\n * AccountButton\r\n * - Place this component in the CENTER area of your navbar.\r\n * - It renders a button and a modal for account creation + subscription summary.\r\n */\r\nexport function AccountButton({\r\n buttonText = \"Account\",\r\n wrapperClassName = \"\",\r\n buttonClassName = \"\",\r\n onAccountCreated\r\n}) {\r\n const [open, setOpen] = useState(false);\r\n const [hasAccount, setHasAccount] = useState(false);\r\n\r\n useEffect(() => {\r\n try {\r\n const saved = localStorage.getItem(\"glh_payment_account\");\r\n setHasAccount(!!saved);\r\n } catch (e) {\r\n setHasAccount(false);\r\n }\r\n }, [open]);\r\n\r\n function handleClose() {\r\n setOpen(false);\r\n // refresh state after close\r\n try {\r\n const saved = localStorage.getItem(\"glh_payment_account\");\r\n const ok = !!saved;\r\n setHasAccount(ok);\r\n if (ok && typeof onAccountCreated === \"function\") {\r\n onAccountCreated(JSON.parse(saved));\r\n }\r\n } catch (e) {\r\n // ignore\r\n }\r\n }\r\n\r\n return (\r\n <>\r\n <div className={`glh-pay-centerWrap ${wrapperClassName}`}>\r\n <button\r\n className={`glh-pay-btn ${buttonClassName}`}\r\n onClick={() => setOpen(true)}\r\n type=\"button\"\r\n >\r\n {hasAccount ? `${buttonText} ✓` : buttonText}\r\n </button>\r\n </div>\r\n\r\n <PaymentModal open={open} onClose={handleClose} />\r\n </>\r\n );\r\n}\r\n"],"names":["PRICE_PER_MONTH","PLAN_LIST","key","label","months","enabled","PaymentModal","open","onClose","defaultPlanKey","fullName","setFullName","useState","email","setEmail","planKey","setPlanKey","accountCreated","setAccountCreated","selectedPlan","useMemo","find","p","total","discountPercent","discountAmount","netPayable","handleBackdropClick","e","target","classList","contains","createAccountAndSubscribe","payload","createdAt","Date","toISOString","plan","pricePerMonth","localStorage","setItem","JSON","stringify","err","React","createElement","className","onMouseDown","role","stopPropagation","onClick","Fragment","value","onChange","placeholder","style","marginBottom","map","disabled","selected","pickPlan","join","tabIndex","onKeyDown","display","gap","fontWeight","fontSize","color","alignItems","padding","marginTop","title","opacity","cursor","AccountButton","buttonText","wrapperClassName","buttonClassName","onAccountCreated","setOpen","hasAccount","setHasAccount","useEffect","saved","getItem","handleClose","ok","parse","type"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.esm.js","sources":["../src/components/PaymentModal.jsx","../src/components/AccountButton.jsx"],"sourcesContent":["import React, { useMemo, useState } from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\nimport \"./styles.css\";\r\n\r\nconst PRICE_PER_MONTH = 5;\r\n\r\nconst PLAN_LIST = [\r\n { key: \"monthly\", label: \"Monthly\", months: 1, enabled: false },\r\n { key: \"3m\", label: \"3 Months\", months: 3, enabled: false },\r\n { key: \"6m\", label: \"6 Months\", months: 6, enabled: true }, // Only enabled\r\n { key: \"1y\", label: \"Yearly\", months: 12, enabled: false },\r\n { key: \"3y\", label: \"3 Years\", months: 36, enabled: false }\r\n];\r\n\r\nexport function PaymentModal({ open, onClose }) {\r\n const defaultPlanKey = \"6m\";\r\n const [planKey, setPlanKey] = useState(defaultPlanKey);\r\n const [accountCreated, setAccountCreated] = useState(false);\r\n\r\n const selectedPlan = useMemo(() => {\r\n return PLAN_LIST.find((p) => p.key === planKey) || PLAN_LIST[2];\r\n }, [planKey]);\r\n\r\n const total = selectedPlan.months * PRICE_PER_MONTH;\r\n const discountPercent = 100;\r\n const discountAmount = total;\r\n const netPayable = 0;\r\n\r\n function handleBackdropClick(e) {\r\n if (e.target?.classList?.contains(\"glh-pay-backdrop\")) onClose?.();\r\n }\r\n\r\n function createAccountAndSubscribe() {\r\n const payload = {\r\n createdAt: new Date().toISOString(),\r\n plan: selectedPlan,\r\n pricePerMonth: PRICE_PER_MONTH,\r\n total,\r\n discountPercent,\r\n discountAmount,\r\n netPayable\r\n };\r\n\r\n try {\r\n localStorage.setItem(\"glh_payment_account\", JSON.stringify(payload));\r\n setAccountCreated(true);\r\n } catch (err) {\r\n setAccountCreated(true);\r\n }\r\n }\r\n\r\n if (!open) return null;\r\n\r\n return createPortal(\r\n <div\r\n className=\"glh-pay-backdrop\"\r\n onMouseDown={handleBackdropClick}\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n >\r\n <div className=\"glh-pay-modal\" onMouseDown={(e) => e.stopPropagation()}>\r\n <div className=\"glh-pay-header\">\r\n <h3 className=\"glh-pay-title\">Create Payment Account</h3>\r\n <button className=\"glh-pay-close\" onClick={onClose} aria-label=\"Close\">\r\n ✕\r\n </button>\r\n </div>\r\n\r\n <div className=\"glh-pay-body\">\r\n {!accountCreated ? (\r\n <>\r\n <div className=\"glh-pay-label\" style={{ marginBottom: 8 }}>\r\n Subscription Plans (₹{PRICE_PER_MONTH} / month)\r\n </div>\r\n\r\n <div className=\"glh-pay-plans\">\r\n {PLAN_LIST.map((p) => {\r\n const disabled = !p.enabled;\r\n const selected = p.key === planKey;\r\n\r\n const pickPlan = () => {\r\n if (disabled) return;\r\n setPlanKey(p.key);\r\n };\r\n\r\n return (\r\n <div\r\n key={p.key}\r\n className={[\r\n \"glh-pay-plan\",\r\n disabled ? \"glh-pay-planDisabled\" : \"\",\r\n selected ? \"glh-pay-selected\" : \"\"\r\n ].join(\" \")}\r\n onClick={pickPlan}\r\n role=\"button\"\r\n tabIndex={disabled ? -1 : 0}\r\n aria-disabled={disabled}\r\n aria-pressed={selected}\r\n onKeyDown={(e) => {\r\n if ((e.key === \"Enter\" || e.key === \" \") && !disabled) pickPlan();\r\n }}\r\n >\r\n <div style={{ display: \"grid\", gap: 4 }}>\r\n <div style={{ fontWeight: 900 }}>{p.label}</div>\r\n <div style={{ fontSize: 12, color: \"rgba(0,0,0,0.65)\" }}>\r\n Duration: {p.months} month(s)\r\n </div>\r\n </div>\r\n\r\n <div style={{ display: \"flex\", gap: 8 }}>\r\n <span className=\"glh-pay-pill\">{p.enabled ? \"ENABLED\" : \"DISABLED\"}</span>\r\n {selected ? <span className=\"glh-pay-pill\">SELECTED</span> : null}\r\n </div>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n\r\n <div className=\"glh-pay-summary\">\r\n <div className=\"glh-pay-line\">\r\n <span>\r\n Total ({selectedPlan.months} × ₹{PRICE_PER_MONTH})\r\n </span>\r\n <span className=\"glh-pay-strong\">₹{total}</span>\r\n </div>\r\n <div className=\"glh-pay-line\">\r\n <span>Discount</span>\r\n <span className=\"glh-pay-strong\">\r\n {discountPercent}% (-₹{discountAmount})\r\n </span>\r\n </div>\r\n <div className=\"glh-pay-line\">\r\n <span className=\"glh-pay-strong\">Net Payable</span>\r\n <span className=\"glh-pay-strong\">₹{netPayable}</span>\r\n </div>\r\n </div>\r\n\r\n <div className=\"glh-pay-note\">\r\n Note: This package is frontend-only. Payment is always ₹0 because 100% discount is applied.\r\n </div>\r\n </>\r\n ) : (\r\n <div style={{ padding: 6 }}>\r\n <div style={{ fontWeight: 900, fontSize: 16, marginBottom: 8 }}>✅ Account Created</div>\r\n\r\n <div className=\"glh-pay-summary\" style={{ marginTop: 14 }}>\r\n <div className=\"glh-pay-line\">\r\n <span>Selected Plan</span>\r\n <span className=\"glh-pay-strong\">{selectedPlan.label}</span>\r\n </div>\r\n <div className=\"glh-pay-line\">\r\n <span>Total</span>\r\n <span className=\"glh-pay-strong\">₹{total}</span>\r\n </div>\r\n <div className=\"glh-pay-line\">\r\n <span>Discount</span>\r\n <span className=\"glh-pay-strong\">100% (-₹{total})</span>\r\n </div>\r\n <div className=\"glh-pay-line\">\r\n <span className=\"glh-pay-strong\">Net Payable</span>\r\n <span className=\"glh-pay-strong\">₹0</span>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n\r\n <div className=\"glh-pay-footer\">\r\n {!accountCreated ? (\r\n <>\r\n <button className=\"glh-pay-secondary\" onClick={onClose}>\r\n Cancel\r\n </button>\r\n <button className=\"glh-pay-primary\" onClick={createAccountAndSubscribe}>\r\n Create Account\r\n </button>\r\n </>\r\n ) : (\r\n <button className=\"glh-pay-primary\" onClick={onClose}>\r\n Done\r\n </button>\r\n )}\r\n </div>\r\n </div>\r\n </div>,\r\n document.body\r\n );\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { PaymentModal } from \"./PaymentModal.jsx\";\r\nimport \"./styles.css\";\r\n\r\n/**\r\n * AccountButton\r\n * - Navbar center ನಲ್ಲಿ place ಮಾಡಬಹುದು\r\n * - localStorage ನಲ್ಲಿ glh_payment_account ಇದ್ದರೆ button \"Subscribed ✓\" ಆಗಿ show ಆಗುತ್ತದೆ\r\n */\r\nexport function AccountButton({\r\n buttonText = \"Account\",\r\n subscribedText = \"Subscribed ✓\",\r\n wrapperClassName = \"\",\r\n buttonClassName = \"\",\r\n onAccountCreated\r\n}) {\r\n const [open, setOpen] = useState(false);\r\n const [hasAccount, setHasAccount] = useState(false);\r\n\r\n function readAccountFlag() {\r\n try {\r\n const saved = localStorage.getItem(\"glh_payment_account\");\r\n return !!saved;\r\n } catch (e) {\r\n return false;\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n setHasAccount(readAccountFlag());\r\n }, []);\r\n\r\n function handleClose() {\r\n setOpen(false);\r\n\r\n // close ಆದಮೇಲೆ storage re-check ಮಾಡಿ button text update\r\n try {\r\n const saved = localStorage.getItem(\"glh_payment_account\");\r\n const ok = !!saved;\r\n setHasAccount(ok);\r\n\r\n if (ok && typeof onAccountCreated === \"function\") {\r\n onAccountCreated(JSON.parse(saved));\r\n }\r\n } catch (e) {\r\n // ignore\r\n }\r\n }\r\n\r\n const label = hasAccount ? subscribedText : buttonText;\r\n\r\n return (\r\n <>\r\n <div className={`glh-pay-centerWrap ${wrapperClassName}`}>\r\n <button\r\n className={`glh-pay-btn ${buttonClassName}`}\r\n onClick={() => setOpen(true)}\r\n type=\"button\"\r\n >\r\n {label}\r\n </button>\r\n </div>\r\n\r\n <PaymentModal open={open} onClose={handleClose} />\r\n </>\r\n );\r\n}\r\n"],"names":["PRICE_PER_MONTH","PLAN_LIST","key","label","months","enabled","PaymentModal","open","onClose","defaultPlanKey","planKey","setPlanKey","useState","accountCreated","setAccountCreated","selectedPlan","useMemo","find","p","total","discountPercent","discountAmount","netPayable","handleBackdropClick","e","target","classList","contains","createAccountAndSubscribe","payload","createdAt","Date","toISOString","plan","pricePerMonth","localStorage","setItem","JSON","stringify","err","createPortal","React","createElement","className","onMouseDown","role","stopPropagation","onClick","Fragment","style","marginBottom","map","disabled","selected","pickPlan","join","tabIndex","onKeyDown","display","gap","fontWeight","fontSize","color","padding","marginTop","document","body","AccountButton","buttonText","subscribedText","wrapperClassName","buttonClassName","onAccountCreated","setOpen","hasAccount","setHasAccount","readAccountFlag","saved","getItem","useEffect","handleClose","ok","parse","type"],"mappings":"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"}
|
package/package.json
CHANGED