Skip to content

Command Palette

Search for a command to run...

All posts

News

Introducing TentUI

A component library for the details that make an interface feel thoughtful, expressive, and unmistakably yours.

SS
Sourabh SoniUpdated July 25, 2026

Most component libraries are very good at helping you assemble the foundation of an application. They give you buttons, dialogs, forms, and the familiar primitives every product needs.

TentUI starts where that foundation ends.

It is an open-source collection of copy-paste React components for the interactions and details that make a product feel considered: an arrow that responds with the right amount of energy, a save button that explains what just happened, or a card that makes depth feel tangible.

Built for the last ten percent

The first ninety percent of an interface is often straightforward. The difficult part is the final ten percent: the behavior between states, the feedback after an action, and the small visual decisions that create a coherent personality.

Those details are easy to postpone because they take time to design and even more time to implement well. TentUI turns them into reusable starting points without hiding their implementation behind a package.

Source code, not a dependency

Every TentUI component is installed into your project through the shadcn CLI. You get the complete source code, can see every dependency, and can change every decision.

pnpm dlx shadcn@latest add https://tentui.com/r/animated-arrow.json

There is no TentUI runtime and no abstraction you need to preserve. Once a component is in your codebase, it is yours.

Designed to complement your stack

TentUI is not trying to replace shadcn/ui, Base UI, Radix, or the primitives your team already trusts. Keep those tools for the common foundation. Reach for TentUI when the interface calls for something more specific or expressive.

That constraint keeps the library focused. Components should solve a real interaction problem, carry a clear point of view, and still leave enough room to become part of your product.

What comes next

The library will grow in public, one carefully considered component at a time. Alongside releases, this blog will document the reasoning behind the work: motion decisions, implementation tradeoffs, and the details that separate a working interface from one that feels good to use.

Start by exploring the component library, or connect the MCP server to find components directly from your editor.

Command Palette

Search for a command to run...