diff options
| author | Armand Philippot <git@armandphilippot.com> | 2023-11-22 19:07:25 +0100 |
|---|---|---|
| committer | Armand Philippot <git@armandphilippot.com> | 2023-11-23 11:44:28 +0100 |
| commit | 4f1181581e177dd80a76165a0f930ef4577f9c6a (patch) | |
| tree | 6029f86d42af7700f5b59cd1477854190bab65c6 /src/components/templates/sectioned/sectioned-layout.tsx | |
| parent | 329e7c89bac50be9db2c6d2ec6751ab0ffad42ac (diff) | |
refactor(components): integrate sectioned page template into Page
* replace Section component by a generic one (other components should
be able to use it)
* add a PageSection component
* add `hasSections` prop to Page component
* remove sectioned-page template
Diffstat (limited to 'src/components/templates/sectioned/sectioned-layout.tsx')
| -rw-r--r-- | src/components/templates/sectioned/sectioned-layout.tsx | 51 |
1 files changed, 0 insertions, 51 deletions
diff --git a/src/components/templates/sectioned/sectioned-layout.tsx b/src/components/templates/sectioned/sectioned-layout.tsx deleted file mode 100644 index 6d58e83..0000000 --- a/src/components/templates/sectioned/sectioned-layout.tsx +++ /dev/null @@ -1,51 +0,0 @@ -import Script from 'next/script'; -import type { FC } from 'react'; -import type { BreadcrumbList } from 'schema-dts'; -import { Section, type SectionProps, type SectionVariant } from '../../atoms'; - -export type PageSection = Required<Pick<SectionProps, 'children' | 'id'>>; - -export type SectionedLayoutProps = { - /** - * The breadcrumb JSON schema. - */ - breadcrumbSchema: BreadcrumbList['itemListElement'][]; - /** - * An array of objects describing each section. - */ - sections: PageSection[]; -}; - -/** - * SectionedLayout component - * - * Render a sectioned layout. - */ -export const SectionedLayout: FC<SectionedLayoutProps> = ({ - breadcrumbSchema, - sections, -}) => { - const getSections = (items: PageSection[]) => - items.map((section, index) => { - const variant: SectionVariant = index % 2 ? 'light' : 'dark'; - const isLastSection = index === items.length - 1; - - return ( - <Section hasBorder={!isLastSection} key={section.id} variant={variant}> - {section.children} - </Section> - ); - }); - - return ( - <> - <Script - dangerouslySetInnerHTML={{ __html: JSON.stringify(breadcrumbSchema) }} - // eslint-disable-next-line react/jsx-no-literals -- Id allowed. - id="schema-breadcrumb" - type="application/ld+json" - /> - {getSections(sections)} - </> - ); -}; |
