Files
web/apps/scandic-web/components/TempDesignSystem/TeaserCard/Sidepeek/index.tsx
Anton Gunnarsson 00b124d15a Merged in feat/sw-3226-move-buttonlink-to-design-system (pull request #2613)
feat(SW-3226): Move ButtonLink to design-system

* Move ButtonLink to design-system

* Fix Button import


Approved-by: Linus Flood
2025-08-11 10:53:00 +00:00

82 lines
2.5 KiB
TypeScript

"use client"
import { useState } from "react"
import { useIntl } from "react-intl"
import { Button } from "@scandic-hotels/design-system/Button"
import ButtonLink from "@scandic-hotels/design-system/ButtonLink"
import { MaterialIcon } from "@scandic-hotels/design-system/Icons/MaterialIcon"
import SidePeek from "@scandic-hotels/design-system/SidePeek"
import JsonToHtml from "@/components/JsonToHtml"
import styles from "./sidepeek.module.css"
import type { TeaserCardSidepeekProps } from "@/types/components/teaserCard"
export default function TeaserCardSidepeek({
button,
sidePeekContent,
}: TeaserCardSidepeekProps) {
const intl = useIntl()
const [sidePeekIsOpen, setSidePeekIsOpen] = useState(false)
const { heading, content, primary_button, secondary_button } = sidePeekContent
return (
<div className={styles.teaserCardSidepeek}>
<Button
onPress={() => setSidePeekIsOpen(true)}
variant="Secondary"
color="Primary"
size="Small"
typography="Body/Supporting text (caption)/smBold"
>
{button.call_to_action_text}
<MaterialIcon icon="chevron_right" size={20} color="CurrentColor" />
</Button>
<SidePeek
title={heading}
isOpen={sidePeekIsOpen}
handleClose={() => setSidePeekIsOpen(false)}
openInRoot
closeLabel={intl.formatMessage({
defaultMessage: "Close",
})}
>
{content ? (
<JsonToHtml
nodes={content.json.children}
embeds={content.embedded_itemsConnection.edges}
/>
) : null}
<div className={styles.ctaContainer}>
{primary_button && (
<ButtonLink
variant="Primary"
color="Primary"
size="Small"
typography="Body/Supporting text (caption)/smBold"
href={primary_button.href}
target={primary_button.openInNewTab ? "_blank" : undefined}
>
{primary_button.title}
</ButtonLink>
)}
{secondary_button && (
<ButtonLink
variant="Secondary"
color="Primary"
size="Small"
typography="Body/Supporting text (caption)/smBold"
href={secondary_button.href}
target={secondary_button.openInNewTab ? "_blank" : undefined}
>
{secondary_button.title}
</ButtonLink>
)}
</div>
</SidePeek>
</div>
)
}