npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

winvel-ui

v1.0.26

Published

Vue.js UI component library built on PrimeVue - focusing on DataTable components

Downloads

125

Readme

WinvelUI

A Vue.js UI component library built on top of PrimeVue, focusing on enhanced DataTable components with advanced filtering capabilities.

Features

  • 🚀 WDataTable: Enhanced DataTable wrapper with pagination, sorting, and filtering
  • 📊 WMetricCard: Beautiful metric cards for displaying statistics and KPIs
  • ⚠️ WInactiveAlert: Modern alert banners for inactive/disabled items with customizable styling
  • 🔍 Advanced Filters: Search, date range, boolean, select, and custom filters
  • 🎯 Fluent API: Easy-to-use FilterConfigBuilder for dynamic filter configurations
  • 📱 Responsive: Built with responsive design in mind
  • Performance: Optimized with debouncing and efficient rendering
  • 🔗 Inertia.js Integration: Seamless integration with Laravel Inertia.js applications

Installation

npm install winvel-ui

Peer Dependencies

Make sure you have the following peer dependencies installed:

npm install vue@^3.2.0 primevue@^4.0.0 primeicons@^5.0.0

Also install Tailwind CSS and related packages:

npm install -D tailwindcss postcss autoprefixer

Tailwind CSS Configuration

Since winvel-ui uses Tailwind CSS, you must configure your consuming project's tailwind.config.js to scan the package's component files. This ensures Tailwind CSS generates all the utility classes used in winvel-ui components.

module.exports = {
  content: [
    './vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php',
    './storage/framework/views/*.php',
    './resources/views/**/*.blade.php',
    './resources/js/**/*.vue',
    // For local monorepo development
    '../packages/winvel-ui/src/**/*.{vue,js,ts,jsx,tsx}',
    // For npm package installations
    './node_modules/winvel-ui/src/**/*.{vue,js,ts,jsx,tsx}',
  ],
  theme: {
    extend: {},
  },
  plugins: [],
}

Important: CSS is generated by your consuming project, not bundled with the package. Make sure to include the content patterns above, or Tailwind classes from winvel-ui components won't be generated.

Quick Start

<template>
  <WDataTable
    :data="users"
    :filters="filters"
    :loading="loading"
    :total="total"
    @update:filters="handleFilterUpdate"
  >
    <Column field="name" header="Name" :sortable="true" />
    <Column field="email" header="Email" />
    <Column field="created_at" header="Created" :sortable="true" />
  </WDataTable>

  <!-- Show inactive alert for disabled users -->
  <WInactiveAlert
    v-if="user.disabled"
    title="Usuário Inativo"
    description="Este usuário encontra-se atualmente inativo no sistema."
  >
    <template #cards>
      <WInactiveAlertCard
        label="Data de Desativação"
        :value="user.disabled_date"
        value-type="date"
        icon-class="fas fa-calendar-times"
      />
      <WInactiveAlertCard
        label="Motivo"
        :value="user.disabled_reason"
        icon-class="fas fa-comment-alt"
        :multiline="true"
      />
    </template>
  </WInactiveAlert>
</template>

<script setup>
import { WDataTable, WInactiveAlert, WInactiveAlertCard } from 'winvel-ui'
import { Column } from 'primevue/column'

// Your component logic here
</script>

Components

WDataTable

Enhanced DataTable component with built-in pagination, sorting, and filtering capabilities.

WMetricCard

Beautiful metric cards for displaying statistics, KPIs, and key metrics with customizable colors, icons, and formatting.

Props:

  • label (String, required): The card label/title
  • value (Number|String, required): The metric value to display
  • subtitle (String): Optional subtitle text
  • icon (String): PrimeIcons icon class (e.g., 'pi pi-users')
  • color (String): Color theme - 'blue', 'green', 'red', 'yellow', 'purple', 'indigo', 'gray'
  • prefix (String): Text to prepend to the value
  • suffix (String): Text to append to the value
  • valueColor (String): Override value text color
  • formatValue (Function): Custom formatting function for the value
  • customClass (String): Additional CSS classes

Example:

<WMetricCard
  label="Current Balance"
  :value="123.5"
  icon="pi pi-wallet"
  color="blue"
  :value-color="value >= 0 ? 'green' : 'red'"
  suffix="h"
  subtitle="Bank Hours Balance"
/>

WInactiveAlert

Modern alert banner for displaying inactive/disabled items with customizable styling and color variants.

Props:

  • show (Boolean): Whether to show the alert (default: true)
  • title (String): The main title of the alert (default: 'Item Inativo')
  • description (String): Description text below the title
  • badgeText (String): Text displayed in the status badge (default: 'Inativo')
  • iconClass (String): FontAwesome icon class for the main icon (default: 'fas fa-user-times')
  • variant (String): Color theme - 'red', 'yellow', 'orange', 'gray' (default: 'red')

Slots:

  • cards: Slot for WInactiveAlertCard components

Example:

<WInactiveAlert
  title="Colaborador Inativo"
  description="Este colaborador encontra-se atualmente inativo no sistema."
  badge-text="Inativo"
  icon-class="fas fa-user-times"
>
  <template #cards>
    <WInactiveAlertCard
      label="Data de Saída"
      :value="colaborador.data_saida"
      value-type="date"
      icon-class="fas fa-calendar-times"
    />
    <WInactiveAlertCard
      label="Motivo da Saída"
      :value="colaborador.motivo_saida"
      icon-class="fas fa-comment-alt"
      :multiline="true"
    />
  </template>
</WInactiveAlert>

WInactiveAlertCard

Information cards designed to work within WInactiveAlert, displaying key-value pairs with icons and formatting.

Props:

  • label (String, required): The label text displayed above the value
  • value (String|Number|Date): The main value to display
  • emptyText (String): Text to show when value is empty (default: 'Não especificado')
  • iconClass (String): FontAwesome icon class (default: 'fas fa-info-circle')
  • multiline (Boolean): Whether this is a multiline card (affects icon alignment)
  • valueType (String): Formatting type - 'text', 'date', 'datetime', 'number' (default: 'text')
  • variant (String): Color theme - 'red', 'yellow', 'orange', 'gray', 'blue', 'green' (default: 'red')

Value Types:

  • text: Display as-is
  • date: Format as Portuguese date (e.g., "15 de janeiro de 2024")
  • datetime: Format as Portuguese date and time
  • number: Format with Portuguese number formatting

Example:

<!-- Date card -->
<WInactiveAlertCard
  label="Data de Saída"
  :value="new Date('2024-01-15')"
  value-type="date"
  icon-class="fas fa-calendar-times"
/>

<!-- Text card with multiline support -->
<WInactiveAlertCard
  label="Motivo da Saída"
  value="Mudança para outra empresa devido a melhores oportunidades de carreira"
  :multiline="true"
  icon-class="fas fa-comment-alt"
/>

<!-- Number card -->
<WInactiveAlertCard
  label="Usuários Afetados"
  :value="1250"
  value-type="number"
  icon-class="fas fa-users"
/>

<!-- Empty value card -->
<WInactiveAlertCard
  label="Observações"
  :value="null"
  empty-text="Nenhuma observação"
  icon-class="fas fa-sticky-note"
/>

WDataTableFilters

Dynamic filter system that works with FilterConfigBuilder for flexible filter configurations.

FilterConfigBuilder

Fluent API for building complex filter configurations:

import { FilterConfigBuilder } from 'winvel-ui'

const filterConfig = new FilterConfigBuilder()
  .search()
  .dateRange()
  .boolean('active', { label: 'Active Users' })
  .select('role', 'Role', [
    { value: 'admin', label: 'Admin' },
    { value: 'user', label: 'User' }
  ])
  .build()

Documentation

For detailed documentation and examples, visit our documentation site.

License

MIT