-
-
![]()
+
diff --git a/apps/portal/src/components/offers/landing/images/offers-analysis.png b/apps/portal/src/components/offers/landing/images/offers-analysis.png
new file mode 100644
index 00000000..896c23f7
Binary files /dev/null and b/apps/portal/src/components/offers/landing/images/offers-analysis.png differ
diff --git a/apps/portal/src/components/offers/landing/images/offers-browse.png b/apps/portal/src/components/offers/landing/images/offers-browse.png
new file mode 100644
index 00000000..09968721
Binary files /dev/null and b/apps/portal/src/components/offers/landing/images/offers-browse.png differ
diff --git a/apps/portal/src/components/offers/landing/images/offers-profile.png b/apps/portal/src/components/offers/landing/images/offers-profile.png
new file mode 100644
index 00000000..e47af859
Binary files /dev/null and b/apps/portal/src/components/offers/landing/images/offers-profile.png differ
diff --git a/apps/portal/src/components/offers/types.ts b/apps/portal/src/components/offers/types.ts
index c09b8da2..59704f33 100644
--- a/apps/portal/src/components/offers/types.ts
+++ b/apps/portal/src/components/offers/types.ts
@@ -2,7 +2,7 @@ import type { JobType } from '@prisma/client';
import type { MonthYear } from '~/components/shared/MonthYearPicker';
-export const HOME_URL = '/offers/browse';
+export const HOME_URL = '/offers';
/*
* Offer Profile
diff --git a/apps/portal/src/pages/offers/browse.tsx b/apps/portal/src/pages/offers/browse.tsx
deleted file mode 100644
index dbfe6323..00000000
--- a/apps/portal/src/pages/offers/browse.tsx
+++ /dev/null
@@ -1,59 +0,0 @@
-import Link from 'next/link';
-import { useState } from 'react';
-import { Banner } from '@tih/ui';
-
-import OffersTable from '~/components/offers/table/OffersTable';
-import CompaniesTypeahead from '~/components/shared/CompaniesTypeahead';
-import JobTitlesTypeahead from '~/components/shared/JobTitlesTypahead';
-
-export default function OffersHomePage() {
- const [jobTitleFilter, setjobTitleFilter] = useState('software-engineer');
- const [companyFilter, setCompanyFilter] = useState('');
-
- return (
-
-
- ⭐ Check if your offer is competitive by submitting it{' '}
-
- here
-
- . ⭐
-
-
-
-
-
- Tech Offers Repo
-
-
-
- Find out how good your offer is. Discover how others got their
- offers.
-
-
-
-
Viewing offers for
-
- setjobTitleFilter(value)}
- />
- in
- setCompanyFilter(value)}
- />
-
-
-
-
-
-
-
- );
-}
diff --git a/apps/portal/src/pages/offers/features.tsx b/apps/portal/src/pages/offers/features.tsx
new file mode 100644
index 00000000..be5f06ac
--- /dev/null
+++ b/apps/portal/src/pages/offers/features.tsx
@@ -0,0 +1,246 @@
+import type { SVGProps } from 'react';
+import {
+ BookmarkSquareIcon,
+ ChartBarSquareIcon,
+ InformationCircleIcon,
+ ShareIcon,
+ TableCellsIcon,
+ UsersIcon,
+} from '@heroicons/react/24/outline';
+
+import offersAnalysis from '~/components/offers/landing/images/offers-analysis.png';
+import offersBrowse from '~/components/offers/landing/images/offers-browse.png';
+import offersProfile from '~/components/offers/landing/images/offers-profile.png';
+import LeftTextCard from '~/components/offers/landing/LeftTextCard';
+import RightTextCard from '~/components/offers/landing/RightTextCard';
+import { HOME_URL } from '~/components/offers/types';
+
+const features = [
+ {
+ description:
+ 'Profile names are randomly generated to keep your offers strictly anonymous.',
+ icon: UsersIcon,
+ name: 'Anonymized Profile Name',
+ },
+ {
+ description:
+ 'Only users with the edit link can edit that profile. Share profiles to others using a public link without giving edit permission.',
+ icon: ShareIcon,
+ name: 'Edit Link v.s. Public Link',
+ },
+ {
+ description:
+ "Offer profiles will not be automatically saved under creators' account in our database unless explicit permission is given.",
+ icon: BookmarkSquareIcon,
+ name: 'Save with Permission',
+ },
+];
+
+const footerNavigation = {
+ social: [
+ {
+ href: '#',
+ icon: (props: JSX.IntrinsicAttributes & SVGProps
) => (
+
+ ),
+ name: 'Facebook',
+ },
+ {
+ href: '#',
+ icon: (props: JSX.IntrinsicAttributes & SVGProps) => (
+
+ ),
+ name: 'Instagram',
+ },
+ {
+ href: 'https://github.com/yangshun/tech-interview-handbook',
+ icon: (props: JSX.IntrinsicAttributes & SVGProps) => (
+
+ ),
+ name: 'GitHub',
+ },
+ ],
+};
+
+export default function LandingPage() {
+ return (
+
+
+ {/* Hero section */}
+
+
+
+ Choosing offers
+
+ made easier
+
+
+
+ Analyze your offers using profiles from fellow software engineers.
+
+
+
+
+
+ {/* Alternating Feature Sections */}
+
+
+
+
+ }
+ imageAlt="Offer table page"
+ imageSrc={offersProfile}
+ title="Choosing an offer needs context"
+ />
+
+
+
+ }
+ imageAlt="Customer profile user interface"
+ imageSrc={offersAnalysis}
+ title="Better understand your offers"
+ />
+
+
+
+ }
+ imageAlt="Offer table page"
+ imageSrc={offersBrowse}
+ title="Stay informed of recent offers"
+ />
+
+
+
+ {/* Gradient Feature Section */}
+
+
+
+ Your privacy is our priority.
+
+
+ All offer profiles are anonymized and we do not store information
+ about your personal identity.
+
+
+ {features.map((feature) => (
+
+
+
+
+
+
+
+
+ {feature.name}
+
+
+ {feature.description}
+
+
+
+ ))}
+
+
+
+
+ {/* CTA Section */}
+
+
+
+ Ready to get started?
+
+ Create your own offer profile today.
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/apps/portal/src/pages/offers/index.tsx b/apps/portal/src/pages/offers/index.tsx
index 75471156..dbfe6323 100644
--- a/apps/portal/src/pages/offers/index.tsx
+++ b/apps/portal/src/pages/offers/index.tsx
@@ -1,244 +1,59 @@
-import type { SVGProps } from 'react';
-import {
- BookmarkSquareIcon,
- ChartBarSquareIcon,
- InformationCircleIcon,
- ShareIcon,
- TableCellsIcon,
- UsersIcon,
-} from '@heroicons/react/24/outline';
+import Link from 'next/link';
+import { useState } from 'react';
+import { Banner } from '@tih/ui';
-import LeftTextCard from '~/components/offers/landing/LeftTextCard';
-import RightTextCard from '~/components/offers/landing/RightTextCard';
-import { HOME_URL } from '~/components/offers/types';
+import OffersTable from '~/components/offers/table/OffersTable';
+import CompaniesTypeahead from '~/components/shared/CompaniesTypeahead';
+import JobTitlesTypeahead from '~/components/shared/JobTitlesTypahead';
-const features = [
- {
- description:
- 'Profile names are randomly generated to keep your offers strictly anonymous.',
- icon: UsersIcon,
- name: 'Anonymized Profile Name',
- },
- {
- description:
- 'Only users with the edit link can edit that profile. Share profiles to others using a public link without giving edit permission.',
- icon: ShareIcon,
- name: 'Edit Link v.s. Public Link',
- },
- {
- description:
- "Offer profiles will not be automatically saved under creators' account in our database unless explicit permission is given.",
- icon: BookmarkSquareIcon,
- name: 'Save with Permission',
- },
-];
+export default function OffersHomePage() {
+ const [jobTitleFilter, setjobTitleFilter] = useState('software-engineer');
+ const [companyFilter, setCompanyFilter] = useState('');
-const footerNavigation = {
- social: [
- {
- href: '#',
- icon: (props: JSX.IntrinsicAttributes & SVGProps) => (
-
- ),
- name: 'Facebook',
- },
- {
- href: '#',
- icon: (props: JSX.IntrinsicAttributes & SVGProps) => (
-
- ),
- name: 'Instagram',
- },
- {
- href: 'https://github.com/yangshun/tech-interview-handbook',
- icon: (props: JSX.IntrinsicAttributes & SVGProps) => (
-
- ),
- name: 'GitHub',
- },
- ],
-};
-
-export default function LandingPage() {
return (
-
-
- {/* Hero section */}
-
-
-
- Choosing offers
-
- made easier
-
+
+
+ ⭐ Check if your offer is competitive by submitting it{' '}
+
+ here
+
+ . ⭐
+
+
+
+
+
+ Tech Offers Repo
-
- Analyze your offers using profiles from fellow software engineers.
-
-
-
-
- {/* Alternating Feature Sections */}
-
-
-
-
- }
- imageAlt="Offer table page"
- imageSrc="https://tailwindui.com/img/component-images/inbox-app-screenshot-1.jpg"
- title="Choosing an offer needs context"
- />
+
+ Find out how good your offer is. Discover how others got their
+ offers.
-
-
- }
- imageAlt="Customer profile user interface"
- imageSrc="https://tailwindui.com/img/component-images/inbox-app-screenshot-2.jpg"
- title="Better understand your offers"
+
+
+
Viewing offers for
+
+ setjobTitleFilter(value)}
/>
-
-
-
- }
- imageAlt="Offer table page"
- imageSrc="https://tailwindui.com/img/component-images/inbox-app-screenshot-1.jpg"
- title="Stay informed of recent offers"
+ in
+ setCompanyFilter(value)}
/>
-
- {/* Gradient Feature Section */}
-
-
-
- Your privacy is our priority.
-
-
- All offer profiles are anonymized and we do not store information
- about your personal identity.
-
-
- {features.map((feature) => (
-
-
-
-
-
-
-
-
- {feature.name}
-
-
- {feature.description}
-
-
-
- ))}
-
-
-
-
- {/* CTA Section */}
-
-
-
- Ready to get started?
-
- Create your own offer profile today.
-
-
-
-
-
-
-
-
-
+
+
+
+
+
);
}