bocins
Bocins
Collection of reusable UI components for Vue 3 that can be used standalone or combined together to create flexible and customized interfaces. The term bocins is derived from catalan and means small bits or pieces of something.
Explore all components in Storybook.
Get started
Install the library
npm i bocins
By default, Lucide icons are used. To load icons from a custom path (e.g., a CDN), configure the icon path before importing components:
// main.ts
import { config } from 'bocins';
// Configure icon path BEFORE using any components
config.iconPath = 'https://cdn.example.com/icons'; // CDN
config.iconPath = '/my-custom-icons'; // Custom local path
Import styles in your app entry point file or in your styles entry point
// main.ts
import 'bocins/dist/index.css';
// main.css
@import 'bocins/dist/index.css';
You can customize the theme using CSS custom properties and extending some base styles. See the full list of available custom properties in the Theming reference or in the Storybook docs.
:root {
font-size: 16px;
font-family: system-ui, Arial, sans-serif;
color-scheme: light dark;
--bg-color: light-dark(#f8f8f8, #333);
--text-color: light-dark(#333, #efefec);
--error-color: #d33;
--accent-color: #39f;
--btn-color: var(--accent-color);
}
body {
background-color: var(--bg-color);
color: var(--text-color);
}
.btn[delete] { --color: var(--error-color); }
.switch {
--on-color: lightgreen;
--off-color: var(--error-color);
}
Usage
Import and use components directly in your vue files
<template>
<Selector v-model="user" :options="store.users">
<template #default="{ item: user }">
<Avatar :src="user.avatar" :name="user.name" />
{{ user.name }}
</template>
</Selector>
</template>
<script setup lang="ts">
import { ref } from 'vue';
import { Selector, Avatar } from 'bocins';
import store, { type User } from './store';
const user = ref<User>();
</script>
<style scoped>
.avatar { --size: 1.5rem; }
</style>
Claude Code Skill
A Claude Code skill is available in skills/use-bocins-ui/ to help AI assistants follow Bocins best practices when working in projects that use this library. It enforces correct import patterns, component usage, styling conventions, and composition patterns.
Related Packages
Version History
| Version | Released | Vue | License |
|---|---|---|---|
| 3.0.1 | ^3.3.0 | ISC | |
| 3.0.0 | ^3.3.0 | ISC | |
| 2.8.5 | ^3.3.0 | ISC | |
| 2.8.4 | ^3.3.0 | ISC | |
| 2.8.3 | ^3.3.0 | ISC | |
| 2.8.2 | ^3.3.0 | ISC | |
| 2.8.1 | ^3.3.0 | ISC | |
| 2.8.0 | ^3.3.0 | ISC | |
| 2.7.0 | ^3.3.0 | ISC | |
| 2.6.1 | ^3.3.0 | ISC | |
| 2.6.0 | ^3.3.0 | ISC | |
| 2.5.2 | ^3.3.0 | ISC | |
| 2.5.1 | ^3.3.0 | ISC | |
| 2.5.0 | ^3.3.0 | ISC | |
| 2.4.1 | ^3.3.0 | ISC | |
| 2.4.0 | ^3.3.0 | ISC | |
| 2.3.0 | ^3.3.0 | ISC | |
| 2.2.0 | ^3.3.0 | ISC | |
| 2.1.0 | ^3.3.0 | ISC | |
| 2.0.1 | ^3.3.0 | ISC | |
| 2.0.0 | ^3.3.0 | ISC | |
| 1.5.0 | ^3.3.0 | ISC | |
| 1.4.5 | ^3.3.0 | ISC | |
| 1.4.4 | ^3.3.0 | ISC | |
| 1.4.3 | ^3.3.0 | ISC | |
| 1.4.2 | ^3.3.0 | ISC | |
| 1.4.1 | ^3.3.0 | ISC | |
| 1.4.0 | ^3.3.0 | ISC | |
| 1.3.1 | ^3.3.4 | ISC | |
| 1.3.0 | ^3.3.4 | ISC |
Showing the latest 30 of 39. See every release on npm
Pre-releases (7)
| Version | Released | Vue | License |
|---|---|---|---|
| 3.0.0-rc.5 | ^3.3.0 | ISC | |
| 3.0.0-rc.4 | ^3.3.0 | ISC | |
| 3.0.0-rc.3 | ^3.3.0 | ISC | |
| 3.0.0-rc.2 | ^3.3.0 | ISC | |
| 3.0.0-rc.1 | ^3.3.0 | ISC | |
| 3.0.0-rc.0 | ^3.3.0 | ISC | |
| 2.0.0-alpha-0 | ^3.3.0 | ISC |