@burdenoff/microfe-billing 2026.526.1 → 2026.528.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/billing/BillingAdminRoutes.js +1 -1
- package/dist/billing/BillingAdminRoutes.js.map +1 -1
- package/dist/billing/BillingUserRoutes.js +1 -1
- package/dist/billing/BillingUserRoutes.js.map +1 -1
- package/dist/billing/modules/addons/components/FloatingCartDrawer.js +15 -8
- package/dist/billing/modules/addons/components/FloatingCartDrawer.js.map +1 -1
- package/dist/billing/modules/addons/pages/AddonBrowseDetailPage.js +13 -6
- package/dist/billing/modules/addons/pages/AddonBrowseDetailPage.js.map +1 -1
- package/dist/billing/modules/addons/pages/AddonCreatePage.js +1 -1
- package/dist/billing/modules/addons/pages/AddonCreatePage.js.map +1 -1
- package/dist/billing/modules/addons/pages/AddonDetailPage.js +8 -4
- package/dist/billing/modules/addons/pages/AddonDetailPage.js.map +1 -1
- package/dist/billing/modules/addons/pages/AddonEditPage.js +3 -2
- package/dist/billing/modules/addons/pages/AddonEditPage.js.map +1 -1
- package/dist/billing/modules/addons/pages/AddonsBrowsePage.js +44 -23
- package/dist/billing/modules/addons/pages/AddonsBrowsePage.js.map +1 -1
- package/dist/billing/modules/addons/pages/AddonsListPage.js +60 -31
- package/dist/billing/modules/addons/pages/AddonsListPage.js.map +1 -1
- package/dist/billing/modules/affiliate/pages/AffiliateDashboardPage.js +9 -9
- package/dist/billing/modules/affiliate/pages/AffiliateDashboardPage.js.map +1 -1
- package/dist/billing/modules/analytics/pages/AnalyticsPage.js +8 -8
- package/dist/billing/modules/analytics/pages/AnalyticsPage.js.map +1 -1
- package/dist/billing/modules/billing/pages/InvoiceDetailPage.js +16 -10
- package/dist/billing/modules/billing/pages/InvoiceDetailPage.js.map +1 -1
- package/dist/billing/modules/billing/pages/InvoicesListPage.js +24 -16
- package/dist/billing/modules/billing/pages/InvoicesListPage.js.map +1 -1
- package/dist/billing/modules/billing/pages/PaymentMethodsPage.js +5 -1
- package/dist/billing/modules/billing/pages/PaymentMethodsPage.js.map +1 -1
- package/dist/billing/modules/billing/pages/RefundsPage.js +46 -29
- package/dist/billing/modules/billing/pages/RefundsPage.js.map +1 -1
- package/dist/billing/modules/billing/pages/TransactionsPage.js +34 -22
- package/dist/billing/modules/billing/pages/TransactionsPage.js.map +1 -1
- package/dist/billing/modules/checkout/components/BillingAccountSelector.js +10 -10
- package/dist/billing/modules/checkout/components/BillingAccountSelector.js.map +1 -1
- package/dist/billing/modules/checkout/components/CreditsAmountInput.js +3 -3
- package/dist/billing/modules/checkout/components/CreditsAmountInput.js.map +1 -1
- package/dist/billing/modules/checkout/components/NativeCheckoutView.js +7 -0
- package/dist/billing/modules/checkout/components/NativeCheckoutView.js.map +1 -1
- package/dist/billing/modules/checkout/components/OrderSummary.js +13 -13
- package/dist/billing/modules/checkout/components/OrderSummary.js.map +1 -1
- package/dist/billing/modules/checkout/components/PromoCodeInput.js +5 -5
- package/dist/billing/modules/checkout/components/PromoCodeInput.js.map +1 -1
- package/dist/billing/modules/checkout/components/RazorpayPaymentButton.js +5 -5
- package/dist/billing/modules/checkout/components/RazorpayPaymentButton.js.map +1 -1
- package/dist/billing/modules/checkout/components/SimpleAutoPayToggle.js +4 -4
- package/dist/billing/modules/checkout/components/SimpleAutoPayToggle.js.map +1 -1
- package/dist/billing/modules/checkout/components/StripePaymentForm.js +11 -11
- package/dist/billing/modules/checkout/components/StripePaymentForm.js.map +1 -1
- package/dist/billing/modules/checkout/components/SubscriptionSelector.js +3 -3
- package/dist/billing/modules/checkout/components/SubscriptionSelector.js.map +1 -1
- package/dist/billing/modules/checkout/components/UnifiedPaymentMethodSelector.js +8 -8
- package/dist/billing/modules/checkout/components/UnifiedPaymentMethodSelector.js.map +1 -1
- package/dist/billing/modules/checkout/pages/CheckoutPage.js +61 -52
- package/dist/billing/modules/checkout/pages/CheckoutPage.js.map +1 -1
- package/dist/billing/modules/coupons/pages/CouponDetailPage.js +22 -15
- package/dist/billing/modules/coupons/pages/CouponDetailPage.js.map +1 -1
- package/dist/billing/modules/coupons/pages/CouponsListPage.js +30 -21
- package/dist/billing/modules/coupons/pages/CouponsListPage.js.map +1 -1
- package/dist/billing/modules/coupons/pages/CreateCouponPage.js +9 -8
- package/dist/billing/modules/coupons/pages/CreateCouponPage.js.map +1 -1
- package/dist/billing/modules/coupons/pages/EditCouponPage.js +11 -8
- package/dist/billing/modules/coupons/pages/EditCouponPage.js.map +1 -1
- package/dist/billing/modules/credits/pages/AdminCreditsPage.js +1 -1
- package/dist/billing/modules/credits/pages/AdminCreditsPage.js.map +1 -1
- package/dist/billing/modules/credits/pages/CreditTransactionsPage.js +22 -17
- package/dist/billing/modules/credits/pages/CreditTransactionsPage.js.map +1 -1
- package/dist/billing/modules/credits/pages/CreditWithdrawalPage.js +15 -8
- package/dist/billing/modules/credits/pages/CreditWithdrawalPage.js.map +1 -1
- package/dist/billing/modules/credits/pages/CreditsPage.js +17 -11
- package/dist/billing/modules/credits/pages/CreditsPage.js.map +1 -1
- package/dist/billing/modules/dashboard/components/ActiveSubscriptionCard.js +15 -11
- package/dist/billing/modules/dashboard/components/ActiveSubscriptionCard.js.map +1 -1
- package/dist/billing/modules/dashboard/components/AddPaymentMethodModal.js +21 -17
- package/dist/billing/modules/dashboard/components/AddPaymentMethodModal.js.map +1 -1
- package/dist/billing/modules/dashboard/components/BillingAccountCard.js +14 -11
- package/dist/billing/modules/dashboard/components/BillingAccountCard.js.map +1 -1
- package/dist/billing/modules/dashboard/components/CreateBillingAccountModal.js +32 -26
- package/dist/billing/modules/dashboard/components/CreateBillingAccountModal.js.map +1 -1
- package/dist/billing/modules/dashboard/components/PaymentMethodsSection.js +14 -10
- package/dist/billing/modules/dashboard/components/PaymentMethodsSection.js.map +1 -1
- package/dist/billing/modules/dashboard/components/RecommendedAddonsSection.js +18 -11
- package/dist/billing/modules/dashboard/components/RecommendedAddonsSection.js.map +1 -1
- package/dist/billing/modules/dashboard/pages/OverviewPage.js +44 -32
- package/dist/billing/modules/dashboard/pages/OverviewPage.js.map +1 -1
- package/dist/billing/modules/discounts/pages/DiscountsListPage.js +35 -26
- package/dist/billing/modules/discounts/pages/DiscountsListPage.js.map +1 -1
- package/dist/billing/modules/earnings/pages/EarningsPage.js +15 -15
- package/dist/billing/modules/earnings/pages/EarningsPage.js.map +1 -1
- package/dist/billing/modules/earnings/pages/PayoutAdminPage.js +11 -11
- package/dist/billing/modules/earnings/pages/PayoutAdminPage.js.map +1 -1
- package/dist/billing/modules/earnings/pages/PayoutsPage.js +5 -5
- package/dist/billing/modules/earnings/pages/PayoutsPage.js.map +1 -1
- package/dist/billing/modules/plans/pages/PlanBrowseDetailPage.js +9 -4
- package/dist/billing/modules/plans/pages/PlanBrowseDetailPage.js.map +1 -1
- package/dist/billing/modules/plans/pages/PlanCreatePage.js +1 -1
- package/dist/billing/modules/plans/pages/PlanCreatePage.js.map +1 -1
- package/dist/billing/modules/plans/pages/PlanDetailPage.js +13 -8
- package/dist/billing/modules/plans/pages/PlanDetailPage.js.map +1 -1
- package/dist/billing/modules/plans/pages/PlanEditPage.js +3 -2
- package/dist/billing/modules/plans/pages/PlanEditPage.js.map +1 -1
- package/dist/billing/modules/plans/pages/PlansBrowsePage.js +14 -7
- package/dist/billing/modules/plans/pages/PlansBrowsePage.js.map +1 -1
- package/dist/billing/modules/plans/pages/PlansListPage.js +23 -9
- package/dist/billing/modules/plans/pages/PlansListPage.js.map +1 -1
- package/dist/billing/modules/quota/pages/QuotaPage.js +11 -7
- package/dist/billing/modules/quota/pages/QuotaPage.js.map +1 -1
- package/dist/billing/modules/quota/pages/QuotaTemplateCreatePage.js +3 -3
- package/dist/billing/modules/quota/pages/QuotaTemplateCreatePage.js.map +1 -1
- package/dist/billing/modules/quota/pages/QuotaTemplateDetailPage.js +6 -2
- package/dist/billing/modules/quota/pages/QuotaTemplateDetailPage.js.map +1 -1
- package/dist/billing/modules/quota/pages/QuotaTemplateEditPage.js +5 -4
- package/dist/billing/modules/quota/pages/QuotaTemplateEditPage.js.map +1 -1
- package/dist/billing/modules/quota/pages/QuotaTemplatesListPage.js +26 -12
- package/dist/billing/modules/quota/pages/QuotaTemplatesListPage.js.map +1 -1
- package/dist/billing/modules/settings/pages/SettingsPage.js +356 -349
- package/dist/billing/modules/settings/pages/SettingsPage.js.map +1 -1
- package/dist/billing/modules/settings/pages/TeamPermissionsPage.js +157 -123
- package/dist/billing/modules/settings/pages/TeamPermissionsPage.js.map +1 -1
- package/dist/billing/modules/subscriptions/components/ManageSeatsModal.js +13 -8
- package/dist/billing/modules/subscriptions/components/ManageSeatsModal.js.map +1 -1
- package/dist/billing/modules/subscriptions/pages/SubscriptionDetailPage.js +15 -7
- package/dist/billing/modules/subscriptions/pages/SubscriptionDetailPage.js.map +1 -1
- package/dist/billing/modules/subscriptions/pages/SubscriptionsListPage.js +30 -20
- package/dist/billing/modules/subscriptions/pages/SubscriptionsListPage.js.map +1 -1
- package/dist/billing/modules/subscriptions/pages/UpgradeSubscriptionPage.js +25 -16
- package/dist/billing/modules/subscriptions/pages/UpgradeSubscriptionPage.js.map +1 -1
- package/dist/billing/modules/usage/pages/UsagePage.js +50 -34
- package/dist/billing/modules/usage/pages/UsagePage.js.map +1 -1
- package/dist/billing/shared/components/AccessDenied.js +2 -2
- package/dist/billing/shared/components/AccessDenied.js.map +1 -1
- package/dist/billing/shared/components/ActorIdentity.js +67 -0
- package/dist/billing/shared/components/ActorIdentity.js.map +1 -0
- package/dist/billing/shared/components/CurrencyPriceOverridesEditor.js +6 -2
- package/dist/billing/shared/components/CurrencyPriceOverridesEditor.js.map +1 -1
- package/dist/billing/shared/components/EmptyState.js +7 -21
- package/dist/billing/shared/components/EmptyState.js.map +1 -1
- package/dist/billing/shared/components/PageHeader.js +7 -19
- package/dist/billing/shared/components/PageHeader.js.map +1 -1
- package/dist/billing/shared/components/ServerError.js +5 -4
- package/dist/billing/shared/components/ServerError.js.map +1 -1
- package/dist/billing/shared/components/index.js +1 -0
- package/dist/billing/shared/hooks/index.js +1 -0
- package/dist/billing/shared/hooks/useActorProfiles.js +113 -0
- package/dist/billing/shared/hooks/useActorProfiles.js.map +1 -0
- package/package.json +2 -2
|
@@ -2,245 +2,248 @@ import { useBilling as e } from "../../../providers/BillingProvider.js";
|
|
|
2
2
|
import { AccessDenied as t } from "../../../shared/components/AccessDenied.js";
|
|
3
3
|
import { PageHeader as n } from "../../../shared/components/PageHeader.js";
|
|
4
4
|
import "../../../shared/components/index.js";
|
|
5
|
-
import { useBillingEventEmitter as
|
|
6
|
-
import { directBillingGraphqlRequest as
|
|
5
|
+
import { useBillingEventEmitter as ee } from "../../../hooks/useBillingEventEmitter.js";
|
|
6
|
+
import { directBillingGraphqlRequest as te } from "../../../shared/utils/directBillingGraphql.js";
|
|
7
7
|
import "../../../shared/utils/index.js";
|
|
8
|
-
import { useBillingPermissions as
|
|
9
|
-
import { ArchiveBillingAccountSettingsDocument as
|
|
10
|
-
import { useCallback as
|
|
11
|
-
import { Fragment as
|
|
12
|
-
import { useI18n as
|
|
8
|
+
import { useBillingPermissions as ne } from "../../../hooks/useBillingPermissions.js";
|
|
9
|
+
import { ArchiveBillingAccountSettingsDocument as re, useGetBillingAccountSettingsQuery as ie, useGetBillingAccountsSettingsQuery as ae, useGetDefaultBillingAccountSettingsQuery as oe, useSetDefaultBillingAccountSettingsMutation as se, useUpdateBillingAccountSettingsMutation as ce } from "../../../../generated/global-operations.js";
|
|
10
|
+
import { useCallback as r, useEffect as le, useMemo as i, useState as a } from "react";
|
|
11
|
+
import { Fragment as o, jsx as s, jsxs as c } from "react/jsx-runtime";
|
|
12
|
+
import { useI18n as l } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
13
|
+
import { OptionalFields as u } from "@burdenoff/fe-libs/ui";
|
|
13
14
|
//#region src/billing/modules/settings/pages/SettingsPage.tsx
|
|
14
|
-
var
|
|
15
|
+
var d = () => {
|
|
15
16
|
if (!(typeof window > "u")) return new URLSearchParams(window.location.search).get("billingAccountId") || void 0;
|
|
16
|
-
},
|
|
17
|
-
let { t:
|
|
18
|
-
let n =
|
|
17
|
+
}, f = () => {
|
|
18
|
+
let { t: f } = l(), p = (e, t) => {
|
|
19
|
+
let n = f(e);
|
|
19
20
|
return n === e ? t : n;
|
|
20
|
-
},
|
|
21
|
+
}, m = ne(), { apiGatewayUrl: h, authToken: g, orgId: _ } = e(), { emit: v } = ee(), [y, b] = a(d), [x, S] = a(!1), [C, w] = a(!1), [T, E] = a(!1), [D, O] = a(null), [ue, k] = a(!1), [de, A] = a(!1), [fe, j] = a(!1), [M, N] = a({
|
|
21
22
|
name: "",
|
|
22
23
|
email: "",
|
|
23
24
|
billingEmail: "",
|
|
24
25
|
currency: "USD",
|
|
25
26
|
taxId: "",
|
|
26
27
|
isDefault: !1
|
|
27
|
-
}), { data:
|
|
28
|
-
variables: { id:
|
|
29
|
-
skip: !
|
|
30
|
-
}),
|
|
31
|
-
if (
|
|
32
|
-
if (
|
|
33
|
-
let e =
|
|
28
|
+
}), { data: P, loading: F, refetch: I } = ae({}), L = i(() => P?.getBillingAccountsByOrg || [], [P?.getBillingAccountsByOrg]), { data: R, loading: z, refetch: B } = oe({}), V = R?.getDefaultBillingAccount || null, { data: pe, loading: H, refetch: U } = ie({
|
|
29
|
+
variables: { id: y },
|
|
30
|
+
skip: !y
|
|
31
|
+
}), W = pe?.getBillingAccount || null, [G] = ce(), [K] = se(), q = i(() => {
|
|
32
|
+
if (y) {
|
|
33
|
+
if (W) return W;
|
|
34
|
+
let e = L.find((e) => e.id === y);
|
|
34
35
|
if (e) return e;
|
|
35
|
-
if (
|
|
36
|
+
if (H) return null;
|
|
36
37
|
}
|
|
37
|
-
return
|
|
38
|
+
return V;
|
|
38
39
|
}, [
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
]),
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
name:
|
|
48
|
-
email:
|
|
49
|
-
billingEmail:
|
|
50
|
-
currency:
|
|
51
|
-
taxId:
|
|
52
|
-
isDefault:
|
|
40
|
+
y,
|
|
41
|
+
W,
|
|
42
|
+
L,
|
|
43
|
+
H,
|
|
44
|
+
V
|
|
45
|
+
]), me = F || z || y && H;
|
|
46
|
+
le(() => {
|
|
47
|
+
q && N({
|
|
48
|
+
name: q.name || "",
|
|
49
|
+
email: q.email || "",
|
|
50
|
+
billingEmail: q.billingEmail || "",
|
|
51
|
+
currency: q.currency || "USD",
|
|
52
|
+
taxId: q.taxId || "",
|
|
53
|
+
isDefault: q.isDefault || !1
|
|
53
54
|
});
|
|
54
|
-
}, [
|
|
55
|
-
let
|
|
56
|
-
|
|
57
|
-
},
|
|
58
|
-
|
|
55
|
+
}, [q]);
|
|
56
|
+
let he = (e) => {
|
|
57
|
+
b(e.id), S(!1), k(!1), O(null);
|
|
58
|
+
}, J = (e, t) => {
|
|
59
|
+
N((n) => ({
|
|
59
60
|
...n,
|
|
60
61
|
[e]: t
|
|
61
|
-
})),
|
|
62
|
-
},
|
|
63
|
-
if (
|
|
64
|
-
|
|
62
|
+
})), k(!1), O(null);
|
|
63
|
+
}, Y = i(() => L.find((e) => e.isDefault) || null, [L]), ge = i(() => q ? M.name !== (q.name || "") || M.email !== (q.email || "") || M.billingEmail !== (q.billingEmail || "") || M.currency !== (q.currency || "USD") || M.taxId !== (q.taxId || "") || M.isDefault !== (q.isDefault || !1) : !1, [M, q]), X = M.isDefault && !q?.isDefault, Z = X && Y && Y.id !== q?.id, Q = r(async () => {
|
|
64
|
+
if (q?.id) {
|
|
65
|
+
w(!0), O(null), k(!1), A(!1), j(!1);
|
|
65
66
|
try {
|
|
66
|
-
await
|
|
67
|
-
id:
|
|
68
|
-
name:
|
|
69
|
-
email:
|
|
70
|
-
billingEmail:
|
|
71
|
-
currency:
|
|
72
|
-
taxId:
|
|
73
|
-
} } }),
|
|
67
|
+
await G({ variables: { input: {
|
|
68
|
+
id: q.id,
|
|
69
|
+
name: M.name,
|
|
70
|
+
email: M.email,
|
|
71
|
+
billingEmail: M.billingEmail || null,
|
|
72
|
+
currency: M.currency,
|
|
73
|
+
taxId: M.taxId || null
|
|
74
|
+
} } }), v("billing.billing_account.updated", {
|
|
74
75
|
route: "/billing/settings",
|
|
75
|
-
entityId:
|
|
76
|
+
entityId: q.id,
|
|
76
77
|
source: "settings"
|
|
77
|
-
}),
|
|
78
|
-
variables: { id:
|
|
78
|
+
}), X && (await K({
|
|
79
|
+
variables: { id: q.id },
|
|
79
80
|
refetchQueries: ["GetBillingAccountsByTenant", "GetDefaultBillingAccount"]
|
|
80
|
-
}),
|
|
81
|
+
}), v("billing.billing_account.updated", {
|
|
81
82
|
route: "/billing/settings",
|
|
82
|
-
entityId:
|
|
83
|
+
entityId: q.id,
|
|
83
84
|
source: "settings.default"
|
|
84
|
-
})),
|
|
85
|
+
})), y ? await U() : await B(), k(!0), setTimeout(() => k(!1), 3e3);
|
|
85
86
|
} catch (e) {
|
|
86
|
-
|
|
87
|
+
O(e instanceof Error ? e.message : "Failed to save changes");
|
|
87
88
|
} finally {
|
|
88
|
-
|
|
89
|
+
w(!1);
|
|
89
90
|
}
|
|
90
91
|
}
|
|
91
92
|
}, [
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
93
|
+
q?.id,
|
|
94
|
+
M,
|
|
95
|
+
X,
|
|
96
|
+
G,
|
|
95
97
|
K,
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
J?.id && (Q ? (N(!0), M(!0)) : $());
|
|
98
|
+
y,
|
|
99
|
+
U,
|
|
100
|
+
B,
|
|
101
|
+
v
|
|
102
|
+
]), $ = r(() => {
|
|
103
|
+
q?.id && (Z ? (j(!0), A(!0)) : Q());
|
|
103
104
|
}, [
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
]),
|
|
108
|
-
if (!
|
|
109
|
-
let e =
|
|
110
|
-
if (window.confirm(
|
|
111
|
-
|
|
105
|
+
q?.id,
|
|
106
|
+
Z,
|
|
107
|
+
Q
|
|
108
|
+
]), _e = r(async () => {
|
|
109
|
+
if (!q?.id || !q.isActive) return;
|
|
110
|
+
let e = L.find((e) => e.id !== q.id && e.isActive);
|
|
111
|
+
if (window.confirm(q.isDefault ? `Archive ${q.name}? ${e ? `${e.name} will become the default account.` : "No replacement default account is available."}` : `Archive ${q.name}?`)) {
|
|
112
|
+
E(!0), O(null), k(!1);
|
|
112
113
|
try {
|
|
113
|
-
await
|
|
114
|
-
apiGatewayUrl:
|
|
115
|
-
authToken:
|
|
116
|
-
orgId:
|
|
117
|
-
query:
|
|
114
|
+
await te({
|
|
115
|
+
apiGatewayUrl: h,
|
|
116
|
+
authToken: g,
|
|
117
|
+
orgId: _,
|
|
118
|
+
query: re,
|
|
118
119
|
variables: {
|
|
119
|
-
id:
|
|
120
|
+
id: q.id,
|
|
120
121
|
reason: "Archived from billing settings",
|
|
121
|
-
replacementDefaultBillingAccountId:
|
|
122
|
+
replacementDefaultBillingAccountId: q.isDefault ? e?.id ?? null : null
|
|
122
123
|
}
|
|
123
|
-
}),
|
|
124
|
+
}), v("billing.billing_account.archived", {
|
|
124
125
|
route: "/billing/settings",
|
|
125
|
-
entityId:
|
|
126
|
+
entityId: q.id,
|
|
126
127
|
source: "settings"
|
|
127
|
-
}), await Promise.all([
|
|
128
|
+
}), await Promise.all([I(), B()]), b(e?.id), k(!0), setTimeout(() => k(!1), 3e3);
|
|
128
129
|
} catch (e) {
|
|
129
|
-
|
|
130
|
+
O(e instanceof Error ? e.message : "Failed to archive billing account");
|
|
130
131
|
} finally {
|
|
131
|
-
|
|
132
|
+
E(!1);
|
|
132
133
|
}
|
|
133
134
|
}
|
|
134
135
|
}, [
|
|
136
|
+
h,
|
|
135
137
|
g,
|
|
136
|
-
|
|
137
|
-
J,
|
|
138
|
-
R,
|
|
139
|
-
v,
|
|
138
|
+
q,
|
|
140
139
|
L,
|
|
141
|
-
|
|
142
|
-
|
|
140
|
+
_,
|
|
141
|
+
I,
|
|
142
|
+
B,
|
|
143
|
+
v
|
|
143
144
|
]);
|
|
144
|
-
return
|
|
145
|
+
return m.canManageBillingAccount ? me && !q ? /* @__PURE__ */ c("div", {
|
|
145
146
|
className: "space-y-6 p-6",
|
|
146
|
-
children: [/* @__PURE__ */
|
|
147
|
+
children: [/* @__PURE__ */ s("div", { className: "h-8 w-48 bg-muted animate-pulse rounded" }), /* @__PURE__ */ s("div", {
|
|
147
148
|
className: "border border-border rounded-lg p-6 space-y-4",
|
|
148
149
|
children: [
|
|
149
150
|
1,
|
|
150
151
|
2,
|
|
151
152
|
3
|
|
152
|
-
].map((e) => /* @__PURE__ */
|
|
153
|
+
].map((e) => /* @__PURE__ */ s("div", { className: "h-10 bg-muted animate-pulse rounded" }, e))
|
|
153
154
|
})]
|
|
154
|
-
}) : /* @__PURE__ */
|
|
155
|
+
}) : /* @__PURE__ */ c("div", {
|
|
155
156
|
className: "space-y-6 p-6",
|
|
156
157
|
children: [
|
|
157
|
-
/* @__PURE__ */
|
|
158
|
-
title:
|
|
159
|
-
description:
|
|
158
|
+
/* @__PURE__ */ s(n, {
|
|
159
|
+
title: p("billing.settings.billingSettings", "Billing Settings"),
|
|
160
|
+
description: p("billing.settings.description", "Manage your billing account configuration")
|
|
160
161
|
}),
|
|
161
|
-
|
|
162
|
+
L.length > 1 && /* @__PURE__ */ c("div", {
|
|
162
163
|
className: "relative",
|
|
163
|
-
children: [/* @__PURE__ */
|
|
164
|
-
|
|
164
|
+
children: [/* @__PURE__ */ c("button", {
|
|
165
|
+
type: "button",
|
|
166
|
+
onClick: () => S(!x),
|
|
165
167
|
className: "w-full sm:w-auto flex items-center justify-between gap-3 px-4 py-3 border border-border rounded-lg bg-card hover:bg-muted/50 transition-colors",
|
|
166
|
-
children: [/* @__PURE__ */
|
|
168
|
+
children: [/* @__PURE__ */ c("div", {
|
|
167
169
|
className: "flex items-center gap-3",
|
|
168
|
-
children: [/* @__PURE__ */
|
|
169
|
-
className: "
|
|
170
|
-
children: /* @__PURE__ */
|
|
171
|
-
className: "
|
|
170
|
+
children: [/* @__PURE__ */ s("div", {
|
|
171
|
+
className: "size-8 rounded-lg bg-primary/10 flex items-center justify-center",
|
|
172
|
+
children: /* @__PURE__ */ s("svg", {
|
|
173
|
+
className: "size-4 text-primary",
|
|
172
174
|
fill: "none",
|
|
173
175
|
viewBox: "0 0 24 24",
|
|
174
176
|
stroke: "currentColor",
|
|
175
|
-
children: /* @__PURE__ */
|
|
177
|
+
children: /* @__PURE__ */ s("path", {
|
|
176
178
|
strokeLinecap: "round",
|
|
177
179
|
strokeLinejoin: "round",
|
|
178
180
|
strokeWidth: 2,
|
|
179
181
|
d: "M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4"
|
|
180
182
|
})
|
|
181
183
|
})
|
|
182
|
-
}), /* @__PURE__ */
|
|
184
|
+
}), /* @__PURE__ */ c("div", {
|
|
183
185
|
className: "text-left",
|
|
184
|
-
children: [/* @__PURE__ */
|
|
186
|
+
children: [/* @__PURE__ */ s("p", {
|
|
185
187
|
className: "text-sm font-medium text-foreground",
|
|
186
|
-
children:
|
|
187
|
-
}), /* @__PURE__ */
|
|
188
|
+
children: q?.name || p("billing.settings.selectAccount", "Select Account")
|
|
189
|
+
}), /* @__PURE__ */ s("p", {
|
|
188
190
|
className: "text-xs text-muted-foreground",
|
|
189
|
-
children:
|
|
191
|
+
children: q?.email
|
|
190
192
|
})]
|
|
191
193
|
})]
|
|
192
|
-
}), /* @__PURE__ */
|
|
193
|
-
className: `
|
|
194
|
+
}), /* @__PURE__ */ s("svg", {
|
|
195
|
+
className: `size-4 text-muted-foreground transition-transform ${x ? "rotate-180" : ""}`,
|
|
194
196
|
fill: "none",
|
|
195
197
|
viewBox: "0 0 24 24",
|
|
196
198
|
stroke: "currentColor",
|
|
197
|
-
children: /* @__PURE__ */
|
|
199
|
+
children: /* @__PURE__ */ s("path", {
|
|
198
200
|
strokeLinecap: "round",
|
|
199
201
|
strokeLinejoin: "round",
|
|
200
202
|
strokeWidth: 2,
|
|
201
203
|
d: "M19 9l-7 7-7-7"
|
|
202
204
|
})
|
|
203
205
|
})]
|
|
204
|
-
}),
|
|
206
|
+
}), x && /* @__PURE__ */ c(o, { children: [/* @__PURE__ */ s("div", {
|
|
205
207
|
className: "fixed inset-0 z-10",
|
|
206
|
-
onClick: () =>
|
|
207
|
-
}), /* @__PURE__ */
|
|
208
|
+
onClick: () => S(!1)
|
|
209
|
+
}), /* @__PURE__ */ s("div", {
|
|
208
210
|
className: "absolute top-full left-0 right-0 sm:right-auto mt-1 w-full sm:w-80 bg-popover border border-border rounded-lg shadow-lg z-20 py-1 max-h-60 overflow-y-auto",
|
|
209
|
-
children:
|
|
210
|
-
|
|
211
|
+
children: L.map((e) => /* @__PURE__ */ c("button", {
|
|
212
|
+
type: "button",
|
|
213
|
+
onClick: () => he(e),
|
|
211
214
|
className: "w-full flex items-center justify-between gap-3 px-4 py-3 hover:bg-muted transition-colors",
|
|
212
|
-
children: [/* @__PURE__ */
|
|
215
|
+
children: [/* @__PURE__ */ c("div", {
|
|
213
216
|
className: "flex items-center gap-3 min-w-0",
|
|
214
|
-
children: [/* @__PURE__ */
|
|
215
|
-
className: "
|
|
216
|
-
children: /* @__PURE__ */
|
|
217
|
-
className: "
|
|
217
|
+
children: [/* @__PURE__ */ s("div", {
|
|
218
|
+
className: "size-8 rounded-lg bg-muted flex items-center justify-center flex-shrink-0",
|
|
219
|
+
children: /* @__PURE__ */ s("svg", {
|
|
220
|
+
className: "size-4 text-muted-foreground",
|
|
218
221
|
fill: "none",
|
|
219
222
|
viewBox: "0 0 24 24",
|
|
220
223
|
stroke: "currentColor",
|
|
221
|
-
children: /* @__PURE__ */
|
|
224
|
+
children: /* @__PURE__ */ s("path", {
|
|
222
225
|
strokeLinecap: "round",
|
|
223
226
|
strokeLinejoin: "round",
|
|
224
227
|
strokeWidth: 2,
|
|
225
228
|
d: "M19 21V5a2 2 0 00-2-2H7a2 2 0 00-2 2v16m14 0h2m-2 0h-5m-9 0H3m2 0h5M9 7h1m-1 4h1m4-4h1m-1 4h1m-5 10v-5a1 1 0 011-1h2a1 1 0 011 1v5m-4 0h4"
|
|
226
229
|
})
|
|
227
230
|
})
|
|
228
|
-
}), /* @__PURE__ */
|
|
231
|
+
}), /* @__PURE__ */ c("div", {
|
|
229
232
|
className: "text-left min-w-0",
|
|
230
|
-
children: [/* @__PURE__ */
|
|
233
|
+
children: [/* @__PURE__ */ s("p", {
|
|
231
234
|
className: "text-sm font-medium text-foreground truncate",
|
|
232
235
|
children: e.name
|
|
233
|
-
}), /* @__PURE__ */
|
|
236
|
+
}), /* @__PURE__ */ s("p", {
|
|
234
237
|
className: "text-xs text-muted-foreground truncate",
|
|
235
238
|
children: e.email
|
|
236
239
|
})]
|
|
237
240
|
})]
|
|
238
|
-
}),
|
|
239
|
-
className: "
|
|
241
|
+
}), q?.id === e.id && /* @__PURE__ */ s("svg", {
|
|
242
|
+
className: "size-4 text-primary flex-shrink-0",
|
|
240
243
|
fill: "none",
|
|
241
244
|
viewBox: "0 0 24 24",
|
|
242
245
|
stroke: "currentColor",
|
|
243
|
-
children: /* @__PURE__ */
|
|
246
|
+
children: /* @__PURE__ */ s("path", {
|
|
244
247
|
strokeLinecap: "round",
|
|
245
248
|
strokeLinejoin: "round",
|
|
246
249
|
strokeWidth: 2,
|
|
@@ -250,383 +253,387 @@ var se = () => {
|
|
|
250
253
|
}, e.id))
|
|
251
254
|
})] })]
|
|
252
255
|
}),
|
|
253
|
-
/* @__PURE__ */
|
|
256
|
+
/* @__PURE__ */ c("div", {
|
|
254
257
|
className: "border border-border rounded-lg bg-card",
|
|
255
|
-
children: [/* @__PURE__ */
|
|
258
|
+
children: [/* @__PURE__ */ s("div", {
|
|
256
259
|
className: "p-6 border-b border-border",
|
|
257
|
-
children: /* @__PURE__ */
|
|
260
|
+
children: /* @__PURE__ */ c("div", {
|
|
258
261
|
className: "flex items-center justify-between",
|
|
259
|
-
children: [/* @__PURE__ */
|
|
262
|
+
children: [/* @__PURE__ */ c("div", { children: [/* @__PURE__ */ s("h2", {
|
|
260
263
|
className: "text-lg font-semibold text-foreground",
|
|
261
|
-
children:
|
|
262
|
-
}), /* @__PURE__ */
|
|
264
|
+
children: p("billing.settings.accountInfo", "Account Information")
|
|
265
|
+
}), /* @__PURE__ */ s("p", {
|
|
263
266
|
className: "text-sm text-muted-foreground mt-1",
|
|
264
|
-
children:
|
|
265
|
-
})] }),
|
|
267
|
+
children: p("billing.settings.accountInfoDescription", "Update your billing contact details and tax information")
|
|
268
|
+
})] }), q?.isDefault && /* @__PURE__ */ c("span", {
|
|
266
269
|
className: "inline-flex items-center gap-1.5 px-2.5 py-1 text-xs font-medium bg-primary/10 text-primary rounded-full",
|
|
267
|
-
children: [/* @__PURE__ */
|
|
268
|
-
className: "
|
|
270
|
+
children: [/* @__PURE__ */ s("svg", {
|
|
271
|
+
className: "size-3",
|
|
269
272
|
fill: "currentColor",
|
|
270
273
|
viewBox: "0 0 20 20",
|
|
271
|
-
children: /* @__PURE__ */
|
|
274
|
+
children: /* @__PURE__ */ s("path", {
|
|
272
275
|
fillRule: "evenodd",
|
|
273
276
|
d: "M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z",
|
|
274
277
|
clipRule: "evenodd"
|
|
275
278
|
})
|
|
276
|
-
}),
|
|
279
|
+
}), p("billing.settings.defaultAccount", "Default Account")]
|
|
277
280
|
})]
|
|
278
281
|
})
|
|
279
|
-
}), /* @__PURE__ */
|
|
282
|
+
}), /* @__PURE__ */ c("div", {
|
|
280
283
|
className: "p-6 space-y-6",
|
|
281
284
|
children: [
|
|
282
|
-
|
|
285
|
+
q && /* @__PURE__ */ c("div", {
|
|
283
286
|
className: "grid grid-cols-2 sm:grid-cols-4 gap-4 text-sm pb-4 border-b border-border",
|
|
284
287
|
children: [
|
|
285
|
-
/* @__PURE__ */
|
|
288
|
+
/* @__PURE__ */ c("div", { children: [/* @__PURE__ */ s("p", {
|
|
286
289
|
className: "text-muted-foreground",
|
|
287
|
-
children:
|
|
288
|
-
}), /* @__PURE__ */
|
|
289
|
-
className: `font-medium ${
|
|
290
|
-
children:
|
|
290
|
+
children: p("billing.settings.status", "Status")
|
|
291
|
+
}), /* @__PURE__ */ s("p", {
|
|
292
|
+
className: `font-medium ${q.isActive ? "text-status-success-text" : "text-destructive"}`,
|
|
293
|
+
children: q.isActive ? p("billing.settings.active", "Active") : p("billing.settings.inactive", "Inactive")
|
|
291
294
|
})] }),
|
|
292
|
-
/* @__PURE__ */
|
|
295
|
+
/* @__PURE__ */ c("div", { children: [/* @__PURE__ */ s("p", {
|
|
293
296
|
className: "text-muted-foreground",
|
|
294
|
-
children:
|
|
295
|
-
}), /* @__PURE__ */
|
|
297
|
+
children: p("billing.settings.creditBalance", "Credit Balance")
|
|
298
|
+
}), /* @__PURE__ */ c("p", {
|
|
296
299
|
className: "font-medium text-foreground",
|
|
297
|
-
children: [(
|
|
300
|
+
children: [(q.creditAmount || 0).toLocaleString(), " Credits"]
|
|
298
301
|
})] }),
|
|
299
|
-
/* @__PURE__ */
|
|
302
|
+
/* @__PURE__ */ c("div", { children: [/* @__PURE__ */ s("p", {
|
|
300
303
|
className: "text-muted-foreground",
|
|
301
|
-
children:
|
|
302
|
-
}), /* @__PURE__ */
|
|
304
|
+
children: p("billing.settings.accountId", "Account ID")
|
|
305
|
+
}), /* @__PURE__ */ s("p", {
|
|
303
306
|
className: "font-mono text-xs text-foreground truncate",
|
|
304
|
-
title:
|
|
305
|
-
children:
|
|
307
|
+
title: q.id,
|
|
308
|
+
children: q.id
|
|
306
309
|
})] }),
|
|
307
|
-
/* @__PURE__ */
|
|
310
|
+
/* @__PURE__ */ c("div", { children: [/* @__PURE__ */ s("p", {
|
|
308
311
|
className: "text-muted-foreground",
|
|
309
|
-
children:
|
|
310
|
-
}), /* @__PURE__ */
|
|
312
|
+
children: p("billing.settings.created", "Created")
|
|
313
|
+
}), /* @__PURE__ */ s("p", {
|
|
311
314
|
className: "font-medium text-foreground",
|
|
312
|
-
children:
|
|
315
|
+
children: q.createdAt ? new Date(q.createdAt).toLocaleDateString() : p("billing.settings.notAvailable", "N/A")
|
|
313
316
|
})] })
|
|
314
317
|
]
|
|
315
318
|
}),
|
|
316
|
-
/* @__PURE__ */
|
|
319
|
+
/* @__PURE__ */ c("div", { children: [/* @__PURE__ */ s("h3", {
|
|
317
320
|
className: "text-sm font-medium text-foreground mb-4",
|
|
318
|
-
children:
|
|
319
|
-
}), /* @__PURE__ */
|
|
321
|
+
children: p("billing.settings.contactDetails", "Contact Details")
|
|
322
|
+
}), /* @__PURE__ */ c("div", {
|
|
320
323
|
className: "grid grid-cols-1 sm:grid-cols-2 gap-4",
|
|
321
|
-
children: [
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
children: "*"
|
|
331
|
-
})
|
|
332
|
-
]
|
|
333
|
-
}), /* @__PURE__ */ d("input", {
|
|
334
|
-
id: "billing-account-name",
|
|
335
|
-
type: "text",
|
|
336
|
-
value: P.name,
|
|
337
|
-
onChange: (e) => Y("name", e.target.value),
|
|
338
|
-
className: "w-full px-3 py-2 text-sm border border-border rounded-md bg-background text-foreground focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent"
|
|
339
|
-
})] }),
|
|
340
|
-
/* @__PURE__ */ f("div", { children: [/* @__PURE__ */ f("label", {
|
|
341
|
-
htmlFor: "billing-account-email",
|
|
342
|
-
className: "block text-sm font-medium text-foreground mb-1",
|
|
343
|
-
children: [
|
|
344
|
-
m("billing.settings.email", "Email"),
|
|
345
|
-
" ",
|
|
346
|
-
/* @__PURE__ */ d("span", {
|
|
347
|
-
className: "text-destructive",
|
|
348
|
-
children: "*"
|
|
349
|
-
})
|
|
350
|
-
]
|
|
351
|
-
}), /* @__PURE__ */ d("input", {
|
|
352
|
-
id: "billing-account-email",
|
|
353
|
-
type: "email",
|
|
354
|
-
value: P.email,
|
|
355
|
-
onChange: (e) => Y("email", e.target.value),
|
|
356
|
-
className: "w-full px-3 py-2 text-sm border border-border rounded-md bg-background text-foreground focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent"
|
|
357
|
-
})] }),
|
|
358
|
-
/* @__PURE__ */ f("div", { children: [
|
|
359
|
-
/* @__PURE__ */ d("label", {
|
|
360
|
-
htmlFor: "billing-account-billing-email",
|
|
361
|
-
className: "block text-sm font-medium text-foreground mb-1",
|
|
362
|
-
children: m("billing.settings.billingEmail", "Billing Email")
|
|
363
|
-
}),
|
|
364
|
-
/* @__PURE__ */ d("input", {
|
|
365
|
-
id: "billing-account-billing-email",
|
|
366
|
-
type: "email",
|
|
367
|
-
value: P.billingEmail,
|
|
368
|
-
onChange: (e) => Y("billingEmail", e.target.value),
|
|
369
|
-
placeholder: m("billing.settings.billingEmailPlaceholder", "Optional - defaults to account email"),
|
|
370
|
-
className: "w-full px-3 py-2 text-sm border border-border rounded-md bg-background text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent"
|
|
371
|
-
}),
|
|
372
|
-
/* @__PURE__ */ d("p", {
|
|
373
|
-
className: "text-xs text-muted-foreground mt-1",
|
|
374
|
-
children: m("billing.settings.billingEmailHelp", "Invoices will be sent to this email if provided")
|
|
324
|
+
children: [/* @__PURE__ */ c("div", { children: [/* @__PURE__ */ c("label", {
|
|
325
|
+
htmlFor: "billing-account-name",
|
|
326
|
+
className: "block text-sm font-medium text-foreground mb-1",
|
|
327
|
+
children: [
|
|
328
|
+
p("billing.settings.accountName", "Account Name"),
|
|
329
|
+
" ",
|
|
330
|
+
/* @__PURE__ */ s("span", {
|
|
331
|
+
className: "text-destructive",
|
|
332
|
+
children: "*"
|
|
375
333
|
})
|
|
376
|
-
]
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
334
|
+
]
|
|
335
|
+
}), /* @__PURE__ */ s("input", {
|
|
336
|
+
id: "billing-account-name",
|
|
337
|
+
type: "text",
|
|
338
|
+
value: M.name,
|
|
339
|
+
onChange: (e) => J("name", e.target.value),
|
|
340
|
+
className: "w-full px-3 py-2 text-sm border border-border rounded-md bg-background text-foreground focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent"
|
|
341
|
+
})] }), /* @__PURE__ */ c("div", { children: [/* @__PURE__ */ c("label", {
|
|
342
|
+
htmlFor: "billing-account-email",
|
|
343
|
+
className: "block text-sm font-medium text-foreground mb-1",
|
|
344
|
+
children: [
|
|
345
|
+
p("billing.settings.email", "Email"),
|
|
346
|
+
" ",
|
|
347
|
+
/* @__PURE__ */ s("span", {
|
|
348
|
+
className: "text-destructive",
|
|
349
|
+
children: "*"
|
|
350
|
+
})
|
|
351
|
+
]
|
|
352
|
+
}), /* @__PURE__ */ s("input", {
|
|
353
|
+
id: "billing-account-email",
|
|
354
|
+
type: "email",
|
|
355
|
+
value: M.email,
|
|
356
|
+
onChange: (e) => J("email", e.target.value),
|
|
357
|
+
className: "w-full px-3 py-2 text-sm border border-border rounded-md bg-background text-foreground focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent"
|
|
358
|
+
})] })]
|
|
359
|
+
})] }),
|
|
360
|
+
/* @__PURE__ */ s(u, {
|
|
361
|
+
title: p("billing.settings.advancedTitle", "Advanced settings"),
|
|
362
|
+
description: p("billing.settings.advancedDescription", "Billing email override, currency, and tax identification."),
|
|
363
|
+
children: /* @__PURE__ */ c("div", {
|
|
364
|
+
className: "grid grid-cols-1 sm:grid-cols-2 gap-4",
|
|
365
|
+
children: [
|
|
366
|
+
/* @__PURE__ */ c("div", { children: [
|
|
367
|
+
/* @__PURE__ */ s("label", {
|
|
368
|
+
htmlFor: "billing-account-billing-email",
|
|
369
|
+
className: "block text-sm font-medium text-foreground mb-1",
|
|
370
|
+
children: p("billing.settings.billingEmail", "Billing Email")
|
|
394
371
|
}),
|
|
395
|
-
/* @__PURE__ */
|
|
396
|
-
|
|
397
|
-
|
|
372
|
+
/* @__PURE__ */ s("input", {
|
|
373
|
+
id: "billing-account-billing-email",
|
|
374
|
+
type: "email",
|
|
375
|
+
value: M.billingEmail,
|
|
376
|
+
onChange: (e) => J("billingEmail", e.target.value),
|
|
377
|
+
placeholder: p("billing.settings.billingEmailPlaceholder", "Optional - defaults to account email"),
|
|
378
|
+
className: "w-full px-3 py-2 text-sm border border-border rounded-md bg-background text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent"
|
|
398
379
|
}),
|
|
399
|
-
/* @__PURE__ */
|
|
400
|
-
|
|
401
|
-
children: "
|
|
380
|
+
/* @__PURE__ */ s("p", {
|
|
381
|
+
className: "text-xs text-muted-foreground mt-1",
|
|
382
|
+
children: p("billing.settings.billingEmailHelp", "Invoices will be sent to this email if provided")
|
|
402
383
|
})
|
|
403
|
-
]
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
})] }),
|
|
407
|
-
/* @__PURE__ */ f("div", {
|
|
408
|
-
className: "pt-4 border-t border-border",
|
|
409
|
-
children: [/* @__PURE__ */ d("h3", {
|
|
410
|
-
className: "text-sm font-medium text-foreground mb-4",
|
|
411
|
-
children: m("billing.settings.taxInformation", "Tax Information")
|
|
412
|
-
}), /* @__PURE__ */ f("div", {
|
|
413
|
-
className: "max-w-md",
|
|
414
|
-
children: [
|
|
415
|
-
/* @__PURE__ */ d("label", {
|
|
416
|
-
htmlFor: "billing-account-tax-id",
|
|
384
|
+
] }),
|
|
385
|
+
/* @__PURE__ */ c("div", { children: [/* @__PURE__ */ s("label", {
|
|
386
|
+
htmlFor: "billing-account-currency",
|
|
417
387
|
className: "block text-sm font-medium text-foreground mb-1",
|
|
418
|
-
children:
|
|
419
|
-
}),
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
388
|
+
children: p("billing.settings.currency", "Currency")
|
|
389
|
+
}), /* @__PURE__ */ c("select", {
|
|
390
|
+
id: "billing-account-currency",
|
|
391
|
+
value: M.currency,
|
|
392
|
+
onChange: (e) => J("currency", e.target.value),
|
|
393
|
+
className: "w-full px-3 py-2 text-sm border border-border rounded-md bg-background text-foreground focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent",
|
|
394
|
+
children: [
|
|
395
|
+
/* @__PURE__ */ s("option", {
|
|
396
|
+
value: "USD",
|
|
397
|
+
children: "USD - US Dollar"
|
|
398
|
+
}),
|
|
399
|
+
/* @__PURE__ */ s("option", {
|
|
400
|
+
value: "EUR",
|
|
401
|
+
children: "EUR - Euro"
|
|
402
|
+
}),
|
|
403
|
+
/* @__PURE__ */ s("option", {
|
|
404
|
+
value: "GBP",
|
|
405
|
+
children: "GBP - British Pound"
|
|
406
|
+
}),
|
|
407
|
+
/* @__PURE__ */ s("option", {
|
|
408
|
+
value: "INR",
|
|
409
|
+
children: "INR - Indian Rupee"
|
|
410
|
+
})
|
|
411
|
+
]
|
|
412
|
+
})] }),
|
|
413
|
+
/* @__PURE__ */ c("div", {
|
|
414
|
+
className: "sm:col-span-2 max-w-md",
|
|
415
|
+
children: [
|
|
416
|
+
/* @__PURE__ */ s("label", {
|
|
417
|
+
htmlFor: "billing-account-tax-id",
|
|
418
|
+
className: "block text-sm font-medium text-foreground mb-1",
|
|
419
|
+
children: p("billing.settings.taxId", "Tax ID / VAT Number")
|
|
420
|
+
}),
|
|
421
|
+
/* @__PURE__ */ s("input", {
|
|
422
|
+
id: "billing-account-tax-id",
|
|
423
|
+
type: "text",
|
|
424
|
+
value: M.taxId,
|
|
425
|
+
onChange: (e) => J("taxId", e.target.value),
|
|
426
|
+
placeholder: p("billing.settings.taxIdPlaceholder", "Enter your tax identification number"),
|
|
427
|
+
className: "w-full px-3 py-2 text-sm border border-border rounded-md bg-background text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent"
|
|
428
|
+
}),
|
|
429
|
+
/* @__PURE__ */ s("p", {
|
|
430
|
+
className: "text-xs text-muted-foreground mt-1",
|
|
431
|
+
children: p("billing.settings.taxIdHelp", "Used for invoices and tax compliance (e.g., GST, VAT number)")
|
|
432
|
+
})
|
|
433
|
+
]
|
|
431
434
|
})
|
|
432
435
|
]
|
|
433
|
-
})
|
|
436
|
+
})
|
|
434
437
|
}),
|
|
435
|
-
|
|
438
|
+
q?.isActive && L.length > 1 && /* @__PURE__ */ s("div", {
|
|
436
439
|
className: "pt-4 border-t border-border",
|
|
437
|
-
children: /* @__PURE__ */
|
|
440
|
+
children: /* @__PURE__ */ c("div", {
|
|
438
441
|
className: "flex items-start gap-3",
|
|
439
|
-
children: [/* @__PURE__ */
|
|
442
|
+
children: [/* @__PURE__ */ s("div", {
|
|
440
443
|
className: "flex items-center h-6",
|
|
441
|
-
children: /* @__PURE__ */
|
|
444
|
+
children: /* @__PURE__ */ s("input", {
|
|
442
445
|
type: "checkbox",
|
|
443
446
|
id: "isDefault",
|
|
444
|
-
checked:
|
|
445
|
-
onChange: (e) =>
|
|
447
|
+
checked: M.isDefault,
|
|
448
|
+
onChange: (e) => N((t) => ({
|
|
446
449
|
...t,
|
|
447
450
|
isDefault: e.target.checked
|
|
448
451
|
})),
|
|
449
|
-
disabled:
|
|
450
|
-
className: "
|
|
452
|
+
disabled: q?.isDefault,
|
|
453
|
+
className: "size-4 rounded border-border text-primary focus:ring-primary focus:ring-offset-0 disabled:opacity-50 disabled:cursor-not-allowed"
|
|
451
454
|
})
|
|
452
|
-
}), /* @__PURE__ */
|
|
455
|
+
}), /* @__PURE__ */ c("div", {
|
|
453
456
|
className: "flex-1",
|
|
454
|
-
children: [/* @__PURE__ */
|
|
457
|
+
children: [/* @__PURE__ */ s("label", {
|
|
455
458
|
htmlFor: "isDefault",
|
|
456
459
|
className: "text-sm font-medium text-foreground cursor-pointer",
|
|
457
|
-
children:
|
|
458
|
-
}), /* @__PURE__ */
|
|
460
|
+
children: p("billing.settings.setDefault", "Set as default billing account")
|
|
461
|
+
}), /* @__PURE__ */ s("p", {
|
|
459
462
|
className: "text-xs text-muted-foreground mt-0.5",
|
|
460
|
-
children:
|
|
463
|
+
children: q?.isDefault ? p("billing.settings.currentDefaultDescription", "This is currently your default billing account") : p("billing.settings.makePrimaryDescription", "Make this your primary billing account for new subscriptions")
|
|
461
464
|
})]
|
|
462
465
|
})]
|
|
463
466
|
})
|
|
464
467
|
}),
|
|
465
|
-
/* @__PURE__ */
|
|
468
|
+
/* @__PURE__ */ c("div", {
|
|
466
469
|
className: "pt-4 border-t border-border flex items-center justify-between",
|
|
467
|
-
children: [/* @__PURE__ */
|
|
470
|
+
children: [/* @__PURE__ */ c("div", {
|
|
468
471
|
className: "flex items-center gap-2",
|
|
469
|
-
children: [
|
|
472
|
+
children: [ue && /* @__PURE__ */ c("div", {
|
|
470
473
|
className: "flex items-center gap-2 text-sm text-status-success-text",
|
|
471
|
-
children: [/* @__PURE__ */
|
|
472
|
-
className: "
|
|
474
|
+
children: [/* @__PURE__ */ s("svg", {
|
|
475
|
+
className: "size-4",
|
|
473
476
|
fill: "none",
|
|
474
477
|
viewBox: "0 0 24 24",
|
|
475
478
|
stroke: "currentColor",
|
|
476
|
-
children: /* @__PURE__ */
|
|
479
|
+
children: /* @__PURE__ */ s("path", {
|
|
477
480
|
strokeLinecap: "round",
|
|
478
481
|
strokeLinejoin: "round",
|
|
479
482
|
strokeWidth: 2,
|
|
480
483
|
d: "M5 13l4 4L19 7"
|
|
481
484
|
})
|
|
482
|
-
}),
|
|
483
|
-
}),
|
|
485
|
+
}), p("billing.settings.saveSuccess", "Changes saved successfully")]
|
|
486
|
+
}), D && /* @__PURE__ */ c("div", {
|
|
484
487
|
className: "flex items-center gap-2 text-sm text-destructive",
|
|
485
|
-
children: [/* @__PURE__ */
|
|
486
|
-
className: "
|
|
488
|
+
children: [/* @__PURE__ */ s("svg", {
|
|
489
|
+
className: "size-4",
|
|
487
490
|
fill: "none",
|
|
488
491
|
viewBox: "0 0 24 24",
|
|
489
492
|
stroke: "currentColor",
|
|
490
|
-
children: /* @__PURE__ */
|
|
493
|
+
children: /* @__PURE__ */ s("path", {
|
|
491
494
|
strokeLinecap: "round",
|
|
492
495
|
strokeLinejoin: "round",
|
|
493
496
|
strokeWidth: 2,
|
|
494
497
|
d: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"
|
|
495
498
|
})
|
|
496
|
-
}),
|
|
499
|
+
}), D]
|
|
497
500
|
})]
|
|
498
|
-
}), /* @__PURE__ */
|
|
501
|
+
}), /* @__PURE__ */ c("div", {
|
|
499
502
|
className: "flex items-center gap-3",
|
|
500
|
-
children: [
|
|
501
|
-
|
|
502
|
-
|
|
503
|
+
children: [m.canArchiveBillingAccount && q?.isActive ? /* @__PURE__ */ s("button", {
|
|
504
|
+
type: "button",
|
|
505
|
+
onClick: _e,
|
|
506
|
+
disabled: C || T,
|
|
503
507
|
className: "px-4 py-2 text-sm font-medium border border-border text-status-error-text rounded-md hover:bg-status-error-bg-subtle disabled:opacity-50 disabled:cursor-not-allowed transition-colors",
|
|
504
|
-
children:
|
|
505
|
-
}) : null, /* @__PURE__ */
|
|
506
|
-
|
|
507
|
-
|
|
508
|
+
children: T ? "Archiving..." : "Archive Account"
|
|
509
|
+
}) : null, /* @__PURE__ */ c("button", {
|
|
510
|
+
type: "button",
|
|
511
|
+
onClick: $,
|
|
512
|
+
disabled: !ge || C || T || !M.name || !M.email,
|
|
508
513
|
className: "px-4 py-2 text-sm font-medium bg-primary text-primary-foreground rounded-md hover:bg-primary/90 disabled:opacity-50 disabled:cursor-not-allowed transition-colors flex items-center gap-2",
|
|
509
|
-
children: [
|
|
510
|
-
className: "
|
|
514
|
+
children: [C && /* @__PURE__ */ c("svg", {
|
|
515
|
+
className: "size-4 animate-spin",
|
|
511
516
|
fill: "none",
|
|
512
517
|
viewBox: "0 0 24 24",
|
|
513
|
-
children: [/* @__PURE__ */
|
|
518
|
+
children: [/* @__PURE__ */ s("circle", {
|
|
514
519
|
className: "opacity-25",
|
|
515
520
|
cx: "12",
|
|
516
521
|
cy: "12",
|
|
517
522
|
r: "10",
|
|
518
523
|
stroke: "currentColor",
|
|
519
524
|
strokeWidth: "4"
|
|
520
|
-
}), /* @__PURE__ */
|
|
525
|
+
}), /* @__PURE__ */ s("path", {
|
|
521
526
|
className: "opacity-75",
|
|
522
527
|
fill: "currentColor",
|
|
523
528
|
d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
|
|
524
529
|
})]
|
|
525
|
-
}),
|
|
530
|
+
}), C ? "Saving..." : "Save Changes"]
|
|
526
531
|
})]
|
|
527
532
|
})]
|
|
528
533
|
})
|
|
529
534
|
]
|
|
530
535
|
})]
|
|
531
536
|
}),
|
|
532
|
-
|
|
537
|
+
de && fe && /* @__PURE__ */ c(o, { children: [/* @__PURE__ */ s("div", {
|
|
533
538
|
className: "fixed inset-0 bg-overlay-scrim z-40",
|
|
534
539
|
onClick: () => {
|
|
535
|
-
|
|
540
|
+
C || (A(!1), j(!1), N((e) => ({
|
|
536
541
|
...e,
|
|
537
|
-
isDefault:
|
|
542
|
+
isDefault: q?.isDefault || !1
|
|
538
543
|
})));
|
|
539
544
|
}
|
|
540
|
-
}), /* @__PURE__ */
|
|
545
|
+
}), /* @__PURE__ */ s("div", {
|
|
541
546
|
className: "fixed inset-0 flex items-center justify-center z-50 p-4",
|
|
542
|
-
children: /* @__PURE__ */
|
|
547
|
+
children: /* @__PURE__ */ c("div", {
|
|
543
548
|
className: "bg-card border border-border rounded-lg shadow-xl max-w-md w-full p-6",
|
|
544
549
|
children: [
|
|
545
|
-
/* @__PURE__ */
|
|
550
|
+
/* @__PURE__ */ s("h3", {
|
|
546
551
|
className: "text-lg font-semibold text-foreground mb-2",
|
|
547
552
|
children: "Confirm Default Account Change"
|
|
548
553
|
}),
|
|
549
|
-
/* @__PURE__ */
|
|
554
|
+
/* @__PURE__ */ c("p", {
|
|
550
555
|
className: "text-sm text-muted-foreground mb-4",
|
|
551
556
|
children: [
|
|
552
557
|
"You are about to set",
|
|
553
558
|
" ",
|
|
554
|
-
/* @__PURE__ */
|
|
559
|
+
/* @__PURE__ */ s("strong", {
|
|
555
560
|
className: "text-foreground",
|
|
556
|
-
children:
|
|
561
|
+
children: q?.name
|
|
557
562
|
}),
|
|
558
563
|
" as your default billing account and save your changes."
|
|
559
564
|
]
|
|
560
565
|
}),
|
|
561
|
-
|
|
566
|
+
Y && Y.id !== q?.id && /* @__PURE__ */ s("div", {
|
|
562
567
|
className: "mb-4 p-3 bg-status-warning-bg-subtle border border-border-subtle rounded-md",
|
|
563
|
-
children: /* @__PURE__ */
|
|
568
|
+
children: /* @__PURE__ */ c("div", {
|
|
564
569
|
className: "flex items-start gap-2",
|
|
565
|
-
children: [/* @__PURE__ */
|
|
566
|
-
className: "
|
|
570
|
+
children: [/* @__PURE__ */ s("svg", {
|
|
571
|
+
className: "size-5 text-status-warning-text flex-shrink-0 mt-0.5",
|
|
567
572
|
fill: "none",
|
|
568
573
|
viewBox: "0 0 24 24",
|
|
569
574
|
stroke: "currentColor",
|
|
570
|
-
children: /* @__PURE__ */
|
|
575
|
+
children: /* @__PURE__ */ s("path", {
|
|
571
576
|
strokeLinecap: "round",
|
|
572
577
|
strokeLinejoin: "round",
|
|
573
578
|
strokeWidth: 2,
|
|
574
579
|
d: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"
|
|
575
580
|
})
|
|
576
|
-
}), /* @__PURE__ */
|
|
581
|
+
}), /* @__PURE__ */ c("div", {
|
|
577
582
|
className: "text-sm",
|
|
578
|
-
children: [/* @__PURE__ */
|
|
583
|
+
children: [/* @__PURE__ */ s("p", {
|
|
579
584
|
className: "font-medium text-status-warning-text",
|
|
580
585
|
children: "Current default will change"
|
|
581
|
-
}), /* @__PURE__ */
|
|
586
|
+
}), /* @__PURE__ */ c("p", {
|
|
582
587
|
className: "text-status-warning-text mt-0.5",
|
|
583
|
-
children: [/* @__PURE__ */
|
|
588
|
+
children: [/* @__PURE__ */ s("strong", { children: Y.name }), " will no longer be the default account."]
|
|
584
589
|
})]
|
|
585
590
|
})]
|
|
586
591
|
})
|
|
587
592
|
}),
|
|
588
|
-
/* @__PURE__ */
|
|
593
|
+
/* @__PURE__ */ c("div", {
|
|
589
594
|
className: "flex justify-end gap-3",
|
|
590
|
-
children: [/* @__PURE__ */
|
|
595
|
+
children: [/* @__PURE__ */ s("button", {
|
|
596
|
+
type: "button",
|
|
591
597
|
onClick: () => {
|
|
592
|
-
|
|
598
|
+
A(!1), j(!1), N((e) => ({
|
|
593
599
|
...e,
|
|
594
|
-
isDefault:
|
|
600
|
+
isDefault: q?.isDefault || !1
|
|
595
601
|
}));
|
|
596
602
|
},
|
|
597
|
-
disabled:
|
|
603
|
+
disabled: C,
|
|
598
604
|
className: "px-4 py-2 text-sm font-medium text-foreground border border-border rounded-md hover:bg-muted transition-colors disabled:opacity-50",
|
|
599
605
|
children: "Cancel"
|
|
600
|
-
}), /* @__PURE__ */
|
|
601
|
-
|
|
602
|
-
|
|
606
|
+
}), /* @__PURE__ */ c("button", {
|
|
607
|
+
type: "button",
|
|
608
|
+
onClick: Q,
|
|
609
|
+
disabled: C,
|
|
603
610
|
className: "px-4 py-2 text-sm font-medium bg-primary text-primary-foreground rounded-md hover:bg-primary/90 disabled:opacity-50 transition-colors flex items-center gap-2",
|
|
604
|
-
children: [
|
|
605
|
-
className: "
|
|
611
|
+
children: [C && /* @__PURE__ */ c("svg", {
|
|
612
|
+
className: "size-4 animate-spin",
|
|
606
613
|
fill: "none",
|
|
607
614
|
viewBox: "0 0 24 24",
|
|
608
|
-
children: [/* @__PURE__ */
|
|
615
|
+
children: [/* @__PURE__ */ s("circle", {
|
|
609
616
|
className: "opacity-25",
|
|
610
617
|
cx: "12",
|
|
611
618
|
cy: "12",
|
|
612
619
|
r: "10",
|
|
613
620
|
stroke: "currentColor",
|
|
614
621
|
strokeWidth: "4"
|
|
615
|
-
}), /* @__PURE__ */
|
|
622
|
+
}), /* @__PURE__ */ s("path", {
|
|
616
623
|
className: "opacity-75",
|
|
617
624
|
fill: "currentColor",
|
|
618
625
|
d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
|
|
619
626
|
})]
|
|
620
|
-
}),
|
|
627
|
+
}), C ? "Saving..." : "Save Changes"]
|
|
621
628
|
})]
|
|
622
629
|
})
|
|
623
630
|
]
|
|
624
631
|
})
|
|
625
632
|
})] })
|
|
626
633
|
]
|
|
627
|
-
}) : /* @__PURE__ */
|
|
634
|
+
}) : /* @__PURE__ */ s(t, { message: "You don't have permission to manage billing settings." });
|
|
628
635
|
};
|
|
629
636
|
//#endregion
|
|
630
|
-
export {
|
|
637
|
+
export { f as SettingsPage };
|
|
631
638
|
|
|
632
639
|
//# sourceMappingURL=SettingsPage.js.map
|