Token-driven UI library for Nuxt.
@pisandelli/daredash is a Nuxt-first UI library built around reusable components, JSON design tokens, CSS Modules, semantic attrs, and a built-in Studio for theme exploration. If you want a UI layer that stays consistent while remaining easy to theme and evolve, this is the front door.
Use this order if you are adopting DareDash in an application:
- Installation and Configuration
Set up the Nuxt module, prefix, tokens, icons, and Studio route. - Layout Primitives
Learn the structural building blocks used to compose pages. - UI Components
Browse the main component reference for forms, feedback, navigation, and widgets. - Features, Tokens, and Theming
Understand the design-token model,v(), theming, and safe customization. - Architecture
Read the high-level system explanation once you want the “why” behind the library. - Developer Guide
Use this only if you are extending or maintaining the library itself.
AI-specific guidance lives separately in llms.txt.
DareDash combines three concerns that are often split across separate tools:
- a component library for real application UI
- a design-token system for consistency and theming
- a built-in Studio for visual iteration and token export
The result is not just a bag of components. It is a working product system that can be consumed by app teams and evolved by maintainers without drifting into one-off styling.
pnpm add @pisandelli/daredash// nuxt.config.ts
export default defineNuxtConfig({
modules: [
[
'@pisandelli/daredash',
{
prefix: 'dd',
debug: false
}
]
]
})<template>
<dd-layout>
<dd-sidebar>
<dd-menu :items="menuItems" collapsible />
</dd-sidebar>
<dd-box tag="main">
<dd-stack spaced>
<dd-breadcrumb :config="breadcrumb" />
<dd-card>
<template #header>Welcome</template>
<p>Your content goes here.</p>
</dd-card>
</dd-stack>
</dd-box>
</dd-layout>
</template>
<script setup lang="ts">
const menuItems = [
{
key: 'dashboard',
label: 'Dashboard',
icon: 'heroicons:home',
action: { type: 'link', to: '/' }
}
]
const breadcrumb = {
routes: [
{ label: 'Home', to: '/' },
{ label: 'Dashboard' }
]
}
</script>When you enable @pisandelli/daredash, the module:
- auto-registers the component surface with the configured prefix
- parses token JSON and emits CSS custom properties
- injects the reset stylesheet and token output
- auto-imports runtime composables
- exposes the
/studioroute - adds a Nuxt DevTools tab for Studio
This is why DareDash should be understood as a Nuxt module first, not as a disconnected component package.
The library includes:
- layout primitives such as
dd-box,dd-stack,dd-cluster,dd-grid,dd-sidebar, anddd-layout - form primitives such as
dd-input,dd-textarea,dd-select,dd-checkbox,dd-radio, anddd-toggle vee-validatewrappers such asdd-form-inputanddd-form-select- widgets such as
dd-menu,dd-tabs,dd-modal,dd-drawer,dd-table,dd-popover, anddd-anchor - feedback primitives such as
dd-alert,dd-badge,dd-progress,dd-loading,dd-toast, anddd-toaster
The design system is token-driven. JSON token files become:
- CSS variables
- theme layers
- component-level visual mappings
This gives consumers a centralized way to control color, spacing, typography, sizing, and component behavior without turning every screen into a custom CSS project.
Studio is one of DareDash’s strongest differentiators.
It is exposed at:
/studio- and as a dedicated tab in Nuxt DevTools
Studio helps teams preview token changes, inspect components, iterate on themes, and export overrides without rewriting component logic.
- Start with Installation and Configuration if you are adding DareDash to a Nuxt app.
- Jump to Layout Primitives if you want to start composing pages.
- Open UI Components if you need the human-facing component reference.
- Read Features, Tokens, and Theming before customizing the visual system deeply.
- Default prefix:
dd - If you change the prefix, restart the Nuxt dev server
- Consumer examples in the human docs use
kebab-casetags such as<dd-button>