Skip to content

Button

  • Layer: Component
  • Base: @ark-ui/solid + Park UI recipe

All variants

VariantPurposeWhen to use
solidMain actionOne per visible area. Filled background.
outlineSecondary actionBordered, no fill. Pairs with solid.
ghostTertiary actionLow-emphasis — toolbars, repeated actions in lists. Transparent with hover fill.
subtleNeutral actionNon-accent actions — cancel, dismiss, secondary navigation. Muted fill.

Size comparison

SizeUse
smDense UIs, inline actions, toolbar buttons
mdDefault. Most contexts.
lgProminent CTAs, hero sections

Disabled states

  • Default — resting appearance per variant
  • Hover — background fill shift per variant
  • Focus — Offset glow via :focus-visible: bg gap + cyan ring + inner glow + outer spread. No ring on click.
  • Active — further brightness reduction
  • Disabledopacity: 0.4, cursor: not-allowed, pointer-events: none

Click counter

PropTypeDefaultDescription
variant'solid' | 'outline' | 'ghost' | 'subtle''solid'Visual variant
size'sm' | 'md' | 'lg''md'Button size
disabledbooleanfalseDisables interaction
childrenJSX.ElementrequiredButton content
  • No gradients
  • No drop shadows (except focus ring)
  • No layout shift on hover
  • No delight phenomenon colours
  • Keyboard: Enter and Space trigger the action
  • Focus ring via :focus-visible — not shown on mouse click
  • Disabled uses aria-disabled via Ark UI
TokenSource
--button-bg-primary--color-accent-primary
--button-text-primary--color-background-base
--button-bg-ghost-hover--color-accent-primary-dim
--button-bg-dim--color-background-surface-alt
--button-bg-danger--color-status-error
--button-radius--radius-md
--button-disabled-opacity0.4