Files
web/packages/design-system/lib/components/VideoPlayer/VideoWithCard/VideoWithCard.stories.tsx
Rasmus Langvad d0546926a9 Merged in fix/3697-prettier-configs (pull request #3396)
fix(SW-3691): Setup one prettier config for whole repo

* Setup prettierrc in root and remove other configs


Approved-by: Joakim Jäderberg
Approved-by: Linus Flood
2026-01-07 12:45:50 +00:00

234 lines
5.8 KiB
TypeScript

import type { Meta, StoryObj } from "@storybook/nextjs-vite"
import { Lang } from "@scandic-hotels/common/constants/language"
import { VideoWithCard } from "."
import { config } from "./variants"
const meta: Meta<typeof VideoWithCard> = {
title: "Core Components/Video/VideoWithCard",
component: VideoWithCard,
parameters: {
docs: {
description: {
component:
"A component to display a VideoPlayer and content inside a card connected to the video. The size and gaps are determined by the parent container.",
},
},
},
argTypes: {
variant: {
control: "select",
options: Object.keys(config.variants.variant),
table: {
defaultValue: {
summary: config.defaultVariants.variant,
},
type: {
summary: Object.keys(config.variants.variant).join(" | "),
},
},
description:
"The variant of the card, which determines its style of the text and what content is shown.",
},
style: {
control: "select",
options: Object.keys(config.variants.style),
table: {
defaultValue: {
summary: config.defaultVariants.style,
},
type: {
summary: Object.keys(config.variants.style).join(" | "),
},
},
description:
"This decides the background color and text color of the card.",
},
heading: {
table: {
type: { summary: "string" },
},
description: "The heading text. Only applicable for the text variant.",
},
text: {
table: {
type: { summary: "string" },
},
description: "The body text. Only applicable for the text variant.",
},
quote: {
table: {
type: { summary: "string" },
},
description: "The quote text. Only applicable for the quote variant.",
},
author: {
table: {
type: { summary: "string" },
},
description:
"The author of the quote. Only applicable for the quote variant.",
},
authorDescription: {
table: {
type: { summary: "string" },
},
description:
"The description of the author. Only applicable for the quote variant.",
},
video: {
control: false,
table: {
type: {
summary:
"{ sources: { src: string; type: string }[]; poster?: { src: string; dimensions?: { width: number; height: number } }; captions?: Caption[]; focalPoint?: FocalPoint}",
},
},
description:
"The video props including source URL, captions and focal point. Please note that not all props from the VideoPlayer component are supported in this wrapper component.",
},
},
}
export default meta
type Story = StoryObj<typeof VideoWithCard>
const videoProps = {
sources: [
{
src: "https://eu-assets.contentstack.com/v3/assets/bltfd73aa2de3a5c4e3/bltc3aa53ac9bf6798c/693ad4b65b0889d6348893f3/Test_video.mp4",
type: "video/mp4",
},
{
src: "https://eu-assets.contentstack.com/v3/assets/bltfd73aa2de3a5c4e3/blt029be07ddd444eea/693c251c09e17b33c93c1dd6/hero-banner-1920-vp9.webm",
type: "video/webm",
},
],
poster: {
src: "https://imagevault.scandichotels.com/publishedmedia/dtpv2wgm6jhix2pqpp88/Scandic_Downtown_Camper_restaurang_bar_The_Nest_lounge_eld.jpg",
},
captions: [
{
src: "./video/captions_en.vtt",
srcLang: Lang.en,
isDefault: false,
},
{
src: "./video/captions_sv.vtt",
srcLang: Lang.sv,
isDefault: false,
},
],
fullHeight: true,
}
const quoteCardProps = {
variant: "quote" as const,
quote: "Download our membership App for smoother & richer experience",
author: "Hans Christian Andersen",
authorDescription: "The famed Danish storyteller.",
video: videoProps,
}
const textCardProps = {
variant: "text" as const,
heading: "Download our membership App now",
text: "Hans Christian Andersen, the famed Danish storyteller, spent many years of his life in Nyhavn, drawing inspiration from its lively atmosphere and picturesque setting.",
video: videoProps,
}
const smallDecorator = (Story: React.FC) => (
<div
style={{
width: "792px",
paddingRight: "2rem",
}}
>
<Story />
</div>
)
const largeDecorator = (Story: React.FC) => (
<div
style={{
width: "1200px",
paddingRight: "2rem",
}}
>
<Story />
</div>
)
export const QuotePrimary1Small: Story = {
args: {
...quoteCardProps,
style: "primary-1",
},
decorators: [smallDecorator],
render: (args) => <VideoWithCard {...args} />,
}
export const QuotePrimary2Small: Story = {
args: {
...quoteCardProps,
style: "primary-2",
},
decorators: [smallDecorator],
render: (args) => <VideoWithCard {...args} />,
}
export const TextPrimary1Small: Story = {
args: {
...textCardProps,
style: "primary-1",
},
decorators: [smallDecorator],
render: (args) => <VideoWithCard {...args} />,
}
export const TextPrimary2Small: Story = {
args: {
...textCardProps,
style: "primary-2",
},
decorators: [smallDecorator],
render: (args) => <VideoWithCard {...args} />,
}
export const QuotePrimary1Large: Story = {
args: {
...quoteCardProps,
style: "primary-1",
},
decorators: [largeDecorator],
render: (args) => <VideoWithCard {...args} />,
}
export const QuotePrimary2Large: Story = {
args: {
...quoteCardProps,
style: "primary-2",
},
decorators: [largeDecorator],
render: (args) => <VideoWithCard {...args} />,
}
export const TextPrimary1Large: Story = {
args: {
...textCardProps,
style: "primary-1",
},
decorators: [largeDecorator],
render: (args) => <VideoWithCard {...args} />,
}
export const TextPrimary2Large: Story = {
args: {
...textCardProps,
style: "primary-2",
},
decorators: [largeDecorator],
render: (args) => <VideoWithCard {...args} />,
}