UI & builders
Shared React UI primitives, auth screens, data tables, and the drag-and-drop form/site/table builders behind the web app.
These packages give apps/web its component layer: a shared design system
sits at the bottom, and the form/site/table builders and data-table stack
build on top of it to power the product's admin tooling.
@repo/design-system
The base UI kit — shadcn/radix-derived primitives, marketing blocks, and shared hooks/providers used by every other package in this group. It ships CSS (globals/tokens/themes) alongside the components, so consumers import both styles and components from it.
./globals.css,./tokens.css,./themes/*,./styles/*— Tailwind globals, design tokens, and theme CSS./components/*— primitives (button,dialog,command,combobox,chart,kanban,calendar,data-tablepieces,form, and more)./blocks/*— marketing/site blocks (hero,pricing,faq,testimonials,navbar,footer,app-sidebar)./hooks/*,./providers/*,./lib/*,./theme/*— supporting hooks, context providers, and utilities
@repo/auth-ui
Better Auth UI screens for apps/web, built on better-auth-ui and
@repo/design-system. Provides the account/session chrome so the app
doesn't hand-roll auth forms.
.(src/index.ts) — package entry point./components/*—auth-card,account-settings,settings-dialog,user-menu./providers/*—auth-provider
@repo/data-table
A TanStack Table wrapper for building filterable, sortable, paginated admin tables, with both client-side and server-driven (URL-search-param-backed) variants.
DataTable/ServerDataTable— client and server-driven table components (src/components/data-table/)- Advanced filter toolbar — faceted filter, multi-filter, filter combobox
(
src/components/data-table/advanced/) useDataTable/useServerDataTable/useScopedSearchParams— hooks wiring table state to URL search params (src/lib/hooks/)src/config/— pagination and table config helpers
@repo/form-builder
The UI half of the web app's forms feature — a drag-and-drop form
builder with live preview, AI-assisted generation, and generated-code export.
The server half (schema + /api/forms) lives in @repo/db/apps/web.
./components/*— builder surface (form-builder-base,form-preview,multi-step-form-preview,forms-list-sidebar,my-forms,new-form), form elements (select/dropdown/rating/password/file-upload), code panel and viewer, andai/ai-form-generator./hooks/*,./lib/*,./constants/*,./types/*— builder state, helpers, and shared types
@repo/site-builder
The UI half of the web app's sites feature — a block-based site builder
(canvas + block palette + props sheet) that renders @repo/design-system
blocks and exports generated code, mirroring @repo/form-builder's shape.
./components/*—site-builder,site-canvas,site-block-palette,block-props-sheet,render-site-block,my-sites,new-site,generated-code/site-code-panel./hooks/*,./lib/*,./constants/*,./types/*— builder state, helpers, and shared types
@repo/table-builder
The UI half of the web app's tables feature — define a dataset (columns
- rows), edit it local-first, and publish it for reuse elsewhere on the
site. Mirrors
@repo/form-builder; the server half is@repo/db'sdatasettable +/api/tables.
MyTables— list/create/delete the caller's datasetsTableBuilder— fetch a dataset and render the editable gridPublishedTable— read-only server-rendered view of a published datasetDataset/DatasetColumn/DatasetRow/DatasetColumnType— shared types (src/types.ts)- Row edits are backed by a local-first TanStack DB collection
(
@repo/local-db); column types (v1):text,number,date,boolean, with inline edit and CSV/TSV paste import
@repo/hooks
Small, framework-agnostic React hooks shared across the monorepo — no builder- or design-system-specific logic, just generic browser/DOM utilities.
use-debounce,use-idle,use-mount,use-hydration-guarduse-media-query,use-window-size,use-document-sizeuse-intersection-observer,use-is-visible,use-scroll-position,use-auto-scroll,use-copy-to-clipboard
See the packages overview and the architecture guide.