import React from 'react' import { type Meta, type StoryObj } from '@storybook/react' import { Icon } from '~components/Icon' import { Text } from '~components/Text' import { Link } from '../Link' const meta = { title: 'Components/Link', component: Link, args: { children: 'Link', href: 'https://www.google.com', }, argTypes: { variant: { options: ['primary', 'secondary', 'white'], }, size: { options: ['intro-lede', 'body', 'small', 'extra-small'], }, icon: { options: ['arrow_forward', 'open_in_new'], mapping: { // eslint-disable-next-line camelcase arrow_forward: , // eslint-disable-next-line camelcase open_in_new: , }, description: 'Renders an icon at the specified `iconPosition`. For size scaling, use the `Icon` component from `"@kaizen/components/future"`. See [all available icons](https://cultureamp.design/?path=/docs/components-icon-icon-future-api-specification--docs)', }, }, } satisfies Meta export default meta type Story = StoryObj export const Playground: Story = { render: (props) => props.variant !== 'white' ? ( ) : (
{' '}
), } export const LinkVariants: Story = { render: (props) => ( <>
), decorators: [ (Story) => (
), ], } export const LinkVariantWhite: Story = { render: (props) => , parameters: { reverseColors: true, }, } export const LinkWithIconStart: Story = { render: (props) => ( } iconPosition="start" /> ), } export const LinkWithIconEnd: Story = { render: (props) => ( } iconPosition="end" /> ), } export const LinkOpensInNewTab: Story = { render: (props) => ( } iconPosition="end" /> ), } export const WithText: Story = { render: ({ size: _, ...otherArgs }) => ( <> Lorem ipsum dolor sit amet consectetur adipisicing elit. Quae eaque amet atque. Dolores repellendus eligendi totam.{' '} } isInline /> Mollitia vero asperiores assumenda, odit ratione id perspiciatis suscipit molestias quas facere, commodi saepe! Quisquam, quidem quas a quos quae quia quidem, quod, voluptates, dolorum quibusdam. Quisquam, quidem quas a quos quae
Lorem ipsum dolor sit amet consectetur adipisicing elit. Quae eaque amet atque. Dolores repellendus eligendi totam.{' '} } isInline size={undefined} /> Mollitia vero asperiores assumenda, odit ratione id perspiciatis suscipit molestias quas facere, commodi saepe! Quisquam, quidem quas a quos quae quia quidem, quod, voluptates, dolorum quibusdam. Quisquam, quidem quas a quos quae
Lorem ipsum dolor sit amet consectetur adipisicing elit. Quae eaque amet atque. Dolores repellendus eligendi totam.{' '} } isInline /> Mollitia vero asperiores assumenda, odit ratione id perspiciatis suscipit molestias quas facere, commodi saepe! Quisquam, quidem quas a quos quae quia quidem, quod, voluptates, dolorum quibusdam. Quisquam, quidem quas a quos quae
Lorem ipsum dolor sit amet consectetur adipisicing elit. Quae eaque amet atque. Dolores repellendus eligendi totam.{' '} } isInline /> Mollitia vero asperiores assumenda, odit ratione id perspiciatis suscipit molestias quas facere, commodi saepe! Quisquam, quidem quas a quos quae quia quidem, quod, voluptates, dolorum quibusdam. Quisquam, quidem quas a quos quae ), } // Links of every different size export const LinkSizes: Story = { render: ({ children: _, size: __, isInline: ___, ...otherArgs }) => ( <> Extra Small
Small
Body
Intro Lede ), } export const StandaloneLinkDo: Story = { render: (props) => Learn more about demographics, } export const StandaloneLinkDont: Story = { render: ({ size: _, ...otherArgs }) => ( Learn more about{' '} demographics ), } export const OneLinkInSentence: Story = { render: (props) => ( Lorem ipsum dolor sit amet consectetur adipisicing elit. Illo ad nobis, ut aspernatur deserunt fuga expedita amet architecto{' '} pariatur cum itaque {' '} dicta veritatis inventore ea esse rem dolore natus! Architecto. ), } export const FiveLinksInSentence: Story = { render: ({ size: _, ...otherArgs }) => ( Lorem ipsum dolor sit amet consectetur adipisicing elit. Illo{' '} {' '} ad nobis , ut aspernatur{' '} deserunt fuga expedita amet architecto {' '} pariatur cum itaque {' '} dicta veritatis{' '} inventore ea {' '} esse rem dolore{' '} natus ! Architecto. ), } export const ExternalIconLink: Story = { render: (props) => } />, } export const RandomIconLink: Story = { render: (props) => } />, } export const DistinctNamedLink: Story = { render: (props) => View Q4 2024 dataset, } export const GenericNamedLink: Story = { render: (props) => Learn more, }