import type { Meta, StoryObj } from '@storybook/nextjs-vite' import { FacilityEnum } from '@scandic-hotels/common/constants/facilities' import { FacilityToIcon } from '.' import { iconVariantConfig } from '../Icons/variants' const facilityMapping: Record = Object.fromEntries( Object.entries(FacilityEnum).filter(([k]) => isNaN(Number(k))) ) as Record const colorOptions = Object.keys(iconVariantConfig.variants.color) const meta: Meta = { title: 'Components/Facility To Icon', component: FacilityToIcon, argTypes: { id: { control: 'select', options: Object.keys(FacilityEnum) .map((key) => FacilityEnum[key as keyof typeof FacilityEnum]) .filter((x) => typeof x === 'string') .toSorted(), mapping: facilityMapping, description: 'Facility identifier (mapped to the corresponding icon)', }, color: { control: 'select', options: colorOptions, description: 'Icon color variant', }, size: { control: 'number', description: 'Icon pixel size', }, }, } export default meta type Story = StoryObj export const Playground: Story = { args: { id: FacilityEnum.Bar, size: 24, color: 'Icon/Default', }, } const exampleFacilities = [ FacilityEnum.AirConAirCooling, FacilityEnum.AirportMaxDistance8Km, FacilityEnum.Bar, FacilityEnum.CashFreeHotel, FacilityEnum.ChildrenWelcome, FacilityEnum.Elevator, FacilityEnum.Gym, FacilityEnum.ParkingGarage, FacilityEnum.ParkingOutdoor, FacilityEnum.Pool, FacilityEnum.Tennis1, ] export const Examples: Story = { args: { size: 24, color: 'Icon/Default', }, render: (args) => (
{exampleFacilities.map((key) => (
{FacilityEnum[key]}
))}
), }