FOLIO // NEXTUI

Button

Multi-variant button with primary, secondary, and ghost styles in three sizes. Renders as a Next.js Link when an href is provided.

$npx @voltenworks/shipui add button --theme folio
Or install the base component for free:
Live Preview
Open full demo
voltenworks.com/shipui/folio/demo/components#01-button
Usage
TSX
<Button variant="primary" size="md">Save changes</Button>
Variants
<Button variant="primary">Save changes</Button>
<Button variant="secondary">Cancel</Button>
<Button variant="ghost">Learn more</Button>
<Button variant="primary" size="sm">Save</Button>
<Button variant="primary" size="lg">Get started</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('btn-base', `btn-${variant}`, `btn-${size}`, className)

  if (href) {
    return (
      <Link href={href} className={cls}>
        {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 FOLIO // NEXT
FOLIO // NEXTUI

Badge

Inline label badge with five variants: ink, accent, cta, ghost, and parchment. Suited for tags, status labels, and category markers.

FOLIO // NEXTUI

Card

Composable card container with sharp zero-radius corners in the FOLIO aesthetic. Pairs with folio-card-header, folio-card-body, and folio-card-footer CSS classes.

FOLIO // NEXTUI

Calendar

Interactive month-view calendar with previous/next navigation and day selection. Highlights today in forest green and the selected day in cognac.

FOLIO // NEXTUI

DateBlock

Magazine-style date display that renders month, day number, and weekday name in an editorial dateline layout. Server component.

FOLIO // NEXTUI

Pullquote

Editorial blockquote with ruled top and bottom borders and an optional attribution citation. Suited for testimonials and highlighted copy.

FOLIO // NEXTUI

Text

Polymorphic text primitive with body, caption, label, and code variants. Renders as any inline or block HTML tag via the `as` prop.

FOLIO // NEXTSection

Hero

Three-column editorial hero with a 44px spine, a full-width copy column, and a 380px table-of-contents sidebar. Includes a scrolling ticker strip and collapses to a single column on mobile.

FOLIO // NEXTSection

Features

Ledger-row feature list using a 56px index gutter, feature title, description, and a right-aligned tag. Roman numeral indexes reinforce the editorial aesthetic.

FOLIO // NEXTSection

About

Two-column about section with forest green background, a pullquote, and body copy. Pairs a narrative text column with a supporting details column.