Skip to content

Commit f8c1578

Browse files
wip
1 parent 747f183 commit f8c1578

File tree

22 files changed

+500
-353
lines changed

22 files changed

+500
-353
lines changed

src/assets/billing/bank.svg

Lines changed: 10 additions & 0 deletions
Loading

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 { PaymentMethodContainer } from './PaymentMethodContainer'
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+
subscriptionDetail={subscriptionDetail}
71+
/>
7272
) : (
7373
<>
7474
<EmailAddress />
75-
<PaymentMethod
75+
<PaymentMethodContainer
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+
<PaymentMethodContainer
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.
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
import React, { useState } from 'react'
2+
import { z } from 'zod'
3+
4+
import { SubscriptionDetailSchema } from 'services/account/useAccountDetails'
5+
6+
import AddressForm from './Address/AddressForm'
7+
import EditPaymentMethodForm from './PaymentMethod/PaymentMethodForm'
8+
9+
interface EditPaymentMethodProps {
10+
setEditMode: (isEditMode: boolean) => void
11+
provider: string
12+
owner: string
13+
subscriptionDetail: z.infer<typeof SubscriptionDetailSchema>
14+
}
15+
16+
const EditPaymentMethod = ({
17+
setEditMode,
18+
provider,
19+
owner,
20+
subscriptionDetail,
21+
}: EditPaymentMethodProps) => {
22+
const [activeTab, setActiveTab] = useState<'primary' | 'secondary'>('primary')
23+
const isSecondaryPaymentMethodFeatureEnabled = false
24+
25+
return (
26+
<div className="flex flex-col gap-4 p-4">
27+
<h3 className="font-semibold">Edit payment method</h3>
28+
<div>
29+
{/* Tabs for Primary and Secondary Payment Methods */}
30+
<div className="ml-2 flex border-b border-ds-gray-tertiary">
31+
{[
32+
'primary',
33+
...(isSecondaryPaymentMethodFeatureEnabled ? ['secondary'] : []),
34+
].map((tab) => (
35+
<button
36+
key={tab}
37+
className={`py-2 ${tab === 'primary' ? 'mr-4' : ''} ${
38+
activeTab === tab
39+
? 'border-b-2 border-ds-gray-octonary font-semibold text-ds-gray-octonary'
40+
: 'text-ds-gray-quinary hover:border-b-2 hover:border-ds-gray-quinary'
41+
}`}
42+
onClick={() => setActiveTab(tab as 'primary' | 'secondary')}
43+
>
44+
{tab === 'primary' ? 'Primary' : 'Secondary'} Payment Method
45+
</button>
46+
))}
47+
</div>
48+
49+
{/* Payment Details for the selected tab */}
50+
<div className="m-4">
51+
{activeTab === 'primary' && (
52+
<div>
53+
<EditPaymentMethodForm
54+
closeForm={() => setEditMode(false)}
55+
provider={provider}
56+
owner={owner}
57+
/>
58+
<AddressForm
59+
address={
60+
subscriptionDetail?.defaultPaymentMethod?.billingDetails
61+
?.address
62+
}
63+
name={
64+
subscriptionDetail?.defaultPaymentMethod?.billingDetails?.name
65+
}
66+
closeForm={() => setEditMode(false)}
67+
provider={provider}
68+
owner={owner}
69+
/>
70+
</div>
71+
)}
72+
{activeTab === 'secondary' &&
73+
isSecondaryPaymentMethodFeatureEnabled && (
74+
<div>
75+
<EditPaymentMethodForm
76+
closeForm={() => setEditMode(false)}
77+
provider={provider}
78+
owner={owner}
79+
/>
80+
<AddressForm
81+
closeForm={() => setEditMode(false)}
82+
provider={provider}
83+
owner={owner}
84+
/>
85+
</div>
86+
)}
87+
</div>
88+
</div>
89+
</div>
90+
)
91+
}
92+
93+
export default EditPaymentMethod

0 commit comments

Comments
 (0)