Skip to content

Commit 8912835

Browse files
wip
1 parent 747f183 commit 8912835

28 files changed

+519
-465
lines changed

src/assets/billing/bank.svg

Lines changed: 10 additions & 0 deletions
Loading

src/pages/PlanPage/PlanPage.jsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,16 @@ import config from 'config'
88

99
import { SentryRoute } from 'sentry'
1010

11+
import { Theme, useThemeContext } from 'shared/ThemeContext'
1112
import LoadingLogo from 'ui/LoadingLogo'
1213

1314
import { PlanProvider } from './context'
1415
import PlanBreadcrumb from './PlanBreadcrumb'
1516
import { PlanPageDataQueryOpts } from './queries/PlanPageDataQueryOpts'
1617
import Tabs from './Tabs'
1718

19+
import { StripeAppearance } from '../../stripe'
20+
1821
const CancelPlanPage = lazy(() => import('./subRoutes/CancelPlanPage'))
1922
const CurrentOrgPlan = lazy(() => import('./subRoutes/CurrentOrgPlan'))
2023
const InvoicesPage = lazy(() => import('./subRoutes/InvoicesPage'))
@@ -37,6 +40,8 @@ function PlanPage() {
3740
const { data: ownerData } = useSuspenseQueryV5(
3841
PlanPageDataQueryOpts({ owner, provider })
3942
)
43+
const { theme } = useThemeContext()
44+
const isDarkMode = theme !== Theme.LIGHT
4045

4146
if (config.IS_SELF_HOSTED || !ownerData?.isCurrentUserPartOfOrg) {
4247
return <Redirect to={`/${provider}/${owner}`} />
@@ -45,7 +50,7 @@ function PlanPage() {
4550
return (
4651
<div className="flex flex-col gap-4">
4752
<Tabs />
48-
<Elements stripe={stripePromise}>
53+
<Elements stripe={stripePromise} options={StripeAppearance(isDarkMode)}>
4954
<PlanProvider>
5055
<PlanBreadcrumb />
5156
<Suspense fallback={<Loader />}>

src/pages/PlanPage/subRoutes/CurrentOrgPlan/BillingDetails/BillingDetails.tsx

Lines changed: 25 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1+
import { useState } from 'react'
12
import { useParams } from 'react-router-dom'
23

34
import { useAccountDetails } from 'services/account'
5+
import A from 'ui/A'
6+
import Button from 'ui/Button'
47

8+
import EditPaymentMethods from './EditPaymentMethods'
59
import EmailAddress from './EmailAddress'
6-
import PaymentMethod from './PaymentMethod'
7-
import Button from 'ui/Button'
8-
import { useState } from 'react'
9-
import A from 'ui/A'
10-
import EditablePaymentMethod from './EditPaymentMethod'
10+
import { ViewPaymentMethod } from './ViewPaymentMethod'
1111

1212
interface URLParams {
1313
provider: string
@@ -22,15 +22,12 @@ function BillingDetails() {
2222
})
2323
const subscriptionDetail = accountDetails?.subscriptionDetail
2424
const [isEditMode, setEditMode] = useState(false)
25-
26-
const isAdmin = true // TODO
25+
const secondaryPaymentFeatureEnabled = false
2726

2827
if (!subscriptionDetail) {
2928
return null
3029
}
3130

32-
console.log('iseditmode', isEditMode)
33-
3431
return (
3532
<div className="flex flex-col divide-y border">
3633
{/* Billing Details Section */}
@@ -50,7 +47,6 @@ function BillingDetails() {
5047
hook="button"
5148
onClick={() => setEditMode(true)}
5249
variant="default"
53-
disabled={!isAdmin}
5450
className="flex-none"
5551
>
5652
Edit payment
@@ -60,36 +56,42 @@ function BillingDetails() {
6056
hook="button"
6157
onClick={() => setEditMode(false)}
6258
variant="default"
63-
disabled={!isAdmin}
6459
className="flex-none"
6560
>
6661
Back
6762
</Button>
6863
)}
6964
</div>
7065
{isEditMode ? (
71-
<EditablePaymentMethod />
66+
<EditPaymentMethods
67+
setEditMode={setEditMode}
68+
provider={provider}
69+
owner={owner}
70+
existingSubscriptionDetail={subscriptionDetail}
71+
/>
7272
) : (
7373
<>
7474
<EmailAddress />
75-
<PaymentMethod
75+
<ViewPaymentMethod
7676
heading="Primary Payment Method"
77-
isPrimary={true}
78-
isEditMode={isEditMode}
79-
setEditMode={setEditMode}
80-
subscriptionDetail={subscriptionDetail}
81-
provider={provider}
82-
owner={owner}
83-
/>
84-
<PaymentMethod
85-
heading="Secondary Payment Method"
86-
isPrimary={false}
77+
isPrimaryPaymentMethod={true}
8778
isEditMode={isEditMode}
8879
setEditMode={setEditMode}
8980
subscriptionDetail={subscriptionDetail}
9081
provider={provider}
9182
owner={owner}
9283
/>
84+
{secondaryPaymentFeatureEnabled && (
85+
<ViewPaymentMethod
86+
heading="Secondary Payment Method"
87+
isPrimaryPaymentMethod={false}
88+
isEditMode={isEditMode}
89+
setEditMode={setEditMode}
90+
subscriptionDetail={subscriptionDetail}
91+
provider={provider}
92+
owner={owner}
93+
/>
94+
)}
9395
{subscriptionDetail?.taxIds?.length ? (
9496
<div className="flex flex-col gap-2 p-4">
9597
<h4 className="font-semibold">Tax ID</h4>

src/pages/PlanPage/subRoutes/CurrentOrgPlan/BillingDetails/EditPaymentMethod/EditPaymentMethod.tsx

Lines changed: 0 additions & 162 deletions
This file was deleted.

src/pages/PlanPage/subRoutes/CurrentOrgPlan/BillingDetails/EditPaymentMethod/index.ts

Lines changed: 0 additions & 1 deletion
This file was deleted.

src/pages/PlanPage/subRoutes/CurrentOrgPlan/BillingDetails/Address/AddressForm.tsx renamed to src/pages/PlanPage/subRoutes/CurrentOrgPlan/BillingDetails/EditPaymentMethods/Address/AddressForm.tsx

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import { z } from 'zod'
44

55
import { AddressSchema } from 'services/account'
66
import { useUpdateBillingAddress } from 'services/account/useUpdateBillingAddress'
7-
import { Theme, useThemeContext } from 'shared/ThemeContext'
87
import Button from 'ui/Button'
98

109
interface AddressFormProps {
@@ -23,28 +22,6 @@ function AddressForm({
2322
owner,
2423
}: AddressFormProps) {
2524
const elements = useElements()
26-
const { theme } = useThemeContext()
27-
const isDarkMode = theme === Theme.DARK
28-
29-
// Note: unfortunately seems Stripe doesn't let us reference like `var(--<var name>)` so rgbs are hardcoded in below
30-
elements?.update({
31-
appearance: {
32-
variables: {
33-
fontFamily: 'Poppins, ui-sans-serif, system-ui, sans-serif',
34-
},
35-
rules: {
36-
'.Label': {
37-
fontWeight: '600',
38-
color: isDarkMode ? 'rgb(210,212,215)' : 'rgb(14,27,41)', // Same values as --color-app-text-primary.
39-
},
40-
'.Input': {
41-
backgroundColor: isDarkMode ? 'rgb(22,24,29)' : 'rgb(255,255,255)', // Same values as --color-app-container.
42-
borderColor: isDarkMode ? 'rgb(47,51,60)' : 'rgb(216,220,226)', // Same values as --color-ds-gray-tertiary.
43-
color: isDarkMode ? 'rgb(210,212,215)' : 'rgb(14,27,41)', // Same values as --color-app-text-primary.
44-
},
45-
},
46-
},
47-
})
4825

4926
const {
5027
mutate: updateAddress,

0 commit comments

Comments
 (0)