feat(SW-2863): Move contentstack router to trpc package * Add exports to packages and lint rule to prevent relative imports * Add env to trpc package * Add eslint to trpc package * Apply lint rules * Use direct imports from trpc package * Add lint-staged config to trpc * Move lang enum to common * Restructure trpc package folder structure * WIP first step * update internal imports in trpc * Fix most errors in scandic-web Just 100 left... * Move Props type out of trpc * Fix CategorizedFilters types * Move more schemas in hotel router * Fix deps * fix getNonContentstackUrls * Fix import error * Fix entry error handling * Fix generateMetadata metrics * Fix alertType enum * Fix duplicated types * lint:fix * Merge branch 'master' into feat/sw-2863-move-contentstack-router-to-trpc-package * Fix broken imports * Merge branch 'master' into feat/sw-2863-move-contentstack-router-to-trpc-package Approved-by: Linus Flood
54 lines
1.6 KiB
TypeScript
54 lines
1.6 KiB
TypeScript
import { cx } from "class-variance-authority"
|
|
|
|
import { Typography } from "@scandic-hotels/design-system/Typography"
|
|
|
|
import IconByCSSelect from "@/components/Icons/IconByCSSelect"
|
|
|
|
import styles from "./essentials.module.css"
|
|
|
|
import type { EssentialsBlock } from "@scandic-hotels/trpc/types/campaignPage"
|
|
|
|
interface EssentialsProps {
|
|
content: EssentialsBlock
|
|
}
|
|
|
|
export default async function Essentials({ content }: EssentialsProps) {
|
|
const { title, preamble, items } = content
|
|
|
|
return (
|
|
<section className={styles.essentialsSection}>
|
|
<header className={styles.header}>
|
|
<Typography variant="Title/smRegular">
|
|
<h3 className={styles.heading}>{title}</h3>
|
|
</Typography>
|
|
{preamble ? (
|
|
<Typography variant="Body/Paragraph/mdRegular">
|
|
<p>{preamble}</p>
|
|
</Typography>
|
|
) : null}
|
|
</header>
|
|
<ul className={cx(styles.list, styles[`count${items.length}`])}>
|
|
{items.map((item) => (
|
|
<li
|
|
key={`${item.label}-${item.icon_identifier}`}
|
|
className={styles.listItem}
|
|
>
|
|
<IconByCSSelect identifier={item.icon_identifier} size={42} />
|
|
|
|
<div className={styles.text}>
|
|
<Typography variant="Title/Overline/sm">
|
|
<span>{item.label}</span>
|
|
</Typography>
|
|
{item.description ? (
|
|
<Typography variant="Body/Supporting text (caption)/smRegular">
|
|
<span>{item.description}</span>
|
|
</Typography>
|
|
) : null}
|
|
</div>
|
|
</li>
|
|
))}
|
|
</ul>
|
|
</section>
|
|
)
|
|
}
|