Button component with pill shape, Inter font, and smooth transitions
variant="primary"variant="secondary"variant="tertiary"variant="ghost"size="small"(no size prop)size="large"size="iconSmall"size="icon"size="iconLarge"variant="ghost" size="iconLarge"Primary, Secondary, Tertiary, and Ghost
{ variant: "all" }Compact 28px height buttons
{ size: "small" }Button with loading spinner
{ variant: "primary", disabled: true }Button without icon
{ variant: "secondary | tertiary" }Icon buttons in all three sizes
{ size: "iconSmall | icon | iconLarge" }Primary, Secondary, Tertiary, Ghost icon buttons
{ variant: "all", size: "iconLarge" }Tertiary icon buttons with custom iconColor prop
{ variant: "tertiary", iconColor: "custom" }Text and icon use the same custom color
{ variant: "tertiary", iconColor: "custom" }Use leftIcon prop for cleaner syntax
{ leftIcon: "<DesignIcon name="open" />" }Add icons after text with rightIcon
{ rightIcon: "<DesignIcon name="chevron-right" />" }Combine leftIcon and rightIcon
{ leftIcon: "<DesignIcon name="plus" />", rightIcon: "<DesignIcon name="chevron-right" />" }Auto spinner with loading prop
{ loading: true }Different text during loading
{ loading: true, loadingText: "Saving..." }Loading replaces leftIcon automatically
{ leftIcon: "<DesignIcon name="open" />", loading: true }Fully custom content using content prop
{ content: "<custom JSX>" }Always visible content around main content
{ prefix: "<Badge />", suffix: "<Count />" }Avatar + text + badge layout
{ content: "complex JSX" }Badges, counters, and status indicators
{ content: "interactive JSX" }Add tooltip with tooltip prop
{ tooltip: "string", tooltipSide: "top | bottom" }Use icon prop for icon-only buttons
{ icon: "<DesignIcon name="..." />" }