Appica UIUI 1.1.0

Installation

Add Appica UI to your React project.


Appica UI ships as a single tree-shakeable package. Components are built on Base UI primitives and styled with Tailwind CSS v4 design tokens, so installation is two steps: add the package, then point Tailwind at it.

Prerequisites

Appica UI targets modern React and Tailwind. Make sure your project has:

React 19 is a hard requirement: components use the modern ref-as-prop API and other React 19 patterns, with no forwardRef shims. If you're on React 18, upgrade before installing.

Install

pnpm add @appica/ui-react

Configure Tailwind

Import the design tokens after Tailwind in your global stylesheet, and add a @source directive so Tailwind scans the compiled library for class names.

globals.css

The styles.css import brings in the full token system - colors, radii, shadows, typography, and the light/dark themes. See Theming to customize it.

Why source-scanning is the default

Appica UI ships its components' class names as source for your Tailwind to compile, rather than defaulting to a prebuilt stylesheet you drop in. There's an opt-in prebuilt file for projects that don't run Tailwind (see Without Tailwind below), but wherever Tailwind is present the @source path is the one to reach for. That extra line buys a lot:

  • One deduplicated build. The utilities the components use are generated into the same pass as your own, so shared classes (flex, rounded-lg, px-4…) are emitted once instead of shipping twice.
  • Only what you use. Tailwind tree-shakes across your app and the library together, folding the component utilities into your existing stylesheet instead of a second file, and unused component modules drop out with your bundler.
  • Your tokens win. Because the classes are compiled against your Tailwind config, overrides to the design tokens in Theming - colors, radii, spacing, fonts - flow into the components automatically. The prebuilt file freezes the non-token utilities (spacing, layout) at publish time.
  • No version-locked CSS. There's no compiled stylesheet to drift out of sync with your Tailwind version; the components restyle themselves against whatever Tailwind v4 you're on.

Without Tailwind

Appica UI is built on Tailwind, and the source-scanning setup above is the recommended path. If your project doesn't use Tailwind, skip that step and import the prebuilt stylesheet instead. It's a single self-contained file with every component's styles and the full token system compiled in, so there's nothing to configure:

globals.css

No bundler? Link it straight from a CDN:

Tailwind stays an optional peer dependency, so nothing installs it on your behalf when you take this path.

What you trade for the convenience, versus the Tailwind path:

  • It carries a baseline reset. The file includes Tailwind's Preflight, which normalizes element styles (margins, headings, borders) across your whole page. That's what makes it self-contained, but it is global.
  • Only the token variables stay live. Colors, fonts, radii, and shadows remain overridable through their CSS variables; the structural utilities (spacing, layout) are frozen at publish time, since there's no Tailwind config of yours for them to compile against.

Add the provider

Wrap your app in ThemeProvider to enable theming and dark mode. It injects a small inline script that applies the stored theme before first paint, so there's no flash of the wrong theme. In Next.js that's the root layout's <body>; in a Vite/CRA app, wrap your root the same way.

app/layout.tsx (Next.js)

That's all you need to start. See Theme Provider for the full API - custom themes, forcing a theme, and flash-prevention details - and the optional DirectionProvider (RTL) and ReducedMotionProvider, which you add only when you need them.

Framework notes

Appica UI is a plain package, so the steps above are the same everywhere - unlike a file-scaffolding CLI, there's no per-framework setup to learn. The only things that move are which Tailwind build plugin you install, where your global stylesheet lives, and where the provider goes:

Everything else (the @imports and the subpath imports) is identical regardless of framework. The one value that tracks the stylesheet is the @source path: count the ../ needed to reach node_modules from wherever your global CSS lives (see Configure Tailwind above).

Use a component

Import components from their subpath for the smallest bundle, and you're ready:

Next steps

  • Usage - import conventions, variants, and composition basics.
  • Theming - customize colors, radii, and tokens.
  • Dark Mode - build a theme toggle.
  • Components - browse the full catalog.

© 2026 Appica UI. A free component library, crafted by the Appica team.