# Vue.js Wrapper for BEEQ
A lightweight utility that wraps BEEQ custom elements ("web components") so they can be seamlessly integrated into Vue applications.
## Why is this necessary?
BEEQ can generate Vue component wrappers for your web components. This allows BEEQ components to be used within a Vue 3 application. The benefits of using BEEQ's component wrappers over the standard web components include:
- Type checking with your components.
- Integration with the router link and Vue router.
- Optionally, form control web components can be used with `v-model`.
(*Adapted from the [Stencil official documentation](https://stenciljs.com/docs/vue)*)
## Package installation
> [!TIP]
> Please always refer to the [official BEEQ documentation](https://www.beeq.design/3d466e231/p/359a26-for-developers/b/53475d) for more information about the installation.
- install the package
```
npm install @beeq/{core,vue}
```
> [!NOTE]
> Make sure that you have installed the `@beeq/core` package.
### Add BEEQ styles and assets
Import BEEQ styles into your application's main style file:
```css
@import "@beeq/core/dist/beeq/beeq.css";
```
> [!TIP]
> BEEQ uses SVG icons and these assets are shipped in a separate folder. You can use the `setBasePath` method to set the path to the icons. Make sure that your project bundle the icons in a way that they are accessible from the browser.
You can move the icons from the node_modules folder to your assets folder and set the path like this:
```js
// vite.config.js
import { defineConfig } from "vite";
import vue from "@vitejs/plugin-vue";
import vueJsx from "@vitejs/plugin-vue-jsx";
import { viteStaticCopy } from "vite-plugin-static-copy";
export default defineConfig({
plugins: [
vue({
template: {
compilerOptions: {
// treat all BEEQ tags as custom elements
isCustomElement: (tag) => tag.includes("bq-"),
},
},
}),
vueJsx(),
viteStaticCopy({
targets: [
{
src: "./node_modules/@beeq/core/dist/beeq/svg/*",
dest: "assets/svg",
},
// other assets
],
}),
],
// other configurations
});
```
```js
// main.ts
import { setBasePath } from '@beeq/core';
setBasePath('icons/svg');
```
But you can also use a different icons library or a CDN:
```js
import { setBasePath } from '@beeq/core';
// Using heroicons library
setBasePath('https://cdn.jsdelivr.net/npm/heroicons@2.1.5/24/outline');
```
> [!CAUTION]
> When using a different icons library, make sure you use the correct icon names provided by the library or the CDN.
## Usage
```jsx