Convert Figma logo to code with AI

unovue logoshadcn-vue

Vue port of shadcn-ui

7,866
505
7,866
181

Top Related Projects

5,597

An open-source UI component library for building high-quality, accessible design systems and web apps for Vue. Previously Radix Vue

52,684

🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

6,203

The Intuitive Vue UI Library powered by Reka UI & Tailwind CSS.

13,922

Next Generation Vue UI Component Library

27,030

Quasar Framework - Build high-performance VueJS user interfaces in record time

40,884

🐉 Vue Component Framework

Quick Overview

Shadcn-vue is a Vue 3 port of the popular Shadcn UI components. It provides a set of accessible, customizable, and reusable Vue components that are styled using Tailwind CSS. This project aims to bring the flexibility and design of Shadcn UI to the Vue ecosystem.

Pros

  • Offers a wide range of pre-built, customizable components for Vue 3 applications
  • Utilizes Tailwind CSS for easy styling and customization
  • Provides accessible components out of the box
  • Seamlessly integrates with Vue 3 and its ecosystem

Cons

  • As a port of Shadcn UI, it may lag behind the original React version in terms of updates and new features
  • Documentation might not be as comprehensive as the original Shadcn UI
  • May require additional setup and configuration compared to native Vue component libraries
  • Limited community support compared to more established Vue component libraries

Code Examples

  1. Using a Button component:
<template>
  <Button variant="outline" size="lg">
    Click me
  </Button>
</template>

<script setup>
import { Button } from '@/components/ui/button'
</script>
  1. Implementing a Dialog:
<template>
  <Dialog>
    <DialogTrigger>Open Dialog</DialogTrigger>
    <DialogContent>
      <DialogHeader>
        <DialogTitle>Dialog Title</DialogTitle>
        <DialogDescription>This is a dialog description.</DialogDescription>
      </DialogHeader>
      <p>Dialog content goes here.</p>
    </DialogContent>
  </Dialog>
</template>

<script setup>
import { Dialog, DialogTrigger, DialogContent, DialogHeader, DialogTitle, DialogDescription } from '@/components/ui/dialog'
</script>
  1. Using a Select component:
<template>
  <Select v-model="selectedValue">
    <SelectTrigger class="w-[180px]">
      <SelectValue placeholder="Select a fruit" />
    </SelectTrigger>
    <SelectContent>
      <SelectItem value="apple">Apple</SelectItem>
      <SelectItem value="banana">Banana</SelectItem>
      <SelectItem value="orange">Orange</SelectItem>
    </SelectContent>
  </Select>
</template>

<script setup>
import { ref } from 'vue'
import { Select, SelectTrigger, SelectValue, SelectContent, SelectItem } from '@/components/ui/select'

const selectedValue = ref('')
</script>

Getting Started

  1. Install the package:

    npm install shadcn-vue
    
  2. Import and use components in your Vue 3 application:

    <template>
      <div>
        <Button>Click me</Button>
      </div>
    </template>
    
    <script setup>
    import { Button } from 'shadcn-vue'
    </script>
    
  3. Make sure to have Tailwind CSS set up in your project for proper styling.

Competitor Comparisons

5,597

An open-source UI component library for building high-quality, accessible design systems and web apps for Vue. Previously Radix Vue

Pros of reka-ui

  • More customizable and flexible component library
  • Designed specifically for Vue 3, leveraging its latest features
  • Includes additional components not found in shadcn-vue

Cons of reka-ui

  • Less mature and potentially less stable than shadcn-vue
  • Smaller community and fewer resources available
  • May require more setup and configuration compared to shadcn-vue

Code Comparison

reka-ui:

<template>
  <RekaButton variant="primary" size="lg">
    Click me
  </RekaButton>
</template>

<script setup>
import { RekaButton } from 'reka-ui'
</script>

shadcn-vue:

<template>
  <Button variant="default" size="lg">
    Click me
  </Button>
</template>

<script setup>
import { Button } from '@/components/ui/button'
</script>

The code comparison shows that both libraries offer similar component usage, with slight differences in naming conventions and import paths. reka-ui uses the "Reka" prefix for its components, while shadcn-vue follows a more generic naming approach. Both libraries support customization through props like variant and size.

52,684

🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

Pros of core

  • Mature, well-established framework with extensive ecosystem and community support
  • Comprehensive documentation and learning resources
  • Optimized performance with virtual DOM and reactive system

Cons of core

  • Steeper learning curve for beginners compared to shadcn-vue
  • More complex setup and configuration for larger projects
  • Heavier bundle size due to full framework features

Code Comparison

core:

import { createApp } from 'vue'
import App from './App.vue'

createApp(App).mount('#app')

shadcn-vue:

import { createApp } from 'vue'
import { plugin } from '@unovue/shadcn-vue'
import App from './App.vue'

createApp(App).use(plugin).mount('#app')

The code comparison shows that shadcn-vue requires an additional plugin import and usage, while core provides a more straightforward setup. However, shadcn-vue offers pre-built components and utilities that can accelerate development for certain projects.

Both repositories serve different purposes: core is a full-fledged framework, while shadcn-vue is a component library built on top of Vue. The choice between them depends on project requirements, developer experience, and desired level of customization.

6,203

The Intuitive Vue UI Library powered by Reka UI & Tailwind CSS.

Pros of Nuxt UI

  • Tightly integrated with Nuxt.js ecosystem, offering seamless compatibility
  • Extensive set of pre-built components tailored for Nuxt applications
  • Built-in dark mode support and customizable theming options

Cons of Nuxt UI

  • Less flexible for non-Nuxt projects compared to Shadcn Vue
  • Potentially steeper learning curve for developers not familiar with Nuxt.js
  • May have more opinionated design choices, limiting customization options

Code Comparison

Shadcn Vue component usage:

<template>
  <Button variant="outline">Click me</Button>
</template>

<script setup>
import { Button } from "@/components/ui/button"
</script>

Nuxt UI component usage:

<template>
  <UButton color="primary" variant="outline">Click me</UButton>
</template>

<script setup>
// No import needed, components are auto-imported
</script>

Summary

Shadcn Vue offers more flexibility and can be used in any Vue project, while Nuxt UI provides a more integrated experience specifically for Nuxt.js applications. Shadcn Vue may require more manual setup but allows for greater customization, whereas Nuxt UI offers convenience with auto-imports and built-in features tailored for Nuxt development.

13,922

Next Generation Vue UI Component Library

Pros of PrimeVue

  • Extensive collection of pre-built components
  • Comprehensive documentation and examples
  • Active community and regular updates

Cons of PrimeVue

  • Larger bundle size due to the extensive component library
  • Less customizable styling compared to Shadcn Vue's utility-first approach

Code Comparison

PrimeVue:

<template>
    <Button label="Submit" icon="pi pi-check" />
</template>

<script setup>
import Button from 'primevue/button';
</script>

Shadcn Vue:

<template>
    <Button>
        Submit
        <CheckIcon class="ml-2 h-4 w-4" />
    </Button>
</template>

<script setup>
import { Button } from '@/components/ui/button'
import { CheckIcon } from '@heroicons/vue/24/solid'
</script>

Summary

PrimeVue offers a rich set of ready-to-use components with extensive documentation, making it ideal for rapid development. However, it may result in larger bundle sizes and less flexibility in styling. Shadcn Vue, on the other hand, provides a more customizable approach with its utility-first styling, but requires more manual setup for complex components. The choice between the two depends on project requirements, development speed priorities, and desired level of customization.

27,030

Quasar Framework - Build high-performance VueJS user interfaces in record time

Pros of Quasar

  • Comprehensive UI framework with a large set of pre-built components
  • Cross-platform development support (web, mobile, desktop)
  • Active community and extensive documentation

Cons of Quasar

  • Steeper learning curve due to its extensive feature set
  • Larger bundle size compared to more lightweight alternatives
  • Opinionated structure may limit flexibility in some cases

Code Comparison

Quasar component usage:

<template>
  <q-btn color="primary" label="Click me" @click="handleClick" />
</template>

shadcn-vue component usage:

<template>
  <Button variant="default" @click="handleClick">Click me</Button>
</template>

Key Differences

  • Quasar offers a full-fledged UI framework, while shadcn-vue provides customizable UI components
  • Quasar has built-in support for various platforms, whereas shadcn-vue focuses primarily on web development
  • Quasar uses its own component system, while shadcn-vue leverages existing Vue ecosystem tools

Use Cases

  • Choose Quasar for large-scale, cross-platform projects requiring a comprehensive UI solution
  • Opt for shadcn-vue when building web applications that need flexible, customizable UI components with a smaller footprint

Community and Ecosystem

  • Quasar has a larger community and more third-party resources
  • shadcn-vue is newer but growing, with a focus on modern web development practices
40,884

🐉 Vue Component Framework

Pros of Vuetify

  • Comprehensive UI component library with a wide range of pre-built components
  • Material Design-based, offering a consistent and modern look out of the box
  • Extensive documentation and active community support

Cons of Vuetify

  • Larger bundle size due to the extensive component library
  • Less flexibility in customization compared to shadcn-vue's utility-first approach
  • Steeper learning curve for developers new to Material Design principles

Code Comparison

Vuetify component usage:

<template>
  <v-btn color="primary" @click="handleClick">
    Click me
  </v-btn>
</template>

shadcn-vue component usage:

<template>
  <Button variant="default" @click="handleClick">
    Click me
  </Button>
</template>

Both libraries offer easy-to-use components, but Vuetify's approach is more opinionated with built-in styles, while shadcn-vue provides more flexibility for custom styling. Vuetify's extensive component library makes it suitable for rapid development of complex UIs, whereas shadcn-vue's utility-first approach allows for more granular control over design and smaller bundle sizes. The choice between the two depends on project requirements, team preferences, and the desired level of customization.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

shadcn-vue

shadcn-vue is an unofficial community-led Vue port of shadcn/ui.

Note
We are not affiliated with shadcn, but we did get his blessing prior to creating this project
This is a project born out of the need for a similar project for the vue ecosystem.

Accessible and customizable components that you can copy and paste into your apps. Free. Open Source. Use this to build your own component library.

hero

Documentation

View documentation here

Credits

All credits go to these open-source works and resources

  • Shadcn UI for creating this beautiful project.

  • Shadcn Svelte for some inspiration for registry.

  • Reka UI for doing all the hard work to make sure components are accessible.

  • VueUse for providing many useful utilities.

  • ahmedmayara for populating many components

License

Licensed under the MIT license.

NPM DownloadsLast 30 Days