Most UI libraries are packages: you install them, import from
node_modules, and wait for the maintainers when you need something changed.
tealmac UI works the other way round.
The library is published as a shadcn registry: a set of JSON files, one per item, each holding the item's source files, the npm packages it needs and the other registry items it builds on. The shadcn CLI reads that JSON and writes the files into your project.
pnpm dlx shadcn@latest add https://ui.tealmac.com/r/marquee.json
After that command, components/ui/marquee.tsx is a normal file in your
repository. Nothing at runtime refers back to us.
Because the source lives in your project:
| Kind | Example | Installs to |
|---|---|---|
| Component | marquee, tag-input | components/ui |
| Example | marquee-demo | components |
| Theme | /r/themes/<id>.json | CSS variables in your styles |
| Preset | /r/presets/<id>.json | CSS variables and font tokens |
| Pro block | /r/pro/<name>.json (with key) | components/ plus a page |
Shared pieces such as cn() in lib/utils.ts and the shadcn/ui primitives
are declared as dependencies, so the CLI adds them once and reuses them.
Owning the code means updates are your call. When a component improves, the changelog says so, and you can compare or reinstall it. The update guide shows how to pull a new version without losing your edits.
Every component is MIT licensed. Pro templates and blocks use the same registry format, served from a licence-checked address. See Set up Pro.