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

@datametria/vue-components

v2.4.3

Published

DATAMETRIA Vue.js 3 Component Library with Multi-Brand Theming - 51 components + 10 composables with theming support, WCAG 2.2 AA, dark mode, responsive system, COMPONENT_STANDARDS.md compliant

Readme

@datametria/vue-components

DATAMETRIA Vue Components

Vue.js Component Library com Sistema de Theming Multi-Brand/Multi-Tenant

Build Status Coverage License Version Vue.js TypeScript DATAMETRIA Amazon Q

🚀 Demo📖 Documentação🐛 Reportar Bug💡 Solicitar Feature🔄 Migration Guide

Versão: 2.4.3 Data: 23/12/2025 Autor: Vander Loto - CTO DATAMETRIA


📋 Índice


🎯 Sobre o Projeto

Visão Geral

Biblioteca completa de componentes Vue.js 3 com suporte a theming multi-brand/multi-tenant, design system DATAMETRIA e compliance WCAG 2.1 AA. Desenvolvida com foco em reutilização, qualidade e performance.

Objetivos

  • 🎨 Theming Flexível: Sistema multi-brand/multi-tenant com CSS Variables
  • 📱 Backward Compatible: 100% compatível com v1.x
  • ⚡ Performance: Zero overhead, bundle otimizado
  • ♿ Acessibilidade: WCAG 2.1 AA compliant
  • 🧪 Qualidade: 98.2% cobertura de testes

Benefícios

  • 51 Componentes: Com theming integrado
  • 10 Composables: Hooks reutilizáveis
  • TypeScript: Type safety completo
  • Responsive: Mobile-first design
  • Dark Mode: Suporte nativo
  • Tree Shaking: Bundle otimizado

🌟 Novidades v2.0

Sistema de Theming Multi-Brand/Multi-Tenant

  • 🎨 ThemeProvider: Componente para gerenciar temas
  • 🔄 CSS Variables: Tokens customizáveis com fallback automático
  • 🎯 useTheme: Composable para acessar tema
  • 🏢 Multi-Tenant: Suporte a múltiplas marcas simultaneamente
  • 📱 Backward Compatible: 100% compatível com v1.x

Novidades v2.3.0

  • 🌙 Dark Mode Híbrido (50/50 componentes - 100%)

    • Suporte completo a dark mode em todos os componentes
    • Controle manual via useTheme() composable
    • Fallback automático via @media (prefers-color-scheme: dark)
    • Sincronização entre tabs via localStorage
    • Persistência de preferência do usuário
    • Zero breaking changes
    • 📖 Guia Completo
  • 🚀 3 Novos Componentes de Feedback e Navegação

    • DatametriaDropdown: Menu dropdown com triggers (click/hover/contextmenu) e nested menus
    • DatametriaEmpty: Estado vazio com 3 imagens SVG padrão (no-data, no-results, error)
    • DatametriaTree: Árvore hierárquica com expand/collapse e checkbox selection
    • 92 testes unitários (100% pass rate)
    • Coverage média: 94.72% statements, 88.86% branches
    • Sprint 19: 100% completo (4/4 componentes)

Novidades v2.2.0

  • 🔍 Filtros Avançados DatametriaSortableTable
    • 4 tipos de filtro: text, date, select, multiselect
    • filterOptions: 'auto' para geração automática
    • Detecção automática de Date objects
    • Correção: espaços no filtro de texto

Novidades v2.1.0

  • 🏗️ Novos Componentes de Navegação
    • DatametriaSidebar: Sidebar lateral com colapso
    • DatametriaFloatingBar: Barra flutuante para ações rápidas
  • ⬆️ DatametriaTabs Melhorado
    • Variantes: default, pills, underline
    • Orientação: horizontal e vertical
    • Ícones, badges e tabs desabilitáveis
  • 🧪 Testes: +62 testes (100% coverage)
  • 📚 Documentação: 3 novos guias completos

📦 Instalação

Nova Instalação

NPM

npm install @datametria/vue-components@latest

Yarn

yarn add @datametria/vue-components@latest

PNPM

pnpm add @datametria/vue-components@latest

Atualizar Versão Anterior

Se você já tem uma versão anterior instalada, use os comandos abaixo para atualizar:

NPM

# Atualizar para última versão
npm update @datametria/vue-components@latest

# Ou forçar reinstalação
npm uninstall @datametria/vue-components
npm install @datametria/vue-components@latest

Yarn

# Atualizar para última versão
yarn upgrade @datametria/vue-components@latest

# Ou forçar reinstalação
yarn remove @datametria/vue-components
yarn add @datametria/vue-components@latest

PNPM

# Atualizar para última versão
pnpm update @datametria/vue-components@latest

# Ou forçar reinstalação
pnpm remove @datametria/vue-components
pnpm add @datametria/vue-components@latest

Verificar Versão Instalada

# NPM
npm list @datametria/vue-components

# Yarn
yarn list @datametria/vue-components

# PNPM
pnpm list @datametria/vue-components

Pré-requisitos

  • Vue.js: 3.3+
  • Node.js: 18+
  • TypeScript: 5.3+ (opcional, mas recomendado)

🚀 Uso Básico

Importar CSS

// main.ts ou main.js
import '@datametria/vue-components/style.css'

Sem Theming (v1.x compatível)

<template>
  <div>
    <DatametriaButton variant="primary">Botão Padrão</DatametriaButton>
    <DatametriaCard>
      <h3>Card Padrão</h3>
      <p>Usando design system DATAMETRIA.</p>
    </DatametriaCard>
  </div>
</template>

<script setup lang="ts">
import { DatametriaButton, DatametriaCard } from '@datametria/vue-components'
import '@datametria/vue-components/style.css'
</script>

Com Theming (v2.0)

<template>
  <ThemeProvider :theme="meuTema">
    <div>
      <DatametriaButton variant="primary">Botão Customizado</DatametriaButton>
      <DatametriaCard>
        <h3>Card Customizado</h3>
        <p>Usando tema personalizado.</p>
      </DatametriaCard>
    </div>
  </ThemeProvider>
</template>

<script setup lang="ts">
import { ThemeProvider, DatametriaButton, DatametriaCard } from '@datametria/vue-components'
import type { Theme } from '@datametria/vue-components'

const meuTema: Theme = {
  name: 'Minha Empresa',
  tokens: {
    colors: {
      primary: '#ff6b35',
      secondary: '#004e89',
      success: '#22c55e',
      warning: '#eab308',
      error: '#ef4444',
      info: '#3b82f6',
      neutral: {
        50: '#f8fafc',
        100: '#f1f5f9',
        200: '#e2e8f0',
        300: '#cbd5e1',
        400: '#94a3b8',
        500: '#64748b',
        600: '#475569',
        700: '#334155',
        800: '#1e293b',
        900: '#0f172a'
      }
    },
    typography: {
      fontFamily: {
        sans: 'Inter, sans-serif',
        mono: 'JetBrains Mono, monospace'
      },
      fontSize: {
        xs: '0.75rem',
        sm: '0.875rem',
        base: '1rem',
        lg: '1.125rem',
        xl: '1.25rem',
        '2xl': '1.5rem'
      },
      fontWeight: {
        normal: 400,
        medium: 500,
        semibold: 600,
        bold: 700
      },
      lineHeight: {
        tight: 1.25,
        normal: 1.5,
        relaxed: 1.75
      }
    },
    spacing: {
      0: '0',
      1: '0.25rem',
      2: '0.5rem',
      3: '0.75rem',
      4: '1rem',
      6: '1.5rem',
      8: '2rem',
      12: '3rem',
      16: '4rem'
    },
    radius: {
      none: '0',
      sm: '0.25rem',
      md: '0.375rem',
      lg: '0.5rem',
      full: '9999px'
    },
    shadows: {
      sm: '0 1px 2px 0 rgba(0, 0, 0, 0.05)',
      md: '0 4px 6px -1px rgba(0, 0, 0, 0.1)',
      lg: '0 10px 15px -3px rgba(0, 0, 0, 0.1)',
      xl: '0 20px 25px -5px rgba(0, 0, 0, 0.1)'
    },
    transitions: {
      fast: '150ms ease',
      base: '250ms ease',
      slow: '350ms ease'
    }
  }
}
</script>

🎨 Sistema de Theming

useTheme Composable

<template>
  <div>
    <h1 :style="{ color: theme.tokens.colors.primary }">
      Título com cor do tema
    </h1>
    <p>Tema atual: {{ theme.name }}</p>
  </div>
</template>

<script setup lang="ts">
import { useTheme } from '@datametria/vue-components'

const theme = useTheme()
</script>

Temas Pré-definidos

<script setup lang="ts">
import {
  ThemeProvider,
  datametriaTheme,
  defaultTheme
} from '@datametria/vue-components'

// Usar tema DATAMETRIA (padrão)
const tema = datametriaTheme

// Ou tema genérico
const tema = defaultTheme
</script>

Multi-Tenant

<template>
  <div>
    <select v-model="tenantAtual">
      <option value="datametria">DATAMETRIA</option>
      <option value="clienteA">Cliente A</option>
      <option value="clienteB">Cliente B</option>
    </select>

    <ThemeProvider :theme="temas[tenantAtual]">
      <MeuApp />
    </ThemeProvider>
  </div>
</template>

<script setup lang="ts">
import { ref } from 'vue'
import { datametriaTheme } from '@datametria/vue-components'

const tenantAtual = ref('datametria')
const temas = {
  datametria: datametriaTheme,
  clienteA: clienteATheme,
  clienteB: clienteBTheme
}
</script>

📚 Componentes Disponíveis

Forms & Inputs (13 componentes)

  • DatametriaButton - Botão com múltiplas variações + theming
  • DatametriaInput - Input com validação + theming
  • DatametriaPasswordInput - Input de senha com força + theming
  • DatametriaSelect - Select customizável + theming
  • DatametriaCheckbox - Checkbox estilizado + theming
  • DatametriaRadio - Radio button + theming
  • DatametriaSwitch - Toggle switch + theming
  • DatametriaTextarea - Textarea redimensionável + theming
  • DatametriaDatePicker - Seletor de data + theming
  • DatametriaTimePicker - Seletor de hora + theming
  • DatametriaSlider - Slider de valores + theming
  • DatametriaFileUpload - Upload de arquivos + theming
  • DatametriaAutocomplete - Busca com autocomplete + theming

Layout & Navigation (5 componentes)

  • DatametriaCard - Card container + theming
  • DatametriaModal - Modal dialog + theming
  • DatametriaContainer - Container responsivo + theming
  • DatametriaGrid - Sistema de grid + theming
  • DatametriaDivider - Divisor visual + theming

Feedback (6 componentes)

  • DatametriaAlert - Alertas contextuais + theming
  • DatametriaToast - Notificações toast + theming
  • DatametriaTooltip - Tooltip informativo + theming
  • DatametriaSkeleton - Loading skeleton + theming
  • DatametriaProgress - Barra de progresso + theming
  • DatametriaSpinner - Loading spinner + theming

Data Display (6 componentes)

  • DatametriaTable - Tabela básica + theming
  • DatametriaSortableTable - Tabela com ordenação e filtros avançados + theming ✨ MELHORADO v2.2
  • DatametriaAvatar - Avatar de usuário + theming
  • DatametriaBadge - Badge de status + theming
  • DatametriaChip - Chip removível + theming
  • DatametriaTree - Árvore hierárquica + theming ✨ NOVO v2.3

Feedback & Empty States (2 componentes)

  • DatametriaEmpty - Estado vazio com imagens padrão + theming ✨ NOVO v2.3
  • DatametriaResult - Resultado de operações + theming

Navigation (7 componentes)

  • DatametriaNavbar - Barra de navegação + theming
  • DatametriaSidebar - Sidebar lateral com colapso + theming ✨ NOVO v2.1
  • DatametriaFloatingBar - Barra flutuante para ações + theming ✨ NOVO v2.1
  • DatametriaMenu - Menu dropdown + theming
  • DatametriaBreadcrumb - Navegação breadcrumb + theming
  • DatametriaTabs - Abas navegáveis (melhorado v2.1) + theming
  • DatametriaDropdown - Menu dropdown com triggers + theming ✨ NOVO v2.3

Theming System (3 componentes)

  • ThemeProvider - Provider de tema
  • useTheme - Composable para acessar tema
  • Presets: datametriaTheme, defaultTheme

Total: 51 componentes + 10 composables


🎯 Características

✅ Theming v2.0

  • Multi-Brand: Suporte a múltiplas marcas
  • Multi-Tenant: Múltiplos tenants simultaneamente
  • CSS Variables: Tokens customizáveis
  • Fallback Values: Funciona sem ThemeProvider
  • Performance: Zero overhead

✅ Qualidade

  • TypeScript: Type safety completo
  • WCAG 2.1 AA: Compliance de acessibilidade
  • Responsive: Mobile-first design
  • Dark Mode: Suporte nativo
  • 98.2% Coverage: Testes automatizados

✅ Developer Experience

  • Composition API: Vue 3 nativo
  • Tree Shaking: Bundle otimizado
  • Hot Reload: Desenvolvimento rápido
  • Storybook: Documentação interativa

📖 Documentação

📚 Documentação Completa

Toda a documentação está disponível em docs/:

Guias Gerais

Documentação de Componentes

Documentação detalhada em docs/components/:

Guias de Theming

Exemplos

API Reference


🔄 Migração v1.x → v2.0

Compatibilidade

  • 100% Backward Compatible: Código v1.x funciona sem mudanças
  • Opt-in Theming: ThemeProvider é opcional
  • Zero Breaking Changes: Sem quebras de API

Migração Gradual

<!-- v1.x - Continua funcionando -->
<DatametriaButton variant="primary">Botão</DatametriaButton>

<!-- v2.0 - Com theming (opcional) -->
<ThemeProvider :theme="meuTema">
  <DatametriaButton variant="primary">Botão</DatametriaButton>
</ThemeProvider>

Consulte o Migration Guide para instruções detalhadas.


🛠️ Desenvolvimento

Scripts

# Desenvolvimento
npm run dev

# Build
npm run build

# Testes
npm run test
npm run test:coverage

# Linting
npm run lint
npm run type-check

Estrutura

src/
├── components/          # 32 componentes
├── composables/         # 10 composables
├── theme/              # Sistema de theming (novo!)
│   ├── ThemeProvider.vue
│   ├── useTheme.ts
│   ├── types.ts
│   ├── presets/
│   └── tokens/
├── types/              # Tipos TypeScript
└── index.ts            # Exports principais

Contribuindo

  1. Fork o projeto
  2. Crie uma branch para sua feature (git checkout -b feature/AmazingFeature)
  3. Commit suas mudanças (git commit -m 'Add some AmazingFeature')
  4. Push para a branch (git push origin feature/AmazingFeature)
  5. Abra um Pull Request

📊 Métricas

Performance

  • Bundle Size: ~45KB (gzipped)
  • Render Time: < 100ms
  • Theme Switch: < 50ms
  • Tree Shaking: Suporte completo

Qualidade

  • Componentes: 51 com theming
  • Composables: 10 hooks reutilizáveis
  • Cobertura: 98.2% testes
  • TypeScript: 100% tipado com arquivos .d.ts
  • Acessibilidade: WCAG 2.1 AA

Compatibilidade

  • Vue.js: 3.3+
  • Browsers: Chrome 90+, Firefox 88+, Safari 14+
  • Node.js: 18+
  • TypeScript: 5.3+

📞 Suporte

Canais de Suporte

Recursos Úteis


📄 Licença

Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.

Resumo da Licença

  • Uso Comercial: Permitido
  • Modificação: Permitida
  • Distribuição: Permitida
  • Uso Privado: Permitido

🙏 Agradecimentos

Equipe DATAMETRIA

  • Vander Loto - CTO, Arquitetura e Implementação
  • Marcelo Cunha - CEO, Visão Estratégica
  • Dalila Rodrigues - Tech Lead, Qualidade e Supervisão

Tecnologias

  • Vue.js Team - Framework incrível
  • TypeScript Team - Type safety excepcional
  • Amazon Q Developer - 90% da implementação automatizada

Desenvolvido com ❤️ pela equipe DATAMETRIA

Se este projeto te ajudou, considere dar uma estrela!