Instalação
O Tony Components é uma biblioteca moderna de componentes Vue projetada para oferecer usabilidade, flexibilidade e design consistente. É compatível com Nuxt 3, Vite e aplicações Vue 3 convencionais.
Pré-requisitos
Antes de instalar o Tony Components, certifique-se de ter:
- Node.js 16.x ou superior
- npm 7+ ou yarn/pnpm
- Vue 3.x
- (Opcional) Nuxt 3.x para integração com Nuxt
Instalação via npm
npm install @liialabs/tony-componentsInstalação via yarn
yarn add @liialabs/tony-componentsInstalação via pnpm
pnpm add @liialabs/tony-componentsConfiguração
Nuxt 3
- Adicione o módulo ao seu arquivo
nuxt.config.ts:
export default defineNuxtConfig({
modules: [
'tony-components',
],
tonyComponents: {
darkMode: true, // Ativar tema escuro
useTony: true, // Ativar o tema global
useLayout: true, // Ativar layouts
useComponents: true, // Ativar componentes
useForms: true, // Ativar formulários
useInertia: false, // Desativar suporte ao Inertia.js
},
});- Execute o servidor de desenvolvimento:
npm run devAplicações Vue com Vite
- Importe e registre o plugin no arquivo
vite.config.ts:
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';
import TonyComponents from 'tony-components';
export default defineConfig({
plugins: [
vue(),
TonyComponents({
useTony: true, // Ativar o tema global
useLayout: true, // Ativar layouts
useComponents: true, // Ativar componentes
useForms: true, // Ativar formulários
useInertia: false, // Desativar suporte ao Inertia.js
}),
],
});- Execute o servidor de desenvolvimento
npm run devVue 3 com Webpack
Para projetos Vue 3 que utilizam Webpack, você precisa registrar os componentes manualmente:
- Crie um arquivo de plugin
plugins/tony-components.js:
import { tonyComponents } from '@liialabs/tony-components';
export default {
install: (app) => {
app.use(tonyComponents, {
darkMode: true,
useTony: true,
useComponents: true,
useForms: true,
});
}
};- Importe o plugin no seu arquivo
main.js
import { createApp } from 'vue';
import App from './App.vue';
import tonyComponents from './plugins/tony-components';
// Importar estilos (se necessário)
import '@liialabs/tony-components/dist/style.css';
const app = createApp(App);
app.use(tonyComponents);
app.mount('#app');Arquivo de Configuração
O Tony Components usa um sistema flexível de configuração através do arquivo tony.configuration.json. Este arquivo permite personalizar aspectos como:
- Paleta de cores
- Tipografia
- Espaçamento
- Breakpoints responsivos
- Estilos de componentes
Exemplo de configuração básica
Crie um arquivo tony.configuration.json na raiz do seu projeto:
{
"theme": {
"colors": {
"primary": "#3498db",
"secondary": "#2ecc71",
"accent": "#9b59b6",
"info": "#3498db",
"success": "#2ecc71",
"warning": "#f39c12",
"error": "#e74c3c",
"text": "#2c3e50",
"background": "#ffffff",
"customColor1": "#1abc9c"
},
"typography": {
"fontFamily": "'Roboto', sans-serif",
"fontSize": {
"base": "16px",
"small": "0.875rem",
"large": "1.125rem"
}
},
"spacing": {
"base": "1rem",
"xs": "0.25rem",
"sm": "0.5rem",
"md": "1rem",
"lg": "1.5rem",
"xl": "2rem"
}
}
}Fluxo de Transformação O arquivo de configuração é processado automaticamente durante o build, gerando variáveis TypeScript e SCSS que são usadas em toda a biblioteca. Isto garante consistência entre o código e os estilos.
Para mais detalhes sobre o sistema de transformação, consulte a seção de temas.
Uso Básico
Após a instalação e configuração, você pode utilizar os componentes do Tony Components diretamente nos seus arquivos Vue:
<template>
<TCard>
<TCardHeader>Meu Card</TCardHeader>
<TCardBody>
<p>Conteúdo do card</p>
<TButton flavor="primary">Clique Aqui</TButton>
</TCardBody>
</TCard>
</template>No Vue, existe uma convenção importante sobre como os nomes de componentes são tratados. Quando você registra um componente em camelCase (por exemplo, TCard), o Vue automaticamente o converte para kebab-case (por exemplo, t-card) quando usado no template.
Ambas as Sintaxes são válidas
HTML é insensível a maiúsculas e minúsculas. Isso significa que, no contexto de um arquivo .vue, o navegador não diferencia entre <TCard> e <t-card>. Para evitar ambiguidades e seguir as convenções do HTML, o Vue converte automaticamente os nomes de componentes camelCase para kebab-case.
<template>
<t-card>
<t-card-header>Meu Card</t-card-header>
<t-card-body>
<p>Conteúdo do card</p>
<t-button flavor="primary">Clique Aqui</t-button>
</t-card-body>
</t-card>
</template>Quando usar cada formato?
CamelCase: É mais comum em arquivos
.vuequando você quer manter consistência com o nome do componente no código JavaScript.kebab-case: É preferido em templates HTML, pois segue as convenções do HTML e é mais legível para desenvolvedores acostumados com o padrão de tags HTML
Verificando a Instalação
Para verificar se o Tony Components está corretamente instalado e funcional, crie um componente de teste:
<template>
<div class="test-container">
<h2>Teste do Tony Components</h2>
<div class="button-row">
<t-button>Botão Padrão</t-button>
<t-button flavor="primary">Botão Primário</t-button>
<t-button flavor="secondary">Botão Secundário</t-button>
<t-button flavor="accent">Botão Accent</t-button>
</div>
<div class="card-example">
<t-card>
<t-card-header>Exemplo de Card</t-card-header>
<t-card-body>
<p>Se você estiver vendo este card com estilos aplicados, o Tony Components está funcionando corretamente!</p>
<t-button flavor="success">Sucesso!</t-button>
</t-card-body>
</t-card>
</div>
</div>
</template>
<style scoped>
.test-container {
padding: 20px;
max-width: 800px;
margin: 0 auto;
}
.button-row {
display: flex;
gap: 10px;
margin-bottom: 20px;
}
.card-example {
margin-top: 30px;
}
</style>Se os botões forem renderizados com os estilos do Tony Components, a instalação foi bem-sucedida!
Próximos Passos
Agora que você instalou o Tony Components, recomendamos:
- Explorar a estrutura de diretórios para entender a organização da biblioteca
- Aprender sobre a integração com Vue e integração com Laravel
- Personalizar a aparência através da configuração
- Criar seu primeiro app com Tony Components
Problemas Comuns
Os componentes não estão sendo reconhecidos
Certifique-se de que:
- Você registrou corretamente o plugin
- Todos os imports estão corretos
- Você está usando a versão correta do Vue (Vue 3+)
Os Estilos não estão sendo aplicados
Verifique se:
- Os arquivos CSS foram importados corretamente
- Não há conflitos com outros frameworks CSS
- O arquivo de configuração está na localização correta

