Getting started
Install one component, understand what arrived, and know what happens the next time it changes.
There is no package to adopt and no configuration step. A component is a file, you copy it into your project, and from that moment it is your file. That is the whole model, and everything below is a consequence of it.
Install one thing
Every component page carries the exact command for that component. It fetches the source from this site and writes it into your project:
npx shadcn@latest add https://www.adamjurek.com/r/buttonNothing is added to your dependency list by that command. What lands is the component's own source and, when it needs them, the one or two other components it is built from - the registry knows which, so you do not have to.
Understand what arrived
Two things, and it is worth knowing which is which.
The component is now yours. Edit it, rename it, delete half of it. Nothing will overwrite it, because nothing is watching it.
The stylesheet is not. Components are written against @sushindustries/atoms@sushindustries/atomsThe design tokens and the atomic utilities built on them. One stylesheet, no build step, no framework.package, which is one CSS file of tokens and utilities that you install once:
pnpm add @sushindustries/atomsEvery class a component uses is defined there. That is the one shared thing, and it is deliberately the smallest possible shared thing: a stylesheet has no runtime, no build step and no version of React it cares about.
What happens when it changes
Nothing, until you ask. There is no update command that reaches into your project, because the component stopped being mine the moment you installed it. If a component here improves, you can run the add command again and take the new copy - which will overwrite your edits, and that is why the version is on every page.
This is the trade the whole library makes: you give up automatic updates and you get code you can actually read and change. For a button, that is the right trade. For a date library, it would not be.