+
+ )
+}
+
+export default function Index({ jobs }: { jobs: MinJobListingFragment[] }) {
+ return (
+ <>
+
+
+
+
+
+ At Plural, we believe that there is a better way to solve the
+ third major constraint—distributed systems operational cost—that
+ benefits OSS developers and DevOps teams alike.
+ >
+ }
+ ctas={
+
+ View open positions
+
+ }
+ pageName="Careers"
+ />
+
+
+
+
+
+
+
+
+ >
+ )
+}
+
+export const getStaticProps = async () => {
+ const { data: jobs, error: jobsError } = await getJobListings()
+
+ return propsWithGlobalSettings({
+ footerVariant: FooterVariant.kitchenSink,
+ jobs: jobs || [],
+ errors: [...(jobsError ? [jobsError] : [])],
+ })
+}
diff --git a/pages/community/[[...community-index]].tsx b/pages/community.tsx
similarity index 97%
rename from pages/community/[[...community-index]].tsx
rename to pages/community.tsx
index 0efb6948..90f5e472 100644
--- a/pages/community/[[...community-index]].tsx
+++ b/pages/community.tsx
@@ -32,12 +32,12 @@ import { getContributors } from '@src/data/getGithubData'
import { propsWithGlobalSettings } from '@src/utils/getGlobalProps'
import { indexPageStaticPaths } from '@src/utils/staticPaths'
-import { HeaderPad } from '../../src/components/layout/HeaderPad'
+import { HeaderPad } from '../src/components/layout/HeaderPad'
-const DUMMY_PATH_PARAM = 'community' as const
+const PAGE_PARAM_NAME = 'community' as const
export const getStaticPaths: GetStaticPaths = async () =>
- indexPageStaticPaths(DUMMY_PATH_PARAM)
+ indexPageStaticPaths(PAGE_PARAM_NAME)
export default function Community({
contributors,
diff --git a/pages/legal/[legal].tsx b/pages/legal/[legal].tsx
index cf1a9d1e..d9a4a904 100644
--- a/pages/legal/[legal].tsx
+++ b/pages/legal/[legal].tsx
@@ -5,15 +5,13 @@ import {
type InferGetStaticPropsType,
} from 'next'
-import { collectHeadings } from '@pluralsh/design-system/dist/markdoc'
import classNames from 'classnames'
import { FooterVariant } from '@src/components/FooterFull'
import { StandardPage } from '@src/components/layout/FullPage'
import { GradientBG } from '@src/components/layout/GradientBG'
import { TextLimiter } from '@src/components/layout/TextLimiter'
-import { MarkdocLegalPage } from '@src/components/MarkdocLegalPage'
-import { TableOfContents } from '@src/components/TableOfContents'
+import { MarkdocMarketingPage } from '@src/components/MarkdocMarketingPage'
import { ResponsiveText } from '@src/components/Typography'
import { getLegalPageData, getLegalPageSlugs } from '@src/data/getLegalPageData'
import { type MarkdownPageFragment } from '@src/generated/graphqlDirectus'
@@ -48,8 +46,6 @@ export default function Legal({
subtitle,
markdoc,
}: InferGetStaticPropsType) {
- const toc = markdoc?.content ? collectHeadings(markdoc?.content as any) : null
-
return (
<>
{markdoc && (
-
-
- {toc && (
-
-
-
- )}
-
+
)}
diff --git a/pages/pricing/[[...pricing-index]].tsx b/pages/pricing.tsx
similarity index 94%
rename from pages/pricing/[[...pricing-index]].tsx
rename to pages/pricing.tsx
index c4c27385..a472bf41 100644
--- a/pages/pricing/[[...pricing-index]].tsx
+++ b/pages/pricing.tsx
@@ -1,11 +1,7 @@
import { type ComponentProps, useId } from 'react'
import { Button, Chip, ColorModeProvider } from '@pluralsh/design-system'
-import {
- type GetStaticPaths,
- type GetStaticProps,
- type InferGetStaticPropsType,
-} from 'next'
+import { type GetStaticProps, type InferGetStaticPropsType } from 'next'
import Link from 'next/link'
import classNames from 'classnames'
@@ -21,14 +17,8 @@ import { ScrollToLink } from '@src/components/ScrollToLink'
import { ResponsiveText } from '@src/components/Typography'
import getPricing, { type Plan, type Pricing } from '@src/data/getPricing'
import { propsWithGlobalSettings } from '@src/utils/getGlobalProps'
-import { indexPageStaticPaths } from '@src/utils/staticPaths'
-import { PlansFeaturesTable as PlanFeaturesTable } from '../../src/components/page-sections/PlansFeaturesTables'
-
-const DUMMY_PATH_PARAM = 'pricing'
-
-export const getStaticPaths: GetStaticPaths = async () =>
- indexPageStaticPaths(DUMMY_PATH_PARAM)
+import { PlansFeaturesTable as PlanFeaturesTable } from '../src/components/page-sections/PlansFeaturesTables'
const PlanCardSC = styled.div(({ theme }) => ({
'&, .titleArea, .content, .featureList': {
diff --git a/src/components/MarkdocLegalPage.tsx b/src/components/MarkdocMarketingPage.tsx
similarity index 56%
rename from src/components/MarkdocLegalPage.tsx
rename to src/components/MarkdocMarketingPage.tsx
index 141281d6..8a0421e7 100644
--- a/src/components/MarkdocLegalPage.tsx
+++ b/src/components/MarkdocMarketingPage.tsx
@@ -1,5 +1,6 @@
-import React, { type ComponentProps } from 'react'
+import React, { type ComponentProps, type ReactNode } from 'react'
+import { collectHeadings } from '@pluralsh/design-system/dist/markdoc'
import {
Heading,
List,
@@ -10,6 +11,7 @@ import styled from 'styled-components'
import { TextLimiter } from './layout/TextLimiter'
import MarkdocComponent from './MarkdocContent'
+import { TableOfContents } from './TableOfContent'
const HeadingSC = styled(Heading)(({ theme, level }) => {
let styles = {}
@@ -68,23 +70,54 @@ const ListItemSC = styled(ListItem)(({ theme }) => ({
const ListSC = styled(List)((_) => ({}))
-const legalPageComponents = {
+const HrSC = styled.hr(({ theme }) => ({
+ border: 'none',
+ borderTop: theme.borders.default,
+ width: '66.66%',
+ minWidth: `min(320px, 100% - ${theme.spacing.large * 2}px)`,
+ maxWidth: '800px',
+ marginRight: 'auto',
+ marginLeft: 'auto',
+ marginTop: theme.spacing.xxxlarge,
+ marginBottom: theme.spacing.xxxlarge,
+}))
+
+const pageComponents = {
Heading: HeadingSC,
Paragraph: ParagraphSC,
Item: ListItemSC,
List: ListSC,
+ Hr: HrSC,
}
-export function MarkdocLegalPage({
+export function MarkdocMarketingPage({
components,
+ preContent,
+ postContent,
...props
-}: ComponentProps) {
+}: ComponentProps & {
+ preContent?: ReactNode
+ postContent?: ReactNode
+}) {
+ const toc = props.markdoc?.content
+ ? collectHeadings(props.markdoc?.content as any)
+ : null
+
return (
-
-
-
+