Vinyl UI logoVinyl UI

Button

액션을 트리거하는 버튼 컴포넌트

기본 예시

variant는 기본 값이 primary, fit은 기본 값이 auto입니다.

import { Button } from '@bigmobility/vinyl-ui';

export default function ButtonExample() {
  return (
    <Button>버튼</Button>
  );
}

Variant

버튼 스타일을 정합니다.

import { Button } from '@bigmobility/vinyl-ui';

export default function StyledButton() {
  return (
    <>
      <Button variant="primary">primary</Button>
      <Button variant="emphasis">emphasis</Button>
      <Button variant="neutral">neutral</Button>
      <Button variant="outline">outline</Button>
    </>
  );
}

Fit

너비 방식을 정합니다. auto(기본)는 내용에 맞춰 크기가 정해지고, block은 부모 컨테이너 너비를 가득 채우며 높이가 button-height로 고정됩니다.

import { Button } from '@bigmobility/vinyl-ui';

export default function adjustableButton() {
  return (
    <>
      <Button fit="auto">auto</Button>
      <Button fit="block">block </Button>
    </>
  );
}

Icon

leftIcon·rightIcon에 아이콘 이름(lucide)을 넘기면 텍스트 좌/우에 표시됩니다. 사용 가능한 이름은 Lucide 아이콘 목록에서 확인하세요.

import { Button } from '@bigmobility/vinyl-ui';

export default function IconButton() {
  return (
    <>
      <Button leftIcon="chevron-left">이전</Button>
      <Button rightIcon="chevron-right">다음</Button>
    </>
  );
}

Disabled

네이티브 disabled 속성을 그대로 사용합니다.

import { Button } from '@bigmobility/vinyl-ui';

export default function DisabledButton() {
  return (
    <>
      <Button
        variant="primary"
        disabled
      >
        primary
      </Button>
      <Button
        variant="emphasis"
        disabled
      >
        emphasis
      </Button>
      <Button
        variant="neutral"
        disabled
      >
        neutral
      </Button>
      <Button
        variant="outline"
        disabled
      >
        outline
      </Button>
    </>
  );
}

Props

PropTypeDefaultDescription
variantprimary | emphasis | neutral | outlineprimary색 계열
fitblock | autoauto너비 방식 — 부모 너비 100%(block) / 내용맞춤(auto)
leftIconIconName왼쪽 아이콘 이름 (lucide)
rightIconIconName오른쪽 아이콘 이름 (lucide)

접근성

  • 네이티브 <button>이라 키보드 포커스·Enter/Space 활성화·disabled 가 기본 동작합니다.
  • type 기본값은 "button" 입니다.

토큰 커스터마이징

Button은 아래 시맨틱 토큰을 참조합니다. (테마 참고).

토큰미리보기용도
layout.primaryprimary 배경
layout.primary-darkprimary hover·active
layout.emphasisemphasis 배경
layout.emphasis-darkemphasis hover·active
layout.primary-subtleneutral 배경
text.accent-primaryneutral 텍스트
layout.highlight-lineneutral hover border
layout.bg-lightoutline 배경
text.defaultoutline 텍스트
layout.default-lineoutline border
layout.strong-lineoutline hover border
text.default-lightprimary·emphasis 텍스트
layout.bg-disable비활성 배경
text.disable비활성 텍스트

이 밖에 block 의 높이는 button-height 와 타이포 button.large-normal(block)·button.medium-normal(auto)을 사용합니다.