aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/components/Page.tsx
blob: 4dd12486f89a4d102c1423011b8969e2097b27fb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import type { ReactNode } from 'react'
import { Layout, LayoutContent } from '@astryxdesign/core/Layout'
import { Heading } from '@astryxdesign/core/Heading'
import { Text } from '@astryxdesign/core/Text'
import { VStack } from '@astryxdesign/core/VStack'

export function Page({ children }: { children: ReactNode }) {
  return (
    <Layout
      height="auto"
      padding={6}
      contentWidth={1120}
      content={<LayoutContent>{children}</LayoutContent>}
    />
  )
}

interface PageHeaderProps {
  eyebrow?: string
  title: string
  description?: string
}

export function PageHeader({ eyebrow, title, description }: PageHeaderProps) {
  return (
    <VStack gap={2} maxWidth={820}>
      {eyebrow ? (
        <Text type="label" color="accent">
          {eyebrow}
        </Text>
      ) : null}
      <Heading level={1} type="display-3" textWrap="balance">
        {title}
      </Heading>
      {description ? (
        <Text type="large" color="secondary" as="p" textWrap="pretty">
          {description}
        </Text>
      ) : null}
    </VStack>
  )
}