UI32
47 Accordion48 Alerts49 Avatar50 Badge51 Breadcrumb52 Button53 Button Group54 Calendar55 Card56 Checkbox57 Collapsible58 Combobox59 Data Table60 Date Picker61 Dialog62 Dropdown Menu63 Form64 Input65 Input Mask66 Input OTP67 Pagination68 Popover69 Radio Group70 Select71 Sheet72 Slider73 Sonner74 Switch75 Table76 Tabs77 Textarea78 Tooltip
Charts1
01 Animated radial chart
Interactive3
02 Message dock03 Voice powered orb07 Draggable rope
AI1
13 AI voice input
Galleries3
04 Ruler carousel10 Portfolio gallery32 Hover image gallery
Heroes1
05 Video scroll hero
Shaders2
80 Aurora veil88 Kinetic dots
Tables5
06 Financial table43 Contacts table44 Leads table45 Resizable table46 Server management
Cards15
11 Video upload card16 Animated card options17 Animated card status list18 Audio upload card19 Bonuses incentives card20 Coach scheduling21 Dashboard card modal22 Event countdown card23 Hover detail card24 News cards25 Onboarding stages26 Prediction market card27 Product reveal card28 Profile hover card29 Project cards
Badges1
14 Animated status badge
Buttons1
15 Animated download
Controls1
31 Gradient selector
HUD7
09 HUD frame34 Glitchy 40435 Overlay 236 HUD button37 HUD graph38 HUD status40 Warning graphic
Text1
33 Reveal text
Components•Button
Components•Button

Button

A tactile action button with variants for primary, secondary, utility, and icon-only controls.

Dependencies

Motionclass-variance-authorityweb-hapticsclsxtailwind-merge

Copy below cli

npx shadcn add @bjork-ui/primitive-button

How to use

import { BjorkButton } from "@/components/bjork-ui/primitives";export function Demo() {  return (    <BjorkButton variant="accent" size="md">      Publish    </BjorkButton>  );}

Props

variantdefault | secondary | outline | ghost | quiet | accent | raised

Controls the surface weight. Accent and raised use the layered border and gradient treatment.

sizesm | md | lg | icon

Matches the compact 45px control height by default.

disabledboolean

Removes pointer interaction and drops opacity without changing the layout footprint.

hapticsboolean

Enables the WebHaptics tap pulse. Defaults on; pass haptics={false} to silence a button.

hapticPatternlight | medium | selection | custom pattern

Changes the WebHaptics preset or pattern used on pointer down. Defaults to light.

childrenReactNode

Accepts text, lucide icons, or both. Icons are normalized to the primitive sizing token.

PreviousBreadcrumbNextButton Group

Default action

Use for normal committed actions. It carries the same inset dark surface as the gallery controls.

<BjorkButton>  <Plus aria-hidden="true" />  New board</BjorkButton>

Secondary action

Use when the action should still feel solid, but not louder than the primary button.

<BjorkButton variant="secondary">  Review queue</BjorkButton>

Outline action

Use for low-risk navigation or utility actions that need a visible boundary.

<BjorkButton variant="outline" size="lg">  <Download aria-hidden="true" />  Export</BjorkButton>

Accent action

Use once per surface for the main final action. This carries the layered orange surface, inset edge, and rounded Bjork control shape.

<BjorkButton variant="accent">  <CrystalMark aria-hidden="true" />  Launch demo</BjorkButton>

Raised action

Use as the paired secondary action when the control should keep the multi-border shell without taking the orange accent.

<BjorkButton variant="raised">  <DocsMark aria-hidden="true" />  Documentation</BjorkButton>

Ghost action

Use for dismissal and secondary navigation when a visible shell would add noise.

<BjorkButton variant="ghost">  Dismiss</BjorkButton>

Quiet action

Use for compact utility controls that should stay behind the main action stack.

<BjorkButton variant="quiet">  Medium</BjorkButton>

Small action

Use small buttons in dense rows, tables, and supporting controls.

<BjorkButton size="sm">  Small</BjorkButton>

Large action

Use large buttons when the control needs more weight without switching to accent.

<BjorkButton size="lg" variant="outline">  <Download aria-hidden="true" />  Export</BjorkButton>

Icon action

Use with an accessible label when the icon is the only visible content.

<BjorkButton  size="icon"  variant="secondary"  aria-label="Open settings">  <Settings2 aria-hidden="true" /></BjorkButton>

Disabled action

Use disabled for unavailable work while preserving the button footprint.

<BjorkButton disabled>  Sync unavailable</BjorkButton>