# ui

Shared web primitives: responsibilities, supported exports and extension points.

## Purpose [#purpose]

The web component library wraps Base UI primitives with the repository’s neutral shadcn tokens. It includes buttons, dialogs, sidebar, tables, command, code blocks and the shared runtime highlighter. Docs use build-time highlighting instead.

Shadcn `trace` and `code-block` components support execution details and code displays. The public ReUI registry adds free `time-picker`, `color-picker`, `signature-pad`, `file-type`, `emoji-picker` and `cascader` components. These are installed source files in this package. Pro blocks require a license and are not included. See the [ReUI registry](https://reui.io/docs/registry) for access rules.

EmojiPicker fetches `emojibase-data@17.0.0` from jsDelivr by default; pass local `data` when external loading is unwanted. Fumadocs is confined to `/docs`, with headless source/search and build-time MDX. It does not replace application components or install `fumadocs-ui`.

## Public exports [#public-exports]

| Subpath | Target |
| --- | --- |
| `./globals.css` | `./src/styles/globals.css` |
| `./lib/*` | `./src/lib/*.ts` |
| `./lib/highlighter` | `./src/lib/highlighter.tsx` |
| `./components/*` | `./src/components/*.tsx` |
| `./components/reui/*` | `./src/components/reui/*.tsx` |
| `./components/reui/time-picker` | `./src/components/reui/time-picker.tsx` |
| `./components/reui/color-picker` | `./src/components/reui/color-picker.tsx` |
| `./components/reui/signature-pad` | `./src/components/reui/signature-pad.tsx` |
| `./components/reui/file-type` | `./src/components/reui/file-type.tsx` |
| `./components/reui/emoji-picker` | `./src/components/reui/emoji-picker.tsx` |
| `./components/reui/cascader/cascader` | `./src/components/reui/cascader/cascader.tsx` |
| `./components/reui/cascader/cascader-async` | `./src/components/reui/cascader/cascader-async.tsx` |
| `./components/reui/cascader/cascader-columns` | `./src/components/reui/cascader/cascader-columns.tsx` |
| `./components/reui/cascader/cascader-context` | `./src/components/reui/cascader/cascader-context.tsx` |
| `./components/reui/cascader/cascader-footer` | `./src/components/reui/cascader/cascader-footer.tsx` |
| `./components/reui/cascader/cascader-i18n` | `./src/components/reui/cascader/cascader-i18n.tsx` |
| `./components/reui/cascader/cascader-item` | `./src/components/reui/cascader/cascader-item.tsx` |
| `./components/reui/cascader/cascader-lib` | `./src/components/reui/cascader/cascader-lib.tsx` |
| `./components/reui/cascader/cascader-nav` | `./src/components/reui/cascader/cascader-nav.tsx` |
| `./components/reui/cascader/cascader-types` | `./src/components/reui/cascader/cascader-types.tsx` |
| `./components/reui/cascader/cascader-virtual` | `./src/components/reui/cascader/cascader-virtual.tsx` |
| `./hooks/*` | `./src/hooks/*.ts` |
| `./postcss.config` | `./postcss.config.mjs` |

These paths come from `packages/ui/package.json`. A `.` entry is the package root. Conditional targets distinguish platform or type resolution; consumers should import the subpath, not its source file.

## How to extend [#how-to-extend]

Reuse an existing primitive before adding one. Put feature data, effects and navigation in application hooks. Preserve accessible labels, keyboard behavior and visible focus. Existing component/lib export patterns are local to this UI package; they do not permit server barrels.

Read the [shared web primitives guide](/docs/development/conventions) for the full flow.

## Key files [#key-files]

- [`packages/ui/package.json`](https://github.com/CarlosZiegler/doro/blob/main/packages/ui/package.json)

