Skip to content

Commit 243ef84

Browse files
authored
feat: new job hub pages (#5091)
1 parent 03f1322 commit 243ef84

40 files changed

+840
-447
lines changed

packages/shared/src/components/RecruiterLayout.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ export const RecruiterLayout = ({
5252
params.append(key, value as string);
5353
});
5454

55-
params.delete('id'); // remove opportunity id param
55+
params.delete('id'); // remove jobs id param
5656

5757
router.push(`${onboardingUrl}?${params.toString()}`);
5858
}, [shouldRedirectOnboarding, router]);

packages/shared/src/components/fields/DragDrop.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -152,8 +152,8 @@ export function DragDrop({
152152
renderCta,
153153
isCopyBold,
154154
dragDropDescription = 'Drag & Drop your CV or',
155-
ctaLabelDesktop = 'Upload PDF',
156-
ctaLabelMobile = 'Upload PDF',
155+
ctaLabelDesktop = 'Upload CV',
156+
ctaLabelMobile = 'Upload CV',
157157
uploadIcon,
158158
showRemove,
159159
fullClick = false,

packages/shared/src/components/opportunity/NewOpportunityPopover.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ export const NewOpportunityPopover = (): ReactElement => {
3434
>
3535
Your next big move is here!
3636
</Typography>
37-
<Link href={`${webappUrl}opportunity/${alerts.opportunityId}`} passHref>
37+
<Link href={`${webappUrl}jobs/${alerts.opportunityId}`} passHref>
3838
<Button
3939
size={ButtonSize.XSmall}
4040
onClick={logOpportunityNudgeClick}
@@ -52,7 +52,7 @@ export const NewOpportunityPopover = (): ReactElement => {
5252
Hey {user.name}, We&#39;ve found a new opportunity that aligns with
5353
your experience and what you’ve been exploring lately.
5454
</Typography>
55-
<Link href={`${webappUrl}opportunity/${alerts.opportunityId}`} passHref>
55+
<Link href={`${webappUrl}jobs/${alerts.opportunityId}`} passHref>
5656
<Button
5757
tag="a"
5858
variant={ButtonVariant.Primary}

packages/shared/src/components/opportunity/OpportunityEntryButton.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ export const OpportunityEntryButton = () => {
5656
<RenderTooltip content="Jobs" placement="bottom-end">
5757
<div>
5858
<Link
59-
href={`${webappUrl}opportunity/${
60-
hasOpportunityAlert ? alerts.opportunityId : 'welcome'
59+
href={`${webappUrl}jobs/${
60+
hasOpportunityAlert ? alerts.opportunityId : ''
6161
}`}
6262
passHref
6363
>
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import type { ReactElement } from 'react';
2+
import React from 'react';
3+
import useSidebarRendered from '../../hooks/useSidebarRendered';
4+
import { Typography, TypographyType } from '../typography/Typography';
5+
import { Button, ButtonSize, ButtonVariant } from '../buttons/Button';
6+
import Link from '../utilities/Link';
7+
import { settingsUrl, webappUrl } from '../../lib/constants';
8+
import { FilterIcon } from '../icons';
9+
10+
const jobPreferenceUrl = `${settingsUrl}job-preferences`;
11+
const howItWorksUrl = `${webappUrl}opportunity/how-it-works`;
12+
export const OpportunityHeader = (): ReactElement => {
13+
const { sidebarRendered } = useSidebarRendered();
14+
15+
if (sidebarRendered) {
16+
return <></>;
17+
}
18+
19+
return (
20+
<div className="flex items-center justify-between border-b border-border-subtlest-tertiary px-5 py-3">
21+
<Typography type={TypographyType.Title3} bold>
22+
Jobs
23+
</Typography>
24+
<div className="flex gap-2">
25+
<Link href={howItWorksUrl}>
26+
<Button
27+
tag="a"
28+
variant={ButtonVariant.Subtle}
29+
size={ButtonSize.Small}
30+
>
31+
How it works
32+
</Button>
33+
</Link>
34+
<Link href={jobPreferenceUrl}>
35+
<Button
36+
tag="a"
37+
variant={ButtonVariant.Subtle}
38+
size={ButtonSize.Small}
39+
icon={<FilterIcon />}
40+
/>
41+
</Link>
42+
</div>
43+
</div>
44+
);
45+
};

packages/shared/src/components/opportunity/OpportunitySteps/OpportunityStepsInfo.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ export const OpportunityStepsInfo = (
3535
);
3636

3737
const goToNextStep = () => {
38-
router.push(`${webappUrl}opportunity/${opportunityId}/questions-setup`);
38+
router.push(`${webappUrl}jobs/${opportunityId}/questions-setup`);
3939
};
4040

4141
const {

packages/shared/src/components/opportunity/OpportunitySteps/OpportunityStepsQuestions.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ export const OpportunityStepsQuestions = (
3939
const { displayToast } = useToastNotification();
4040

4141
const goToNextStep = () => {
42-
router.push(`${webappUrl}opportunity/${opportunityId}/approved`);
42+
router.push(`${webappUrl}jobs/${opportunityId}/approved`);
4343
};
4444

4545
const {

packages/shared/src/components/sidebar/SidebarTablet.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,8 +134,8 @@ export const SidebarTablet = ({
134134
>
135135
<div className="relative">
136136
<Link
137-
href={`${webappUrl}opportunity/${
138-
hasOpportunityAlert ? alerts.opportunityId : 'welcome'
137+
href={`${webappUrl}jobs/${
138+
hasOpportunityAlert ? alerts.opportunityId : ''
139139
}`}
140140
prefetch={false}
141141
passHref
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
import type { ReactElement } from 'react';
2+
import React from 'react';
3+
import { FlexCol, FlexRow } from '../../../components/utilities';
4+
import { DailyIcon } from '../../../components/icons';
5+
import {
6+
Typography,
7+
TypographyColor,
8+
TypographyType,
9+
} from '../../../components/typography/Typography';
10+
import { briefButtonBg } from '../../../styles/custom';
11+
12+
export const IntroHeader = (): ReactElement => {
13+
return (
14+
<FlexCol className="items-center gap-2">
15+
<FlexRow className="items-center gap-1">
16+
<DailyIcon />{' '}
17+
<Typography
18+
center
19+
type={TypographyType.Callout}
20+
color={TypographyColor.Secondary}
21+
>
22+
Career mode unlocked (beta)
23+
</Typography>
24+
</FlexRow>
25+
<Typography
26+
center
27+
type={TypographyType.LargeTitle}
28+
bold
29+
style={{
30+
background: briefButtonBg,
31+
}}
32+
className="!bg-clip-text text-transparent"
33+
>
34+
Welcome to a new hiring experience that respects your time, privacy, and
35+
intelligence
36+
</Typography>
37+
</FlexCol>
38+
);
39+
};
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import React from 'react';
2+
import type { ReactElement } from 'react';
3+
import {
4+
Typography,
5+
TypographyColor,
6+
TypographyType,
7+
} from '../../../components/typography/Typography';
8+
import { opportunityBriefcaseDone } from '../../../lib/image';
9+
import { briefButtonBg } from '../../../styles/custom';
10+
import { TargetId } from '../../../lib/log';
11+
import { CandidatePreferenceButton } from './CandidatePreferenceButton';
12+
13+
export const OpportunityAllSet = (): ReactElement => {
14+
return (
15+
<div className="flex flex-col gap-6 rounded-16 border-border-subtlest-secondary px-4 py-6 laptop:border">
16+
<div className="flex flex-col flex-wrap items-center gap-4 laptop:flex-row-reverse">
17+
<img
18+
src={opportunityBriefcaseDone}
19+
className="max-w-36"
20+
alt="daily.dev jobs"
21+
/>
22+
<div className="flex flex-1 flex-wrap justify-center gap-2 text-center laptop:justify-start laptop:text-left">
23+
<Typography
24+
center
25+
type={TypographyType.Title1}
26+
bold
27+
style={{
28+
background: briefButtonBg,
29+
}}
30+
className="!bg-clip-text text-transparent"
31+
>
32+
You are all set!
33+
</Typography>
34+
<Typography
35+
type={TypographyType.Callout}
36+
color={TypographyColor.Primary}
37+
className="flex-shrink"
38+
>
39+
We’ll surface the most relevant opportunities right here as they
40+
become available, so you won’t miss anything important.
41+
</Typography>
42+
</div>
43+
</div>
44+
<CandidatePreferenceButton
45+
label="Update job preferences"
46+
targetId={TargetId.OpportunityWelcomePage}
47+
className="w-full"
48+
/>
49+
</div>
50+
);
51+
};

0 commit comments

Comments
 (0)