Work
ComponentsInstall
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
Every item in one JSON — what the CLI reads, and the quickest way to see the whole set.
- 001DateCalendarSeptember 2026SunMonTueWedThuFriSat
A monthly calendar with single-date and range selection.
- 002ActionButton
A button in outline, solid and ghost variants with a scramble-decoding label.
- 003FormInput
Single-line and multiline text fields whose states are drawn with form, not color.
- 004FormField
Label, control and one helper line — the error state as a dashed hairline and a “!” message.
- 005FormCheckbox
A native checkbox drawn as a 9px hairline square that fills when checked.
- 006FormRadio
A radio group over native radios with the value lifted to the group.
- 007FormSwitch
A native switch: a hairline track that fills and a thumb that inverts when on.
- 008NavigationTabsComponents
Tabs on a single hairline; the selected one turns its stretch solid.
- 009DataTable
No. Title Year 001 Calendar 2026 002 Button 2026 A semantic table where every row ends in a hairline — the Props table below is one.
- 010OverlaySheet
A side panel behind a dither backdrop — the Settings drawer in this site's header.
- 011OverlayDialog
A centered panel boxed by a hairline behind the dither backdrop — Sheet's sibling.
- 012OverlayPopoverHairline box
A hairline box in front of the page — no fill, no shadow, no backdrop.
- 013DisplayBadgeWorkPlayNote
An inline label in Button's three resting looks, without the hover.
- 014DisplaySeparatorSign inorContinue
The hairline as an element — horizontal, labeled, or vertical.
- 015FeedbackProgress
A hairline track of dither with a solid bar for the done part.
- 016FeedbackSkeleton
A pulsing placeholder that is nothing but the dither — size it with className.
- 017FeedbackAlert
Build failed
Cannot find module
Status without color: a hairline box with an ASCII prefix — i, OK, ?, !.
- 018FeedbackToast
Alerts that arrive — stacked in a corner, auto-dismissed, no backdrop.
- 019OverlayTooltipCopy to clipboard
One line in a hairline box — on hover after a beat, on focus at once.
- 020OverlayDropdown MenuDraft
A popover with menu semantics — arrow keys move, Enter selects and closes.
- 021FormSelect
Input's box as the trigger, Popover's box as the list — a listbox with a lifted value.
- 022LayoutCard
Calendar
Shipped 2026The hairline box as a container — one rule around, one between sections.
- 023NavigationAccordionnpx shadcn add …
Tabs turned vertical — hairline rows that open beneath their trigger, marked + and -.
- 024FormSlider
A native range input on Progress's track — solid done part, dither for the rest.
- 025NavigationCommandPagesLogWorkPlay
A command palette in the terminal voice — a > prompt, a hairline, filtered groups.
- 026MotionScramble Text
Personal profile MCP
The site's signature — characters scramble under the cursor and settle back.
- 027FormDate Picker
Select's box as the trigger, Calendar in a popover — the form-field way into a date.
- 028FormCombobox
Select with a search line — Command in the popover, so long lists stay quick.
- 029OverlayAlert Dialog
A decision that must be answered — ? or ! in the title, Cancel focused, backdrop inert.
- 030DisplayCode Block
npx shadcn@latest add …
A hairline box of code with a Copy that decodes into Copied — the Install rows on this site.
- 031DisplayKbd
Search Ctrl K
A key as a key — a 20px hairline box, muted, one key per element.
- 032NavigationBreadcrumb
A path in the mono voice — muted links, / between, the current page full-strength.
- 033ActionToggle Group
Buttons that stay down — pressed is the inversion, grouped with shared hairlines.
- 034NavigationPagination
Page numbers in the site's numbering voice, arrows at the ends, the current page inverted.
- 035DisplayAvatar
A person as a hairline square — the image, the dither while loading, initials otherwise.
- 036FeedbackEmpty
No results
Try another word
Nothing here — a dither field with a small plate carrying the words and an action.
- 037FeedbackSpinner
Syncing Syncing
Progress with no size — one mono character turning through | / - \, the terminal's spinner.
- 038LayoutCollapsibleCopied in as source
One Accordion item on its own — an inline trigger with + / - that shows or hides what is under it.
- 039LayoutScroll Area
Native scrolling with the system's track for a scrollbar — dither rail, a plate for a thumb.
- 040ActionButton Group
Buttons that belong together — one hairline strip, the rules between them single.
- 041FormInput Group
An Input with more in the box — a > prompt, a unit, a Button — sharing one hairline.
- 042ActionTheme Toggle
Light, dark or system as a RadioGroup — marks <html> for both this theme and a stock shadcn one.
- 043NavigationSidebar
A column of links under muted group labels — sticky, and it scrolls inside the viewport when taller.
- 044DisplayTypography
Two voices
The shell is mono; the writing is not.
Two voices — the mono uppercase shell and the writing — as class strings, plus a Prose container.
- 045FormInput OTP
A one-time code as hairline cells over one native input — mono, one character each, _ for the caret.
- 046DataData Table
Files Button 1 Calendar 3 Input 2 Table with sort, select and page — composed from Table, Checkbox and Pagination, drawn in ASCII.
- 047OverlayContext MenuRight-click
A Dropdown Menu that opens where you right-click — same items, same keys, anchored at the pointer.