vue-rolekit

Componentes Vue 3 con estilo propio y modo claro y oscuro: formularios, datos, navegación y feedback.
Install
npm install vue-rolekit
Latest Version:1.0.3
Vue:3
License:MIT
Last Updated:Oct 15, 2026
Links: GitHub  ·  npm
Maintainer: jsalascan

vue-rolekit

Componentes Vue 3 con estilo propio y modo claro y oscuro: formularios, datos, navegación y feedback. Tipados con TypeScript y sin dependencias de CSS externas.

Documentación y ejemplos: https://jsalascan.github.io/vue-rolekit/

Instalación

pnpm add vue-rolekit

Uso básico

<script setup lang="ts">
import { RButton, RInput, RTable, type Column } from 'vue-rolekit'
import 'vue-rolekit/dist/vue-rolekit.css'
import { ref } from 'vue'

const name = ref('')

const columns: Column[] = [
  { key: 'name', label: 'Nombre' },
  { key: 'salary', label: 'Salario' },
]

const rows = [{ name: 'Ana', salary: '24.000 €' }]
</script>

<template>
  <RInput v-model="name" label="Nombre" />
  <RButton variant="primary">Guardar</RButton>
  <RTable :columns="columns" :rows="rows" />
</template>

Componentes

Formulario: RButton, RInput, RTextarea, RSelect, RCheckbox, RSwitch, RRadioGroup, RDatePicker.

Datos: RTable, RBadge, RCard, RAvatar, RPagination, RBreadcrumb.

Navegación: RTabs, RAccordion.

Feedback: RAlert, RSpinner, RTooltip, RProgressBar, RSkeleton, RToast (con el composable useToast), RModal.

Props y ejemplos de cada uno en la documentación.

Fuentes

Los componentes usan Public Sans e IBM Plex Mono si están disponibles y, si no, las fuentes del sistema. Para cargarlas desde el paquete:

import 'vue-rolekit/dist/fonts.css'

Tema

Los componentes siguen el modo del sistema (prefers-color-scheme). Para fijarlo, pon data-theme en <html>:

<html data-theme="light"> <!-- o "dark" -->

Si tu aplicación solo tiene modo claro, usa data-theme="light" para que los componentes no se pinten en oscuro cuando el sistema lo esté.

Todos los colores son variables CSS. Un :root tuyo las sobrescribe en los dos modos:

:root {
  --rk-accent: #0b7a5c;
}

Para dar un valor distinto en oscuro, usa los mismos selectores que la librería:

:root[data-theme='dark'] {
  --rk-accent: #6fd3b0;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme='light']) {
    --rk-accent: #6fd3b0;
  }
}
Variable Uso
--rk-bg Fondo de controles y paneles
--rk-fg Texto
--rk-muted Texto secundario, placeholders
--rk-rule Bordes y filetes
--rk-subtle Hover de filas y opciones, skeleton
--rk-accent Primario, estado activo, foco
--rk-on-accent Texto sobre accent, danger y success
--rk-danger, --rk-success, --rk-warning Variantes semánticas
--rk-radius Radio de bordes (2px)
--rk-font-sans, --rk-font-mono Public Sans e IBM Plex Mono

Cambios incompatibles en 1.0.0

  • Estética nueva en todos los componentes.
  • Variables renombradas: --rk-paper* → --rk-bg / --rk-subtle, --rk-ink → --rk-fg, --rk-ink-soft → --rk-muted, --rk-edge → --rk-rule, --rk-radius-md|lg|pill → --rk-radius. Se eliminan --rk-shadow-paper*.
  • Modo oscuro automático (ver arriba).
  • La API de los componentes (props, eventos, slots) no cambia.

Desarrollo

pnpm install
pnpm dev          # web de documentación en http://localhost:5173
pnpm test         # tests con Vitest
pnpm build        # librería (dist/) con tipos
pnpm build:site   # web de documentación (site/)

Licencia

MIT

Related Packages

@ecoma-io/loom

An Application Interface System for Vue — accessible components, design tokens a...

2,445 5
@getweini/vue

Shared behavior and styles for editable Weini UI components in Vue 3 and Nuxt.

659
@1337exp/taoui

Design-token driven Vue 3 / Nuxt component library: one size scale, dark and lig...

6,129 0
@jeesson/vibe-ui

Vibe UI — a Vue 3 component library for vibe coders: 50+ components, dark/light...

567 0
common_component_library_vue

Vue 3 + TypeScript + Vite 通用组件库,视觉规范由 DESIGN.md(Stripe 风格)定义,...

1,104 0

Version History

Version Released Vue License
1.0.3 ^3.4.0 MIT