# Símbolos

> A biblioteca de Símbolos: as onze bibliotecas do sistema e Meus símbolos, a busca e os filtros da galeria, o inspetor com as entradas ao vivo e os terminais, o editor Novo símbolo do usuário e cada tipo de slot, o Importar símbolo…, o Exportar o pacote, o Duplicar, o Copiar instrução para chat, e onde um símbolo é usado.

**Symbols** é a quarta categoria sob a raiz Assets: a arte que um componente [Símbolo](component-symbol) de dashboard desenha e anima. O painel tem o título "Símbolos", com a frase "Bibliotecas feitas sob medida para dashboards modernos, bancadas de teste, produtos conectados, diagramas de normas, sistemas industriais e instalações. Todo símbolo de sistema pode ser inspecionado e duplicado para Meus símbolos." e a pílula de contagem. Ler e inspecionar exigem **Ver a lógica**; criar, importar, duplicar, editar e excluir exigem **Configurar a lógica**. O formato de arquivo em que um símbolo viaja está descrito em [Símbolos SVG portáteis](ganter-symbols).

## As bibliotecas {#the-libraries}

| Biblioteca | O que contém | Norma | Símbolos |
| --- | --- | --- | --- |
| Process | Arte em camadas de equipamento de processo, para dashboards de supervisão e diagramas de processo | | 86 |
| ISA / P&ID | Arte esquemática de processo, tubulação, válvulas e instrumentação | ANSI/ISA-5.1 / ISO 10628 | 99 |
| Manufacturing & Material Flow | Equipamento de manufatura discreta, montagem, batelada, embalagem, inspeção e intralogística | | 48 |
| Lab & Test Bench | Símbolos de laboratório, aquisição de dados, metrologia, fixação de peça sob teste, câmara ambiental e inspeção da qualidade | | 35 |
| Prototyping Electronics | Controladores, placas de desenvolvimento, conectores, módulos de sensor, atuadores, energia e sem fio | | 35 |
| IoT Field Sensors | Símbolos ambientais, de condição, de posição, de medição, de gateway sem fio e de controle na borda | | 36 |
| Smart Home & Building | Iluminação, conforto, acesso, segurança, eletrodomésticos, água e dispositivos de controle interoperáveis | Matter / BACnet / notação comum de automação predial | 39 |
| IT, Network & Datacenter | Computação, racks, armazenamento, redes, segurança, plataformas de nuvem, energia e refrigeração da instalação | Notação comum de infraestrutura de TI / SNMP / Redfish | 35 |
| Electrical & Energy | Unifilares, distribuição de energia, conversão, medição e renováveis, com estados de contato baseados na geometria | IEC 60617 / IEEE 315 | 39 |
| Energy, Microgrid & e-Mobility | Geração distribuída, conversão, armazenamento, medição, proteção, microrredes e recarga de veículos elétricos | Notação de dashboard orientada a IEC / IEEE / OCPP | 40 |
| Facilities & Utilities | HVAC, água e efluentes, sistemas de segurança, utilidades de planta e infraestrutura de controle | | 38 |
| Meus símbolos | Os símbolos que você compõe, importa ou duplica | | Seus |

As bibliotecas do sistema são arte original do Ganter Lab, compilada dentro do produto e somente leitura: uma atualização as substitui sem tocar nos dados da sua estação. Cada definição carrega uma referência estável `system:<key>`, a biblioteca e a categoria dela, uma descrição, etiquetas de busca, a norma aplicável e metadados de origem e de licença.

## A galeria {#the-gallery}

Acima dos cartões: **Buscar** (texto de exemplo "Nome, categoria ou tag"; casa o nome, a descrição, a categoria, a norma e as etiquetas do símbolo, sem diferenciar maiúsculas de minúsculas; a biblioteca é escolhida no filtro próprio dela), **Biblioteca** ("Todas as bibliotecas (530)" ou uma biblioteca com a contagem dela; escolher uma limpa a categoria e mostra a descrição da biblioteca abaixo dos filtros), **Categoria** ("Todas as categorias" ou uma categoria da biblioteca escolhida), **Origem** e **Por página**. Um cartão mostra a biblioteca, uma prévia na proporção natural da arte, o nome, a categoria, a origem (Sistema ou Meus) e uma linha de capacidade: "Estático", "1 entrada" ou "N entradas", seguida de "· N terminais" quando o símbolo declara terminais de ligação. Um resultado vazio diz "Nenhum símbolo corresponde a estes filtros." com **Limpar filtros**. Quando os seus próprios símbolos não puderam ser lidos, uma nota diz "Meus símbolos está indisponível agora. Só as bibliotecas do sistema estão listadas.", em vez de passar o pacote do sistema por catálogo inteiro.

## O inspetor {#the-inspector}

Selecionar um cartão abre o inspetor ao lado da galeria:

- O nome e um distintivo: **Sistema · somente leitura**, **Meu símbolo**, ou **Rascunho não salvo** só enquanto o símbolo é novo e ainda não foi criado, ou enquanto a edição aberta tem um erro que impede o salvamento automático (o distintivo continua **Meu símbolo** enquanto uma edição se salva sozinha, inclusive no meio segundo antes do salvamento).
- A biblioteca, a categoria e a norma; a descrição.
- **Área ocupada** (o tamanho sugerido no dashboard, em células, largura × altura) e **Encaixe** (Caber inteiro, Esticado, Esticar em X ou Esticar em Y).
- "N entradas · N terminais de ligação", ou "apenas visual" quando não há terminais.
- **Procedência da arte**, um revelador com a origem e, num símbolo do sistema, a licença.
- As ações: **Exportar o pacote** para todo papel; num símbolo do sistema, **Duplicar para Meus símbolos**; nos seus, **Editar** e **Excluir** (só papéis que configuram).
- O palco de prévia: a arte higienizada, desenhada pelo mesmo runtime de um dashboard, com uma alça desenhada no ancoradouro de cada terminal. Uma arte que não consegue ser desenhada deixa o palco vazio com "Prévia indisponível" e o motivo. Quando o higienizador precisou reparar a marcação, um revelador "A prévia usa SVG higienizado" lista os reparos (oito no máximo, e então "Mais N reparos não são mostrados.").
- **Entradas**: "As constantes passageiras afetam apenas esta prévia." e **Restaurar as entradas**. Uma seção por slot declarado, com o nome dele, o efeito que ele conduz, uma frase descrevendo o mapeamento, a faixa de entrada e o elemento alvo (`#id`), e um controle para experimentar: um número (com um controle deslizante quando a faixa de entrada é finita), um interruptor Ligado/Desligado, uma caixa de texto, ou um seletor de cor com uma caixa de valor de pintura. "Este símbolo não declara entradas dinâmicas." quando não há nenhuma; uma declaração inválida mostra o erro dela em vez de um controle. As constantes que você define aqui nunca são salvas e nunca chegam a um dashboard.

Os efeitos e como o inspetor os descreve:

| Tipo (rótulo do editor) | Efeito | Controle | Descrição |
| --- | --- | --- | --- |
| Rotate | Rotação | Número | Gira de `<output min>`° a `<output max>`° |
| Opacity | Opacidade | Número | Muda a opacidade de `<output min>` para `<output max>` |
| Fill | Estado do preenchimento | Interruptor | Troca o preenchimento da cor de desligado para a de ligado; origens numéricas trocam no meio da faixa de entrada |
| Visible | Visibilidade | Interruptor | Esconde o elemento quando desligado e o mostra quando ligado |
| Text | Texto exibido | Texto | Substitui o texto exibido dentro do elemento |
| Translate | Posição | Número | Move de (x, y) para (x, y) unidades SVG |
| Scale | Escala | Número | Redimensiona de (x, y) para (x, y) |
| Stroke | Estado do contorno | Interruptor | Troca o contorno entre as cores de desligado e de ligado; origens numéricas trocam no meio da faixa de entrada |
| Spin (°/s) | Velocidade do giro | Número | Gira continuamente de `<min>`°/s a `<max>`°/s; zero pausa e valores negativos invertem o sentido |
| Spin enabled | Estado do giro | Interruptor, ligado por padrão | Pausa ou retoma a rotação sem esconder o elemento nem zerar o ângulo dele |
| Fill color | Cor do preenchimento | Cor | Define o preenchimento direto de um recurso de cor, de uma variável de cor ou de uma cor literal |
| Stroke color | Cor do contorno | Cor | Define o contorno direto de um recurso de cor, de uma variável de cor ou de uma cor literal |
| Stroke width | Espessura do contorno | Número | Define a espessura do contorno direto, de 0,5 a 32 unidades SVG |

## Novo símbolo do usuário {#new-user-symbol}

O verbo sobre a linha Symbols abre o editor na coluna da galeria ("Novo símbolo do usuário": "Componha SVG inerte e os slots de entrada nomeados que o dashboard usa."); o inspetor acompanha o rascunho não salvo enquanto você digita, então você testa o símbolo antes de criá-lo.

| Campo | O que é | Valores / padrão | Efeito |
| --- | --- | --- | --- |
| Nome | O nome de exibição. | Obrigatório; "É preciso dar um nome." enquanto está vazio. | Diferente de um ícone ou de uma cor, o nome de um símbolo pode mudar depois: os dashboards o referenciam pelo id. |
| Marcação SVG | A arte, colada como texto. | Obrigatória. | Higienizada enquanto você digita; um erro de arte ("A marcação SVG precisa ter uma raiz `<svg>`.", "A marcação SVG passa do limite de 512 KB.", um id duplicado…) bloqueia a criação e todos os slots. |
| Encaixe | Como a arte preenche a célula do dashboard. | Caber inteiro (padrão), Esticar nos dois eixos, Esticar em X, Esticar em Y. | Lido pelo editor de dashboard quando o símbolo é colocado. |
| Largura inicial, Altura inicial | A área ocupada com que uma instância nova de dashboard começa. | De 1 a 24 células, de 1 a 12 células; 4 × 4 por padrão. | O mesmo. |
| Terminais de ligação | Uma nota somente leitura. | "Esta arte é apenas visual. Terminais tipados podem vir de um pacote Ganter Symbol v2." ou "N terminais definidos pelo pacote são preservados. A geometria dos terminais é deliberadamente somente leitura no Ganter Lab." | Terminais não podem ser desenhados nem editados aqui: eles vêm de um pacote importado ou de um símbolo do sistema duplicado, e editar os mantém como estão. |
| Slots | As entradas que o símbolo expõe ("Cada slot aponta para um id de elemento SVG e expõe uma primitiva de runtime segura."). | O **Acrescentar slot** acrescenta uma linha sob um nome gerado (`param`, depois numerado). | Cada linha: um nome, um id de elemento (uma lista com os ids achados na marcação, ou qualquer id que você digitar), **Remover o slot**, o tipo, Entrada mín. e máx., Saída mín. e máx. (o eixo X em Translate e Scale), um par opcional de Y mín. e máx., e, por tipo: em Stroke width, a nota "O valor do dashboard é uma espessura SVG direta, de 0,5 a 32."; em Fill color e Stroke color, uma Cor da prévia; em todo outro tipo, uma Cor de ligado e uma Cor de desligado. |

Regras de slot, cada uma relatada abaixo dos campos, com a linha problemática contornada: o nome precisa ser um identificador (uma letra ou `_` primeiro, depois letras, dígitos, `_`, `.`, `:` ou `-`) e ser único; o id do elemento precisa existir na marcação; Text mira apenas `text` e `tspan`; Fill e Fill color miram formas que podem ser preenchidas, grupos, `use` e texto; os outros tipos miram grupos, `use`, formas e texto; Rotate, Spin e Scale precisam que o elemento carregue `data-ganter-pivot="x y"`; todo valor de faixa precisa ser finito; o par de Y é ou os dois ou nenhum, e só em Translate e Scale; as cores de ligado e de desligado precisam ser um hexadecimal, um símbolo de tema como `var(--color-success)` ou um nome de cor do CSS; um elemento aceita no máximo um slot por canal (preenchimento, traço, largura do traço, ou um por cada outro tipo); um slot Spin enabled precisa de um slot Spin no mesmo elemento.

O **Criar símbolo** continua esmaecido enquanto qualquer erro estiver de pé; o **Cancelar** ou o **Voltar** sai sem criar. Quando dá certo, o feed diz "Símbolo criado." e o cartão novo fica selecionado.

## Editar, Duplicar, Excluir {#edit-duplicate-delete}

O **Editar** (só nos seus símbolos) abre o mesmo editor com "Mudanças válidas de nome, de SVG e de slot são salvas automaticamente.": uma mudança válida é salva meio segundo depois da última edição ("Símbolo salvo."), e um rascunho inválido não é salvo e cancela qualquer salvamento pendente, então o símbolo guardado nunca diverge do que o inspetor mostra. O **Duplicar para Meus símbolos** (símbolos do sistema) copia a arte, a caixa de visão, o ajuste, a área ocupada, as configurações de tipo, os terminais e as sugestões para um símbolo independente chamado "cópia de `<Name>`" ("cópia 2 de `<Name>`"… enquanto o nome estiver ocupado) e o seleciona na galeria sem abrir o editor ("Símbolo de sistema copiado para Meus símbolos."): o inspetor o mostra ao lado da galeria, qualquer busca ou filtro que esconderia a cópia é limpo e a galeria vai para a página que a guarda, e o **Editar** abre a cópia para edição. A definição do sistema nunca é alterada. O **Excluir** pergunta "Excluir 'X'? Os dashboards que o usam vão mostrar um marcador de lugar. Isso não pode ser desfeito." ("Símbolo excluído.").

## Importar símbolo… {#import-symbol}

O segundo verbo sobre a linha é um seletor de arquivo que aceita arquivos `.svg` e `.ganter-symbol.json` de no máximo 1 MB ("O arquivo do símbolo é maior que o limite de 1 MB."). O conteúdo decide o caminho:

- **SVG cru** (o conteúdo começa com `<`) é importado como arte apenas visual: sem slots e sem terminais. O higienizador o repara e o feed conta os reparos ("Símbolo importado como um recurso novo; 3 itens SVG inseguros foram removidos."). O nome é o nome do arquivo sem a extensão.
- **Um pacote Ganter symbol v2** (o conteúdo começa com `{`) é importado inteiro: nome, SVG, caixa de visão, ajuste, área ocupada, slots, configurações de tipo, terminais e sugestões. Um pacote é estrito: o formato, a versão e o esquema precisam bater, o SVG já precisa estar higienizado (um pacote que precise de reparos é recusado, não reparado), a caixa de visão precisa bater com a raiz do SVG, e todo terminal, configuração e sugestão precisa ser válido ([o contrato](ganter-symbols)). O feed nomeia o primeiro problema ("A importação do símbolo falhou: …").

Um nome já usado por um dos seus símbolos recebe sufixo (" 2", " 3"…). Toda importação cria um símbolo novo e nunca sobrescreve um.

## Exportar o pacote {#export-package}

O **Exportar o pacote** do inspetor baixa o símbolo selecionado, do sistema ou seu, como `<name>.ganter-symbol.json`: o mesmo pacote v2 que a importação lê, sem nenhuma identidade de estação, para que ele viaje entre estações ("`<file>` exportado."). Um símbolo cuja arte não tem caixa de visão na raiz, ou um dos cujos slots carrega um endereço de estação, é recusado ("A exportação do símbolo falhou: …").

## Copiar instrução para chat {#copy-chat-instruction}

O **Copiar instrução para chat** copia para a área de transferência uma instrução autossuficiente para um chat de IA externo, que não tem acesso à estação. Ela abre com "Crie um símbolo do Ganter Lab para mim. Devolva SOMENTE o conteúdo do arquivo, seja SVG cru, seja um único pacote .ganter-symbol.json v2, sem comentário nenhum, para que eu possa salvá-lo como arquivo e importá-lo sem alteração.", continua com o contrato v2 completo (as duas entradas aceitas, o envelope do pacote, os dezesseis ancoradouros globais, os oito tipos de ligação, os tipos de slot e as regras deles, os símbolos de tema, as regras de geometria de terminal, os limites do higienizador e um pacote válido mínimo), e termina com como trazer a resposta de volta: salve a resposta como um arquivo `.svg` ou `.ganter-symbol.json` e importe-o aqui. O mesmo contrato é o que as ferramentas `symbol_validate` e `symbol_import` do agente leem, então um chat e um agente produzem o mesmo arquivo. O feed diz "Instrução para chat copiada. Cole em qualquer chat de IA e importe o SVG que ele devolver." (ou "A área de transferência recusou a cópia."). O verbo é desenhado para todo papel, porque ele só lê.

## Onde um símbolo é usado {#where-a-symbol-is-used}

O componente [Símbolo](component-symbol) de dashboard referencia um símbolo como `system:<key>` ou `user:<id>`, mapeia cada slot para um endereço da Logic, escolhe o tipo de ligação de qualquer terminal configurável, e une terminais com ligações desenhadas no [editor de dashboard](view-editor) pelos [tipos de ligação](assets-connection-types). Um símbolo não tem endereço próprio na Logic.

## O que a biblioteca não faz {#what-the-library-does-not-do}

Ela não desenha nem move terminais e caminhos internos, não edita a arte do sistema no lugar, não importa um pacote que precisa de reparos, não guarda histórico de versões, e não compartilha sozinha os seus símbolos entre estações: exporte e importe o pacote.
