WANTED // NEXTUI

Button

Western bounty button with primary, secondary, ghost, and secondary-dark variants in three sizes. Gold accent, uppercase Rye display font, parchment textures. Renders as a Next.js Link when an href is provided.

$npx @voltenworks/shipui add button --theme wanted
Or install the base component for free:
Live Preview
Open full demo
voltenworks.com/shipui/wanted/demo/components#01-button
Usage
TSX
<Button variant="primary" size="md">Claim bounty</Button>
Variants
<Button variant="primary">Claim bounty</Button>
<Button variant="secondary">View details</Button>
<Button variant="ghost">Dismiss</Button>
<Button variant="secondary-dark">Dark panel</Button>
<Button variant="primary" size="sm">Submit</Button>
<Button variant="primary" size="lg">Post bounty</Button>
Source
TSX
import Link from 'next/link'
import { cn } from '@/lib/utils'

interface ButtonProps {
  children: React.ReactNode
  variant?: 'primary' | 'secondary' | 'ghost' | 'secondary-dark'
  size?: 'sm' | 'md' | 'lg'
  href?: string
  onClick?: () => void
  type?: 'button' | 'submit'
  className?: string
  disabled?: boolean
}

export function Button({
  children,
  variant = 'primary',
  size = 'md',
  href,
  onClick,
  type = 'button',
  className,
  disabled,
}: ButtonProps): React.JSX.Element {
  const classes = cn(
    'btn',
    size === 'sm' && 'btn-sm',
    size === 'md' && 'btn-md',
    size === 'lg' && 'btn-lg',
    variant === 'primary' && 'btn-primary',
    variant === 'secondary' && 'btn-secondary',
    variant === 'ghost' && 'btn-ghost',
    variant === 'secondary-dark' && 'btn-secondary-dark',
    className,
  )

  if (href) {
    return (
      <Link href={href} className={classes}>
        {children}
      </Link>
    )
  }

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

Badge

Severity badge with critical, high, medium, and accent variants. Uppercase labels for bounty threat levels and status indicators.

WANTED // NEXTUI

Text

Polymorphic text component with body, caption, label, and code variants. Rye for display headings, Source Serif for body copy, western parchment palette.

WANTED // NEXTUI

Card

Bounty card with tag badge, title, and description. Dark parchment surface with severity-colored badge indicators for vulnerability and threat categories.