---
name: "@typedora-ui"
slug: "typedora-ui"
description: "A type-safety extension layer for shadcn/ui that adds full TypeScript inference to interactive components. Provides TypedSelect, TypedRadioGroup, and Combobox with strongly-typed option arrays and event handlers, plus a registry-driven architecture for schema-to-UI mapping and field metadata helpers. Integrates cleanly with TanStack Form, React Hook Form, and Zod. Drop-in shadcn/ui replacement aesthetic with zero runtime cost. Built with React 18+, Tailwind CSS, and Radix primitives. Free and open source. Use for: large TypeScript codebases or design systems where eliminating any-types in form and select components is a priority and full type inference across component APIs is required."
category: "Hooks/utilities"
tags: ["aesthetic", "components", "design-system", "forms", "hooks", "maps"]
framework: "react"
license: null
author: "nguyenphutrong"
website: "https://typedora-ui.netlify.app"
github: "https://github.com/nguyenphutrong/typedora-ui"
registry: "https://typedora-ui.netlify.app/r/registry.json"
pro: false
pro_url: null
github_stars: 10
component_count: 4
generated_at: "2026-07-28T08:59:05.895Z"
---

# @typedora-ui

A type-safety extension layer for shadcn/ui that adds full TypeScript inference to interactive components. Provides TypedSelect, TypedRadioGroup, and Combobox with strongly-typed option arrays and event handlers, plus a registry-driven architecture for schema-to-UI mapping and field metadata helpers. Integrates cleanly with TanStack Form, React Hook Form, and Zod. Drop-in shadcn/ui replacement aesthetic with zero runtime cost. Built with React 18+, Tailwind CSS, and Radix primitives. Free and open source. Use for: large TypeScript codebases or design systems where eliminating any-types in form and select components is a priority and full type inference across component APIs is required.

## Links

- Website: https://typedora-ui.netlify.app
- GitHub: https://github.com/nguyenphutrong/typedora-ui
- Registry JSON: https://typedora-ui.netlify.app/r/registry.json
- Directory page: https://sh4dcn.vercel.app/registry/typedora-ui
- This file: https://sh4dcn.vercel.app/md/typedora-ui.md

## Install

```sh
# add the whole registry (shadcn CLI)
npx shadcn@latest add https://typedora-ui.netlify.app/r/registry.json
pnpm dlx shadcn@latest add https://typedora-ui.netlify.app/r/registry.json
bunx shadcn@latest add https://typedora-ui.netlify.app/r/registry.json
# clone the source repo
git clone https://github.com/nguyenphutrong/typedora-ui.git
# fetch the raw registry index
curl -s https://typedora-ui.netlify.app/r/registry.json
```

## Components (4)

| name | type | description | install |
| --- | --- | --- | --- |
| typed-utils | registry:lib | Shared utility types for typed components. | `npx shadcn@latest add https://typedora-ui.netlify.app/r/typed-utils.json` |
| typed-select | registry:component | A headless, type-safe select component with full TypeScript inference and customizable rendering. | `npx shadcn@latest add https://typedora-ui.netlify.app/r/typed-select.json` |
| typed-radio-group | registry:component | A headless, type-safe radio group component with full TypeScript inference and customizable rendering. | `npx shadcn@latest add https://typedora-ui.netlify.app/r/typed-radio-group.json` |
| typed-combobox | registry:component | A headless, type-safe combobox component with search functionality, full TypeScript inference, and customizable rendering. | `npx shadcn@latest add https://typedora-ui.netlify.app/r/typed-combobox.json` |

## For AI agents

```text
You are adding components from @typedora-ui to a shadcn-compatible project.
1. Read this file (https://sh4dcn.vercel.app/md/typedora-ui.md) for the component list.
2. Fetch the machine-readable index: https://typedora-ui.netlify.app/r/registry.json
3. Install a single component with its install command from the table above.
4. Full structured record: https://sh4dcn.vercel.app/json (library slug: typedora-ui).
```
