Skip to content
This repository was archived by the owner on Sep 30, 2024. It is now read-only.

Commit 625e188

Browse files
authored
plg(feat): Make page headers the same style (#63380)
**Note:** This PR also makes sure that we use `CodyProRoutes` everywhere for URLs.
1 parent 2a02d7c commit 625e188

File tree

9 files changed

+56
-49
lines changed

9 files changed

+56
-49
lines changed

client/web/src/cody/chat/CodyChatPage.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ import { PageTitle } from '../../components/PageTitle'
4242
import { useFeatureFlag } from '../../featureFlags/useFeatureFlag'
4343
import type { SourcegraphContext } from '../../jscontext'
4444
import { EventName } from '../../util/constants'
45+
import { CodyProRoutes } from '../codyProRoutes'
4546
import { ChatUI } from '../components/ChatUI'
4647
import { CodyMarketingPage } from '../components/CodyMarketingPage'
4748
import { HistoryList } from '../components/HistoryList'
@@ -160,7 +161,7 @@ export const CodyChatPage: React.FunctionComponent<CodyChatPageProps> = ({
160161
)
161162
}
162163

163-
const codyDashboardLink = isSourcegraphDotCom ? '/cody/manage' : '/cody'
164+
const codyDashboardLink = isSourcegraphDotCom ? CodyProRoutes.Manage : '/cody'
164165

165166
return (
166167
<Page className={classNames('d-flex flex-column', styles.page)}>
@@ -287,7 +288,7 @@ export const CodyChatPage: React.FunctionComponent<CodyChatPageProps> = ({
287288
</Text>
288289
<div className="mb-2">
289290
<Link
290-
to="/cody/manage"
291+
to={CodyProRoutes.Manage}
291292
className={classNames(
292293
'd-inline-flex align-items-center text-merged',
293294
styles.ctaLink

client/web/src/cody/management/CodyManagementPage.tsx

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import {
1818
type UserCodyUsageVariables,
1919
CodySubscriptionPlan,
2020
} from '../../graphql-operations'
21+
import { CodyProRoutes } from '../codyProRoutes'
2122
import { CodyAlert } from '../components/CodyAlert'
2223
import { ProIcon } from '../components/CodyIcon'
2324
import { PageHeaderIcon } from '../components/PageHeaderIcon'
@@ -85,7 +86,7 @@ export const CodyManagementPage: React.FunctionComponent<CodyManagementPageProps
8586

8687
useEffect(() => {
8788
if (!!data && !data?.currentUser) {
88-
navigate('/sign-in?returnTo=/cody/manage')
89+
navigate(`/sign-in?returnTo=${CodyProRoutes.Manage}`)
8990
}
9091
}, [data, navigate])
9192

@@ -95,7 +96,7 @@ export const CodyManagementPage: React.FunctionComponent<CodyManagementPageProps
9596
? subscriptionSummaryQueryResult.data.teamMaxMembers >
9697
subscriptionSummaryQueryResult.data.teamCurrentMembers
9798
: false
98-
const targetUrl = hasFreeSeats ? '/cody/team/manage' : '/cody/manage/subscription/new?addSeats=1'
99+
const targetUrl = hasFreeSeats ? CodyProRoutes.ManageTeam : `${CodyProRoutes.NewProSubscription}?addSeats=1`
99100
const label = isSoloUser || hasFreeSeats ? 'Invite co-workers' : 'Add seats'
100101

101102
if (!subscriptionSummaryQueryResult?.data) {
@@ -141,13 +142,12 @@ export const CodyManagementPage: React.FunctionComponent<CodyManagementPageProps
141142
</CodyAlert>
142143
)}
143144
<PageHeader
144-
className="mb-4 mt-4"
145+
className="my-4 d-inline-flex align-items-center"
145146
actions={isAdmin && <div className="d-flex">{getTeamInviteButton()}</div>}
146147
>
147-
<PageHeader.Heading as="h2" styleAs="h1">
148-
<div className="d-inline-flex align-items-center">
149-
<PageHeaderIcon className="mr-2" name="dashboard" /> Dashboard
150-
</div>
148+
<PageHeader.Heading as="h1" className="text-3xl font-medium">
149+
<PageHeaderIcon name="dashboard" className="mr-3" />
150+
<Text as="span">Dashboard</Text>
151151
</PageHeader.Heading>
152152
</PageHeader>
153153

@@ -170,7 +170,7 @@ export const CodyManagementPage: React.FunctionComponent<CodyManagementPageProps
170170
) : (
171171
<span>
172172
You are on the Free tier.{' '}
173-
<Link to="/cody/subscription">Upgrade to the Pro tier.</Link>
173+
<Link to={CodyProRoutes.Subscription}>Upgrade to the Pro tier.</Link>
174174
</span>
175175
)}
176176
</Text>
@@ -225,7 +225,7 @@ const UpgradeToProBanner: React.FunctionComponent<{
225225
</ul>
226226
</div>
227227
<div>
228-
<ButtonLink to="/cody/subscription" variant="primary" size="sm" onClick={onClick}>
228+
<ButtonLink to={CodyProRoutes.Subscription} variant="primary" size="sm" onClick={onClick}>
229229
<ProIcon className="mr-1" />
230230
Upgrade now
231231
</ButtonLink>

client/web/src/cody/management/subscription/manage/CodySubscriptionManagePage.tsx

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,14 @@ const AuthenticatedCodySubscriptionManagePage: React.FC<Props> = ({ telemetryRec
6969

7070
return (
7171
<Page className="d-flex flex-column">
72+
<PageTitle title="Manage subscription" />
73+
<PageHeader className="my-4 d-inline-flex align-items-center">
74+
<PageHeader.Heading as="h1" className="text-3xl font-medium">
75+
<PageHeaderIcon name="cody-logo" className="mr-3" />
76+
<Text as="span">Manage subscription</Text>
77+
</PageHeader.Heading>
78+
</PageHeader>
79+
7280
<PageContent />
7381
</Page>
7482
)
@@ -92,14 +100,6 @@ const PageContent: React.FC = () => {
92100

93101
return (
94102
<>
95-
<PageTitle title="Manage Subscription" />
96-
<PageHeader className="mt-4">
97-
<PageHeader.Heading as="h2" styleAs="h1" className="mb-4 d-flex align-items-center">
98-
<PageHeaderIcon name="cody-logo" className="mr-2" />
99-
<Text as="span">Manage subscription</Text>
100-
</PageHeader.Heading>
101-
</PageHeader>
102-
103103
<Card className={classNames('p-4', styles.card)}>
104104
<SubscriptionDetails subscription={subscription} />
105105

client/web/src/cody/management/subscription/new/CodyProCheckoutForm.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import {
2525
CollapsePanel,
2626
} from '@sourcegraph/wildcard'
2727

28+
import { CodyProRoutes } from '../../../codyProRoutes'
2829
import { CodyAlert } from '../../../components/CodyAlert'
2930
import {
3031
useCreateTeam,
@@ -230,7 +231,7 @@ export const CodyProCheckoutForm: React.FunctionComponent<CodyProCheckoutFormPro
230231
creditCardToken: token,
231232
})
232233

233-
navigate('/cody/manage?welcome=1')
234+
navigate(`${CodyProRoutes.Manage}?welcome=1`)
234235

235236
setSubmitting(false)
236237
} catch (error) {
@@ -264,7 +265,7 @@ export const CodyProCheckoutForm: React.FunctionComponent<CodyProCheckoutFormPro
264265
return
265266
}
266267

267-
navigate('/cody/team/manage')
268+
navigate(CodyProRoutes.ManageTeam)
268269

269270
setSubmitting(false)
270271
},

client/web/src/cody/management/subscription/new/NewCodyProSubscriptionPage.tsx

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { Navigate, useSearchParams } from 'react-router-dom'
1111

1212
import { useQuery } from '@sourcegraph/http-client'
1313
import type { TelemetryV2Props } from '@sourcegraph/shared/src/telemetry'
14-
import { PageHeader, LoadingSpinner, Alert, logger } from '@sourcegraph/wildcard'
14+
import { PageHeader, Text, LoadingSpinner, Alert, logger } from '@sourcegraph/wildcard'
1515

1616
import type { AuthenticatedUser } from '../../../../auth'
1717
import { withAuthenticatedUser } from '../../../../auth/withAuthenticatedUser'
@@ -89,19 +89,17 @@ const AuthenticatedNewCodyProSubscriptionPage: FunctionComponent<NewCodyProSubsc
8989
const PageWithHeader = ({ children }: { children: React.ReactNode }): React.ReactElement => (
9090
<Page className={classNames('d-flex flex-column', styles.page)}>
9191
<PageTitle title={addSeats ? 'Add seats' : 'New subscription'} />
92-
<PageHeader className="my-4">
93-
<PageHeader.Heading as="h1" className={styles.h1}>
94-
<div className="d-inline-flex align-items-center">
95-
<PageHeaderIcon
96-
name={isTeam ? 'mdi-account-multiple-plus-gradient' : 'cody-logo'}
97-
className="mr-3"
98-
/>{' '}
99-
{isTeam ? 'Give your team Cody Pro' : 'Upgrade to Cody Pro'}
100-
</div>
92+
<PageHeader className="my-4 d-inline-flex align-items-center">
93+
<PageHeader.Heading as="h1" className="text-3xl font-medium">
94+
<PageHeaderIcon
95+
name={isTeam ? 'mdi-account-multiple-plus-gradient' : 'cody-logo'}
96+
className="mr-3"
97+
/>{' '}
98+
<Text as="span">{isTeam ? 'Give your team Cody Pro' : 'Upgrade to Cody Pro'}</Text>
10199
</PageHeader.Heading>
102-
103-
{children}
104100
</PageHeader>
101+
102+
{children}
105103
</Page>
106104
)
107105

client/web/src/cody/subscription/CodySubscriptionPage.tsx

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,9 @@ import { Page } from '../../components/Page'
2525
import { PageTitle } from '../../components/PageTitle'
2626
import { CodySubscriptionPlan } from '../../graphql-operations'
2727
import type { UserCodyPlanResult, UserCodyPlanVariables } from '../../graphql-operations'
28-
import { CodyColorIcon } from '../chat/CodyPageIcon'
28+
import { CodyProRoutes } from '../codyProRoutes'
2929
import { ProIcon } from '../components/CodyIcon'
30+
import { PageHeaderIcon } from '../components/PageHeaderIcon'
3031
import { isCodyEnabled } from '../isCodyEnabled'
3132
import { getManageSubscriptionPageURL, isEmbeddedCodyProUIEnabled, manageSubscriptionRedirectURL } from '../util'
3233

@@ -56,7 +57,7 @@ export const CodySubscriptionPage: React.FunctionComponent<CodySubscriptionPageP
5657

5758
useEffect(() => {
5859
if (!!data && !data?.currentUser) {
59-
navigate('/sign-in?returnTo=/cody/subscription')
60+
navigate(`/sign-in?returnTo=${CodyProRoutes.Subscription}`)
6061
}
6162
}, [data, navigate])
6263

@@ -73,9 +74,9 @@ export const CodySubscriptionPage: React.FunctionComponent<CodySubscriptionPageP
7374
return (
7475
<>
7576
<Page className={classNames('d-flex flex-column')}>
76-
<PageTitle title="Cody Subscription" />
77+
<PageTitle title="Cody subscription" />
7778
<PageHeader
78-
className="mb-4"
79+
className="my-4 d-inline-flex align-items-center"
7980
actions={
8081
isProUser && (
8182
<ButtonLink
@@ -93,13 +94,12 @@ export const CodySubscriptionPage: React.FunctionComponent<CodySubscriptionPageP
9394
)
9495
}
9596
>
96-
<PageHeader.Heading as="h2" styleAs="h1">
97-
<div className="d-inline-flex align-items-center">
98-
<CodyColorIcon width={40} height={40} className="mr-2" /> Subscription plans
99-
</div>
97+
<PageHeader.Heading as="h1" className="text-3xl font-medium">
98+
<PageHeaderIcon name="cody-logo" className="mr-3" />
99+
<Text as="span">Subscription plans</Text>
100100
</PageHeader.Heading>
101101
</PageHeader>
102-
<Link to="/cody/manage" className="my-4">
102+
<Link to={CodyProRoutes.Manage}>
103103
<Icon className="mr-1 text-link" svgPath={mdiArrowLeft} aria-hidden={true} />
104104
Back to Cody Dashboard
105105
</Link>
@@ -227,7 +227,7 @@ export const CodySubscriptionPage: React.FunctionComponent<CodySubscriptionPageP
227227
})
228228
// We add ?seats=2 to the URL to initiate creating a team.
229229
const url = new URL(
230-
'/cody/manage/subscription/new',
230+
CodyProRoutes.NewProSubscription,
231231
window.location.origin
232232
)
233233
url.searchParams.append('seats', '2')
@@ -239,15 +239,15 @@ export const CodySubscriptionPage: React.FunctionComponent<CodySubscriptionPageP
239239
</Button>
240240
<Link
241241
className="text-center"
242-
to="/cody/manage/subscription/new"
242+
to={CodyProRoutes.NewProSubscription}
243243
target="_blank"
244244
rel="noreferrer noopener"
245245
onClick={event => {
246246
event.preventDefault()
247247
telemetryRecorder.recordEvent('cody.planSelection', 'click', {
248248
metadata: { tier: 1, team: 0 },
249249
})
250-
navigate('/cody/manage/subscription/new')
250+
navigate(CodyProRoutes.NewProSubscription)
251251
}}
252252
>
253253
Upgrade yourself to Pro

client/web/src/cody/team/CodyManageTeamPage.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ const AuthenticatedCodyManageTeamPage: React.FunctionComponent<CodyManageTeamPag
5353

5454
useEffect(() => {
5555
if (subscriptionQueryResult.data?.subscriptionStatus === 'canceled') {
56-
navigate('/cody/subscription')
56+
navigate(CodyProRoutes.Subscription)
5757
}
5858
}, [navigate, subscriptionQueryResult.data])
5959

@@ -67,7 +67,7 @@ const AuthenticatedCodyManageTeamPage: React.FunctionComponent<CodyManageTeamPag
6767
isAdmin && (
6868
<div className="d-flex">
6969
<Link
70-
to="/cody/manage"
70+
to={CodyProRoutes.Manage}
7171
className="d-inline-flex align-items-center mr-3"
7272
onClick={() =>
7373
telemetryRecorder.recordEvent('cody.team.manage.subscription', 'click', {

client/web/src/cody/widgets/CodyRecipesWidget.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import type { TelemetryRecorder } from '@sourcegraph/shared/src/telemetry'
77
import { EVENT_LOGGER } from '@sourcegraph/shared/src/telemetry/web/eventLogger'
88

99
import { EventName } from '../../util/constants'
10+
import { CodyProRoutes } from '../codyProRoutes'
1011
import type { CodeMirrorEditor } from '../components/CodeMirrorEditor'
1112
import type { useCodySidebar } from '../sidebar/Provider'
1213

@@ -90,7 +91,11 @@ export const CodyRecipesWidget: React.FC<{ editor?: CodeMirrorEditor; telemetryR
9091
onClick={() => void executeRecipe('find-code-smells', { scope: { editor } })}
9192
disabled={isMessageInProgress}
9293
/>
93-
<RecipeAction title="Get Cody in your editor" to="/cody/manage" disabled={isMessageInProgress} />
94+
<RecipeAction
95+
title="Get Cody in your editor"
96+
to={CodyProRoutes.Manage}
97+
disabled={isMessageInProgress}
98+
/>
9499
</Recipe>
95100
</Recipes>
96101
)

client/web/src/get-cody/GetCodyPage.tsx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ import { useNavigate, useLocation } from 'react-router-dom'
44

55
import type { AuthenticatedUser } from '@sourcegraph/shared/src/auth'
66

7+
import { CodyProRoutes } from '../cody/codyProRoutes'
8+
79
interface GetCodyPageProps {
810
authenticatedUser: AuthenticatedUser | null
911
}
@@ -14,7 +16,7 @@ export const GetCodyPage: React.FunctionComponent<GetCodyPageProps> = ({ authent
1416
const [search] = useState(location.search)
1517

1618
if (authenticatedUser) {
17-
navigate(`/cody/manage${search || ''}`)
19+
navigate(`${CodyProRoutes.Manage}${search || ''}`)
1820
} else {
1921
window.location.href = '/cody'
2022
}

0 commit comments

Comments
 (0)