
Installs all 29 components. Without our CLI, run instead.
Extend publishes a shadcn registry at ui.extend.ai, with 29 components installable through the shadcn CLI.
Copy a prompt for your agent, copy the install command, or open the docs that ship it.
An autocomplete input built on Base UI primitives.
An extraction citation block linked to source PDF bounding boxes.
A compact popover color picker with hex, RGB, CSS, and HSL input formats.
A CSV and TSV viewer with parsing, upload, search, zoom, theme-aware grid rendering, and Glide Data Grid.
A split-group review panel for organizing pages into output documents.
A split-group review block for organizing PDF pages into output documents.
Shared thumbnail sidebar behavior for document viewers, including viewer-width responsive overlay and inline modes.
An experimental DOCX editor with a Word-style toolbar, page thumbnails, import, export, and live document mutation.
A full DOCX editor block with a Word-style toolbar, page thumbnails, and export controls.
A DOCX viewer with upload, zoom, theme controls, and read-only rendering.
A PDF signature review block with field overlays and signing actions.
A full Excel editor block with workbook upload, cell formatting, merge tools, sheets, zoom, and export controls.
A macOS Finder-style file browser for flat object-store manifests with icon, list, column, and gallery views.
A Finder-style file browser block that opens PDF, DOCX, PowerPoint, XLSX, and image files in large viewer dialogs.
A compact file preview thumbnail shell for externally generated images, loading states, and fallback states.
A drag-and-drop file upload surface with accepted file type icons and a compact file list.
A connected control group primitive for buttons, inputs, separators, and text addons.
A keyboard shortcut display primitive.
A structured layout review panel with typed blocks and confidence cards.
A structured layout review block with confidence cards and PDF region overlays.
A reusable resizable left document viewer and right review panel shell for PDF-style blocks.
A PDF-only upload dropzone that opens the dropped file in the shared PDF viewer.
A PowerPoint viewer with slide navigation, zoom, upload, download, custom scroll areas, and virtualized thumbnails.
A JSON schema builder with form and JSON views for extraction schemas.
An experimental XLSX editor with formula input, undo and redo, sheet controls, export, and live workbook mutation.
An XLSX viewer with workbook loading, thumbnails, sheet tabs, upload, zoom, and theme controls.
Extend UI is a set of open-source components for document agents, user-facing document flows, and internal tools.
The library includes 14 components and examples for PDF, DOCX, and XLSX viewers, plus bounding box citations, file upload, file thumbnails, e-signature, document splitting, layout blocks, and Finder-style file browsing. Components are fully customizable, MIT licensed, and available through the shadcn component registry.
Extend UI started as the internal component layer for Extend. We built it after evaluating existing file viewer and document component libraries and needing more complete, polished building blocks for document-heavy products. The components are maintained in production at Extend and are used across workflows that process millions of pages, so fixes and improvements continue to flow back into the project.
Use Extend UI when you need document viewers, review surfaces, file-management interfaces, or agent-facing document tools without starting from a generic viewer library. Because each component is installed as source, it also works well with design-system agents and prototyping tools that need editable React and Tailwind code.
@extend/*Configure the style-aware registry in your components.json:
{
"registries": {
"@extend": "https://www.extend.ai/ui/r/styles/{style}/{name}.json"
}
}
Then install a component with the shadcn CLI:
npx shadcn@latest add @extend/pdf-viewer
Then render the installed component from your app:
import { PDFViewer } from "@/components/extend/pdf-viewer"
export default function Page() {
return
}
The react-pdf version of the PDF viewer is available at
pdf-viewer.tsx.
Extend UI components are copied into your project as source, so you can adapt
them to your app. Shared primitives such as Button, Select, Dialog,
and Tooltip are imported directly from your existing UI components. The
registry selects Base or Radix source using your configured style and transforms
icons for your selected icon library. Keep existing primitives when the CLI
asks about overwriting them. If your project uses a different alias or design-system path, update the
generated imports to match, for example changing
@/components/ui/button or @/components/ui/select to your local primitive
paths. You can also set those aliases in components.json before installing so
new components are generated closer to your app structure.
Use current shadcn primitive APIs. The historical default style is
deprecated upstream and must
be migrated before installing.
Inspect OCR and layout output with selectable blocks, confidence, markdown text, and PDF overlays that stay connected to the rendered page.
npx shadcn@latest add @extend/layout-blocks-block
import type { ParsedOcrOutput } from "@/components/extend/layout-blocks"
import { OcrBlocksBlock } from "@/components/blocks/layout-blocks-block"
const output: ParsedOcrOutput = {
chunks: [
{
blocks: [
{
id: "title",
type: "heading",
content: "Statement of Work",
metadata: {
page: { number: 1, width: 612, height: 792 },
avgOcrConfidence: 0.99,
},
boundingBox: { left: 72, top: 96, right: 360, bottom: 124 },
},
],
},
],
}
export default function Page() {
return
}
Review extracted values against the source PDF with field-level citations, editable form controls, JSON diffing, and page overlays.
npx shadcn@latest add @extend/bounding-box-citations-block
import type { ReviewField } from "@/components/extend/bounding-box-citations"
import { HumanReviewBlock } from "@/components/blocks/bounding-box-citations-block"
const fields: ReviewField[] = [
{
key: "invoice_total",
schema: {
type: "number",
title: "Invoice total",
description: "Total amount due on the invoice.",
},
actual: 1280.5,
expected: 1280.5,
location: {
page: 1,
area: { left: 62, top: 82, width: 22, height: 4 },
},
},
]
export default function Page() {
return (
)
}
A Finder-style file browser for object-store manifests. It supports icon, list, column, and gallery views, and opens PDF, DOCX, XLSX, and image files in viewer dialogs.
npx shadcn@latest add @extend/file-system-block
import type { FileSystemItem } from "@/components/extend/file-system"
import { FileSystemBlock } from "@/components/blocks/file-system-block"
const items: FileSystemItem[] = [
{
kind: "folder",
path: "reports/",
hasChildren: true,
},
{
kind: "file",
path: "bank-statement.pdf",
contentType: "application/pdf",
url: "/documents/bank-statement.pdf",
previewImageUrl: "/documents/bank-statement-preview.png",
},
]
export default function Page() {
return (
`/api/files/sign?path=${encodeURIComponent(file.path)}`
}
loadChildren={async ({ path }) => {
const response = await fetch(
`/api/files?prefix=${encodeURIComponent(path)}`
)
return response.json()
}}
/>
)
}
npx shadcn@latest add @extend/pdf-viewer
npx shadcn@latest add @extend/docx-viewer
npx shadcn@latest add @extend/xlsx-viewer
npx shadcn@latest add @extend/file-upload
npx shadcn@latest add @extend/file-thumbnail
npx shadcn@latest add @extend/e-signature
pnpm install
pnpm v4:dev
The site runs at http://localhost:4000.
Extend UI is built and maintained by Extend for teams building modern document processing products.
Licensed under the MIT license.
The packages and primitives its components pull in, counted across the registry.
Extend is a component library on 21st.dev by Extend with 10 public React components. Every component ships with a live interactive preview and full TSX source — copy the code, install it through the shadcn CLI, or pull it into Cursor or Claude Code over MCP.