<aside>

โœ๏ธย ย Authors: Felix

๐Ÿ” Reviewers: -

โœ”๏ธย  Status: -

</aside>

Summary

๊ธฐ์ˆ  ๋ช…์„ธ์„œ๊ฐ€ ๋‹ค๋ฃจ๋Š” ์ž‘์—…์— ๋Œ€ํ•œ ์š”์•ฝ


Requirements

๊ธฐ์ˆ ์ ์œผ๋กœ ๋งŒ์กฑํ•ด์•ผ ํ•  ์กฐ๊ฑด ๋ฐ ๋†“์ณ์„  ์•ˆ ๋˜๋Š” ํฌ์ธํŠธ


Plan

๋ธŒ๋žœ์น˜, ๋ชจ๋“ˆ, ์ธํ„ฐํŽ˜์ด์Šค, ์ƒํƒœ ๊ด€๋ฆฌ ์ „๋žต, ๋ฐ์ดํ„ฐ ํ๋ฆ„, ๋ผ์šฐํŒ… ๊ตฌ์กฐ, ์„œ๋“œ ํŒŒํ‹ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ์• ๋‹ˆ๋ฉ”์ด์…˜, ์ ‘๊ทผ์„ฑ, ์Šค์ผˆ๋ ˆํ†ค, ์—๋Ÿฌ ํ•ธ๋“ค๋ง ๋“ฑ


๋ธŒ๋žœ์น˜

๋ชจ๋“ˆ

์ธํ„ฐํŽ˜์ด์Šค

export default function Page() {
  return (
    <div>
			<Button variants="primary" size="lg">My Button</Button>
			<Button variants="secondary" size="lg">My Button</Button>
			<Button>
				<MyIcon />
				<span>My Button</span>
			</Button>
			<Button as="a" href="#">
				<MyIcon />
				<span>My Button</span>
			</Button>
    </div>
  )
}

export const Button = forwardRef((
    { as, ...props }: PolymorphicProps<E, ButtonOwnProps>,
    ref: React.Ref<Element>
  ) => {
    const Component = as || "button"
    
    return <Component ref={ref} {...props} />
  }
)