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•Input
Components•Input

Input

A text-entry field for forms, search shells, filters, and validation states.

Dependencies

Motionclass-variance-authorityclsxtailwind-merge

Copy below cli

npx shadcn add @bjork-ui/primitive-input

How to use

import { BjorkInput } from "@/components/bjork-ui/primitives";export function Demo() {  return (    <BjorkInput      aria-label="Project name"      placeholder="Name"    />  );}

Props

variantdefault | quiet | inset | ghost | error

Controls the field surface. Ghost is meant for composed search shells, not standalone forms.

inputSizesm | md | lg

Uses the same 45px default control height as the home page dock.

aria-invalidboolean

Pair with the error variant and helper text for accessible validation states.

typeinput type

Defaults to text and forwards the normal input type prop for email, password, search, and more.

PreviousFormNextInput Mask

Standalone field

Use for normal form fields. The default shadow matches the home-card controls but stays compact.

<BjorkInput  aria-label="Project name"  placeholder="Aurora archive"/>

Search shell

Wrap the ghost variant when the icon and input need to behave like the bottom search dock.

<label className="flex h-[45px] items-center gap-2 rounded-[13px] bg-[var(--bjork-surface)] px-4 shadow-[var(--bjork-shadow-surface)]">  <Search aria-hidden="true" className="size-4 text-[color:var(--bjork-text-muted)]" />  <BjorkInput    variant="ghost"    aria-label="Search components"    placeholder="Search components"  /></label>

Inset field

Use for fields nested inside dense cards where the darker interior should read as recessed.

<BjorkInput  variant="inset"  inputSize="sm"  placeholder="Filter"/>

Quiet field

Use where the field should keep the form row calm but still show a visible surface.

<BjorkInput  variant="quiet"  aria-label="Collection"  placeholder="Collection"/>
Use letters, numbers, and hyphens only.

Error state

Use with aria-invalid and visible helper text. The orange shadow is intentionally subtle.

<BjorkInput  variant="error"  aria-invalid="true"  aria-describedby="slug-error"  defaultValue="weekly/drop"/>

Disabled field

Use for locked values when the surrounding layout still needs the field footprint.

<BjorkInput  disabled  aria-label="Locked slug"  value="archive-pulse"  readOnly/>