Skip to content

Commit 15e9cff

Browse files
committed
Update component libraries page
1 parent 3868302 commit 15e9cff

File tree

1 file changed

+100
-18
lines changed

1 file changed

+100
-18
lines changed

docs/component-libraries.md

Lines changed: 100 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,11 @@ description: Popular Vue 3 component libraries
33
---
44
# Component Libraries
55

6-
These are some of the most widely used component libraries for **Vue 3**.
6+
Listed below are some of the most widely used component libraries for **Vue 3**.
7+
8+
## Styled Vue components
9+
10+
These libraries all provide large collections of ready-to-use Vue components, complete with styling.
711

812
The monthly downloads should not be trusted as a way to judge the quality of a library. Specifically:
913
* Some of these libraries are much older than others and will benefit from historical inertia.
@@ -41,32 +45,26 @@ const tick = './images/tick.svg'
4145
<td><a href="https://www.npmjs.com/package/element-plus" target="_blank" rel="noopener noreferrer">npm</a> <img alt="npm monthly downloads" src="https://img.shields.io/npm/dm/element-plus?color=%235588cc&label="></td>
4246
<td><a href="https://www.npmjs.com/package/element-ui" target="_blank" rel="noopener noreferrer">npm</a> <img alt="npm monthly downloads" src="https://img.shields.io/npm/dm/element-ui?color=%235588cc&label="></td>
4347
</tr>
44-
<tr>
45-
<td>Quasar</td>
46-
<td><a href="https://quasar.dev/components" target="_blank" rel="noopener noreferrer">docs</a></td>
47-
<td><a href="https://www.npmjs.com/package/quasar" target="_blank" rel="noopener noreferrer">npm</a> <img alt="npm monthly downloads" src="https://img.shields.io/npm/dm/quasar?color=%235588cc&label="></td>
48-
<td><img :src="tick" alt="Tick">&nbsp;Yes</td>
49-
</tr>
50-
<tr>
51-
<td>Headless UI<sup><a href="#component-libraries-notes">2</a></sup></td>
52-
<td><a href="https://headlessui.dev/" target="_blank" rel="noopener noreferrer">docs</a></td>
53-
<td><a href="https://www.npmjs.com/package/@headlessui/vue" target="_blank" rel="noopener noreferrer">npm</a> <img alt="npm monthly downloads" src="https://img.shields.io/npm/dm/@headlessui/vue?color=%235588cc&label="></td>
54-
<td><img :src="cross" alt="Cross">&nbsp;No</td>
55-
</tr>
5648
<tr>
5749
<td>PrimeVue</td>
5850
<td><a href="https://primevue.org/installation" target="_blank" rel="noopener noreferrer">docs</a></td>
5951
<td><a href="https://www.npmjs.com/package/primevue" target="_blank" rel="noopener noreferrer">npm</a> <img alt="npm monthly downloads" src="https://img.shields.io/npm/dm/primevue?color=%235588cc&label="></td>
6052
<td><img :src="tick" alt="Tick">&nbsp;Yes</td>
6153
</tr>
54+
<tr>
55+
<td>Quasar</td>
56+
<td><a href="https://quasar.dev/components" target="_blank" rel="noopener noreferrer">docs</a></td>
57+
<td><a href="https://www.npmjs.com/package/quasar" target="_blank" rel="noopener noreferrer">npm</a> <img alt="npm monthly downloads" src="https://img.shields.io/npm/dm/quasar?color=%235588cc&label="></td>
58+
<td><img :src="tick" alt="Tick">&nbsp;Yes</td>
59+
</tr>
6260
<tr>
6361
<td>Ant Design Vue</td>
6462
<td><a href="https://www.antdv.com/components/overview/" target="_blank" rel="noopener noreferrer">docs</a></td>
6563
<td><a href="https://www.npmjs.com/package/ant-design-vue" target="_blank" rel="noopener noreferrer">npm</a> <img alt="npm monthly downloads" src="https://img.shields.io/npm/dm/ant-design-vue?color=%235588cc&label="></td>
6664
<td><img :src="tick" alt="Tick">&nbsp;Yes</td>
6765
</tr>
6866
<tr>
69-
<td>Vant<sup><a href="#component-libraries-notes">3</a></sup></td>
67+
<td>Vant<sup><a href="#component-libraries-notes">2</a></sup></td>
7068
<td><a href="https://vant-ui.github.io/vant" target="_blank" rel="noopener noreferrer">docs</a></td>
7169
<td><a href="https://www.npmjs.com/package/vant" target="_blank" rel="noopener noreferrer">npm</a> <img alt="npm monthly downloads" src="https://img.shields.io/npm/dm/vant?color=%235588cc&label="></td>
7270
<td><img :src="tick" alt="Tick">&nbsp;Yes</td>
@@ -78,11 +76,23 @@ const tick = './images/tick.svg'
7876
<td><img :src="cross" alt="Cross">&nbsp;No</td>
7977
</tr>
8078
<tr>
81-
<td>bootstrap-vue-next<sup><a href="#component-libraries-notes">4</a></sup></td>
79+
<td>bootstrap-vue-next<sup><a href="#component-libraries-notes">3</a></sup></td>
8280
<td><a href="https://bootstrap-vue-next.github.io/bootstrap-vue-next/" target="_blank" rel="noopener noreferrer">docs</a></td>
8381
<td><a href="https://www.npmjs.com/package/bootstrap-vue-next" target="_blank" rel="noopener noreferrer">npm</a> <img alt="npm monthly downloads" src="https://img.shields.io/npm/dm/bootstrap-vue-next?color=%235588cc&label="></td>
8482
<td><img :src="cross" alt="Cross">&nbsp;No</td>
8583
</tr>
84+
<tr>
85+
<td>Vuestic UI</td>
86+
<td><a href="https://ui.vuestic.dev/" target="_blank" rel="noopener noreferrer">docs</a></td>
87+
<td><a href="https://www.npmjs.com/package/vuestic-ui" target="_blank" rel="noopener noreferrer">npm</a> <img alt="npm monthly downloads" src="https://img.shields.io/npm/dm/vuestic-ui?color=%235588cc&label="></td>
88+
<td><img :src="cross" alt="Cross">&nbsp;No</td>
89+
</tr>
90+
<tr>
91+
<td>Flowbite Vue<sup><a href="#component-libraries-notes">4</a></sup></td>
92+
<td><a href="https://flowbite-vue.com/" target="_blank" rel="noopener noreferrer">docs</a></td>
93+
<td><a href="https://www.npmjs.com/package/flowbite-vue" target="_blank" rel="noopener noreferrer">npm</a> <img alt="npm monthly downloads" src="https://img.shields.io/npm/dm/flowbite-vue?color=%235588cc&label="></td>
94+
<td><img :src="cross" alt="Cross">&nbsp;No</td>
95+
</tr>
8696
<tr>
8797
<td>Oruga UI<sup><a href="#component-libraries-notes">5</a></sup></td>
8898
<td><a href="https://oruga.io/documentation/" target="_blank" rel="noopener noreferrer">docs</a></td>
@@ -97,7 +107,79 @@ const tick = './images/tick.svg'
97107
**Notes:**
98108

99109
1. Vuetify 3 is compatible with Vue 3. Vuetify 3.0.0 was released at the end of October 2022 and is still missing some important features relative to earlier versions.
100-
2. Headless UI isn't really comparable to the other libraries on the list, but it does attempt to solve similar problems and it is easily popular enough to warrant a mention.
101-
3. Vant targets mobile browsers and isn't generally suitable for desktop applications.
102-
4. bootstrap-vue-next started out as bootstrap-vue-3, <a href="https://www.npmjs.com/package/bootstrap-vue-3" target="_blank" rel="noopener noreferrer">npm</a> <img alt="npm monthly downloads" src="https://img.shields.io/npm/dm/bootstrap-vue-3?color=%235588cc&label=">. It was an independent rewrite of BootstrapVue: <a href="https://bootstrap-vue.org/" target="_blank" rel="noopener noreferrer">docs</a>, <a href="https://www.npmjs.com/package/bootstrap-vue" target="_blank" rel="noopener noreferrer">npm</a> <img alt="npm monthly downloads" src="https://img.shields.io/npm/dm/bootstrap-vue?color=%235588cc&label=">, which was a very popular Vue 2 component library. In late 2022, BootstrapVue announced work on Vue 3 compatibility, <https://bootstrap-vue.org/vue3>. In early 2023, bootstrap-vue-3 was renamed to bootstrap-vue-next.
110+
2. Vant targets mobile browsers and isn't generally suitable for desktop applications.
111+
3. bootstrap-vue-next started out as bootstrap-vue-3, <a href="https://www.npmjs.com/package/bootstrap-vue-3" target="_blank" rel="noopener noreferrer">npm</a> <img alt="npm monthly downloads" src="https://img.shields.io/npm/dm/bootstrap-vue-3?color=%235588cc&label=">. It was an independent rewrite of BootstrapVue: <a href="https://bootstrap-vue.org/" target="_blank" rel="noopener noreferrer">docs</a>, <a href="https://www.npmjs.com/package/bootstrap-vue" target="_blank" rel="noopener noreferrer">npm</a> <img alt="npm monthly downloads" src="https://img.shields.io/npm/dm/bootstrap-vue?color=%235588cc&label=">, which was a very popular Vue 2 component library. In late 2022, BootstrapVue announced work on Vue 3 compatibility, <https://bootstrap-vue.org/vue3>. In early 2023, bootstrap-vue-3 was renamed to bootstrap-vue-next.
112+
4. Flowbite Vue provides Vue components built using Flowbite. Flowbite itself is conceptually similar to Bootstrap or Buefy and is framework-agnostic.
103113
5. The Vue 2 library Buefy: <a href="https://buefy.org/" target="_blank" rel="noopener noreferrer">docs</a>, <a href="https://www.npmjs.com/package/buefy" target="_blank" rel="noopener noreferrer">npm</a> <img alt="npm monthly downloads" src="https://img.shields.io/npm/dm/buefy?color=%235588cc&label=">, combines Vue with Bulma. The lead maintainer of that project also maintains Oruga UI and recommends using Oruga as the successor to Buefy for Vue 3.
114+
115+
## Unstyled Vue components
116+
117+
These libraries provide Vue components without styling. They can be used to build your own component library.
118+
119+
<table>
120+
<thead>
121+
<tr><th>Name</th><th>docs</th><th>npm</th><th>Vue 2?</th></tr>
122+
</thead>
123+
<tbody>
124+
<tr>
125+
<td>Headless UI</td>
126+
<td><a href="https://headlessui.dev/" target="_blank" rel="noopener noreferrer">docs</a></td>
127+
<td><a href="https://www.npmjs.com/package/@headlessui/vue" target="_blank" rel="noopener noreferrer">npm</a> <img alt="npm monthly downloads" src="https://img.shields.io/npm/dm/@headlessui/vue?color=%235588cc&label="></td>
128+
<td><img :src="cross" alt="Cross">&nbsp;No</td>
129+
</tr>
130+
<tr>
131+
<td>Radix Vue</td>
132+
<td><a href="https://www.radix-vue.com/" target="_blank" rel="noopener noreferrer">docs</a></td>
133+
<td><a href="https://www.npmjs.com/package/radix-vue" target="_blank" rel="noopener noreferrer">npm</a> <img alt="npm monthly downloads" src="https://img.shields.io/npm/dm/radix-vue?color=%235588cc&label="></td>
134+
<td><img :src="cross" alt="Cross">&nbsp;No</td>
135+
</tr>
136+
</tbody>
137+
</table>
138+
139+
There are also collections of example Vue components that use these two libraries:
140+
141+
* [Tailwind UI](https://tailwindui.com/) - Headless UI and Tailwind CSS.
142+
* [shadcn-vue](https://www.shadcn-vue.com/) - Radix Vue.
143+
144+
## CSS frameworks
145+
146+
The CSS frameworks listed here are not specifically tied to Vue.
147+
148+
daisyUI extends Tailwind CSS, adding utility classes for writing components.
149+
150+
Flowbite is conceptually similar to Bootstrap or Bulma, but built using Tailwind CSS.
151+
152+
<table>
153+
<thead>
154+
<tr><th>Name</th><th>docs</th><th>npm</th></tr>
155+
</thead>
156+
<tbody>
157+
<tr>
158+
<td>Tailwind CSS</td>
159+
<td><a href="https://tailwindcss.com/" target="_blank" rel="noopener noreferrer">docs</a></td>
160+
<td><a href="https://www.npmjs.com/package/tailwindcss" target="_blank" rel="noopener noreferrer">npm</a> <img alt="npm monthly downloads" src="https://img.shields.io/npm/dm/tailwindcss?color=%235588cc&label="></td>
161+
</tr>
162+
<tr>
163+
<td>Bootstrap</td>
164+
<td><a href="https://getbootstrap.com/" target="_blank" rel="noopener noreferrer">docs</a></td>
165+
<td><a href="https://www.npmjs.com/package/bootstrap" target="_blank" rel="noopener noreferrer">npm</a> <img alt="npm monthly downloads" src="https://img.shields.io/npm/dm/bootstrap?color=%235588cc&label="></td>
166+
</tr>
167+
<tr>
168+
<td>Bulma</td>
169+
<td><a href="https://bulma.io/" target="_blank" rel="noopener noreferrer">docs</a></td>
170+
<td><a href="https://www.npmjs.com/package/bulma" target="_blank" rel="noopener noreferrer">npm</a> <img alt="npm monthly downloads" src="https://img.shields.io/npm/dm/bulma?color=%235588cc&label="></td>
171+
</tr>
172+
<tr>
173+
<td>daisyUI</td>
174+
<td><a href="https://daisyui.com/" target="_blank" rel="noopener noreferrer">docs</a></td>
175+
<td><a href="https://www.npmjs.com/package/daisyui" target="_blank" rel="noopener noreferrer">npm</a> <img alt="npm monthly downloads" src="https://img.shields.io/npm/dm/daisyui?color=%235588cc&label="></td>
176+
</tr>
177+
<tr>
178+
<td>Flowbite</td>
179+
<td><a href="https://flowbite.com/" target="_blank" rel="noopener noreferrer">docs</a></td>
180+
<td><a href="https://www.npmjs.com/package/flowbite" target="_blank" rel="noopener noreferrer">npm</a> <img alt="npm monthly downloads" src="https://img.shields.io/npm/dm/flowbite?color=%235588cc&label="></td>
181+
</tr>
182+
</tbody>
183+
</table>
184+
185+
All of these libraries can be used with Vue, but some of them include their own JavaScript code to add interactivity, which may clash with Vue. You'll likely need to implement that interactivity yourself instead, or use one of the Vue integrations listed earlier in [Styled Vue components](#styled-vue-components).

0 commit comments

Comments
 (0)