Files
web/apps/scandic-web/components/Current/Aside/Puff/index.tsx
Anton Gunnarsson a2213d0169 Merged in feat/sw-3228-move-image-to-design-system (pull request #2616)
feat(SW-3228): Move Image to design-system

* Move Image to design-system

* Merge branch 'master' into feat/sw-3228-move-image-to-design-system


Approved-by: Linus Flood
2025-08-12 12:58:05 +00:00

85 lines
2.5 KiB
TypeScript

"use client"
import { useRouter } from "next/navigation"
import Image from "@scandic-hotels/design-system/Image"
import { OldDSButton as Button } from "@scandic-hotels/design-system/OldDSButton"
import { renderOptions as currentRenderOptions } from "@/components/Current/currentRenderOptions"
import DeprecatedJsonToHtml from "@/components/DeprecatedJsonToHtml"
import { renderOptions } from "./renderOptions"
import styles from "./puff.module.css"
import type { PuffProps } from "@/types/components/current/asides/puff"
import { PuffStyleEnum } from "@/types/requests/puff"
export default function Puff({
imageConnection,
link,
text,
puff_style,
title,
}: PuffProps) {
const router = useRouter()
switch (puff_style) {
case PuffStyleEnum.button:
function onClick() {
router.push(link.href)
}
return (
<article>
{imageConnection.edges.map((image) => (
<Image
alt={image.node.title}
className={styles.image}
height={image.node.dimension.height}
key={image.node.system.uid}
src={image.node.url}
width={image.node.dimension.width}
/>
))}
<section className={styles.content}>
<DeprecatedJsonToHtml
embeds={[]}
nodes={text.json.children}
renderOptions={{ ...currentRenderOptions, ...renderOptions }}
/>
<div>
<Button onPress={onClick}>{link.title || title}</Button>
</div>
</section>
</article>
)
case PuffStyleEnum.default:
return (
<a className={styles.link} href={link.href}>
<article>
{imageConnection.edges.map((image) => (
<Image
alt={image.node.title}
className={styles.image}
height={image.node.dimension.height}
key={image.node.system.uid}
src={image.node.url}
width={image.node.dimension.width}
/>
))}
<section className={styles.content}>
<header>
<h3 className={styles.heading}>{title}</h3>
</header>
<DeprecatedJsonToHtml
embeds={[]}
nodes={text.json.children}
renderOptions={{ ...currentRenderOptions, ...renderOptions }}
/>
</section>
</article>
</a>
)
}
}