Voltar ao Hub
SYSLED — PREVIEW

Iconografia
Completa

Sistema de icones, grid de construcao, variantes de estado, espacamento, regras de uso e implementacao.

01 — Fundamentos

Principios e Estilo

A Sysled utiliza icones no estilo outline (contorno), com tracos limpos e geometricos que refletem a identidade moderna e profissional da marca. A biblioteca oficial e a Lucide Icons, com Heroicons como alternativa compativel.

Stroke Width — Comparativo

1.0px
Muito fino
1.5px
Padrao UI
Recomendado
2.0px
Navegacao / destaque
Recomendado
2.5px
Pesado demais

Especificacoes Tecnicas

PropriedadeValorObservacao
EstiloOutline (contorno)Nunca usar filled como padrao
Stroke Width1.5px2px1.5 para UI, 2.0 para nav/destaque
Stroke Capsroundstroke-linecap e stroke-linejoin
Viewbox0 0 24 24Padrao Lucide/Heroicons
Cor padraocurrentColorHerda a cor do elemento pai
Biblioteca primariaLucide Iconslucide.dev
Biblioteca alternativaHeroicons (outline)heroicons.com
02 — Biblioteca

Icones por Categoria

Catalogo organizado por contexto de uso. Todos os icones seguem o padrao Lucide Icons com stroke-width="1.5".

Navegacao 8 icones
Homehome
Buscarsearch
Menumenu
Fecharx
Voltarchevron-left
Avancarchevron-right
Expandirchevron-down
Maismore-horizontal
Acoes 10 icones
Adicionarplus
Editaredit
Excluirtrash-2
Salvarsave
Downloaddownload
Uploadupload
Copiarcopy
Desfazerundo
Enviarsend
Confirmarcheck
Sistema / Dominio Sysled 8 icones
Estoquebox
Logisticatruck
Dashboardbar-chart
Monitoramentoactivity
Configsettings
Producaocoffee
Segurancashield
Usuariosusers
Feedback & Status 8 icones
Sucessocheck
Errox-circle
Alertaalert-triangle
Infoinfo
Notificacaobell
Aguardandoclock
Completocheck-circle
Pendentealert-circle
Dados & Filtros 8 icones
Filtrarfilter
Ajustessliders
Exportardownload
Listalist
Gridgrid
Tendenciatrending-up
Relatoriofile-text
Databasedatabase
03 — Construcao

Grid e Area de Seguranca

Todo icone e construido dentro de um viewbox de 24x24px. A area de seguranca (padding) de 2px em cada lado garante alinhamento optico consistente. O conteudo do icone deve ficar dentro da area ativa de 20x20px.

24px
24px
2px pad
Viewbox 24x24
Area de Seguranca (2px)
Area Ativa (20x20)

Tamanhos Padrao

16px
Inline / compacto
20px
Botoes / inputs
24px
Padrao / navegacao
32px
Destaque / empty state
48px
Ilustrativo / hero
TamanhoUsoStroke
16pxDentro de badges, tags, inputs compactos1.5px
20pxBotoes, inputs, tabelas1.5px
24pxNavegacao, sidebar, toolbar1.5px — 2px
32pxEmpty states, cards de destaque1.5px
48pxIlustracoes, paginas de erro, onboarding1px — 1.5px
04 — Estados

Variantes de Estado

Icones mudam de aparencia conforme o estado do elemento em que estao inseridos. Abaixo, como cada estado se manifesta visualmente.

Default
Cor primaria, opacidade 100%
Hover
Cor mais clara + bg sutil
Active
Scale 0.95 + stroke 2px
Focused
Focus ring 3px azul claro
Disabled
Gray + opacity 40%
Selected
Fundo primario + icone branco
EstadoCor do IconeBackgroundExtra
Defaultvar(--blue-primary)rgba(43,108,176,0.06)
Hovervar(--blue-medium)rgba(43,108,176,0.12)transition: 0.2s
Active / Pressedvar(--blue-primary)rgba(43,108,176,0.15)scale(0.95)
Focusedvar(--blue-primary)box-shadow: 0 0 0 3px
Disabledvar(--gray-400)opacity: 0.4
Selected#FFFFFFvar(--blue-primary)Inversao total
05 — Espacamento

Icones com Texto e Componentes

O espacamento entre icone e texto deve ser consistente em toda a interface. Use gap via flexbox para garantir alinhamento perfeito em qualquer contexto.

Botao com Icone
Novo Produto
Exportar
gap: 8px
Input com Icone
Buscar produtos...
Selecionar data
gap: 8px
Navegacao Lateral
gap: 10px

Regras de Espacamento

ContextoTamanho do IconeGap icone-textoAlinhamento
Botao primario16px — 20px8pxalign-items: center
Botao compacto14px — 16px6pxalign-items: center
Input com icone16px8pxIcone a esquerda, centralizado vertical
Sidebar / nav18px — 20px10px — 12pxalign-items: center
Tabela (acoes)16px0 (icone only)Centralizado na celula
Badge / tag12px — 14px4pxalign-items: center
Toast / alert16px — 20px8px — 12pxalign-items: flex-start

Quando usar icone sozinho vs. com label

SituacaoRecomendacaoMotivo
Acao na toolbar (editar, excluir)Icone + tooltipEspaco limitado, tooltip para contexto
Navegacao principalIcone + labelDiscoverability para novos usuarios
Sidebar colapsadaIcone + tooltipLabel aparece ao expandir
Botao de acao primariaIcone + labelClareza na intencao da acao
Acao recorrente (favoritar, curtir)Icone sozinhoConvencao universal reconhecida
06 — Regras de Uso

Do's & Don'ts

Regras visuais para manter a consistencia do sistema de icones em todos os contextos e equipes.

Correto

Usar todos em outline com mesmo stroke-width

Incorreto

Misturar outline com filled ou strokes diferentes

Correto

Manter tamanhos iguais no mesmo contexto

Incorreto

Usar tamanhos diferentes no mesmo nivel hierarquico

Correto

Usar cores da paleta oficial (currentColor ou variavel CSS)

Incorreto

Usar cores arbitrarias fora do design system

Correto

Manter proporcoes originais do icone (1:1)

Incorreto

Distorcer ou esticar o icone

07 — Implementacao

Codigo e Uso no Projeto

Exemplos praticos de como implementar os icones no codigo, usando a biblioteca Lucide com React/TypeScript.

Instalacao

bash
# Instalar Lucide para React
npm install lucide-react

# Ou com Yarn
yarn add lucide-react

Uso Basico

tsx
import { Search, Home, Settings, Plus } from 'lucide-react'

// Tamanho padrao (24px)
<Search strokeWidth={1.5} />

// Tamanho personalizado
<Home size={20} strokeWidth={1.5} />

// Dentro de um botao
<button className="btn-primary">
  <Plus size={16} strokeWidth={2} />
  Novo Produto
</button>

Componente Wrapper (Recomendado)

tsx
import { LucideIcon } from 'lucide-react'

type IconSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl'

const sizeMap: Record<IconSize, number> = {
  xs: 14, sm: 16, md: 20, lg: 24, xl: 32
}

interface Props {
  icon: LucideIcon
  size?: IconSize
  className?: string
}

export function Icon({ icon: LucideIcon, size = 'lg', className }: Props) {
  return (
    <LucideIcon
      size={sizeMap[size]}
      strokeWidth={size === 'xl' ? 1 : 1.5}
      className={className}
    />
  )
}

Uso com SVG Inline (Fallback)

html
<!-- Padrao Sysled: outline, round caps, 24x24 -->
<svg
  viewBox="0 0 24 24"
  width="24"
  height="24"
  fill="none"
  stroke="currentColor"
  stroke-width="1.5"
  stroke-linecap="round"
  stroke-linejoin="round"
>
  <circle cx="11" cy="11" r="8" />
  <line x1="21" y1="21" x2="16.65" y2="16.65" />
</svg>