← Zurück zum Blog

Tailwind CSS und shadcn/ui in dein Projekt integrieren

Veröffentlicht am 22. Januar 2026

Tailwind CSS und shadcn/ui sind zwei mächtige Tools, die die Entwicklung moderner Benutzeroberflächen erheblich beschleunigen können. In diesem Tutorial zeige ich dir, wie du beide in dein Projekt integrierst.

Was ist Tailwind CSS?

Tailwind CSS ist ein Utility-First CSS-Framework, das dir ermöglicht, schnell benutzerdefinierte Designs direkt in deinem HTML zu erstellen, ohne eigene CSS-Dateien schreiben zu müssen.

Was ist shadcn/ui?

shadcn/ui ist keine Bibliothek im traditionellen Sinne. Es ist eine Sammlung von wiederverwendbaren Komponenten, die du kopieren und in deine Apps einfügen kannst. Die Komponenten sind mit Tailwind CSS gestylt und nutzen Radix UI für die Zugänglichkeit.

1. Tailwind CSS installieren

Für ein Nuxt-Projekt ist die Installation besonders einfach:

npm install -D @nuxtjs/tailwindcss
npx tailwindcss init

Füge dann das Modul in deiner nuxt.config.ts hinzu:

export default defineNuxtConfig({
  modules: ['@nuxtjs/tailwindcss']
})

2. Tailwind konfigurieren

Passe die tailwind.config.js nach deinen Bedürfnissen an:

/** @type {import('tailwindcss').Config} */
export default {
  content: [
    './components/**/*.{js,vue,ts}',
    './layouts/**/*.vue',
    './pages/**/*.vue',
    './plugins/**/*.{js,ts}',
    './app.vue',
  ],
  theme: {
    extend: {
      colors: {
        primary: '#42b883',
        secondary: '#35495e',
      },
    },
  },
  plugins: [],
}

3. shadcn/ui einrichten

Für shadcn/ui benötigst du zunächst einige zusätzliche Abhängigkeiten:

npm install tailwindcss-animate class-variance-authority clsx tailwind-merge
npm install @radix-ui/react-slot

Erstelle eine utils-Datei für die Klassenverwaltung:

// lib/utils.ts
import { type ClassValue, clsx } from 'clsx'
import { twMerge } from 'tailwind-merge'

export function cn(...inputs: ClassValue[]) {
  return twMerge(clsx(inputs))
}

4. Erste shadcn/ui-Komponente hinzufügen

shadcn/ui Komponenten werden direkt in dein Projekt kopiert. Besuche ui.shadcn.com und wähle eine Komponente aus. Hier ein Beispiel für einen Button:

// components/ui/Button.vue
<template>
  <button
    :class="cn(
      'inline-flex items-center justify-center rounded-md text-sm font-medium',
      'transition-colors focus-visible:outline-none focus-visible:ring-2',
      'disabled:pointer-events-none disabled:opacity-50',
      variants[variant],
      sizes[size],
      className
    )"
    v-bind="$attrs"
  >
    <slot />
  </button>
</template>

<script setup lang="ts">
import { cn } from '~/lib/utils'

interface Props {
  variant?: 'default' | 'destructive' | 'outline' | 'ghost'
  size?: 'default' | 'sm' | 'lg'
  className?: string
}

const props = withDefaults(defineProps<Props>(), {
  variant: 'default',
  size: 'default',
})

const variants = {
  default: 'bg-primary text-white hover:bg-primary/90',
  destructive: 'bg-red-500 text-white hover:bg-red-600',
  outline: 'border border-input bg-background hover:bg-accent',
  ghost: 'hover:bg-accent hover:text-accent-foreground',
}

const sizes = {
  default: 'h-10 px-4 py-2',
  sm: 'h-9 rounded-md px-3',
  lg: 'h-11 rounded-md px-8',
}
</script>

5. Komponente verwenden

Jetzt kannst du die Komponente in deinen Seiten nutzen:

<template>
  <div>
    <Button variant="default">Klick mich</Button>
    <Button variant="outline">Outline Button</Button>
    <Button variant="ghost">Ghost Button</Button>
  </div>
</template>

<script setup lang="ts">
// Auto-import dank Nuxt
</script>

Best Practices

1. Konsistente Farbpalette

Definiere deine Farben in der Tailwind-Konfiguration, um eine konsistente Farbpalette im gesamten Projekt zu gewährleisten.

2. Wiederverwendbare Komponenten

Erstelle wiederverwendbare Komponenten für häufig verwendete UI-Elemente, um Code-Duplikation zu vermeiden.

3. Dark Mode vorbereiten

Nutze Tailwinds Dark Mode-Funktionen von Anfang an, um später einfach einen Dark Mode hinzufügen zu können.

Fazit

Die Kombination aus Tailwind CSS und shadcn/ui ermöglicht es dir, schnell schöne und zugängliche Benutzeroberflächen zu erstellen. Der Utility-First-Ansatz von Tailwind gibt dir volle Kontrolle über das Design, während shadcn/ui dir vorgefertigte, anpassbare Komponenten bietet, die du direkt in dein Projekt integrieren kannst.