Ícones
O Arenito utiliza ícones da biblioteca IconPark (ByteDance), com 2600+ ícones SVG disponíveis. Os ícones usam stroke ao invés de fill, permitindo customizar cor, espessura e estilo via CSS.
- Biblioteca: IconPark
- Pacote:
@icon-park/svg - Gerador:
scripts/build-icons.cjs - Saída:
src/icons/(SVGs individuais + sprite) - Total atual: 62 ícones selecionados
Como usar
Duas formas de incluir ícones no projeto: via sprite SVG (recomendado) ou inline.
Via SVG sprite (recomendado)
<svg class="icon" width="24" height="24">
<use href="/icons/icons-sprite.svg#home"></use>
</svg>Via SVG inline
<!-- Copie o conteúdo do arquivo src/icons/home.svg -->
<svg width="24" height="24" viewBox="0 0 48 48" fill="none">
<path d="M9 18V42H39V18L24 6L9 18Z" stroke="currentColor" stroke-width="3" .../>
</svg>Configuração padrão
Todos os ícones são gerados com estas configurações.
| Propriedade | Valor |
|---|---|
| Theme | outline |
| Size | 24px |
| Stroke width | 3 |
| Stroke linecap | round |
| Stroke linejoin | round |
| Color | currentColor |
Classes CSS de tamanho
Classes utilitárias para controlar o tamanho dos ícones.
| Classe | Tamanho | Uso |
|---|---|---|
.icon-xs | 12px | Badges, tags pequenas |
.icon-sm / .icon | 16px | Padrão, textos, botões |
.icon-md | 20px | Títulos, cards |
.icon-lg | 24px | Headers, destaques |
.icon-xl | 32px | Ícones principais |
.icon-2xl | 40px | Hero sections |
Classes CSS de cor
Classes utilitárias para aplicar cores semânticas aos ícones.
| Classe | Uso |
|---|---|
.icon-primary | Ações principais (accent) |
.icon-secondary | Ações secundárias |
.icon-muted | Informações menos importantes |
.icon-success | Sucesso, confirmação |
.icon-warning | Aviso, atenção |
.icon-danger | Erro, exclusão |
Catálogo de ícones
Lista completa dos 62 ícones selecionados, organizados por categoria de uso.
Navegação
| Ícone | ID | Uso |
|---|---|---|
home | Página inicial | |
chevron-left | Voltar, recolher | |
chevron-right | Expandir, próximo | |
chevron-up | Recolher, ordenar asc | |
chevron-down | Expandir, ordenar desc | |
arrow-left | Navegação voltar | |
arrow-right | Navegação avançar | |
menu | Menu hambúrguer |
Ações
| Ícone | ID | Uso |
|---|---|---|
close | Fechar, remover | |
add | Adicionar, criar | |
minus | Remover, diminuir | |
check | Confirmar | |
edit | Editar | |
delete | Excluir | |
copy | Copiar | |
refresh | Recarregar | |
save | Salvar | |
search | Buscar | |
filter | Filtrar | |
sort | Ordenar | |
more | Mais opções (horizontal) | |
more-vertical | Mais opções (vertical) |
Feedback
| Ícone | ID | Uso |
|---|---|---|
info | Informação | |
alert | Aviso, atenção | |
check-circle | Sucesso | |
error-circle | Erro | |
help | Ajuda |
Usuário
| Ícone | ID | Uso |
|---|---|---|
user | Perfil | |
users | Equipe | |
settings | Configurações | |
bell | Notificações | |
logout | Sair | |
login | Entrar |
Arquivos
| Ícone | ID | Uso |
|---|---|---|
document | Documento | |
folder | Pasta | |
download | Baixar | |
upload | Enviar | |
link | Link | |
attachment | Anexo | |
print | Imprimir |
Visualização
| Ícone | ID | Uso |
|---|---|---|
eye | Visualizar | |
eye-off | Ocultar | |
fullscreen | Tela cheia | |
exit-fullscreen | Sair tela cheia | |
list | Visualização lista | |
grid | Visualização grid | |
chart | Gráfico |
Comunicação
| Ícone | ID | Uso |
|---|---|---|
email | ||
phone | Telefone | |
chat | Chat |
Tempo
| Ícone | ID | Uso |
|---|---|---|
calendar | Data | |
clock | Horário |
Outros
| Ícone | ID | Uso |
|---|---|---|
lock | Bloquear | |
unlock | Desbloquear | |
star | Favorito | |
tag | Etiqueta | |
share | Compartilhar | |
code | Código | |
globe | Web | |
map | Mapa | |
location | Localização | |
loading | Carregando |
Estados
Classes para controlar o estado visual e interativo dos ícones.
| Classe | Efeito |
|---|---|
.icon-disabled | Opacidade 40%, cursor not-allowed |
.icon-clickable | Cursor pointer, hover com accent e scale 1.1, active scale 0.95 |
<svg class="icon icon-clickable">
<use href="/icons/icons-sprite.svg#edit"></use>
</svg>
<svg class="icon icon-disabled">
<use href="/icons/icons-sprite.svg#delete"></use>
</svg>Integração com componentes
Classes pré-definidas para usar ícones dentro de botões, inputs, badges, alertas e navegação.
Botões
<!-- Ícone à esquerda -->
<button class="btn">
<svg class="icon"><use href="...#add"></use></svg>
Novo item
</button>
<!-- Botão somente ícone -->
<button class="btn icon-only">
<svg class="icon"><use href="...#more"></use></svg>
</button>Inputs
<div class="input-group">
<svg class="icon"><use href="...#search"></use></svg>
<input type="text" placeholder="Buscar...">
</div>
<!-- Ícone à direita -->
<div class="input-group">
<svg class="icon icon-right"><use href="...#chevron-down"></use></svg>
<input type="text" class="has-icon-right" placeholder="Selecione...">
</div>Badges e alertas
<!-- Badge com ícone -->
<span class="badge">
<svg class="icon"><use href="...#check"></use></svg>
Ativo
</span>
<!-- Alerta com ícone -->
<div class="alert alert-success">
<svg class="icon"><use href="...#check-circle"></use></svg>
<span>Operação realizada com sucesso.</span>
</div>Navegação e tabelas
<!-- Item de navegação -->
<a class="nav-item">
<svg class="icon"><use href="...#home"></use></svg>
Início
</a>
<!-- Ações em tabela -->
<div class="table-actions">
<svg class="icon"><use href="...#edit"></use></svg>
<svg class="icon icon-danger"><use href="...#delete"></use></svg>
</div>Utilitários de transformação
Classes para rotação, espelhamento e animação de ícones.
Rotação
| Classe | Efeito |
|---|---|
.icon-rotate-90 | Rotação 90° |
.icon-rotate-180 | Rotação 180° |
.icon-rotate-270 | Rotação 270° |
Espelhamento
| Classe | Efeito |
|---|---|
.icon-flip-horizontal | Espelha horizontalmente |
.icon-flip-vertical | Espelha verticalmente |
Animações
| Classe | Efeito |
|---|---|
.icon-spin | Rotação contínua (1s linear) |
.icon-pulse | Pulso de opacidade (2s ease) |
<!-- Loading com animação -->
<svg class="icon icon-spin">
<use href="/icons/icons-sprite.svg#loading"></use>
</svg>
<!-- Chevron rotacionado -->
<svg class="icon icon-rotate-90">
<use href="/icons/icons-sprite.svg#chevron-right"></use>
</svg>Responsividade
Em telas menores que 768px, os tamanhos maiores são reduzidos automaticamente.
| Classe | Desktop | Mobile (< 768px) |
|---|---|---|
.icon-lg | 24px | 20px |
.icon-xl | 32px | 24px |
.icon-2xl | 40px | 32px |
Acessibilidade
Boas práticas para ícones acessíveis.
| Recurso | Uso |
|---|---|
aria-label | Ícone com significado semântico (muda cursor para help) |
.icon-label-sr-only | Texto visível apenas para leitores de tela |
aria-hidden="true" | Ícone decorativo (deve ser ignorado por leitores de tela) |
<!-- Ícone com significado -->
<svg class="icon" aria-label="Excluir item">
<use href="...#delete"></use>
</svg>
<!-- Ícone decorativo -->
<svg class="icon" aria-hidden="true">
<use href="...#chevron-right"></use>
</svg>
<!-- Texto acessível oculto -->
<button class="btn icon-only">
<svg class="icon"><use href="...#close"></use></svg>
<span class="icon-label-sr-only">Fechar</span>
</button>Adicionar novos ícones
Como incluir novos ícones do IconPark no projeto.
- Encontre o ícone em iconpark.oceanengine.com
- Copie o nome PascalCase (ex:
ShoppingCart) - Adicione no objeto
ICONSemscripts/build-icons.cjs:jsShoppingCart: 'cart', - Execute:
node scripts/build-icons.cjs