Refactor and built a breadcrums skeleton

This commit is contained in:
Linus Flood
2024-10-25 11:48:20 +02:00
parent 1a921940e8
commit 9f813bebfe
4 changed files with 88 additions and 53 deletions

View File

@@ -1,6 +1,7 @@
import { Suspense } from "react" import { Suspense } from "react"
import Breadcrumbs from "@/components/Breadcrumbs" import Breadcrumbs from "@/components/Breadcrumbs"
import BreadcrumbsSkeleton from "@/components/Breadcrumbs/BreadcrumbsSkeleton"
import { setLang } from "@/i18n/serverContext" import { setLang } from "@/i18n/serverContext"
import { LangParams, PageArgs } from "@/types/params" import { LangParams, PageArgs } from "@/types/params"
@@ -9,7 +10,7 @@ export default function AllBreadcrumbs({ params }: PageArgs<LangParams>) {
setLang(params.lang) setLang(params.lang)
return ( return (
<Suspense> <Suspense fallback={<BreadcrumbsSkeleton />}>
<Breadcrumbs /> <Breadcrumbs />
</Suspense> </Suspense>
) )

View File

@@ -1,6 +1,7 @@
import { Suspense } from "react" import { Suspense } from "react"
import Breadcrumbs from "@/components/Breadcrumbs" import Breadcrumbs from "@/components/Breadcrumbs"
import BreadcrumbsSkeleton from "@/components/Breadcrumbs/BreadcrumbsSkeleton"
import { setLang } from "@/i18n/serverContext" import { setLang } from "@/i18n/serverContext"
import { LangParams, PageArgs } from "@/types/params" import { LangParams, PageArgs } from "@/types/params"
@@ -9,7 +10,7 @@ export default function PageBreadcrumbs({ params }: PageArgs<LangParams>) {
setLang(params.lang) setLang(params.lang)
return ( return (
<Suspense> <Suspense fallback={<BreadcrumbsSkeleton />}>
<Breadcrumbs /> <Breadcrumbs />
</Suspense> </Suspense>
) )

View File

@@ -27,7 +27,15 @@ export default function DynamicContent({
}: DynamicContentProps) { }: DynamicContentProps) {
return ( return (
<Suspense fallback={<LoadingSpinner />}> <Suspense fallback={<LoadingSpinner />}>
{(() => { {renderDynamicComponent(dynamic_content, firstItem)}
</Suspense>
)
}
function renderDynamicComponent(
dynamic_content: DynamicContentProps["dynamic_content"],
firstItem: DynamicContentProps["firstItem"]
) {
switch (dynamic_content.component) { switch (dynamic_content.component) {
case DynamicContentEnum.Blocks.components.current_benefits: case DynamicContentEnum.Blocks.components.current_benefits:
return <CurrentRewardsBlock {...dynamic_content} /> return <CurrentRewardsBlock {...dynamic_content} />
@@ -39,10 +47,7 @@ export default function DynamicContent({
) )
case DynamicContentEnum.Blocks.components.how_it_works: case DynamicContentEnum.Blocks.components.how_it_works:
return ( return (
<HowItWorks <HowItWorks dynamic_content={dynamic_content} firstItem={firstItem} />
dynamic_content={dynamic_content}
firstItem={firstItem}
/>
) )
case DynamicContentEnum.Blocks.components.loyalty_levels: case DynamicContentEnum.Blocks.components.loyalty_levels:
return ( return (
@@ -77,7 +82,4 @@ export default function DynamicContent({
default: default:
return null return null
} }
})()}
</Suspense>
)
} }

View File

@@ -0,0 +1,31 @@
import { ChevronRightIcon, HouseIcon } from "@/components/Icons"
import Link from "@/components/TempDesignSystem/Link"
import Footnote from "@/components/TempDesignSystem/Text/Footnote"
import styles from "./breadcrumbs.module.css"
export default function BreadcrumbsSkeleton() {
return (
<nav className={styles.breadcrumbs}>
<ul className={styles.list}>
<li className={styles.listItem}>
<Link
className={styles.homeLink}
color="peach80"
href={""}
variant="breadcrumb"
>
<HouseIcon color="peach80" />
</Link>
<ChevronRightIcon aria-hidden="true" color="peach80" />
</li>
<li className={styles.listItem}>
<Footnote color="burgundy" type="bold">
...
</Footnote>
</li>
</ul>
</nav>
)
}