import { ButtonHTMLAttributes } from 'react'; export type ButtonBaseKind = 'primary' | 'secondary' | 'black' | 'negative'; export type ButtonOutlinedKind = `outlined_${ButtonBaseKind}`; export type ButtonKind = ButtonBaseKind | ButtonOutlinedKind; export type ButtonSize = 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge'; export type IconButtonShape = 'rectangle' | 'circle'; export type IconButtonKind = Exclude; export type IconButtonSize = 'xxsmall' | 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' | 'xxlarge'; export type TextButtonKind = 'text' | 'link'; export type TextButtonSize = 'small' | 'medium' | 'large'; export type AccordionButtonSize = 'xsmall' | 'medium'; export interface BaseButtonProps extends Omit, 'type'> { /** * true로 설정 시, 기본 DOM 요소를 렌더링하지 않고 자식 컴포넌트에 props와 동작을 전달합니다. * * reference: https://www.radix-ui.com/primitives/docs/guides/composition * @default false * */ asChild?: boolean; /** @default 'button' */ type?: ButtonHTMLAttributes['type']; }