BLUEPRINT // NEXTUI

Button

Technical dark-mode button with primary, secondary, and ghost variants in three sizes. Renders as a Next.js Link when an href is provided.

$npx @voltenworks/shipui add button --theme blueprint
Or install the base component for free:
Live Preview
Open full demo
voltenworks.com/shipui/blueprint/demo/components#01-button
Usage
TSX
<Button variant="primary" size="md">Deploy build</Button>
Variants
<Button variant="primary">Deploy build</Button>
<Button variant="secondary">Run tests</Button>
<Button variant="ghost">View logs</Button>
<Button variant="primary" size="sm">Deploy</Button>
<Button variant="primary" size="lg">Deploy to production</Button>
Source
TSX
import Link from 'next/link'
import { cn } from '@/lib/utils'

type Variant = 'primary' | 'secondary' | 'ghost'
type Size    = 'sm' | 'md' | 'lg'

interface ButtonProps {
  variant?:  Variant
  size?:     Size
  href?:     string
  type?:     'button' | 'submit' | 'reset'
  disabled?: boolean
  className?: string
  onClick?:  () => void
  children:  React.ReactNode
}

export function Button({
  variant   = 'primary',
  size      = 'md',
  href,
  type      = 'button',
  disabled,
  className,
  onClick,
  children,
}: ButtonProps): React.JSX.Element {
  const cls = cn('bp-btn', `bp-btn-${variant}`, `bp-btn-${size}`, className)

  if (href) {
    if (disabled) {
      return (
        <Link
          href={href}
          className={cls}
          aria-disabled="true"
          tabIndex={-1}
          onClick={(e) => e.preventDefault()}
        >
          {children}
        </Link>
      )
    }
    return (
      <Link href={href} className={cls} onClick={onClick}>
        {children}
      </Link>
    )
  }

  return (
    <button type={type} disabled={disabled} onClick={onClick} className={cls}>
      {children}
    </button>
  )
}
Preview in theme demoGet full theme, $29
Works withNext.js 15React 19Tailwind v4TypeScript 5
More from BLUEPRINT // NEXT
BLUEPRINT // NEXTUI

Badge

Technical badge for status indicators and tags in the BLUEPRINT dark engineering palette.

BLUEPRINT // NEXTUI

Card

Engineering-blueprint card with registration-mark corner accents at all four corners. Composable with any children.

BLUEPRINT // NEXTUI

Text

Polymorphic text primitive with body, caption, label, and code variants styled for the BLUEPRINT dark technical palette.