ns-ui

Tag Input Pull

A tag/token input whose chips attach like burrs — hooked, not glued. Removing one takes a deliberate pull: it stretches at the trailing edge, pops free, and the row exhales closed behind it with a staggered ripple toward the caret.

Use when chips should feel hooked rather than glued so removing one visibly costs something, with all three routes (clicking the x, Backspace on a focused x, dragging the chip past 64px) funnelling through the same stretch-then-detach animation and the row exhaling closed toward the caret; pick tag-input-tear instead when the drag must be abortable mid-way with a visible tear progress, or tag-input-backspace when removal should stay a pure keyboard affair.

Install

npx shadcn add https://design.helpmarq.com/r/tag-input-pull.json
  • tag-input
  • token-input
  • chip
  • listbox
  • form
  • removal
  • drag
  • micro-interaction
  • aria-live

ns-ui / tag-input-pull — pull a chip loose, don't just delete it

design
engineering
urgent
2026-q3
ops

5 tags

Click a chip's × to watch it stretch and pop free — the row exhales closed after. Or grab a chip and pull; release past the threshold to commit, or let go early and it eases back. Focus a chip and use Left/Right to move between them, Backspace/Delete to remove the focused one.

Props

PropTypeDefaultDescription
value?string[]controlled tag list; omit for uncontrolled
defaultValue?string[]
onChange?(tags: string[]) => void
placeholder?stringplaceholder shown only while the list is empty
disabled?boolean
className?string
aria-label?stringaccessible name for the chip group
inputLabel?stringaccessible name for the text input