Installation
How to add components and blocks to your project from the registry URLs.
- A React app: the dsui site is built with React 19 and Next.js. The components are client components that use
"use client". - A bundler that reads CSS Modules: components are styled with CSS Modules (
*.module.css) and token variables, not Tailwind classes. You don't need Tailwind. Any setup that supports CSS Modules works, such as Next.js or Vite. - The shadcn CLI: install with
npx shadcn@latest add. If your project has nocomponents.json, the CLI may ask to create one first.
You don't need to install npm packages yourself. The registry lists the packages each item needs, and the CLI installs them too.
| Package | Used by |
|---|---|
motion | Movement in almost every component and block |
@hugeicons/react, @hugeicons/core-free-icons | Components with icons and the shared theme files |
@radix-ui/react-* | Some components, such as dialogs, dropdown menus, popovers, tooltips and tabs |
Put the item name in the URL. The "Install" section on each item page has the same command, ready to copy.
The CLI also fetches the other items this one depends on. For the button, that is the shared foundation arc-foundation and the sound effects arc-sound. Items with icons also bring in arc-theme. Blocks install the components they use as well.
| Item | Location |
|---|---|
| Components | components/arc/<name>/ |
| Blocks | components/arc/blocks/<name>/ |
Shared foundation (arc-foundation) | components/arc/foundation.css, components/arc/motion-tokens.ts, components/arc/lib/, components/arc/LICENSE |
Theme roles (arc-theme) | components/arc/theme/ |
Sound effects (arc-sound) | components/arc/sound/ |
| devs7udio items | components/devs7udio/<name>/ |
Files import each other with relative paths. If you change the folder structure, update the import paths too.
Import foundation.css once in your global stylesheet. It holds every colour, corner, shadow and motion variable the components read.
Adjust the path to where your global stylesheet lives. The example above imports it from app/globals.css. Put it at the very top, so the rules of a theme you install later come after it and override the defaults.
Components that draw links and images use a plain <a> and <img> by default. That way they work outside Next.js too. To use Next.js Link and Image, wrap your app once in ArcProvider.
ArcProvider is a client component, so it's easiest to wrap it in a separate providers file like the one above.
The tokens look for Pretendard Variable first for body and display text. If it's missing, they use system fonts (Apple SD Gothic Neo, Noto Sans KR and others). Font files are not in the registry. For the same look, load Pretendard Variable yourself.
Pretendard uses the SIL OFL licence, so you can ship it with your app.
Add data-theme="dark" or class="dark" to <html> to switch to the dark tokens. With neither, it follows the operating system setting. data-theme="light" or class="light" locks it to light.
If you already use a tool that adds a .dark class, such as next-themes, leave it as it is.
To install with a short name instead of a URL, register the registry namespace in components.json.
After that, install like this.
You can also register it with the CLI.
| URL | Contents |
|---|---|
/r/registry.json | The full list of installable items. There are 133 right now. |
/r/<name>.json | One item. The name matches its page URL (/items/<name>). |
/r/arc-foundation.json | Tokens, motion presets, shared utilities and the licence. Every item depends on it. |
/r/arc-theme.json | Role icons (UiIcon), the theme provider and motion roles. |
/r/arc-sound.json | The sound engine and 11 sound effects. |
Every URL starts with https://dsui.vercel.app.
- I get a 404. Check the name. A registry name is the last part of the item page URL and uses only lowercase English letters and hyphens. Items listed under "Items you can't install" below also return 404.
- It says the package versions don't match. The registry lists ranges such as
motion@^14.2.0. If you already use another major version, the CLI or your package manager may warn you. The items are built for React 19. - I don't see colours or corners. Check that you imported
foundation.css. Import it once, and preferably before other global styles. - The button is grey. The
--background,--foreground,--accent,--accent-foregroundand--borderthatshadcn initadded to:rootoverride the same names infoundation.css. Delete those five lines or install a theme. - Components have no styles at all. If a new Next.js project's
next.config.tshas a"*.css"rule (@tailwindcss/turbopack,as: "*.css"), CSS Modules are read as plain CSS and the class names come out empty. Narrow the rule's key to"globals.css". - Photos and logos in blocks are broken. The sample images live in the dsui site's
/public/mediaand/public/block-logosand are not shipped through the registry. Replace the sample data in blocks such asblog-grid,hero-section,logo-marqueeandpage-header, and incomponents/arc/lib/media.ts, with your own images.
Most earlier devs7udio items are not shipped through the registry. They depend on the demo kit or on paths used only inside the site, so they don't work in other projects. Their "Install" section shows this note instead of a command, and you can still read the source for reference.
The devs7udio items you can install now are the themes base, halloween, seollal, chuseok and christmas. The other 9 components, 3 blocks, 1 element, and the motion and animation items can't be installed.