Indielayer UI - Vue.js 3 / Nuxt.js 3 UI Library with Tailwind CSS 4. ⚡️  Build and prototype fast web applications.

Indielayer
Indielayer UIIndielayer UI
UI
v2.1.0
Indielayer UI
v2.1.0

Vue 3 component library

Composable UI blocks for modern Vue apps

Accessible, themeable building blocks for Vue 3. Prototype production-quality UIs without rebuilding the basics.

Vue.js 3
Performant UI
Nuxt.js 3
SSR Ready
47+ components
Vue 3
Nuxt 3
Tailwind CSS 4
Why Indielayer UI

Everything you need to ship faster

Accessible by default

Keyboard-friendly components and sensible ARIA patterns out of the box.

Tailwind themes

Base and Carbon theme variants with a shared preset for your design tokens.

Tree-shakeable

Import only the components you need, or register the full library in one line.

Vue 3 and Nuxt 3

First-class Vue plugin plus a Nuxt module for SSR-ready setups.

Getting started

Tailwind CSS UI components for Vue.js 3 / Nuxt.js 3. Build and prototype fast web applications.

Quickstart a new Vue 3 or Nuxt 3 project

This following command will install and execute @indielayer/create-ui, the official Indielayer UI project scaffolding tool. You will be presented with prompts for a number of optional features such as TypeScript.

? Project type: › - Use arrow-keys. Return to submit.
❯   Vue 3
    Nuxt 3

Manual guide

1. Install via package manager

2. Setup Tailwind CSS v4

Indielayer UI requires Tailwind CSS v4 (Safari 16.4+, Chrome 111+, Firefox 128+). See the Tailwind v4 install guide and install tailwindcss plus @tailwindcss/postcss (Vite and Nuxt).

Import Indielayer theme tokens from @indielayer/ui/tailwind.css in your app stylesheet and register source paths for class scanning:

Add @tailwindcss/postcss to your PostCSS config (Vite css.postcss.plugins or Nuxt postcss.plugins). See the upgrade guide when migrating from v3.

3. Load the UI in your project

Load on a Vue 3 project

Use defaults to set app-wide prop defaults per component (e.g. all alerts outlined). Instance props still override when passed explicitly. Variant and layout booleans on themed components use optionalBooleanProp() so omitted attributes stay unset; plain Boolean props default to false in Vue and will not receive app defaults.

Load on a Nuxt 3 project

4. (optional) Load only the components you want