import type { Meta, StoryObj } from "@storybook/nextjs-vite" import { themes } from "../../../.storybook/preview" import { Breadcrumbs } from "./Breadcrumbs" import { BreadcrumbsSkeleton } from "./BreadcrumbsSkeleton" import { Breadcrumb } from "./types" import { config } from "./variants" const meta: Meta = { title: "Core Components/Breadcrumbs", component: Breadcrumbs, argTypes: { breadcrumbs: { table: { type: { summary: "Breadcrumb[]" }, }, }, color: { control: "select", options: Object.keys(config.variants.color), table: { defaultValue: { summary: config.defaultVariants.color }, type: { summary: Object.keys(config.variants.color).join(" | ") }, }, description: "Sets the background color of the breadcrumbs component.", }, size: { control: "select", options: Object.keys(config.variants.size), table: { defaultValue: { summary: config.defaultVariants.size }, type: { summary: Object.keys(config.variants.size).join(" | ") }, }, description: "Sets the maximum width of the breadcrumbs component. The breadcrumbs will be centered.", }, isThemed: { control: "select", options: Object.keys(config.variants.isThemed), table: { defaultValue: { summary: config.defaultVariants.isThemed.toString() }, type: { summary: Object.keys(config.variants.isThemed).join(" | ") }, }, description: "Applies theming styles for mobile and/or desktop based on the selected option. This should only be used if the hotel theme is something else than Scandic.", }, }, } export default meta type Story = StoryObj const sampleBreadcrumbs: Breadcrumb[] = [ { uid: "home", title: "Home", href: "/" }, { uid: "category", title: "Category", href: "/category" }, { uid: "subcategory", title: "Subcategory", href: "/category/subcategory" }, { uid: "subcategory2", title: "Subcategory 2", href: "/category/subcategory", }, { uid: "current-page", title: "Current page", href: "/category/subcategory/current-page", }, ] export const Default: Story = { args: { breadcrumbs: sampleBreadcrumbs, }, } export const Transparent: Story = { args: { ...Default.args, color: "transparent", }, } export const BackgroundPrimary: Story = { args: { ...Default.args, color: "Background/Primary", }, } export const SurfaceSecondaryDefault: Story = { args: { ...Default.args, color: "Surface/Secondary/Default", }, } export const Themed: Story = { args: { ...Default.args, isThemed: true, }, decorators: [ (Story) => ( <> {Object.entries(themes.themes) .filter(([key]) => key !== "Scandic") .map(([key, value], ix) => { return (

{key}

) })} ), ], } export const Skeleton: Story = { render: () => , } export const MobileView: Story = { globals: { viewport: { value: "mobile1", isRotated: false }, }, parameters: { docs: { description: { story: "To view the mobile behavior of the Breadcrumbs component, open the story in story viewer and adjust the browser's viewport.", }, }, }, args: { ...Default.args, }, }