Registry
FelicityUI owns the registry protocol. The CLI installs from compiled JSON. A shadcn projection exists for the React slice only.
Authoring lives in registry/<name>/spec.json plus native files. The compiler writes CDN-cacheable JSON under /r. The CLI installs from that JSON. It never evaluates TypeScript, Swift, or Kotlin.
Endpoints
Catalog, then one item, then the React-only shadcn projection of the same item.
https://forma-web-smoky-delta.vercel.app/r/index.jsonhttps://forma-web-smoky-delta.vercel.app/r/button.jsonhttps://forma-web-smoky-delta.vercel.app/r/shadcn/button.jsonArtifacts
Built payloads are the install source. File path is relative to the item directory and cannot leave it.
| Path | Purpose |
|---|---|
| /r/index.json | Catalog: name, title, description, category, status, platforms. |
| /r/<name>.json | Full FelicityUI item with native file contents and SHA-256 digests. |
| /r/shadcn/<name>.json | shadcn registry-item.json projection. React files only. |
Namespaces
Addresses such as @felicityui/button resolve to this registry. @shadcn/button is reserved for a future adapter. V1 does not fetch third-party registries.
Integrity
Each file in the built payload has digest: sha256:<hex>. The CLI refuses to write a file whose bytes do not match, unless you pass --insecure. Signing is reserved and not implemented in v1.
Catalog
Complete items only. Tokens and utils install as dependencies of these — they are not listed as UI. Do not invent Badge, Field, Select, or Input Group as extra catalog items.
- ButtonNative <button>, SwiftUI.Button, and a Compose button with FelicityUI colors.
- InputNative <input>, SwiftUI TextField, and Compose OutlinedTextField. Textarea ships in the same item.
- AccordionNative details/summary, SwiftUI DisclosureGroup, and a Compose expandable column.
- DialogNative <dialog>, SwiftUI .alert, and Compose AlertDialog. Short confirms only.
- DrawerEdge panel on the web, .sheet on iOS, ModalBottomSheet on Android. No overlay library.
Install
Point init at this registry, then copy source with the CLI. Review the diff.
npx felicityui init --registry https://forma-web-smoky-delta.vercel.app/rnpx felicityui add button --platform react
npx felicityui add input --platform react
npx felicityui add accordion --platform react
npx felicityui add dialog --platform react
npx felicityui add drawer --platform reactSame add commands with --platform swiftui or --platform compose. See Installation for project setup, and MCP for a read-only catalog.