haob-design

按钮

安装

npx
npx hb-design-cli add button

预览

使用示例

组件
import { Button } from '@/components/ui/button'

代码片段

组件

import * as React from "react"

export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
  variant?: 'primary' | 'secondary';
  size?: 'sm' | 'md' | 'lg';
}

export const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
  ({ className, variant = 'primary', size = 'md', ...props }, ref) => {
    const baseClasses = "cursor-pointer inline-flex items-center justify-center rounded-md font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50"
    
    const variantClasses = {
      primary: "bg-black text-white hover:bg-gray-800",
      secondary: "bg-gray-200 text-gray-800 hover:bg-gray-300"
    }
    
    const sizeClasses = {
      sm: "h-8 px-3 text-sm",
      md: "h-10 px-4 py-2", 
      lg: "h-12 px-6 text-lg"
    }

    const classes = [
      baseClasses,
      variantClasses[variant],
      sizeClasses[size],
      className
    ].filter(Boolean).join(' ')

    return (
      <button
        className={classes}
        ref={ref}
        {...props}
      />
    )
  }
)

Button.displayName = "Button"



属性说明

属性名类型默认值说明
variantprimary | secondaryprimary按钮深浅切换
sizesm | md | lgmd按钮尺寸