Haedong

Work

Components

Install

npx shadcn@latest add https://components.haedong.dev/r/<component>.json

Every component is copied into your project as source, together with what it needs — shared hooks, other components, shadcn's utils. Requires a project set up with shadcn (npx shadcn@latest init), Tailwind v4 and React 19. Each page below has its exact command.

Theme

npx shadcn@latest add https://components.haedong.dev/r/theme.json

Optional. Components use the standard shadcn token names (primary, border, muted-foreground…), so they run on your existing theme. This one installs the site's monochrome palette: two base colors, everything else derived, radius 0.

Use

import { Button } from "@/components/button/button";

Files land under your components alias as components/<name>/<name>.tsx, hooks under hooks/. Nothing is imported from this site at runtime — the code is yours to edit.

Registry

https://components.haedong.dev/r/registry.json ↗

Every item in one JSON — what the CLI reads, and the quickest way to see the whole set.

  • 001Date
    September 2026
    Sun
    Mon
    Tue
    Wed
    Thu
    Fri
    Sat
    Calendar

    A monthly calendar with single-date and range selection.

  • 002Action
    Button

    A button in outline, solid and ghost variants with a scramble-decoding label.

  • 003Form
    Input

    Single-line and multiline text fields whose states are drawn with form, not color.

  • 004Form
    Field

    Label, control and one helper line — the error state as a dashed hairline and a “!” message.

  • 005Form
    Checkbox

    A native checkbox drawn as a 9px hairline square that fills when checked.

  • 006Form
    Radio

    A radio group over native radios with the value lifted to the group.

  • 007Form
    Switch

    A native switch: a hairline track that fills and a thumb that inverts when on.

  • 008Navigation
    Components
    Tabs

    Tabs on a single hairline; the selected one turns its stretch solid.

  • 009Data
    No.TitleYear
    001Calendar2026
    002Button2026
    Table

    A semantic table where every row ends in a hairline — the Props table below is one.

  • 010Overlay
    Sheet

    A side panel behind a dither backdrop — the Settings drawer in this site's header.

  • 011Overlay
    Dialog

    A centered panel boxed by a hairline behind the dither backdrop — Sheet's sibling.

  • 012Overlay
    Popover

    A hairline box in front of the page — no fill, no shadow, no backdrop.

  • 013Display
    WorkPlayNote
    Badge

    An inline label in Button's three resting looks, without the hover.

  • 014Display
    Sign inContinue
    Separator

    The hairline as an element — horizontal, labeled, or vertical.

  • 015Feedback
    Progress

    A hairline track of dither with a solid bar for the done part.

  • 016Feedback
    Skeleton

    A pulsing placeholder that is nothing but the dither — size it with className.

  • 017Feedback
    Alert

    Status without color: a hairline box with an ASCII prefix — i, OK, ?, !.

  • 018Feedback
    Toast

    Alerts that arrive — stacked in a corner, auto-dismissed, no backdrop.

  • 019Overlay
    Copy to clipboard
    Tooltip

    One line in a hairline box — on hover after a beat, on focus at once.

  • 020Overlay
    Dropdown Menu

    A popover with menu semantics — arrow keys move, Enter selects and closes.

  • 021Form
    Select

    Input's box as the trigger, Popover's box as the list — a listbox with a lifted value.

  • 022Layout

    Calendar

    Shipped 2026
    Card

    The hairline box as a container — one rule around, one between sections.

  • 023Navigation

    npx shadcn add …

    Accordion

    Tabs turned vertical — hairline rows that open beneath their trigger, marked + and -.

  • 024Form
    Slider

    A native range input on Progress's track — solid done part, dither for the rest.

  • 025Navigation
    Pages
    Log
    Work
    Play
    Command

    A command palette in the terminal voice — a > prompt, a hairline, filtered groups.

  • 026Motion

    Personal profile MCP

    Scramble Text

    The site's signature — characters scramble under the cursor and settle back.

  • 027Form
    Date Picker

    Select's box as the trigger, Calendar in a popover — the form-field way into a date.

  • 028Form
    Combobox

    Select with a search line — Command in the popover, so long lists stay quick.

  • 029Overlay
    Alert Dialog

    A decision that must be answered — ? or ! in the title, Cancel focused, backdrop inert.

  • 030Display
    npx shadcn@latest add …
    Code Block

    A hairline box of code with a Copy that decodes into Copied — the Install rows on this site.

  • 031Display

    Search Ctrl K

    Kbd

    A key as a key — a 20px hairline box, muted, one key per element.

  • 032Navigation
    Breadcrumb

    A path in the mono voice — muted links, / between, the current page full-strength.

  • 033Action
    Toggle Group

    Buttons that stay down — pressed is the inversion, grouped with shared hairlines.

  • 034Navigation
    Pagination

    Page numbers in the site's numbering voice, arrows at the ends, the current page inverted.

  • 035Display
    Avatar

    A person as a hairline square — the image, the dither while loading, initials otherwise.

  • 036Feedback

    No results

    Try another word

    Empty

    Nothing here — a dither field with a small plate carrying the words and an action.

  • 037Feedback

    Syncing Syncing

    Spinner

    Progress with no size — one mono character turning through | / - \, the terminal's spinner.

  • 038Layout
    Copied in as source
    Collapsible

    One Accordion item on its own — an inline trigger with + / - that shows or hides what is under it.

  • 039Layout

    001 Item

    002 Item

    003 Item

    004 Item

    005 Item

    006 Item

    007 Item

    008 Item

    009 Item

    010 Item

    011 Item

    012 Item

    Scroll Area

    Native scrolling with the system's track for a scrollbar — dither rail, a plate for a thumb.

  • 040Action
    Button Group

    Buttons that belong together — one hairline strip, the rules between them single.

  • 041Form
    >
    Input Group

    An Input with more in the box — a > prompt, a unit, a Button — sharing one hairline.

  • 042Action
    Theme Toggle

    Light, dark or system as a RadioGroup — marks <html> for both this theme and a stock shadcn one.

  • 043Navigation
    Sidebar

    A column of links under muted group labels — sticky, and it scrolls inside the viewport when taller.

  • 044Display

    Two voices

    The shell is mono; the writing is not.

    Typography

    Two voices — the mono uppercase shell and the writing — as class strings, plus a Prose container.

  • 045Form
    Input OTP

    A one-time code as hairline cells over one native input — mono, one character each, _ for the caret.

  • 046Data
    Files
    Button1
    Calendar3
    Input2
    Data Table

    Table with sort, select and page — composed from Table, Checkbox and Pagination, drawn in ASCII.

  • 047Overlay
    Right-click
    Context Menu

    A Dropdown Menu that opens where you right-click — same items, same keys, anchored at the pointer.