53 lines
1.3 KiB
TypeScript
53 lines
1.3 KiB
TypeScript
|
import query from './query.graphql'
|
||
|
import ProductSubnav from 'components/subnav'
|
||
|
import Footer from 'components/footer'
|
||
|
import { open } from '@hashicorp/react-consent-manager'
|
||
|
|
||
|
export default function StandardLayout(props: Props): React.ReactElement {
|
||
|
const { useCaseNavItems } = props.data
|
||
|
|
||
|
return (
|
||
|
<>
|
||
|
<ProductSubnav
|
||
|
menuItems={[
|
||
|
{ text: 'Overview', url: '/' },
|
||
|
{
|
||
|
text: 'Use Cases',
|
||
|
submenu: useCaseNavItems
|
||
|
.sort((a, b) => a.text.localeCompare(b.text))
|
||
|
.map((item) => {
|
||
|
return {
|
||
|
text: item.text,
|
||
|
url: `/use-cases/${item.url}`,
|
||
|
}
|
||
|
}),
|
||
|
},
|
||
|
{
|
||
|
text: 'Enterprise',
|
||
|
url: 'https://www.hashicorp.com/products/vault/enterprise',
|
||
|
},
|
||
|
'divider',
|
||
|
{ text: 'Tutorials', url: 'https://learn.hashicorp.com/vault' },
|
||
|
{ text: 'Docs', url: '/docs' },
|
||
|
{ text: 'API', url: '/api-docs' },
|
||
|
{ text: 'Community', url: '/community' },
|
||
|
]}
|
||
|
/>
|
||
|
{props.children}
|
||
|
<Footer openConsentManager={open} />
|
||
|
</>
|
||
|
)
|
||
|
}
|
||
|
|
||
|
StandardLayout.rivetParams = {
|
||
|
query,
|
||
|
dependencies: [],
|
||
|
}
|
||
|
|
||
|
interface Props {
|
||
|
children: React.ReactChildren
|
||
|
data: {
|
||
|
useCaseNavItems: Array<{ url: string; text: string }>
|
||
|
}
|
||
|
}
|