Components / PaperButton

Primitives

PaperButton

The core button. No gradients. No rounded-xl. Just ink and intention.

← default variant: calm, sharp, and impossible to ignore.

Preview

'use client'

/**
 * paperButton.tsx
 *
 * Part of Paperflow UI — Paper Design System

Installation

Copy this file into your project, export its barrel, and then add it to the master UI index.

  1. Step 1.Create this file:
    components/ui/paperButton/paperButton.tsx
  2. Step 2.Create the barrel:
    components/ui/paperButton/index.ts
  3. Step 3.Add this export in components/ui/index.ts:
    export * from './paperButton'

Variants

Primary

Secondary

Outline

Ghost

Danger

Props

PropTypeDefaultDescription
variant'primary' | 'secondary' | 'outline' | 'ghost' | 'danger'primaryVisual treatment for the action.
size'sm' | 'md' | 'lg'mdPadding and font size preset.
isLoadingbooleanfalseShows animated loading dots and disables interactions.
leftIconReactNodeundefinedOptional icon before label.
rightIconReactNodeundefinedOptional icon after label.

Examples

Form submission

Use loading state to prevent duplicate submissions.

<PaperButton isLoading>Saving draft</PaperButton>

Destructive action

Reserve red variant for irreversible actions only.

<PaperButton variant="danger">Delete project</PaperButton>