Installation
There are three ways to use Harmo in a project. Choose one.
Install
@harmo-ui/react needs React 19.3 or later.
bun add @harmo-ui/css @harmo-ui/reactnpm install @harmo-ui/css @harmo-ui/reactpnpm add @harmo-ui/css @harmo-ui/reactyarn add @harmo-ui/css @harmo-ui/reactUse it
Load the CSS once, then use the components:
Set your router's link component and your framework's image component once, at the root, and Link, Button, TabLink, and Avatar use them. In the Next.js App Router, do it in a Client Component, because a Server Component can't pass functions to one, and wrap your root layout's {children} in it:
Install
Install only @harmo-ui/css, or load it from a CDN as the example below does.
bun add @harmo-ui/cssnpm install @harmo-ui/csspnpm add @harmo-ui/cssyarn add @harmo-ui/cssUse it
Use the .h* classes:
To load only what you need, import tokens.css once, then each component. Some also need companion files, such as popup.css and listbox.css for select.css:
@import "@harmo-ui/css/tokens.css";
@import "@harmo-ui/css/button.css";
@import "@harmo-ui/css/link.css";Components with behavior, such as Select, Tabs, and Tooltip, need a script that keeps their attributes current. Each component's docs say what it does. The React components do it for you.
Copy a component
Copy a component, its styles, and what it needs into your project, so you can change anything. Copied files don't get updates on their own. From your project's root:
bunx harmo-ui add tabsnpx harmo-ui add tabspnpm dlx harmo-ui add tabsyarn dlx harmo-ui add tabsSee the CLI for what it copies and how to use it.
Browser support
Harmo targets current versions of Chrome, Edge, Firefox, and Safari. It uses the popover attribute, CSS anchor positioning (in all major browsers since January 2026), field-sizing: content (since June 2026), @starting-style, and :has().