Arc
ComponentsBlocksDocsPricingTry the demo
Get Pro
Introduction
Installation
Theming
Motion
AI and MCP
Changelog
Button
Action button
Split button
Button group
Floating button group
Expanding button group
Copy button
Action swap
Icon morph
Confirm morph
Theme switcher
Hold to confirm
Swipe actions
Reactions
Dropdown menu
Context menu
User menu
Input
Textarea
Password field
Password strength
Search field
Expanding search
Inline edit
Number field
Money input
Phone input
Scrub input
Tag input
Mention input
Shortcut recorder
Select
Combobox
Multi-select
Morph select
Chip group
Radio cards
Billing toggle
Checkbox
Radio group
Switch
Segmented control
Rating
Toggle group
Slider
Elastic slider
Range histogram slider
Ruler slider
Calendar
Date picker
Date range picker
Time picker
Color picker
Emoji pickerPro
Rich text editor
Signature pad
File dropzone
Avatar uploadPro
Tabs
Breadcrumb
Pagination
Mega menu morphPro
Table of contents progressPro
Scroll area
Accordion
Expandable card
Resizable panels
Expandable text
Dialog
Drawer
Bottom sheet
Popover
Hover card
Tooltip
Share accessPro
Confirm popoverPro
Alert
Toast
Toast stack
Announcement bar
Cookie consent
Undo toastPro
Progress
Skeleton
Stepper
Countdown
Usage meter
Onboarding checklist
Avatar
Avatar group
Badge
Presence stackPro
Card
Metric card
Empty state
Metric tickerPro
Line chart
Bar chart
Donut chart
Streamgraph
Brush chart
Waffle chart
Slope chart
Sparkline
Gauge
Activity heatmap
Animated counter
Ridgeline
Treemap
Split barPro
SunburstPro
Sankey flowPro
Funnel chartPro
Radar chartPro
Realtime streamPro
Race bar chartPro
Data gridPro
Sortable data table
Tree table
Tree view
Reorderable list
Filter toolbar
Code block
JSON viewer
Timeline
Comment thread
Chat thread
Image compare
Carousel
Card stack
Text reveal
In-view title
Text morph
Text shimmer
What’s new4 new
DocsInstallation

Installation

Set up Next.js or Vite, add the @uiarc registry, and install your first component.

Requirements

A React 19 project with TypeScript and the @/* path alias. Arc components use CSS modules and CSS variables, so they work without Tailwind. The steps below use the shadcn CLI; the manual path at the end needs nothing extra.

Next.js

  1. Create a project

    $pnpm create next-app@latest my-apppnpm create next-app@latest my-app

    Skip this for an existing app. Accept the default @/* import alias.

  2. Initialize shadcn

    $pnpm dlx shadcn@latest initpnpm dlx shadcn@latest init

    This creates components.json, which the CLI reads to know where files go.

  3. Use next/link and next/image (optional)

    Components such as Avatar, Breadcrumb and Lightbox gallery render a plain <a> and <img>, so they work in any React app. Wrap your app once to route them through Next.js, or through your own Link (for example a locale-aware one). arc-provider installs with the components that use it.

    app/arc-provider.tsx
    "use client"; import Image from "next/image";import Link from "next/link";import { ArcProvider } from "@/components/arc/lib/arc-provider"; export function Providers({ children }: { children: React.ReactNode }) {  return <ArcProvider link={Link} image={Image}>{children}</ArcProvider>;}

Vite

  1. Create a project

    $pnpm create vite my-app --template react-tspnpm create vite my-app --template react-ts
  2. Add the path alias

    Map @/* to src in both TypeScript and Vite, as shadcn expects.

    tsconfig.json
    {  "compilerOptions": {    "baseUrl": ".",    "paths": { "@/*": ["./src/*"] }  }}
    vite.config.ts
    import path from "node:path";import react from "@vitejs/plugin-react";import { defineConfig } from "vite"; export default defineConfig({  plugins: [react()],  resolve: { alias: { "@": path.resolve(__dirname, "./src") } },});
  3. Initialize shadcn

    $pnpm dlx shadcn@latest initpnpm dlx shadcn@latest init

Add the @uiarc registry

Register the namespace once in components.json. After that you install Arc items by name.

components.json
{  "registries": {    "@uiarc": "https://uiarc.dev/r/{name}.json"  }}

Prefer not to edit the config? Every item also installs from its full URL, for example https://uiarc.dev/r/button.json.

Add the foundation

Every Arc item reads the shared tokens, so install them once per app. Items never reinstall this file, so you can also keep the tokens in your own theme package.

$pnpm dlx shadcn@latest add @uiarc/arc-foundationpnpm dlx shadcn@latest add @uiarc/arc-foundation

Then import the tokens once, at the root of your app.

app/layout.tsx · src/main.tsx
import "@/components/arc/foundation.css";

Install components

Add one or several items at once. Local dependencies, such as a block's components, come along automatically.

$pnpm dlx shadcn@latest add @uiarc/button @uiarc/dialogpnpm dlx shadcn@latest add @uiarc/button @uiarc/dialog

Files land in an arc/ folder under the components alias in your components.json, for example components/arc/button/button.tsx, or src/components/arc/… in a src/ project or monorepo package. They import each other with relative paths, so any alias setup works; move the arc/ folder as a whole if you want it elsewhere. Use them like any local component:

app/page.tsx
import { Button } from "@/components/arc/button/button"; export default function Page() {  return <Button>Save changes</Button>;}

Manual installation

  1. Install the packages

    Most items use Motion and Lucide; each page lists its exact dependencies.

    $pnpm add motion lucide-reactpnpm add motion lucide-react
  2. Copy the foundation

    Copy registry/foundation.css and lib/motion-tokens.ts from any item's Manual tab, and import the CSS once at the root.

  3. Copy the item

    Open the component page, switch Installation to Manual, and copy each file into the same path under your @/ root. Manual files keep Arc's repository layout (registry/, lib/) and import each other through @/; the CLI install above rewrites that for you.

Pro components

Pro items install the same way once you are signed in with a Pro plan: the install command and source appear on their page. See what is in Pro.

PreviousIntroductionNextTheming

On this page

  • Requirements
  • Next.js
  • Vite
  • Add the @uiarc registry
  • Add the foundation
  • Install components
  • Manual installation
  • Pro components