@churchapps/apphelper 1.1.6 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/dist/donations/providers/paystack/PaystackNonAuthDonationInner.d.ts +16 -0
  2. package/dist/donations/providers/paystack/PaystackNonAuthDonationInner.d.ts.map +1 -0
  3. package/dist/donations/providers/paystack/PaystackNonAuthDonationInner.js +209 -0
  4. package/dist/donations/providers/paystack/PaystackNonAuthDonationInner.js.map +1 -0
  5. package/dist/donations/providers/paystack/PaystackProvider.d.ts +9 -0
  6. package/dist/donations/providers/paystack/PaystackProvider.d.ts.map +1 -0
  7. package/dist/donations/providers/paystack/PaystackProvider.js +89 -0
  8. package/dist/donations/providers/paystack/PaystackProvider.js.map +1 -0
  9. package/dist/donations/providers/paystack/paystackPopup.d.ts +16 -0
  10. package/dist/donations/providers/paystack/paystackPopup.d.ts.map +1 -0
  11. package/dist/donations/providers/paystack/paystackPopup.js +49 -0
  12. package/dist/donations/providers/paystack/paystackPopup.js.map +1 -0
  13. package/dist/donations/providers/registry.d.ts.map +1 -1
  14. package/dist/donations/providers/registry.js +2 -1
  15. package/dist/donations/providers/registry.js.map +1 -1
  16. package/dist/donations/providers/types.d.ts +1 -0
  17. package/dist/donations/providers/types.d.ts.map +1 -1
  18. package/dist/markdown/components/htmlEditor/editor.css +54 -6
  19. package/dist/markdown/components/htmlEditor/plugins/FloatingLinkEditorPlugin.js +1 -2
  20. package/dist/markdown/components/htmlEditor/plugins/FloatingLinkEditorPlugin.js.map +1 -1
  21. package/dist/markdown/components/htmlEditor/plugins/FloatingTextFormatToolbarPlugin.d.ts.map +1 -1
  22. package/dist/markdown/components/htmlEditor/plugins/FloatingTextFormatToolbarPlugin.js +1 -3
  23. package/dist/markdown/components/htmlEditor/plugins/FloatingTextFormatToolbarPlugin.js.map +1 -1
  24. package/dist/public/locales/ar.json +3 -3
  25. package/dist/public/locales/cs.json +3 -3
  26. package/dist/public/locales/da.json +3 -3
  27. package/dist/public/locales/de.json +3 -3
  28. package/dist/public/locales/en.json +6 -0
  29. package/dist/public/locales/es.json +3 -3
  30. package/dist/public/locales/fi.json +3 -3
  31. package/dist/public/locales/fr.json +3 -3
  32. package/dist/public/locales/hi.json +3 -3
  33. package/dist/public/locales/hu.json +3 -3
  34. package/dist/public/locales/id.json +3 -3
  35. package/dist/public/locales/it.json +3 -3
  36. package/dist/public/locales/ja.json +3 -3
  37. package/dist/public/locales/ko.json +3 -3
  38. package/dist/public/locales/lt.json +3 -3
  39. package/dist/public/locales/nl.json +3 -3
  40. package/dist/public/locales/no.json +3 -3
  41. package/dist/public/locales/pl.json +3 -3
  42. package/dist/public/locales/pt.json +3 -3
  43. package/dist/public/locales/ro.json +3 -3
  44. package/dist/public/locales/ru.json +3 -3
  45. package/dist/public/locales/sk.json +3 -3
  46. package/dist/public/locales/sl.json +3 -3
  47. package/dist/public/locales/sr.json +3 -3
  48. package/dist/public/locales/sv.json +3 -3
  49. package/dist/public/locales/tl.json +3 -3
  50. package/dist/public/locales/tr.json +3 -3
  51. package/dist/public/locales/uk.json +3 -3
  52. package/dist/public/locales/vi.json +3 -3
  53. package/dist/public/locales/zh.json +3 -3
  54. package/package.json +2 -2
@@ -0,0 +1,16 @@
1
+ import React from "react";
2
+ import type { PaperProps } from "@mui/material/Paper";
3
+ interface Props {
4
+ churchId: string;
5
+ mainContainerCssProps?: PaperProps;
6
+ showHeader?: boolean;
7
+ recaptchaSiteKey: string;
8
+ churchLogo?: string;
9
+ allowRecurring?: boolean;
10
+ showFundSelector?: boolean;
11
+ allowedFundIds?: string[];
12
+ defaultFundId?: string;
13
+ }
14
+ export declare const PaystackNonAuthDonationInner: React.FC<Props>;
15
+ export {};
16
+ //# sourceMappingURL=PaystackNonAuthDonationInner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PaystackNonAuthDonationInner.d.ts","sourceRoot":"","sources":["../../../../src/donations/providers/paystack/PaystackNonAuthDonationInner.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAW3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGtD,UAAU,KAAK;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,qBAAqB,CAAC,EAAE,UAAU,CAAC;IACnC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,eAAO,MAAM,4BAA4B,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAmQxD,CAAC"}
@@ -0,0 +1,209 @@
1
+ "use client";
2
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useState, useRef, useEffect } from "react";
4
+ import ReCAPTCHA from "react-google-recaptcha";
5
+ import { ErrorMessages, InputBox } from "../../../index";
6
+ import { FundDonations } from "../../components";
7
+ import { ApiHelper, DateHelper, CurrencyHelper } from "@churchapps/helpers";
8
+ import { Locale, DonationHelper } from "../../helpers";
9
+ import { Grid, Alert, TextField, Button, FormControl, InputLabel, Select, MenuItem, FormGroup, FormControlLabel, Checkbox, Typography } from "@mui/material";
10
+ import { openPaystackPopup } from "./paystackPopup";
11
+ export const PaystackNonAuthDonationInner = ({ mainContainerCssProps, showHeader = true, ...props }) => {
12
+ const [firstName, setFirstName] = useState("");
13
+ const [lastName, setLastName] = useState("");
14
+ const [email, setEmail] = useState("");
15
+ const [fundsTotal, setFundsTotal] = useState(0);
16
+ const [transactionFee, setTransactionFee] = useState(0);
17
+ const [total, setTotal] = useState(0);
18
+ const [errors, setErrors] = useState([]);
19
+ const [fundDonations, setFundDonations] = useState([]);
20
+ const [funds, setFunds] = useState([]);
21
+ const [donationComplete, setDonationComplete] = useState(false);
22
+ const [processing, setProcessing] = useState(false);
23
+ const [donationType, setDonationType] = useState("once");
24
+ const [interval, setInterval] = useState("one_month");
25
+ const [startDate, setStartDate] = useState(new Date().toDateString());
26
+ const [captchaResponse, setCaptchaResponse] = useState("");
27
+ const [church, setChurch] = useState();
28
+ const [gateway, setGateway] = useState(null);
29
+ const [searchParams, setSearchParams] = useState(null);
30
+ const [notes, setNotes] = useState("");
31
+ const [coverFees, setCoverFees] = useState(false);
32
+ const captchaRef = useRef(null);
33
+ const currency = gateway?.currency || "ngn";
34
+ const fmt = (amount) => CurrencyHelper.formatCurrencyWithLocale(amount, currency);
35
+ const getUrlParam = (param) => {
36
+ if (typeof window === "undefined")
37
+ return null;
38
+ return new URLSearchParams(window.location.search).get(param);
39
+ };
40
+ const init = () => {
41
+ const fundId = props.defaultFundId || getUrlParam("fundId");
42
+ const amount = getUrlParam("amount");
43
+ setSearchParams({ fundId, amount });
44
+ ApiHelper.get("/funds/churchId/" + props.churchId, "GivingApi").then((data) => {
45
+ const list = props.allowedFundIds?.length ? data.filter((f) => props.allowedFundIds.includes(f.id)) : data;
46
+ setFunds(list);
47
+ const selected = fundId ? list.find((f) => f.id === fundId) : undefined;
48
+ if (selected)
49
+ setFundDonations([{ fundId: selected.id, amount: amount ? parseFloat(amount) : 0 }]);
50
+ else if (list.length)
51
+ setFundDonations([{ fundId: list[0].id }]);
52
+ });
53
+ ApiHelper.get("/churches/" + props.churchId, "MembershipApi").then((data) => setChurch(data));
54
+ ApiHelper.get(`/donate/gateways/${props.churchId}`, "GivingApi").then((response) => {
55
+ const gateways = Array.isArray(response?.gateways) ? response.gateways : [];
56
+ const gw = DonationHelper.findGatewayByProvider(gateways, "paystack");
57
+ if (gw)
58
+ setGateway(gw);
59
+ });
60
+ };
61
+ const handleCaptchaChange = (value) => {
62
+ if (!value) {
63
+ setCaptchaResponse("");
64
+ return;
65
+ }
66
+ ApiHelper.postAnonymous("/donate/captcha-verify", { token: value }, "GivingApi")
67
+ .then((data) => {
68
+ const ok = data.response === "success" || data.response === "human" || data.success === true || data.score >= 0.5;
69
+ setCaptchaResponse(ok ? "success" : (data.response || "robot"));
70
+ })
71
+ .catch(() => setCaptchaResponse("error"));
72
+ };
73
+ const handleCheckChange = (_e, checked) => {
74
+ setCoverFees(checked);
75
+ setTotal(checked ? fundsTotal + transactionFee : fundsTotal);
76
+ };
77
+ const validate = () => {
78
+ const result = [];
79
+ if (!firstName)
80
+ result.push(Locale.label("donation.donationForm.validate.firstName"));
81
+ if (!lastName)
82
+ result.push(Locale.label("donation.donationForm.validate.lastName"));
83
+ if (!email)
84
+ result.push(Locale.label("donation.donationForm.validate.email"));
85
+ if (fundsTotal === 0)
86
+ result.push(Locale.label("donation.donationForm.validate.amount"));
87
+ if (result.length === 0 && !email.match(/^[^\s@]+@[^\s@]+\.[^\s@]+$/))
88
+ result.push(Locale.label("donation.donationForm.validate.validEmail"));
89
+ setErrors(result);
90
+ return result.length === 0;
91
+ };
92
+ const handleSave = async () => {
93
+ if (!validate())
94
+ return;
95
+ if (!captchaResponse) {
96
+ setErrors([Locale.label("donation.kingdomFunding.validate.captchaRequired")]);
97
+ return;
98
+ }
99
+ if (captchaResponse !== "success") {
100
+ setErrors([Locale.label("donation.kingdomFunding.validate.captchaFailed")]);
101
+ return;
102
+ }
103
+ setProcessing(true);
104
+ try {
105
+ await ApiHelper.post("/users/loadOrCreate", { userEmail: email, firstName, lastName }, "MembershipApi");
106
+ const person = await ApiHelper.post("/people/loadOrCreate", { churchId: props.churchId, firstName, lastName, email }, "MembershipApi");
107
+ await processDonation(person);
108
+ }
109
+ catch (ex) {
110
+ setErrors([ex.toString()]);
111
+ }
112
+ setProcessing(false);
113
+ };
114
+ const processDonation = async (person) => {
115
+ const compactFunds = fundDonations
116
+ .filter(fd => (fd.amount || 0) > 0 && fd.fundId)
117
+ .map(fd => ({ id: fd.fundId, amount: fd.amount || 0 }));
118
+ const personPayload = { id: person?.id || "", email: person?.contactInfo?.email || email, name: person?.name?.display || `${firstName} ${lastName}` };
119
+ let reference;
120
+ try {
121
+ const result = await openPaystackPopup({
122
+ key: gateway?.publicKey || "",
123
+ email: personPayload.email,
124
+ amount: total,
125
+ currency,
126
+ metadata: { personId: personPayload.id, funds: compactFunds, churchId: props.churchId }
127
+ });
128
+ reference = result.reference;
129
+ }
130
+ catch (e) {
131
+ if (e?.message !== "cancelled")
132
+ setErrors([e?.message || Locale.label("donation.paystack.paymentFailed")]);
133
+ return;
134
+ }
135
+ const payload = {
136
+ provider: "paystack",
137
+ gatewayId: gateway?.id,
138
+ churchId: props.churchId,
139
+ amount: total,
140
+ currency,
141
+ funds: compactFunds,
142
+ person: personPayload,
143
+ notes,
144
+ church: { name: church?.name || "", subDomain: church?.subDomain || "", churchURL: typeof window !== "undefined" ? window.location.origin : "", logo: props?.churchLogo || "" },
145
+ type: "card",
146
+ id: reference
147
+ };
148
+ if (donationType === "recurring") {
149
+ payload.billing_cycle_anchor = startDate ? +new Date(startDate) : +new Date();
150
+ payload.interval = DonationHelper.getInterval(interval);
151
+ }
152
+ try {
153
+ const results = await ApiHelper.post(donationType === "once" ? "/donate/charge" : "/donate/subscribe", payload, "GivingApi");
154
+ if (["succeeded", "pending", "active", "processing"].includes(results?.status))
155
+ setDonationComplete(true);
156
+ else
157
+ setErrors([results?.error || results?.message || Locale.label("donation.kingdomFunding.unexpectedError")]);
158
+ }
159
+ catch (error) {
160
+ setErrors([error.message || Locale.label("donation.kingdomFunding.errorProcessingDonation")]);
161
+ }
162
+ };
163
+ const handleChange = (e) => {
164
+ const val = e.currentTarget.value;
165
+ switch (e.currentTarget.name) {
166
+ case "firstName":
167
+ setFirstName(val);
168
+ break;
169
+ case "lastName":
170
+ setLastName(val);
171
+ break;
172
+ case "email":
173
+ setEmail(val);
174
+ break;
175
+ case "startDate":
176
+ setStartDate(val);
177
+ break;
178
+ case "notes":
179
+ setNotes(val);
180
+ break;
181
+ }
182
+ };
183
+ const handleFundDonationsChange = async (fd) => {
184
+ setFundDonations(fd);
185
+ const totalAmount = fd.reduce((t, f) => t + (f.amount || 0), 0);
186
+ setFundsTotal(totalAmount);
187
+ const fee = await getTransactionFee(totalAmount);
188
+ setTransactionFee(fee);
189
+ setTotal(gateway?.payFees === true || coverFees ? totalAmount + fee : totalAmount);
190
+ };
191
+ const getTransactionFee = async (amount) => {
192
+ if (amount <= 0)
193
+ return 0;
194
+ try {
195
+ const response = await ApiHelper.post("/donate/fee?churchId=" + props.churchId, { amount, provider: "paystack", gatewayId: gateway?.id, currency }, "GivingApi");
196
+ return response.calculatedFee;
197
+ }
198
+ catch {
199
+ return 0;
200
+ }
201
+ };
202
+ useEffect(init, []);
203
+ if (donationComplete)
204
+ return _jsx(Alert, { severity: "success", children: Locale.label("donation.donationForm.thankYou") });
205
+ return (_jsxs(InputBox, { headerIcon: showHeader ? "volunteer_activism" : "", headerText: showHeader ? Locale.label("donation.donationForm.donate") : "", saveFunction: handleSave, saveText: Locale.label("donation.donationForm.donate"), isSubmitting: processing, mainContainerCssProps: mainContainerCssProps, children: [_jsx(ErrorMessages, { errors: errors }), _jsxs(Grid, { container: true, spacing: 3, children: [props.allowRecurring !== false && (_jsxs(_Fragment, { children: [_jsx(Grid, { size: { xs: 12, md: 6 }, children: _jsx(Button, { "aria-label": "single-donation", size: "small", fullWidth: true, style: { minHeight: "50px" }, variant: donationType === "once" ? "contained" : "outlined", onClick: () => setDonationType("once"), children: Locale.label("donation.donationForm.make") }) }), _jsx(Grid, { size: { xs: 12, md: 6 }, children: _jsx(Button, { "aria-label": "recurring-donation", size: "small", fullWidth: true, style: { minHeight: "50px" }, variant: donationType === "recurring" ? "contained" : "outlined", onClick: () => setDonationType("recurring"), children: Locale.label("donation.donationForm.makeRecurring") }) })] })), _jsx(Grid, { size: { xs: 12, md: 6 }, children: _jsx(TextField, { fullWidth: true, label: Locale.label("person.firstName"), name: "firstName", value: firstName, onChange: handleChange }) }), _jsx(Grid, { size: { xs: 12, md: 6 }, children: _jsx(TextField, { fullWidth: true, label: Locale.label("person.lastName"), name: "lastName", value: lastName, onChange: handleChange }) }), _jsx(Grid, { size: { xs: 12, md: 6 }, children: _jsx(TextField, { fullWidth: true, label: Locale.label("person.email"), name: "email", value: email, onChange: handleChange }) }), _jsx(Grid, { size: { xs: 12, md: 6 }, children: _jsx(ReCAPTCHA, { sitekey: props.recaptchaSiteKey, ref: captchaRef, onChange: handleCaptchaChange, onExpired: () => setCaptchaResponse(""), onErrored: () => setCaptchaResponse("error") }) })] }), gateway?.publicKey
206
+ ? _jsx(Typography, { variant: "body2", color: "text.secondary", sx: { mt: 2 }, "data-testid": "paystack-entry", children: Locale.label("donation.paystack.popupHint") })
207
+ : _jsx(Alert, { severity: "warning", sx: { mt: 2 }, children: Locale.label("donation.kingdomFunding.gatewayConfigMissing") }), donationType === "recurring" && (_jsxs(Grid, { container: true, spacing: 3, style: { marginTop: 16 }, children: [_jsx(Grid, { size: { xs: 12, md: 6 }, children: _jsxs(FormControl, { fullWidth: true, children: [_jsx(InputLabel, { children: Locale.label("donation.donationForm.frequency") }), _jsxs(Select, { label: "Frequency", name: "interval", "aria-label": "interval", value: interval, onChange: (e) => setInterval(e.target.value), children: [_jsx(MenuItem, { value: "one_week", children: Locale.label("donation.donationForm.weekly") }), _jsx(MenuItem, { value: "one_month", children: Locale.label("donation.donationForm.monthly") }), _jsx(MenuItem, { value: "three_month", children: Locale.label("donation.donationForm.quarterly") }), _jsx(MenuItem, { value: "one_year", children: Locale.label("donation.donationForm.annually") })] })] }) }), _jsx(Grid, { size: { xs: 12, md: 6 }, children: _jsx(TextField, { fullWidth: true, type: "date", name: "startDate", "aria-label": "startDate", label: Locale.label("donation.donationForm.startDate"), value: DateHelper.formatHtml5Date(startDate ? new Date(startDate) : new Date()), onChange: handleChange }) })] })), funds.length > 0 && props.showFundSelector !== false && (_jsxs(_Fragment, { children: [_jsx("hr", {}), _jsx("h4", { children: Locale.label("donation.donationForm.funds") }), _jsx(FundDonations, { fundDonations: fundDonations, funds: funds, params: searchParams, updatedFunction: handleFundDonationsChange })] })), _jsx(TextField, { fullWidth: true, label: Locale.label("donation.kingdomFunding.memo"), multiline: true, "aria-label": "note", name: "notes", value: notes, onChange: handleChange, style: { marginTop: 10, marginBottom: 10 } }), fundsTotal > 0 && (_jsxs("div", { children: [gateway?.payFees === true ? (_jsxs(Typography, { fontSize: 14, fontStyle: "italic", children: ["*", Locale.label("donation.donationForm.fees").replace("{}", fmt(transactionFee))] })) : (_jsx(FormGroup, { children: _jsx(FormControlLabel, { control: _jsx(Checkbox, { checked: coverFees }), name: "transaction-fee", label: Locale.label("donation.donationForm.cover").replace("{}", fmt(transactionFee)), onChange: handleCheckChange }) })), _jsxs("p", { children: [Locale.label("donation.donationForm.total"), ": ", fmt(total)] })] }))] }));
208
+ };
209
+ //# sourceMappingURL=PaystackNonAuthDonationInner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PaystackNonAuthDonationInner.js","sourceRoot":"","sources":["../../../../src/donations/providers/paystack/PaystackNonAuthDonationInner.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { PaymentProvider, PaymentToken, ChargeContext } from "../types";
2
+ export declare const paystackDefaultFees: Record<string, {
3
+ percent: number;
4
+ fixed: number;
5
+ symbol: string;
6
+ }>;
7
+ export declare function buildPaystackBody(ctx: ChargeContext, token: PaymentToken): any;
8
+ export declare const PaystackProvider: PaymentProvider;
9
+ //# sourceMappingURL=PaystackProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PaystackProvider.d.ts","sourceRoot":"","sources":["../../../../src/donations/providers/paystack/PaystackProvider.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,eAAe,EAAkB,YAAY,EAC7C,aAAa,EACd,MAAM,UAAU,CAAC;AAyClB,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAOlG,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,YAAY,GAAG,GAAG,CAqB9E;AAED,eAAO,MAAM,gBAAgB,EAAE,eAyB9B,CAAC"}
@@ -0,0 +1,89 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { forwardRef, useImperativeHandle } from "react";
4
+ import { Alert, Typography } from "@mui/material";
5
+ import { Locale } from "../../helpers";
6
+ import { openPaystackPopup } from "./paystackPopup";
7
+ import { PaystackNonAuthDonationInner } from "./PaystackNonAuthDonationInner";
8
+ // Paystack charges inside its popup; tokenize() returns the paid transaction reference.
9
+ // Without a gift context (e.g. the "add card" dialog) there is no amount to charge, so it declines.
10
+ const PaystackMemberEntry = forwardRef(({ gateway, getContext }, ref) => {
11
+ useImperativeHandle(ref, () => ({
12
+ tokenize: async () => {
13
+ const ctx = getContext?.();
14
+ if (!ctx || !ctx.amount)
15
+ throw new Error(Locale.label("donation.paystack.saveOnlyWithGift"));
16
+ if (!ctx.person?.email)
17
+ throw new Error(Locale.label("donation.paystack.emailRequired"));
18
+ const result = await openPaystackPopup({
19
+ key: gateway.publicKey || "",
20
+ email: ctx.person.email,
21
+ amount: ctx.amount,
22
+ currency: ctx.currency || gateway.currency || "NGN",
23
+ metadata: { personId: ctx.person.id, funds: ctx.funds, churchId: ctx.churchId }
24
+ });
25
+ if (!result.reference)
26
+ throw new Error(Locale.label("donation.paystack.paymentFailed"));
27
+ return { id: result.reference, type: "card" };
28
+ }
29
+ }));
30
+ return getContext
31
+ ? _jsx(Typography, { variant: "body2", color: "text.secondary", "data-testid": "paystack-entry", children: Locale.label("donation.paystack.popupHint") })
32
+ : _jsx(Alert, { severity: "info", children: Locale.label("donation.paystack.saveOnlyWithGift") });
33
+ });
34
+ PaystackMemberEntry.displayName = "PaystackMemberEntry";
35
+ const PaystackGuestForm = (props) => (_jsx(PaystackNonAuthDonationInner, { churchId: props.churchId, mainContainerCssProps: props.mainContainerCssProps, showHeader: false, recaptchaSiteKey: props.recaptchaSiteKey, churchLogo: props?.churchLogo, allowRecurring: props.allowRecurring, showFundSelector: props.showFundSelector, allowedFundIds: props.allowedFundIds, defaultFundId: props.defaultFundId }));
36
+ export const paystackDefaultFees = {
37
+ ngn: { percent: 1.5, fixed: 100, symbol: "₦" },
38
+ ghs: { percent: 1.95, fixed: 0, symbol: "GH₵" },
39
+ zar: { percent: 2.9, fixed: 1, symbol: "R" },
40
+ kes: { percent: 2.9, fixed: 0, symbol: "KSh" },
41
+ xof: { percent: 3.2, fixed: 0, symbol: "CFA" },
42
+ usd: { percent: 3.9, fixed: 0, symbol: "$" }
43
+ };
44
+ export function buildPaystackBody(ctx, token) {
45
+ const body = {
46
+ provider: "paystack",
47
+ gatewayId: ctx.gatewayId,
48
+ churchId: ctx.churchId,
49
+ amount: ctx.amount,
50
+ currency: ctx.currency,
51
+ funds: ctx.funds,
52
+ person: ctx.person,
53
+ notes: ctx.notes || "",
54
+ church: ctx.church,
55
+ saveCard: ctx.saveCard,
56
+ type: token.type,
57
+ id: token.id,
58
+ customerId: token.customerId || ctx.customerId
59
+ };
60
+ if (ctx.recurring) {
61
+ body.billing_cycle_anchor = ctx.billingCycleAnchor;
62
+ body.interval = ctx.interval;
63
+ }
64
+ return body;
65
+ }
66
+ export const PaystackProvider = {
67
+ key: "paystack",
68
+ descriptor: {
69
+ adminValue: "Paystack",
70
+ label: "Paystack",
71
+ keyLabels: { public: "settings.givingSettingsEdit.pubKey", private: "settings.givingSettingsEdit.secKey" },
72
+ feeFields: ["card"],
73
+ currencies: ["ngn", "ghs", "zar", "kes", "xof", "usd"],
74
+ selectableInAdmin: true,
75
+ setupInstructionsKey: "settings.givingSettingsEdit.paystackSetup",
76
+ webhookInstructionsKey: "settings.givingSettingsEdit.paystackWebhookInstructions",
77
+ signupUrl: () => "https://dashboard.paystack.com/",
78
+ currencyHelpUrl: "https://support.paystack.com/en/articles/2130690",
79
+ defaultFees: paystackDefaultFees
80
+ },
81
+ capabilities: { savedCard: true, savedBank: false, guestAch: false, memberNewCard: true, recurring: true, editRecurring: false, pauseRecurring: false },
82
+ MemberEntry: PaystackMemberEntry,
83
+ buildChargeRequest: (ctx, token) => ({
84
+ endpoint: ctx.recurring ? "/donate/subscribe" : "/donate/charge",
85
+ body: buildPaystackBody(ctx, token)
86
+ }),
87
+ GuestForm: PaystackGuestForm
88
+ };
89
+ //# sourceMappingURL=PaystackProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PaystackProvider.js","sourceRoot":"","sources":["../../../../src/donations/providers/paystack/PaystackProvider.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAc,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,4BAA4B,EAAE,MAAM,gCAAgC,CAAC;AAM9E,wFAAwF;AACxF,oGAAoG;AACpG,MAAM,mBAAmB,GAAG,UAAU,CAAsC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,EAAE;IAC3G,mBAAmB,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QAC9B,QAAQ,EAAE,KAAK,IAA2B,EAAE;YAC1C,MAAM,GAAG,GAAG,UAAU,EAAE,EAAE,CAAC;YAC3B,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM;gBAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC,CAAC;YAC7F,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK;gBAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAC;YACzF,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC;gBACrC,GAAG,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;gBAC5B,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK;gBACvB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,IAAI,KAAK;gBACnD,QAAQ,EAAE,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE;aAChF,CAAC,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,SAAS;gBAAE,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAC;YACxF,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAChD,CAAC;KACF,CAAC,CAAC,CAAC;IACJ,OAAO,UAAU;QACf,CAAC,CAAC,KAAC,UAAU,IAAC,OAAO,EAAC,OAAO,EAAC,KAAK,EAAC,gBAAgB,iBAAa,gBAAgB,YAAE,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,GAAc;QAC5I,CAAC,CAAC,KAAC,KAAK,IAAC,QAAQ,EAAC,MAAM,YAAE,MAAM,CAAC,KAAK,CAAC,oCAAoC,CAAC,GAAS,CAAC;AAC1F,CAAC,CAAC,CAAC;AACH,mBAAmB,CAAC,WAAW,GAAG,qBAAqB,CAAC;AAExD,MAAM,iBAAiB,GAA6B,CAAC,KAAK,EAAE,EAAE,CAAC,CAC7D,KAAC,4BAA4B,IAC3B,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,qBAAqB,EAAE,KAAK,CAAC,qBAAqB,EAClD,UAAU,EAAE,KAAK,EACjB,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EACxC,UAAU,EAAE,KAAK,EAAE,UAAU,EAC7B,cAAc,EAAE,KAAK,CAAC,cAAc,EACpC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB,EACxC,cAAc,EAAE,KAAK,CAAC,cAAc,EACpC,aAAa,EAAE,KAAK,CAAC,aAAa,GAClC,CACH,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAuE;IACrG,GAAG,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;IAC9C,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE;IAC/C,GAAG,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE;IAC5C,GAAG,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE;IAC9C,GAAG,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE;IAC9C,GAAG,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE;CAC7C,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,GAAkB,EAAE,KAAmB;IACvE,MAAM,IAAI,GAAQ;QAChB,QAAQ,EAAE,UAAU;QACpB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,EAAE;QACtB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU;KAC/C,CAAC;IACF,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;QAClB,IAAI,CAAC,oBAAoB,GAAG,GAAG,CAAC,kBAAkB,CAAC;QACnD,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;IAC/B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAoB;IAC/C,GAAG,EAAE,UAAU;IACf,UAAU,EAAE;QACV,UAAU,EAAE,UAAU;QACtB,KAAK,EAAE,UAAU;QACjB,SAAS,EAAE,EAAE,MAAM,EAAE,oCAAoC,EAAE,OAAO,EAAE,oCAAoC,EAAE;QAC1G,SAAS,EAAE,CAAC,MAAM,CAAC;QACnB,UAAU,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;QACtD,iBAAiB,EAAE,IAAI;QACvB,oBAAoB,EAAE,2CAA2C;QACjE,sBAAsB,EAAE,yDAAyD;QACjF,SAAS,EAAE,GAAG,EAAE,CAAC,iCAAiC;QAClD,eAAe,EAAE,kDAAkD;QACnE,WAAW,EAAE,mBAAmB;KACjC;IACD,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE;IAEvJ,WAAW,EAAE,mBAAmB;IAEhC,kBAAkB,EAAE,CAAC,GAAG,EAAE,KAAK,EAAiB,EAAE,CAAC,CAAC;QAClD,QAAQ,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,gBAAgB;QAChE,IAAI,EAAE,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC;KACpC,CAAC;IAEF,SAAS,EAAE,iBAAiB;CAC7B,CAAC"}
@@ -0,0 +1,16 @@
1
+ export interface PaystackChargeParams {
2
+ key: string;
3
+ email: string;
4
+ amount: number;
5
+ currency: string;
6
+ channels?: string[];
7
+ metadata?: Record<string, unknown>;
8
+ }
9
+ export interface PaystackChargeResult {
10
+ reference: string;
11
+ status?: string;
12
+ }
13
+ export declare const toSubunits: (amount: number) => number;
14
+ export declare function loadPaystack(): Promise<void>;
15
+ export declare function openPaystackPopup(params: PaystackChargeParams): Promise<PaystackChargeResult>;
16
+ //# sourceMappingURL=paystackPopup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paystackPopup.d.ts","sourceRoot":"","sources":["../../../../src/donations/providers/paystack/paystackPopup.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAGD,eAAO,MAAM,UAAU,GAAI,QAAQ,MAAM,KAAG,MAA0C,CAAC;AAIvF,wBAAgB,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC,CAa5C;AAGD,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAsBnG"}
@@ -0,0 +1,49 @@
1
+ const INLINE_JS_URL = "https://js.paystack.co/v2/inline.js";
2
+ // Every Paystack currency has 2 subunits (kobo, pesewas, cents).
3
+ export const toSubunits = (amount) => Math.round(Number(amount) * 100);
4
+ let loading = null;
5
+ export function loadPaystack() {
6
+ if (typeof window === "undefined")
7
+ return Promise.reject(new Error("no window"));
8
+ if (window.PaystackPop)
9
+ return Promise.resolve();
10
+ if (loading)
11
+ return loading;
12
+ loading = new Promise((resolve, reject) => {
13
+ const script = document.createElement("script");
14
+ script.src = INLINE_JS_URL;
15
+ script.async = true;
16
+ script.onload = () => resolve();
17
+ script.onerror = () => { loading = null; reject(new Error("Failed to load Paystack")); };
18
+ document.head.appendChild(script);
19
+ });
20
+ return loading;
21
+ }
22
+ // Opens the Paystack checkout popup; resolves with the transaction reference once the donor has paid.
23
+ export async function openPaystackPopup(params) {
24
+ await loadPaystack();
25
+ const PaystackPop = window.PaystackPop;
26
+ return new Promise((resolve, reject) => {
27
+ // Paystack validates the *presence* of keys: an explicit `channels: undefined` fails as "Invalid transaction parameters".
28
+ const tx = {
29
+ key: params.key,
30
+ email: params.email,
31
+ amount: toSubunits(params.amount),
32
+ currency: params.currency.toUpperCase(),
33
+ onSuccess: (t) => resolve({ reference: t?.reference || t?.trxref || "", status: t?.status }),
34
+ onCancel: () => reject(new Error("cancelled")),
35
+ onError: (e) => reject(new Error(e?.message || "Payment failed"))
36
+ };
37
+ if (params.channels?.length)
38
+ tx.channels = params.channels;
39
+ if (params.metadata)
40
+ tx.metadata = params.metadata;
41
+ try {
42
+ new PaystackPop().newTransaction(tx);
43
+ }
44
+ catch (e) {
45
+ reject(new Error(e?.message || "Payment failed"));
46
+ }
47
+ });
48
+ }
49
+ //# sourceMappingURL=paystackPopup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paystackPopup.js","sourceRoot":"","sources":["../../../../src/donations/providers/paystack/paystackPopup.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAG,qCAAqC,CAAC;AAgB5D,iEAAiE;AACjE,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAc,EAAU,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;AAEvF,IAAI,OAAO,GAAyB,IAAI,CAAC;AAEzC,MAAM,UAAU,YAAY;IAC1B,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;IACjF,IAAK,MAAc,CAAC,WAAW;QAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC1D,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAC5B,OAAO,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC9C,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,CAAC,GAAG,GAAG,aAAa,CAAC;QAC3B,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;QAChC,MAAM,CAAC,OAAO,GAAG,GAAG,EAAE,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzF,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,sGAAsG;AACtG,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAA4B;IAClE,MAAM,YAAY,EAAE,CAAC;IACrB,MAAM,WAAW,GAAI,MAAc,CAAC,WAAW,CAAC;IAChD,OAAO,IAAI,OAAO,CAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3D,0HAA0H;QAC1H,MAAM,EAAE,GAA4B;YAClC,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC;YACjC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE;YACvC,SAAS,EAAE,CAAC,CAAM,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,IAAI,CAAC,EAAE,MAAM,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;YACjG,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;YAC9C,OAAO,EAAE,CAAC,CAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,OAAO,IAAI,gBAAgB,CAAC,CAAC;SACvE,CAAC;QACF,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM;YAAE,EAAE,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC3D,IAAI,MAAM,CAAC,QAAQ;YAAE,EAAE,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACnD,IAAI,CAAC;YACH,IAAI,WAAW,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QACvC,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,EAAE,OAAO,IAAI,gBAAgB,CAAC,CAAC,CAAC;QACpD,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/donations/providers/registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAIjD,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAerE,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAEvE;AAID,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,eAAe,CAIvF;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAG/E;AAED,wBAAgB,oBAAoB,IAAI,eAAe,EAAE,CAExD;AAID,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,SAAS,GAAG,IAAI,EAAE,UAAU,CAAC,EAAE,MAAM,oBAAoB,GAAG,cAAc,GAAG,IAAI,CAQhJ"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/donations/providers/registry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAKjD,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAerE,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAEvE;AAID,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,eAAe,CAIvF;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAG/E;AAED,wBAAgB,oBAAoB,IAAI,eAAe,EAAE,CAExD;AAID,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,SAAS,GAAG,IAAI,EAAE,UAAU,CAAC,EAAE,MAAM,oBAAoB,GAAG,cAAc,GAAG,IAAI,CAQhJ"}
@@ -2,13 +2,14 @@ import { DonationHelper } from "../helpers";
2
2
  import { StripeProvider } from "./stripe/StripeProvider";
3
3
  import { KingdomFundingProvider } from "./kingdomfunding/KingdomFundingProvider";
4
4
  import { PayPalProvider } from "./paypal/PayPalProvider";
5
+ import { PaystackProvider } from "./paystack/PaystackProvider";
5
6
  // Built lazily on first access so providers/components import cycle is fully resolved.
6
7
  const custom = new Map();
7
8
  let builtins = null;
8
9
  function getBuiltins() {
9
10
  if (!builtins) {
10
11
  builtins = new Map();
11
- for (const p of [StripeProvider, KingdomFundingProvider, PayPalProvider])
12
+ for (const p of [StripeProvider, KingdomFundingProvider, PayPalProvider, PaystackProvider])
12
13
  builtins.set(p.key, p);
13
14
  }
14
15
  return builtins;
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/donations/providers/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAGzD,uFAAuF;AACvF,MAAM,MAAM,GAAG,IAAI,GAAG,EAA2B,CAAC;AAClD,IAAI,QAAQ,GAAwC,IAAI,CAAC;AAEzD,SAAS,WAAW;IAClB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,QAAQ,GAAG,IAAI,GAAG,EAA2B,CAAC;QAC9C,KAAK,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,sBAAsB,EAAE,cAAc,CAAC;YAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACnG,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,uBAAuB,CAAC,QAAyB;IAC/D,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED,8EAA8E;AAC9E,4DAA4D;AAC5D,MAAM,UAAU,kBAAkB,CAAC,QAAmC;IACpE,MAAM,GAAG,GAAG,cAAc,CAAC,iBAAiB,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IAC7D,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;IAC1B,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,QAAmC;IACpE,MAAM,GAAG,GAAG,cAAc,CAAC,iBAAiB,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IAC7D,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO,CAAC,GAAG,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AACzD,CAAC;AAED,4EAA4E;AAC5E,8EAA8E;AAC9E,MAAM,UAAU,kBAAkB,CAAC,QAA6C,EAAE,UAAuC;IACvH,MAAM,OAAO,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC;IACvE,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACzJ,KAAK,MAAM,CAAC,IAAI,oBAAoB,EAAE,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;QACzF,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;IAC1B,CAAC;IACD,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/donations/providers/registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAG/D,uFAAuF;AACvF,MAAM,MAAM,GAAG,IAAI,GAAG,EAA2B,CAAC;AAClD,IAAI,QAAQ,GAAwC,IAAI,CAAC;AAEzD,SAAS,WAAW;IAClB,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,QAAQ,GAAG,IAAI,GAAG,EAA2B,CAAC;QAC9C,KAAK,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,sBAAsB,EAAE,cAAc,EAAE,gBAAgB,CAAC;YAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACrH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,uBAAuB,CAAC,QAAyB;IAC/D,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED,8EAA8E;AAC9E,4DAA4D;AAC5D,MAAM,UAAU,kBAAkB,CAAC,QAAmC;IACpE,MAAM,GAAG,GAAG,cAAc,CAAC,iBAAiB,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IAC7D,MAAM,GAAG,GAAG,WAAW,EAAE,CAAC;IAC1B,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,QAAmC;IACpE,MAAM,GAAG,GAAG,cAAc,CAAC,iBAAiB,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IAC7D,OAAO,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,WAAW,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,oBAAoB;IAClC,OAAO,CAAC,GAAG,WAAW,EAAE,CAAC,MAAM,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AACzD,CAAC;AAED,4EAA4E;AAC5E,8EAA8E;AAC9E,MAAM,UAAU,kBAAkB,CAAC,QAA6C,EAAE,UAAuC;IACvH,MAAM,OAAO,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC;IACvE,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACzJ,KAAK,MAAM,CAAC,IAAI,oBAAoB,EAAE,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC;QACzF,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;IAC1B,CAAC;IACD,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AAC7B,CAAC"}
@@ -78,6 +78,7 @@ export interface ProviderDescriptor {
78
78
  selectableInAdmin: boolean;
79
79
  betaOnly?: boolean;
80
80
  setupInstructionsKey?: string;
81
+ webhookInstructionsKey?: string;
81
82
  signupUrl?: (church: any, user: any) => string;
82
83
  currencyHelpUrl?: string;
83
84
  eventUrl?: (eventId: string) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/donations/providers/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/donations/providers/types.ts"],"names":[],"mappings":"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"}
@@ -56,12 +56,10 @@
56
56
  min-height: 150px;
57
57
  resize: none;
58
58
  font-size: 15px;
59
- caret-color: rgb(5, 5, 5);
60
59
  position: relative;
61
60
  tab-size: 1;
62
61
  outline: 0;
63
62
  padding: 15px 10px;
64
- caret-color: #444;
65
63
  }
66
64
 
67
65
  .editor-container.preview .editor-input {
@@ -209,6 +207,21 @@
209
207
  color: rgba(0, 0, 0, 0.5);
210
208
  }
211
209
 
210
+ body.dark-theme .editor-text-code,
211
+ body.dark-theme .editor-code {
212
+ background-color: #2a2a2a;
213
+ }
214
+
215
+ body.dark-theme .editor-code:before {
216
+ background-color: #222;
217
+ border-right-color: #444;
218
+ color: #aaa;
219
+ }
220
+
221
+ body.dark-theme .editor-code:after {
222
+ color: rgba(255, 255, 255, 0.5);
223
+ }
224
+
212
225
  .editor-tokenComment {
213
226
  color: slategray;
214
227
  }
@@ -286,6 +299,11 @@
286
299
  padding-left: 16px;
287
300
  }
288
301
 
302
+ body.dark-theme .editor-quote {
303
+ color: rgb(180, 182, 186);
304
+ border-left-color: rgb(100, 102, 106);
305
+ }
306
+
289
307
  /*
290
308
  .editor-list-ol {
291
309
  padding: 0;
@@ -379,14 +397,35 @@
379
397
  display: flex;
380
398
  position:sticky;
381
399
  top: 0;
382
- background-color: white;
383
400
  z-index: 1;
384
401
  margin-bottom: 1px;
385
402
  padding: 4px;
386
403
  border-top-left-radius: 10px;
387
404
  border-top-right-radius: 10px;
388
405
  vertical-align: middle;
389
- border-bottom: 1px solid lightgray;
406
+ border-bottom-width: 1px;
407
+ border-bottom-style: solid;
408
+ background-color: white;
409
+ border-bottom-color: lightgray;
410
+ }
411
+
412
+ body.dark-theme .toolbar {
413
+ background-color: #333333;
414
+ border-bottom-color: #444444;
415
+ }
416
+
417
+ .floating-toolbar {
418
+ background-color: white;
419
+ }
420
+
421
+ body.dark-theme .floating-toolbar,
422
+ body.dark-theme .dropdown,
423
+ body.dark-theme .dropdown .item,
424
+ body.dark-theme .link-editor,
425
+ body.dark-theme .typeahead-popover,
426
+ body.dark-theme .typeahead-popover li {
427
+ background-color: #333333;
428
+ color: #ffffff;
390
429
  }
391
430
 
392
431
  .toolbar button.toolbar-item {
@@ -431,14 +470,23 @@
431
470
  }
432
471
 
433
472
  /* Active state for MUI IconButton components */
434
- .toolbar .MuiIconButton-root.active {
473
+ .toolbar .MuiIconButton-root.active,
474
+ .floating-toolbar .MuiIconButton-root.active {
435
475
  background-color: rgba(25, 118, 210, 0.12);
436
476
  }
437
477
 
438
- .toolbar .toolbar-item:hover:not([disabled]) {
478
+ .toolbar .toolbar-item:hover:not([disabled]),
479
+ .floating-toolbar .toolbar-item:hover:not([disabled]),
480
+ .floating-toolbar .MuiIconButton-root:hover:not([disabled]) {
439
481
  background-color: #eee;
440
482
  }
441
483
 
484
+ body.dark-theme .toolbar .toolbar-item:hover:not([disabled]),
485
+ body.dark-theme .floating-toolbar .toolbar-item:hover:not([disabled]),
486
+ body.dark-theme .floating-toolbar .MuiIconButton-root:hover:not([disabled]) {
487
+ background-color: #555;
488
+ }
489
+
442
490
  .toolbar .divider {
443
491
  width: 1px;
444
492
  background-color: #eee;