import React from 'react'; import { AlignItems, BorderColor, BorderStyle, DISPLAY, Size, TextVariant, TextColor, } from '../../../helpers/constants/design-system'; import Box from '../../ui/box/box'; import { IconName } from '..'; import { Text } from '../text'; import { ButtonLink } from './button-link'; import { BUTTON_LINK_SIZES } from './button-link.constants'; import README from './README.mdx'; const marginSizeControlOptions = [ undefined, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 'auto', ]; export default { title: 'Components/ComponentLibrary/ButtonLink', component: ButtonLink, parameters: { docs: { page: README, }, }, argTypes: { as: { control: 'select', options: ['button', 'a'], table: { category: 'button base props' }, }, block: { control: 'boolean', table: { category: 'button base props' }, }, children: { control: 'text', }, className: { control: 'text', }, danger: { control: 'boolean', }, disabled: { control: 'boolean', table: { category: 'button base props' }, }, href: { control: 'text', }, externalLink: { control: 'boolean', }, startIconName: { control: 'select', options: Object.values(IconName), table: { category: 'button base props' }, }, endIconName: { control: 'select', options: Object.values(IconName), table: { category: 'button base props' }, }, startIconProps: { control: 'object', table: { category: 'button base props' }, }, endIconProps: { control: 'object', table: { category: 'button base props' }, }, loading: { control: 'boolean', table: { category: 'button base props' }, }, size: { control: 'select', options: Object.values(BUTTON_LINK_SIZES), }, marginTop: { options: marginSizeControlOptions, control: 'select', table: { category: 'box props' }, }, marginRight: { options: marginSizeControlOptions, control: 'select', table: { category: 'box props' }, }, marginBottom: { options: marginSizeControlOptions, control: 'select', table: { category: 'box props' }, }, marginLeft: { options: marginSizeControlOptions, control: 'select', table: { category: 'box props' }, }, }, args: { children: 'Button Link', }, }; export const DefaultStory = (args) => ; DefaultStory.storyName = 'Default'; export const SizeStory = (args) => ( <> Auto (default) Small Medium Large Inherits the font-size of the parent element.{' '} Learn more Inherits the font-size of the parent element.{' '} Learn more Inherits the font-size of the parent element.{' '} Learn more Inherits the font-size of the parent element and example with override for a success color.{' '} Learn more ); SizeStory.storyName = 'Size'; export const Danger = (args) => ( Normal {/* Test Anchor tag to match exactly as button */} Danger ); export const Href = (args) => Href example; Href.args = { href: '/metamask', }; export const ExternalLink = (args) => ( Anchor element with external link ); ExternalLink.args = { href: 'https://metamask.io/', externalLink: true, }; export const HitArea = (args) => ( <> Default Auto (default) Small Medium Large Add paddingLeft and paddingRight props Auto (default) Small Medium Large Add block prop Large block ); HitArea.args = { borderColor: BorderColor.errorDefault, borderStyle: BorderStyle.dashed, };