{
  "$schema": "https://raw.githubusercontent.com/microsoft/vscode-html-languageservice/main/docs/customData.schema.json",
  "version": 1.1,
  "tags": [
    {
      "name": "br-avatar",
      "description": "O `br-avatar` representa uma pessoa ou entidade de forma compacta: mostra uma foto, a primeira letra de um nome ou um ícone de usuário.\n\n### Como o conteúdo é escolhido\n\n1. Com `iconic`, mostra sempre o ícone de usuário.\n2. Com `text`, mostra a primeira letra do texto em maiúscula.\n3. Com `src`, mostra a imagem. Se ela não carregar, mostra o ícone.\n4. Sem nenhum deles, mostra o ícone.\n\n```html\n<br-avatar src=\"/fotos/maria.jpg\" alt=\"Foto de Maria Souza\"></br-avatar>\n<br-avatar text=\"Maria\"></br-avatar>\n<br-avatar iconic></br-avatar>\n```\n\nPara indicar disponibilidade, ative `status`. A cor fica em `status-bg-color` e o texto lido pelo leitor de tela, em `status-label`. Para outro indicador, use o slot `status`.\n\n### Quando usar\n\n- Identificar a pessoa autenticada no cabeçalho ou no menu.\n- Mostrar autores, contatos ou participantes em listas.\n\n### Quando evitar\n\n- Imagens grandes ou ilustrativas: use `<img>`.\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/avatar?tab=designer).\n---\n\n\n### **Methods:**\n - **handleDensityChange(newValue: _AvatarDensity_)** - Observa mudanças na propriedade density para validação e sincronização com atributo DOM.\nGarante que apenas valores válidos sejam aceitos e atualiza o atributo no elemento host.\n- **setFocus()** - Move o foco programaticamente para o avatar.\n\n### **Slots:**\n - **status** - Conteúdo customizado para o indicador de status. Quando usado, substitui a tag padrão.\n\n### **CSS Parts:**\n - **container** - Elemento externo do avatar.\n- **content** - Conteúdo interno do avatar (imagem, ícone ou texto).\n- **status** - Indicador de status posicionado sobre o avatar.",
      "attributes": [
        {
          "name": "density",
          "description": "Define a densidade visual do componente.\n\n- `small`: Alta densidade (componente menor, mais compacto e com menos espaçamento).\n- `medium`: Densidade intermediária, padrão recomendado para a maioria dos casos.\n- `large`: Baixa densidade (componente maior, mais espaçamento e altura).\n\nValores inválidos usam `medium`.",
          "values": [{ "name": "AvatarDensity" }]
        },
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        },
        {
          "name": "src",
          "description": "URL da imagem a ser exibida no avatar do tipo 'fotográfico'.\nDeve ser uma URL válida que aponta para a imagem desejada.",
          "values": []
        },
        {
          "name": "alt",
          "description": "Texto alternativo (alt) associado à imagem do avatar. Essencial para acessibilidade.\nDeve descrever de forma clara e concisa o conteúdo da imagem, por exemplo: \"Foto de perfil de João Silva\".",
          "values": []
        },
        {
          "name": "is-iconic",
          "description": "Força a exibição do ícone padrão, sobrescreve outras opções (texto ou imagem).\nÚtil para manter consistência visual ou quando se deseja um avatar neutro independente do conteúdo disponível.",
          "values": []
        },
        {
          "name": "iconic",
          "description": "Exibe a variação icônica. Quando informada, tem precedência sobre `isIconic`.",
          "values": []
        },
        {
          "name": "text",
          "description": "Conteúdo textual do avatar.\nApenas o primeiro caractere será exibido em maiúscula.",
          "values": []
        },
        {
          "name": "disabled",
          "description": "Desabilita a interação com o componente.",
          "values": []
        },
        {
          "name": "bg-color",
          "description": "Permite definir a cor de fundo do componente.\nAceita os seguintes formatos de cor:\n- Cores nomeadas do CSS: 'red', 'blue', 'green', 'yellow', etc.\n- Códigos hexadecimais: '#ff0000', '#00ff00', '#0000ff', etc.\n- Valores RGB: 'rgb(255, 0, 0)', 'rgb(0, 255, 0)', etc.\n- Valores RGBA: 'rgba(255, 0, 0, 0.5)', 'rgba(0, 255, 0, 0.8)', etc.\n- Valores HSL: 'hsl(0, 100%, 50%)', 'hsl(120, 100%, 50%)', etc.\n- Valores HSLA: 'hsla(0, 100%, 50%, 0.5)', 'hsla(240, 100%, 50%, 0.7)', etc.\nSe não especificada, usa a cor padrão do tema.",
          "values": []
        },
        {
          "name": "status",
          "description": "Exibe um indicador de status no avatar.",
          "values": []
        },
        {
          "name": "status-bg-color",
          "description": "Cor de fundo do indicador de status padrão.",
          "values": []
        },
        {
          "name": "status-label",
          "description": "Rótulo acessível do indicador de status padrão.",
          "values": []
        },
        {
          "name": "status-size",
          "description": "Tamanho do indicador de status padrão.",
          "values": []
        },
        {
          "name": "status-position",
          "description": "Posição do indicador de status sobre o avatar. Aceita `top-right`, `bottom-right`, `top-left` ou `bottom-left`.\nValores inválidos usam `top-right`.",
          "values": [{ "name": "AvatarStatusPosition" }]
        }
      ],
      "references": []
    },
    {
      "name": "br-breadcrumb",
      "description": "O `br-breadcrumb` mostra o caminho até a página atual e permite voltar aos níveis anteriores.\n\n### Como montar\n\n1. Declare um `br-breadcrumb-item` para cada nível, do início até a página atual.\n2. Use `home` no primeiro item para exibir o ícone de página inicial.\n3. Marque a página atual com `active`: ela aparece sem link e com `aria-current=\"page\"`.\n\n```html\n<br-breadcrumb>\n  <br-breadcrumb-item home label=\"Início\" href=\"/\"></br-breadcrumb-item>\n  <br-breadcrumb-item label=\"Serviços\" href=\"/servicos\"></br-breadcrumb-item>\n  <br-breadcrumb-item label=\"Emitir documento\" active></br-breadcrumb-item>\n</br-breadcrumb>\n```\n\nOs mesmos itens podem ser passados em `crumbs`, como array ou texto JSON. Quando falta espaço, os níveis intermediários são agrupados; `truncate-after` define a partir de quantos itens isso acontece.\n\n### Navegação em SPA\n\nCom `navigation-mode=\"event\"`, o clique em um item emite `brNavigate`. Cancele o evento e passe o endereço para o roteador:\n\n```js\nbreadcrumb.addEventListener('brNavigate', (event) => {\n  event.preventDefault();\n  router.push(event.detail.href);\n});\n```\n\n### Quando usar\n\n- Páginas com dois ou mais níveis de hierarquia.\n\n### Quando evitar\n\n- Navegação sem hierarquia.\n- Etapas de um processo: use `br-wizard` ou `br-step`.\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/breadcrumb?tab=designer).\n---\n\n\n### **Events:**\n - **brNavigate** - Evento cancelável emitido em `navigation-mode=\"event\"` para cliques primários sem modificadores em links `_self`.\nChame `event.preventDefault()` no listener para impedir a navegação nativa e entregar `event.detail.href` ao roteador da SPA.\n\n### **Slots:**\n - **default** - Itens de breadcrumb declarados via elementos br-breadcrumb-item. O elemento br-crumb é aceito apenas por compatibilidade.\n\n### **CSS Parts:**\n - **nav** - Elemento nav do breadcrumb.\n- **list** - Lista ordenada de itens do breadcrumb.",
      "attributes": [
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        },
        {
          "name": "home-url",
          "description": "Caso não seja fornecido, o valor padrão será /.",
          "values": []
        },
        {
          "name": "home-href",
          "description": "URL padrão da página inicial. Quando informada, tem precedência sobre `homeUrl`.",
          "values": []
        },
        {
          "name": "truncate-after",
          "description": "Quantidade máxima de crumbs exibidos antes de ativar o modo truncado.\nQuando omitida, o truncamento continua sendo decidido apenas pelo espaço disponível.\nValores inválidos são ignorados.",
          "values": []
        },
        {
          "name": "crumbs",
          "description": "Fornece os nomes e links do breadcrumb.\nUse uma string JSON no atributo HTML ou um array de `BreadcrumbItem` por property binding.\nCada item deve ter `label` string e pode ter `href`, `target`, `home` e `active`.\nItens inválidos são ignorados; se nenhum item válido restar, usa `defaultCrumbs` e avisa no console.",
          "values": [{ "name": "BreadcrumbItem[]" }]
        },
        {
          "name": "navigation-mode",
          "description": "Controla como os links do breadcrumb integram a navegação mantendo `href` real nos itens navegáveis.\n- `native` (padrão): preserva o comportamento do navegador, conforme HTML/W3C.\n- `event`: emite `brNavigate`; se o evento for cancelado, bloqueia a navegação nativa para a SPA assumir.\nCliques com modificadores, botão do meio ou `target` diferente de `_self` permanecem nativos.\nValores inválidos usam `native`.",
          "values": [{ "name": "BrNavigationMode" }]
        }
      ],
      "references": []
    },
    {
      "name": "br-breadcrumb-item",
      "description": "Representa um nível do `br-breadcrumb`. Use somente dentro dele.\n\nInforme `label` e `href`. Use `home` no primeiro item e `active` na página atual. O conteúdo do item, quando houver, substitui o texto de `label`.\n\nVeja como montar a trilha na documentação do `br-breadcrumb`.\n---\n\n\n### **Events:**\n - **brCrumbPropsChange** - Protocolo compatível com o listener atual do breadcrumb.\n\n### **Slots:**\n - **default** - Conteúdo alternativo do rótulo. Quando usado, substitui o texto fornecido em `label`.",
      "attributes": [
        { "name": "label", "description": "Rótulo do item.", "values": [] },
        { "name": "href", "description": "URL do item.", "values": [] },
        {
          "name": "target",
          "description": "Contexto de navegação.",
          "values": []
        },
        {
          "name": "home",
          "description": "Identifica o item inicial.",
          "values": []
        },
        {
          "name": "active",
          "description": "Identifica a página atual.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-crumb",
      "description": "@deprecated Use `br-breadcrumb-item`.\n\nNome antigo do `br-breadcrumb-item`, mantido para compatibilidade. Funciona da mesma forma; em código novo, use `br-breadcrumb-item`.\n---\n\n\n### **Events:**\n - **brCrumbPropsChange** - Evento disparado quando as propriedades do crumb mudam.\nO componente pai (br-breadcrumb) escuta este evento para se atualizar.\n\n### **Slots:**\n - **default** - Conteúdo alternativo do rótulo do item de navegação.",
      "attributes": [
        {
          "name": "label",
          "description": "Rótulo (texto) do crumb.",
          "values": []
        },
        {
          "name": "href",
          "description": "URL ou caminho para o qual o usuário será direcionado ao clicar no crumb.",
          "values": []
        },
        {
          "name": "target",
          "description": "Define o alvo do link quando `href` está presente. (ex: _blank, _self).",
          "values": []
        },
        {
          "name": "home",
          "description": "Define se o crumb é o item inicial (Home).",
          "values": []
        },
        {
          "name": "active",
          "description": "Define se o crumb é a página atual ativa no breadcrumb.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-button",
      "description": "O `br-button` executa uma ação: salvar, enviar um formulário, abrir um modal, aplicar um filtro.\n\nO texto e o ícone vão dentro do botão. A aparência é definida por `emphasis` (`primary`, `secondary` ou `tertiary`) e `shape` (`circle`, `block` ou `pill`).\n\n```html\n<br-button emphasis=\"primary\" type=\"submit\">Enviar</br-button>\n\n<br-button shape=\"circle\" aria-label=\"Fechar\">\n  <br-icon src=\"/icones/fechar.svg\"></br-icon>\n</br-button>\n```\n\nO tipo padrão é `button`. Use `type=\"submit\"` ou `type=\"reset\"` para agir sobre o formulário em que o botão está. Durante uma operação demorada, ative `loading`.\n\n### Quando usar\n\n- Executar uma ação na página atual.\n- Abrir modal, menu ou painel.\n\n### Quando evitar\n\n- Para ir a outra página: use `br-link` ou `<a>`.\n- Para escolher entre opções: use `br-radio` ou `br-checkbox`.\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/button?tab=designer).\n---\n\n\n### **Slots:**\n - **default** - Slot para o rótulo ou conteúdo do botão.\n\n### **CSS Parts:**\n - **button** - Parte para o elemento button interno, usada para estilos customizados via ::part(button).",
      "attributes": [
        {
          "name": "color-mode",
          "description": "Define se o botão usará um esquema de cores escuro. Valores inválidos são ignorados.",
          "values": [{ "name": "ButtonColorMode" }]
        },
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        },
        {
          "name": "density",
          "description": "Define a densidade visual do componente.\n\n- `small`: Alta densidade (componente menor, mais compacto e com menos espaçamento).\n- `medium`: Densidade intermediária, padrão recomendado para a maioria dos casos.\n- `large`: Baixa densidade (componente maior, mais espaçamento e altura).\n\nValores inválidos usam `medium`.",
          "values": [{ "name": "ButtonDensity" }]
        },
        {
          "name": "disabled",
          "description": "Desabilita a interação com o componente.",
          "values": []
        },
        {
          "name": "emphasis",
          "description": "Define a ênfase do botão, alterando sua aparência para criar hierarquia visual e destacar ações importantes. Valores inválidos são ignorados.",
          "values": [{ "name": "ButtonEmphasis" }]
        },
        {
          "name": "is-active",
          "description": "Indica se o botão está no estado ativo.\nSe definido como verdadeiro, o botão será exibido como ativo.",
          "values": []
        },
        {
          "name": "active",
          "description": "Estado ativo atual. Quando informado, tem precedência sobre `isActive`.",
          "values": []
        },
        {
          "name": "is-loading",
          "description": "Aplica o estado de \"progresso\" ao botão.\nO botão exibirá um indicador de carregamento ou progresso.",
          "values": []
        },
        {
          "name": "loading",
          "description": "Estado de carregamento atual. Quando informado, tem precedência sobre `isLoading`.",
          "values": []
        },
        {
          "name": "shape",
          "description": "Define o formato do botão. Valores inválidos são ignorados.",
          "values": [{ "name": "ButtonShape" }]
        },
        {
          "name": "type",
          "description": "Define o tipo de botão, especificando seu comportamento padrão.\nQuando omitido, usa `button`; valores inválidos também usam `button` e geram aviso no console.",
          "values": [{ "name": "ButtonType" }]
        },
        {
          "name": "value",
          "description": "Define o valor inicial do botão em um formulário.",
          "values": []
        },
        {
          "name": "custom-tab-index",
          "description": "Define o índice de tabulação do botão.\nÚtil para remover o botão da sequência de tabulação (tabindex=\"-1\") quando ele é puramente decorativo ou o foco é gerenciado por um componente pai.\nAceita inteiros maiores ou iguais a -1; valores inválidos são ignorados.",
          "values": []
        },
        {
          "name": "aria-label",
          "description": "Define o rótulo acessível usado por tecnologias assistivas.",
          "values": []
        },
        {
          "name": "aria-pressed",
          "description": "Define o estado de pressionado do botão.\nEste atributo é usado para indicar se o botão está atualmente pressionado ou não.\nÉ especialmente útil para botões que podem ser alternados entre os estados pressionado e não pressionado.\nO valor deve ser 'true' ou 'false'.",
          "values": []
        },
        {
          "name": "aria-expanded",
          "description": "Indica se um elemento controlado pelo botão está expandido ou recolhido.\nUse em botões que abrem menus, acordeões ou outros painéis expansíveis.\nO valor deve ser 'true' ou 'false'.",
          "values": []
        },
        {
          "name": "aria-controls",
          "description": "Referência ao ID do elemento que o botão controla.\nUse em conjunto com `ariaExpanded` para relacionar o botão ao painel que ele expande/recolhe.",
          "values": []
        },
        {
          "name": "aria-haspopup",
          "description": "Indica que o botão abre um menu, listbox, tree, grid ou dialog.\nOs valores permitidos são: 'true', 'menu', 'listbox', 'tree', 'grid' ou 'dialog'.\nValores inválidos são removidos do elemento interno.",
          "values": [{ "name": "AriaHasPopup" }]
        }
      ],
      "references": []
    },
    {
      "name": "br-card",
      "description": "O `br-card` agrupa conteúdos sobre um mesmo assunto em um bloco destacado, como um serviço, uma notícia ou um resultado de busca.\n\nOrganize o conteúdo nos slots `media`, `header`, `content` e `footer`, ou coloque tudo no slot padrão.\n\n```html\n<br-card>\n  <img slot=\"media\" src=\"/imagens/servico.jpg\" alt=\"\" />\n  <h3 slot=\"header\">Carteira de Trabalho Digital</h3>\n  <p slot=\"content\">Consulte seus vínculos de emprego.</p>\n  <br-button slot=\"footer\" emphasis=\"secondary\">Acessar</br-button>\n</br-card>\n```\n\nUse `interactive` quando o card inteiro for clicável, para dar o retorno visual ao passar o mouse.\n\n### Quando usar\n\n- Blocos independentes exibidos em grade ou lista.\n- Conteúdo que combina imagem, título, texto e ações.\n\n### Quando evitar\n\n- Dados para comparar em linhas e colunas: use `br-table`.\n- Uma lista simples de textos ou links: use `br-list`.\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/card?tab=designer).\n---\n\n\n### **Slots:**\n - **default** - Slot para conteúdo livre do card, quando não usar a estrutura de slots nomeados.\n- **media** - Slot para conteúdo de mídia exibido antes do cabeçalho.\n- **header** - Slot para o conteúdo do cabeçalho do card.\n- **content** - Slot para o corpo principal do card ao usar a estrutura de slots.\n- **footer** - Slot para o conteúdo do rodapé do card.\n\n### **CSS Parts:**\n - **wrapper** - Área principal do card.\n- **media** - Área de mídia do card.\n- **header** - Área do cabeçalho.\n- **content** - Área do conteúdo principal.\n- **footer** - Área do rodapé.",
      "attributes": [
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        },
        {
          "name": "disabled",
          "description": "Desabilita a interação com o componente.",
          "values": []
        },
        {
          "name": "hover",
          "description": "Define se o card tem hover interativo.\nQuando true, o card terá efeitos visuais ao passar o mouse.",
          "values": []
        },
        {
          "name": "interactive",
          "description": "Habilita indicação visual de interatividade. Quando informada, tem precedência sobre `hover`.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-carousel",
      "description": "O `br-carousel` mostra uma sequência de slides, um por vez, com botões de anterior e próximo e indicadores de posição.\n\nColoque cada slide em um `br-carousel-page` e dê um nome ao carrossel com `aria-label`.\n\n```html\n<br-carousel aria-label=\"Destaques\">\n  <br-carousel-page>\n    <img src=\"/imagens/campanha.jpg\" alt=\"Campanha de vacinação\" />\n  </br-carousel-page>\n  <br-carousel-page>\n    <p>Atualize seu cadastro até 30 de junho.</p>\n  </br-carousel-page>\n</br-carousel>\n```\n\nPara ouvir a troca de slide, use `brCarouselPageChange`; `detail.activePage` começa em 1.\n\n### Quando usar\n\n- Imagens ou avisos com a mesma importância, em espaço limitado.\n\n### Quando evitar\n\n- Informação essencial para a tarefa: mostre tudo de uma vez, por exemplo em uma grade de `br-card`.\n- Etapas de um formulário: use `br-wizard` ou `br-step`.\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/carousel?tab=designer).\n---\n\n\n### **Events:**\n - **brDidPageChange** - Emitido quando o slide ativo muda.\nDisparado por clique nos botões de navegação, clique no indicador de step,\ngesto swipe (apenas em mobile, breakpoint < 576px) ou avanço automático.\n`activePage` é 1-based: o primeiro slide emite `1`, o segundo `2`, e assim por diante.\n- **brCarouselPageChange** - Evento emitido quando o slide ativo muda.\n- **brDidAutoPlayStart** - Emitido quando a reprodução automática é iniciada ou retomada.\n- **brCarouselAutoplayStart** - Evento emitido quando a reprodução automática começa.\n- **brDidAutoPlayPause** - Emitido quando a reprodução automática é pausada.\n- **brCarouselAutoplayPause** - Evento emitido quando a reprodução automática é pausada.\n\n### **Methods:**\n - **onTablistKeydown(e: _KeyboardEvent_)** - Navegação por teclado para o modo tablist (`indicatorType=\"simple\"`).\n\nO W3C APG Carousel Pattern especifica que, quando os controles de seleção de slide\nsão implementados como tabs, a interação de teclado segue o\nhttps://www.w3.org/WAI/ARIA/apg/patterns/tabs/ Tabs Pattern (W3C APG).\nEsse padrão define o comportamento de roving tabindex com as teclas:\n- `ArrowLeft` / `ArrowRight` (ou `ArrowUp` / `ArrowDown`): move o foco entre as tabs.\n- `Home`: move o foco para a primeira tab.\n- `End`: move o foco para a última tab.\n\nO handler está no `br-carousel` (e não no `br-step`) porque a lógica de\n`effectiveCircular` é uma responsabilidade do carrossel, mantendo uma única\nfonte de verdade para a navegação circular.\n\nO evento `keydown` é composto (`composed: true`), portanto borbulha através do\nshadow DOM do `br-step-item` até o host do `br-carousel`.\n- **nextPage(): _Promise<void>_** - Avança para o próximo slide. Respeita a prop `isCircular` (ou ativo automaticamente com `autoPlay`).\n- **previousPage(): _Promise<void>_** - Retorna ao slide anterior. Respeita a prop `isCircular` (ou ativo automaticamente com `autoPlay`).\n- **goToPage(index: _number_): _Promise<void>_** - Navega para o slide de número `index` (1 = primeiro slide, 2 = segundo, …).\nValores fora do intervalo válido são ignorados.\n- **getActivePage(): _Promise<number>_** - Retorna o número do slide atualmente ativo (1 = primeiro slide, 2 = segundo, …).\n- **play(): _Promise<void>_** - Inicia ou retoma a reprodução automática programaticamente.\n- **pause(): _Promise<void>_** - Pausa a reprodução automática programaticamente.\n- **getIsPlaying(): _Promise<boolean>_** - Retorna `true` se a reprodução automática está ativa no momento.\n\n### **Slots:**\n - **default** - Slot para os slides do carrossel. Aceita exclusivamente elementos `br-carousel-page`.\n\n### **CSS Parts:**\n - **container** - Elemento raiz do carrossel. Recebe `role=\"region\"` e `aria-roledescription=\"carousel\"`.\n- **stage** - Área do palco que contém os slides. Recebe `aria-live` e `aria-atomic`.\n- **nav-prev** - Wrapper do botão de navegação para o slide anterior.\n- **nav-next** - Wrapper do botão de navegação para o próximo slide.\n- **indicator** - Wrapper do indicador de páginas. - Quando `indicatorType=\"simple\"`: renderiza `br-step` em `mode=\"tablist\"`. - Quando `indicatorType=\"textual\"`: renderiza um `span[aria-live]` com \"X/N\".\n- **play-button** - Wrapper do botão de play/pause. Presente apenas quando `autoPlay=true`.",
      "attributes": [
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        },
        {
          "name": "aria-label",
          "description": "Rótulo acessível do carrossel.\nNão deve conter a palavra \"carrossel\" (W3C APG).\nAtribuído ao `aria-label` do container raiz.",
          "values": []
        },
        {
          "name": "nav-position",
          "description": "Posição dos botões de navegação (prev/next) em relação ao palco.\n- `outside`: botões ficam nas laterais externas ao palco.\n- `inside`: botões ficam sobrepostos dentro do palco, ocupando toda a altura.",
          "values": [{ "name": "CarouselNavPosition" }]
        },
        {
          "name": "indicator-type",
          "description": "Define o tipo de indicador de páginas renderizado.\n- `simple`: dots usando `br-step` em modo controller.\n- `textual`: texto \"X/N\" com `aria-live`.\n- `none`: sem indicador.",
          "values": [{ "name": "CarouselIndicatorType" }]
        },
        {
          "name": "indicator-position",
          "description": "Posição do indicador de páginas em relação ao palco.\nIgnorada quando `indicatorType=\"none\"`.\n- `outside`: indicador fica abaixo do palco.\n- `inside`: indicador fica sobreposto ao conteúdo.",
          "values": [{ "name": "CarouselIndicatorPosition" }]
        },
        {
          "name": "is-circular",
          "description": "Habilita a navegação circular entre os slides.\nQuando true, os botões \"Anterior\" e \"Próximo\" permanecem sempre habilitados: avançar a partir do último slide retorna ao primeiro, e retroceder a partir do primeiro leva ao último.\nSe autoPlay estiver ativado, o comportamento circular será aplicado automaticamente, independentemente deste valor.",
          "values": []
        },
        {
          "name": "circular",
          "description": "Habilita navegação circular. Quando informada, tem precedência sobre `isCircular`.",
          "values": []
        },
        {
          "name": "auto-play",
          "description": "Habilita reprodução automática.\nPausa em hover e foco (W3C). Ativa o loop circular automaticamente.\nNão recomendado em dispositivos móveis.",
          "values": []
        },
        {
          "name": "autoplay",
          "description": "Habilita reprodução automática. Quando informada, tem precedência sobre `autoPlay`.",
          "values": []
        },
        {
          "name": "interval",
          "description": "Intervalo em milissegundos entre cada avanço automático.\nDeve ser um inteiro maior que 0; valores inválidos usam `5000`.\nSó tem efeito quando `autoPlay=true`.",
          "values": []
        },
        {
          "name": "direction",
          "description": "Direção de navegação automática do carrossel.\n- `left`: retrocede (vai para o slide anterior).\n- `right`: avança (vai para o próximo slide).\nSó tem efeito quando `autoPlay=true`.",
          "values": [{ "name": "CarouselDirection" }]
        },
        {
          "name": "color-mode",
          "description": "Aplica esquema de cores escuro ao componente.",
          "values": [{ "name": "CarouselColorMode" }]
        },
        {
          "name": "mobile-nav",
          "description": "Exibe botões de navegação em dispositivos móveis.\nPor padrão os botões são ocultados no breakpoint `sm`.",
          "values": []
        },
        {
          "name": "min-height",
          "description": "Altura mínima do palco do carrossel.\nAceita qualquer valor CSS válido para `min-height` (ex.: `400px`, `50vh`).",
          "values": []
        },
        {
          "name": "height",
          "description": "Altura do carrossel.\nAceita qualquer valor CSS válido para `height` (ex.: `400px`, `50vh`).",
          "values": []
        },
        {
          "name": "max-width",
          "description": "Largura máxima do carrossel.\nQuando definido, o componente é centralizado horizontalmente.\nAceita qualquer valor CSS válido para `max-width` (ex.: `800px`, `64rem`).",
          "values": []
        },
        {
          "name": "image-fit",
          "description": "Ajuste aplicado a imagens filhas diretas de `br-carousel-page`.",
          "values": [{ "name": "CarouselImageFit" }]
        }
      ],
      "references": []
    },
    {
      "name": "br-carousel-page",
      "description": "Representa um slide do `br-carousel`. Use somente dentro dele.\n\nColoque no slide a imagem, o texto e as ações. Para começar em um slide que não seja o primeiro, marque-o com `active`; depois disso, o `br-carousel` controla o slide ativo.\n---\n\n\n### **Methods:**\n - **setLabel(defaultLabel: _string_): _Promise<void>_** - Define o label acessível (`aria-label`) do slide.\n\nChamado pelo `br-carousel` pai para aplicar o label gerado automaticamente\ncom base na posição do slide (ex: `\"Slide 1 de 3\"`).\n\nO `aria-label` declarado diretamente no elemento tem prioridade:\nse o consumidor definir `aria-label` no HTML ou via `setAttribute`,\nesse valor será mantido e o parâmetro `defaultLabel` será ignorado.\n- **setActive(active: _boolean_): _Promise<void>_** - Ativa ou desativa o slide.\n\n### **Slots:**\n - **default** - Qualquer conteúdo: imagens, textos, cards, vídeos, outros componentes do Design System.\n\n### **CSS Parts:**\n - **content** - Wrapper interno do conteúdo do slide.",
      "attributes": [
        {
          "name": "custom-id",
          "description": "Identificador único customizável do slide.\nQuando definido, é aplicado diretamente ao atributo `id` do elemento host,\ngarantindo que referências ARIA externas, testes automatizados e âncoras funcionem corretamente.\nO `br-carousel` pai detecta este valor e usa-o também no `controls-id` do indicador de tabs,\nmantendo o vínculo ARIA entre tab e tabpanel automaticamente.",
          "values": []
        },
        {
          "name": "active",
          "description": "Marca este slide como visível e acessível.\nPode ser usado declarativamente no HTML para definir o slide inicial:\nEm runtime, o `br-carousel` pai gerencia o estado via `setActive()`.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-checkbox",
      "description": "O `br-checkbox` marca ou desmarca uma opção independente. Funciona em formulários como um `<input type=\"checkbox\">`: é enviado com `name` e `value` quando está marcado.\n\n```html\n<br-checkbox name=\"termos\" value=\"aceito\" label=\"Li e aceito os termos\" required></br-checkbox>\n```\n\nUse `indeterminate` para indicar seleção parcial, por exemplo em um \"selecionar todos\" quando só parte dos itens está marcada.\n\n### Quando usar\n\n- Opções em que escolher uma não impede escolher outra.\n- Confirmar uma condição, como aceitar termos.\n\n### Quando evitar\n\n- Só uma opção pode ser escolhida: use `br-radio-group`.\n- A mudança vale na hora, sem enviar formulário: use `br-switch`.\n- Muitas opções em pouco espaço: use `br-select` com `multiple`.\n\nPara várias opções da mesma pergunta, agrupe-as em um `br-checkbox-group`.\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/checkbox?tab=designer).\n---\n\n\n### **Events:**\n - **checkedChange** - Disparado depois que o valor do `checked` foi alterado.\n- **indeterminateChange** - Disparado depois que o valor do `indeterminate` foi alterado.\n- **brCheckboxValidationChange** - Emitido ao iniciar e concluir a validação customizada.\n\n### **Methods:**\n - **checkValidity(): _Promise<boolean>_** - Retorna `true` se o valor do checkbox for válido, caso contrário `false`.\nSe o checkbox for inválido, dispara um evento 'invalid'.\n- **reportValidity(): _Promise<boolean>_** - Retorna `true` se o valor do checkbox for válido, caso contrário `false`.\nSe for inválido, exibe a mensagem de erro padrão do navegador.\n- **setCustomValidity(message: _string_): _Promise<void>_** - Define uma mensagem de validação customizada para o checkbox.\nSe a mensagem for uma string vazia, o erro customizado é limpo.\n- **validate(): _Promise<boolean>_** - Executa o validator do checkbox e retorna se o valor atual é válido.\n- **getValidationState(): _Promise<FormValidationState>_** - Retorna um snapshot serializável da Constraint Validation API.\n- **setIndeterminate(value: _boolean_)** - Define o estado indeterminado do checkbox.\n- **toggleChecked()** - @deprecated Atualize a propriedade `checked` diretamente. - Inverte o valor da prop `checked`\n- **setNumberOfChildren(value: _number_)** - Define o número de checkboxes filhos em um grupo de checkboxes.\n\n### **Slots:**\n - **default** - Slot para o rótulo do checkbox, como alternativa à propriedade label.\n- **feedback** - Mensagem de validação, normalmente um `br-message`.\n\n### **CSS Parts:**\n - **container** - Contêiner visual do checkbox.\n- **input** - Elemento input nativo do checkbox.\n- **label** - Rótulo do checkbox.\n- **feedback** - Contêiner da mensagem de validação.",
      "attributes": [
        {
          "name": "indeterminate",
          "description": "Define o estado intermediário do checkbox.\nQuando verdadeiro, exibe uma marcação parcial visual que indica seleção parcial.\nÚtil para representar grupos onde alguns itens estão selecionados, mas não todos.\nAo clicar no checkbox neste estado, ele será automaticamente alterado para marcado.",
          "values": []
        },
        {
          "name": "checked",
          "description": "Define o estado de seleção do checkbox.\nSe definido como verdadeiro, o checkbox estará marcado. Caso contrário, estará desmarcado.",
          "values": []
        },
        {
          "name": "custom-id",
          "description": "Identificador único.\nCaso não seja fornecido, um ID gerado automaticamente será usado.",
          "values": []
        },
        {
          "name": "disabled",
          "description": "Desativa o checkbox, tornando-o não interativo.",
          "values": []
        },
        {
          "name": "required",
          "description": "Se verdadeiro, o checkbox é obrigatório e deve ser marcado antes que o formulário possa ser enviado.",
          "values": []
        },
        {
          "name": "validator",
          "description": "Regra síncrona ou assíncrona aplicada ao estado booleano do checkbox.\nRetorne uma mensagem para invalidar ou `null` para aceitar o valor.",
          "values": [{ "name": "CheckboxValidator" }]
        },
        {
          "name": "has-hidden-label",
          "description": "Define se o label associado ao checkbox deve ser oculto.\nSe definido como verdadeiro, o texto do label será oculto, mas o checkbox ainda estará visível e funcional.",
          "values": []
        },
        {
          "name": "label-hidden",
          "description": "Oculta visualmente o rótulo. Quando informada, tem precedência sobre `hasHiddenLabel`.",
          "values": []
        },
        {
          "name": "label",
          "description": "Texto descritivo exibido à direita do checkbox.\nCaso um slot seja utilizado para fornecer um texto alternativo, o valor desta propriedade será ignorado.",
          "values": []
        },
        {
          "name": "name",
          "description": "Define o nome do checkbox, que é utilizado para agrupar checkboxes em formulários e identificar o campo.\nO valor é obrigatório e deve ser fornecido para garantir o correto funcionamento em formulários.",
          "values": []
        },
        {
          "name": "state",
          "description": "Indica a validade do checkbox.\nSe não for especificado, o valor padrão é `null`, indicando que a validade não foi definida.",
          "values": [{ "name": "valid" }, { "name": "invalid" }]
        },
        {
          "name": "feedback-state",
          "description": "Estado de feedback. Quando informado, tem precedência sobre `state`.",
          "values": [{ "name": "valid" }, { "name": "invalid" }]
        },
        {
          "name": "value",
          "description": "Define o valor associado ao checkbox quando ele faz parte de um formulário nativo (`<form>`).\nEsse valor é enviado com o formulário quando o checkbox está selecionado.\n**Nota:** Esta propriedade não deve ser utilizada para determinar se o checkbox está selecionado; para verificar o estado de seleção, use a propriedade `checked`.",
          "values": []
        },
        {
          "name": "is-father",
          "description": "Indica se o checkbox é pai de um grupo de checkboxes.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-checkbox-group",
      "description": "O `br-checkbox-group` reúne checkboxes da mesma pergunta e adiciona um checkbox \"Selecionar tudo\" no topo.\n\nO \"Selecionar tudo\" marca ou desmarca todas as opções e fica em estado parcial quando só algumas estão marcadas. O `label` vira a legenda do grupo para leitores de tela.\n\n```html\n<br-checkbox-group label=\"Receber notificações por\">\n  <br-checkbox name=\"canais\" value=\"email\" label=\"E-mail\"></br-checkbox>\n  <br-checkbox name=\"canais\" value=\"sms\" label=\"SMS\"></br-checkbox>\n  <br-checkbox name=\"canais\" value=\"app\" label=\"Aplicativo\"></br-checkbox>\n</br-checkbox-group>\n```\n\nUse `orientation=\"horizontal\"` para as opções lado a lado, e `select-all-label` e `unselect-all-label` para trocar os textos do \"Selecionar tudo\".\n\n### Quando usar\n\n- Várias opções independentes que respondem à mesma pergunta.\n\n### Quando evitar\n\n- Um único checkbox, como aceite de termos: use só o `br-checkbox`.\n- Apenas uma opção pode ser escolhida: use `br-radio-group`.\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/checkgroup?tab=designer).\n---\n\n\n### **Slots:**\n - **default** - Slot para adicionar os checkboxes controlados pelo grupo.",
      "attributes": [
        {
          "name": "disabled",
          "description": "Desabilita o controlador e os checkboxes contidos no grupo.",
          "values": []
        },
        {
          "name": "label",
          "description": "Texto descritivo do grupo.",
          "values": []
        },
        {
          "name": "unselect-all-label",
          "description": "Rótulo para desmarcar todos os checkboxes.",
          "values": []
        },
        {
          "name": "select-all-label",
          "description": "Rótulo para marcar todos os checkboxes.",
          "values": []
        },
        {
          "name": "indeterminate",
          "description": "Define o estado indeterminado inicial do grupo.",
          "values": []
        },
        {
          "name": "orientation",
          "description": "Orientação visual das opções. Valores inválidos usam `vertical`.",
          "values": [{ "name": "horizontal" }, { "name": "vertical" }]
        },
        {
          "name": "custom-id",
          "description": "Identificador único do controlador.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-checkgroup",
      "description": "@deprecated Use `br-checkbox-group`.\n\nNome antigo do `br-checkbox-group`, mantido para compatibilidade. Em código novo, use `br-checkbox-group`.\n---\n\n\n### **Slots:**\n - **default** - Slot para adicionar os checkboxes controlados pelo grupo.",
      "attributes": [
        {
          "name": "label",
          "description": "Texto descritivo do grupo.",
          "values": []
        },
        {
          "name": "label-selecionado",
          "description": "Rótulo legado para desmarcar todos.",
          "values": []
        },
        {
          "name": "unselect-all-label",
          "description": "Rótulo para desmarcar todos.",
          "values": []
        },
        {
          "name": "label-desselecionado",
          "description": "Rótulo legado para marcar todos.",
          "values": []
        },
        {
          "name": "select-all-label",
          "description": "Rótulo para marcar todos.",
          "values": []
        },
        {
          "name": "indeterminate",
          "description": "Estado indeterminado inicial.",
          "values": []
        },
        {
          "name": "custom-id",
          "description": "Identificador legado do controlador.",
          "values": []
        },
        {
          "name": "disabled",
          "description": "Desabilita o controlador e os checkboxes contidos no grupo.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-collapse",
      "description": "O `br-collapse` mostra e esconde um bloco de conteúdo ao clicar no título. Funciona como um `<details>`.\n\n```html\n<br-collapse>\n  <span slot=\"trigger\">Quem pode solicitar?</span>\n  <p>Qualquer pessoa com CPF regular.</p>\n</br-collapse>\n```\n\nUse `open` para começar aberto. Para que só um item fique aberto por vez (sanfona), dê o mesmo `accordion-group` a todos:\n\n```html\n<br-collapse accordion-group=\"faq\">…</br-collapse>\n<br-collapse accordion-group=\"faq\">…</br-collapse>\n```\n\nOs ícones de abrir e fechar podem ser trocados por `icon-to-show` e `icon-to-hide`, como propriedade ou como slot.\n\n### Quando usar\n\n- Perguntas frequentes e conteúdos longos divididos em tópicos.\n- Seções opcionais de um formulário longo.\n\n### Quando evitar\n\n- Informação essencial, que precisa ficar sempre visível.\n- Alternar entre visões diferentes da mesma tela: use `br-tab`.\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/collapse?tab=designer).\n---\n\n\n### **Events:**\n - **brDidOpen** - Emitido ao expandir, com o identificador e o grupo de accordion.\n- **brCollapseOpen** - Evento emitido ao expandir.\n- **brDidClose** - Emitido ao recolher, com o identificador e o grupo de accordion.\n- **brCollapseClose** - Evento emitido ao recolher.\n\n### **Methods:**\n - **openCollapse()** - @deprecated Atualize a propriedade `open`. - Abre o collapse programaticamente.\n- **closeCollapse()** - @deprecated Atualize a propriedade `open`. - Fecha o collapse programaticamente.\n- **toggle(): _Promise<void>_** - Alterna o estado aberto.\nO elemento também redispara o evento nativo `toggle` no host; essa ocorrência é sintética (`isTrusted === false`).\n- **render()** - Renderiza o <details> com acionador e conteúdo expansível.\n\n### **Slots:**\n - **default** - Slot para o conteúdo expansível exibido ao abrir o collapse.\n- **trigger** - Slot para personalizar o acionador (texto, ícones, imagens, etc.).\n- **icon-to-show** - Ícone exibido quando o conteúdo está oculto (ex.: `<i slot=\"icon-to-show\" class=\"fas fa-plus\"></i>`). Forma preferida para ícones por classe CSS; tem precedência sobre a prop `iconToShow`.\n- **icon-to-hide** - Ícone exibido quando o conteúdo está visível. Forma preferida para ícones por classe CSS; tem precedência sobre a prop `iconToHide`.\n\n### **CSS Parts:**\n - **details** - Elemento details nativo do collapse.\n- **trigger** - Acionador (summary) do collapse.\n- **content** - Área de conteúdo expansível.",
      "attributes": [
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        },
        {
          "name": "open",
          "description": "Controla se o collapse está aberto.",
          "values": []
        },
        {
          "name": "divider",
          "description": "Indica se o componente possui um divisor (divider) inferior.",
          "values": []
        },
        {
          "name": "accordion-group",
          "description": "Identifica o grupo de accordion; quando informado, mantém apenas um item aberto por vez entre os irmãos\ndo mesmo pai imediato.",
          "values": []
        },
        {
          "name": "icon-to-show",
          "description": "Identificador Iconify do ícone exibido quando o conteúdo está oculto. O valor padrão usa o registro SVG local.\nPara ícones por classe CSS, use o slot `icon-to-show`.",
          "values": []
        },
        {
          "name": "icon-to-hide",
          "description": "Identificador Iconify do ícone exibido quando o conteúdo está visível. O valor padrão usa o registro SVG local.\nPara ícones por classe CSS, use o slot `icon-to-hide`.",
          "values": []
        },
        {
          "name": "icon-position",
          "description": "Define a posição do ícone no acionador: 'left' ou 'right'.",
          "values": [{ "name": "CollapseIconPosition" }]
        },
        {
          "name": "use-icons",
          "description": "Controla se o identificador visual de expansão/retração será renderizado.",
          "values": []
        },
        {
          "name": "expansion-direction",
          "description": "Direção em que o conteúdo é expandido e para a qual o ícone aponta.",
          "values": [{ "name": "CollapseExpansionDirection" }]
        },
        {
          "name": "color-mode",
          "description": "Tema visual do Collapse/Accordion.",
          "values": [{ "name": "CollapseColorMode" }]
        },
        {
          "name": "trigger-variant",
          "description": "Forma visual do acionador sem alterar sua semântica nativa.",
          "values": [{ "name": "CollapseTriggerVariant" }]
        }
      ],
      "references": []
    },
    {
      "name": "br-cookiebar",
      "description": "O `br-cookiebar` avisa sobre o uso de cookies e registra o consentimento da pessoa, por categoria e por cookie.\n\nEle aparece como uma barra no rodapé (`mode=\"default\"`) e abre um painel com as categorias quando a pessoa escolhe \"Definir Cookies\" (`mode=\"open\"`).\n\n### Como usar\n\n1. Escreva o texto da barra em `info-text`.\n2. Coloque o título e a introdução do painel em um `br-cookiebar-header`.\n3. Crie um `br-cookiebar-group` por categoria e, dentro dele, um `br-cookiebar-cookie` por cookie. Use `group-opt-out=\"false\"` nas categorias que não podem ser desativadas.\n4. Adicione os links de política em `br-cookiebar-link`, no slot `links`.\n5. Ouça `brCookiebarResponse` para salvar a escolha e ative `show` somente enquanto não houver escolha salva.\n\n```html\n<br-cookiebar info-text=\"Usamos cookies para melhorar sua experiência.\">\n  <br-cookiebar-header slot=\"header\" main-title=\"Aviso de cookies\" entry-text=\"Escolha quais cookies aceitar.\"></br-cookiebar-header>\n\n  <br-cookiebar-group group-id=\"necessarios\" group-name=\"Necessários\" group-text=\"Essenciais para o site funcionar.\" group-opt-out=\"false\">\n    <br-cookiebar-cookie cookie-id=\"sessao\" cookie-name=\"sessao\" expires=\"Ao fechar o navegador\" domain=\"exemplo.gov.br\" enterprise=\"Próprio\" purpose=\"Manter a sessão\" description=\"Identifica a sessão de acesso.\"></br-cookiebar-cookie>\n  </br-cookiebar-group>\n\n  <br-cookiebar-link slot=\"links\" name=\"Política de privacidade\" href=\"/privacidade\"></br-cookiebar-link>\n</br-cookiebar>\n```\n\n```js\nconst cookiebar = document.querySelector('br-cookiebar');\ncookiebar.show = !localStorage.getItem('consentimento');\ncookiebar.addEventListener('brCookiebarResponse', (event) => {\n  localStorage.setItem('consentimento', JSON.stringify(event.detail));\n});\n```\n\n`event.detail` traz o estado de cada categoria (`cookieGroups`) e de cada cookie (`cookieList`). Para reabrir o painel depois, por exemplo num link \"Preferências de cookies\", chame `openPanel()`.\n\n### Quando evitar\n\n- Avisos que não tratam de consentimento: use `br-message` ou `br-notification`.\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/cookiebar?tab=designer).\n---\n\n\n### **Events:**\n - **brCookiebarShow** - Emitido quando o componente se torna visível (`show` → true).\n- **brCookiebarHide** - Emitido quando o componente é ocultado (`show` → false).\n- **brCookiebarOpen** - Emitido quando o painel expande para modo open.\n- **brCookiebarClose** - Emitido quando o painel recolhe para modo default.\n- **brCookiebarAccept** - Sinal emitido quando o usuário clica em Aceitar.\nNão carrega payload — ouça `brCookiebarResponse` para obter o estado completo de consentimento.\n- **brCookiebarReject** - Sinal emitido quando o usuário clica em \"Rejeitar não obrigatórios\".\nNão carrega payload — ouça `brCookiebarResponse` para obter o estado completo de consentimento.\n- **brCookiebarResponse** - Emitido após `brCookiebarAccept` ou `brCookiebarReject`, com o estado final de consentimento.\nÉ o único evento que carrega `CookiebarOutputData` — use-o para persistir o consentimento\n(localStorage, cookie HTTP, API etc.).\nNão é disparado durante interações com checkboxes e switches internos.\n- **brCookiebarPolicyClick** - Emitido quando o usuário clica no botão secundário no modo opt-in (`allOptOut=false`).\nO consumidor é responsável por navegar para a página de Política de Cookies.\n\n### **Methods:**\n - **handleShowChange(newValue: _boolean_)** - Observa mudanças em `show`.\nAo exibir o componente, garante que o modo inicial seja sempre `default` e emite `brCookiebarShow`.\nCom `scrim=true`, aplica `inert` nos irmãos e registra o trap de foco.\nCom `scrim=false`, o usuário pode navegar livremente pela página (WCAG 2.1.2).\nAo ocultar, emite `brCookiebarHide`.\n- **handleModeChange(newValue: _CookiebarMode_)** - Observa mudanças em `mode`.\nAo entrar em modo `open`, emite `brCookiebarOpen`, aplica `inert` nos irmãos e move o foco\npara o botão fechar (trap focus modal).\nAo sair do modo `open`, emite `brCookiebarClose` e — se `scrim=true` — reaplica `inert`\ne o listener de trap para o painel default. Sem scrim, nenhum trap é ativado.\n- **handleSelectAllPropChange(newValue: _boolean_)** - Observa mudanças externas na prop `selectAll`.\nSincroniza o estado interno do checkbox e propaga o valor para todos os grupos opt-out.\n- **handleGroupChange()** - Escuta o evento `brCookiebarGroupChange` emitido por qualquer `br-cookiebar-group` filho.\nApenas recalcula o estado visual do checkbox \"Selecionar tudo\" — não emite `brCookiebarResponse`.\nO evento de resposta completo é emitido somente ao clicar em Aceitar ou Rejeitar.\n- **openDefault(): _Promise<void>_** - Exibe o cookiebar no modo `default` (barra inferior).\n- **openPanel(): _Promise<void>_** - Exibe o cookiebar diretamente no modo `open` (painel de tela cheia).\n- **close(): _Promise<void>_** - Oculta o cookiebar.\n- **getSelectedCookies(): _Promise<CookiebarOutputData>_** - Retorna o JSON com o estado atual de seleção de todos os grupos e cookies.\n\n### **Slots:**\n - **default** - Recebe os subcomponentes `br-cookiebar-group`, `br-cookiebar-note-group` e `br-cookiebar-note`.\n- **header** - Recebe `br-cookiebar-header` ou HTML livre.\n- **links** - Recebe links complementares (`br-cookiebar-link` ou elementos `<a>` livres).\n- **actions** - Recebe botões de ação. Se vazio, o componente renderiza os botões padrão.\n\n### **CSS Parts:**\n - **container** - Container raiz do componente.\n- **default-panel** - Painel fechado (modo default).\n- **open-panel** - Painel expandido (modo open).\n- **header** - Cabeçalho do painel aberto.\n- **body** - Corpo do painel aberto (com rolagem).\n- **footer** - Rodapé com botões de ação.\n- **scrim** - Camada de sobreposição opcional.",
      "attributes": [
        {
          "name": "custom-id",
          "description": "Identificador único; gerado automaticamente quando omitido.",
          "values": []
        },
        {
          "name": "show",
          "description": "Controla a visibilidade do componente.\nO consumidor é responsável por definir este valor com base na persistência do consentimento\n(ex: verificar se já existe um cookie de consentimento salvo).",
          "values": []
        },
        {
          "name": "mode",
          "description": "Estado visual atual do painel. Valores inválidos usam `default`.\n- `default`: barra inferior com texto e botões.\n- `open`: painel de tela cheia com grupos de cookies configuráveis.",
          "values": [{ "name": "CookiebarMode" }]
        },
        {
          "name": "all-opt-out",
          "description": "Define se o cookiebar opera no padrão opt-out (`true`, recomendado) ou opt-in (`false`).\n- **opt-out** (`true`): botão secundário \"Definir Cookies\"; usuário pode configurar cookies.\n- **opt-in** (`false`): botão secundário \"Ver Política de Cookies\"; painel é somente leitura.",
          "values": []
        },
        {
          "name": "info-text",
          "description": "Texto informativo exibido na barra inferior (modo default), descrevendo a política de cookies.",
          "values": []
        },
        {
          "name": "accept-button",
          "description": "Texto do botão primário de aceite. Padrão: `Aceitar`.",
          "values": []
        },
        {
          "name": "reject-button",
          "description": "Texto do botão de rejeição dos cookies não obrigatórios.\nExibido apenas quando `show-reject-button=\"true\"`.",
          "values": []
        },
        {
          "name": "show-reject-button",
          "description": "Quando `true`, exibe o botão \"Rejeitar não obrigatórios\" nos painéis default e open.\nCookies de grupos com `group-opt-out=\"false\"` (sempre ativos) não são afetados.",
          "values": []
        },
        {
          "name": "opt-out-button",
          "description": "Texto do botão secundário quando `all-opt-out=\"true\"`.",
          "values": []
        },
        {
          "name": "opt-in-button",
          "description": "Texto do botão secundário quando `all-opt-out=\"false\"`.",
          "values": []
        },
        {
          "name": "close-label",
          "description": "`aria-label` do botão fechar exibido no canto do painel expandido (`mode=\"open\"`).\nPermite traduzir o rótulo para outros idiomas.",
          "values": []
        },
        {
          "name": "panel-label",
          "description": "`aria-label` do painel expandido (`mode=\"open\"`), que possui `role=\"dialog\"`.\nLeitores de tela anunciam este texto ao entrar no diálogo modal de configuração de cookies.\nDeve descrever o propósito do diálogo de forma sucinta (ex: \"Configurações de cookies\").",
          "values": []
        },
        {
          "name": "default-panel-label",
          "description": "`aria-label` da barra de aviso de cookies (`mode=\"default\"`).\nDeve descrever o propósito da região de forma sucinta (ex: \"Aviso de cookies\").",
          "values": []
        },
        {
          "name": "cookie-groups-label",
          "description": "Rótulo do título da seção de grupos de cookies.",
          "values": []
        },
        {
          "name": "links-label",
          "description": "`aria-label` do elemento `<nav>` que envolve os links complementares no painel expandido.\nPermite traduzir o rótulo para outros idiomas.",
          "values": []
        },
        {
          "name": "select-all",
          "description": "Estado inicial do checkbox \"Selecionar tudo\".\nQuando `true`, todos os grupos opt-out iniciam selecionados.",
          "values": []
        },
        {
          "name": "select-all-label",
          "description": "Texto do checkbox geral quando está totalmente selecionado (ação: desselecionar).",
          "values": []
        },
        {
          "name": "unselect-all-label",
          "description": "Texto do checkbox geral quando está desmarcado ou indeterminado (ação: selecionar).",
          "values": []
        },
        {
          "name": "all-alert-message",
          "description": "Mensagem exibida abaixo do checkbox geral quando está desmarcado ou com seleção parcial.",
          "values": []
        },
        {
          "name": "scrim",
          "description": "Quando `true`, exibe uma camada semitransparente (scrim) sobre o conteúdo da página\nabaixo do painel default, sinalizando que o cookiebar requer atenção.\n\n**Efeito no foco:** com `scrim=true`, o atributo `inert` é aplicado nos irmãos do\ncookiebar no DOM, prendendo o foco e o cursor virtual do leitor de tela dentro do\npainel default enquanto ele estiver visível. Com `scrim=false` (padrão), nenhum trap\né ativado — o usuário pode navegar livremente pela página, em conformidade com\nWCAG 2.1.2 (No Keyboard Trap). Use `scrim=true` apenas quando o cenário de negócio\nexigir que a decisão sobre cookies seja tomada antes de qualquer outra interação.\n\nNo modo `open` (diálogo modal), o `inert` é aplicado independentemente do valor de `scrim`.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-cookiebar-cookie",
      "description": "Descreve um cookie dentro de um `br-cookiebar-group`: nome, validade, domínio, empresa responsável, finalidade e descrição.\n\nUse `cookie-opt-out=\"false\"` quando o cookie não puder ser desativado.\n---\n\n\n### **Events:**\n - **brCookiebarCookieChange** - Emitido ao ligar/desligar o switch.\nBorbulha até o `br-cookiebar-group` pai para recalcular o estado do grupo.\n\n### **Slots:**\n - **default** - Área livre para inserir conteúdo personalizado abaixo dos itens do cookie.\n\n### **CSS Parts:**\n - **card** - Container principal do cookie.\n- **switch** - Área que contém o switch de ativação.\n- **details** - Wrapper interno com o switch, alerta e lista de itens.",
      "attributes": [
        {
          "name": "custom-id",
          "description": "ID interno gerado automaticamente. Não é necessário informar.",
          "values": []
        },
        {
          "name": "cookie-id",
          "description": "Identificador único do cookie. Usado internamente para montar o JSON de resposta.",
          "values": []
        },
        {
          "name": "cookie-name",
          "description": "Nome do cookie.",
          "values": []
        },
        {
          "name": "cookie-opt-out",
          "description": "Indica se o usuário pode desativar este cookie.\n- `true` (padrão): exibe o switch e permite desativar.\n- `false`: o cookie é sempre ativo e o switch não aparece.",
          "values": []
        },
        {
          "name": "cookie-selected",
          "description": "Estado atual do switch: ligado ou desligado.",
          "values": []
        },
        {
          "name": "expires",
          "description": "Tempo de vida do cookie (ex: `30 minutos`, `1 ano`, `Sessão`).",
          "values": []
        },
        {
          "name": "domain",
          "description": "Domínio ao qual o cookie pertence (ex: `serpro.gov.br`).",
          "values": []
        },
        {
          "name": "enterprise",
          "description": "Nome da empresa responsável pelo cookie (ex: `Serpro`, `Google`).",
          "values": []
        },
        {
          "name": "purpose",
          "description": "Para que serve este cookie (ex: `Autenticação`, `Análise de tráfego`).",
          "values": []
        },
        {
          "name": "description",
          "description": "Descrição detalhada do cookie e como ele é utilizado.",
          "values": []
        },
        {
          "name": "alert-message",
          "description": "Mensagem exibida quando o switch é desligado, alertando sobre o impacto.",
          "values": []
        },
        {
          "name": "on-label",
          "description": "Texto exibido no switch quando está ligado.",
          "values": []
        },
        {
          "name": "off-label",
          "description": "Texto exibido no switch quando está desligado.",
          "values": []
        },
        {
          "name": "cookie-name-label",
          "description": "Rótulo do item \"nome do cookie\" na lista.",
          "values": []
        },
        {
          "name": "expires-label",
          "description": "Rótulo do item \"vencimento\" na lista.",
          "values": []
        },
        {
          "name": "domain-label",
          "description": "Rótulo do item \"domínio\" na lista.",
          "values": []
        },
        {
          "name": "enterprise-label",
          "description": "Rótulo do item \"empresa\" na lista.",
          "values": []
        },
        {
          "name": "purpose-label",
          "description": "Rótulo do item \"finalidade\" na lista.",
          "values": []
        },
        {
          "name": "description-label",
          "description": "Rótulo do item \"descrição\" na lista.",
          "values": []
        },
        {
          "name": "extra-label",
          "description": "Rótulo de um campo extra opcional exibido ao final da lista de itens.\nUse junto com `extra-value` para adicionar uma informação personalizada\nsem precisar usar o slot.",
          "values": []
        },
        {
          "name": "extra-value",
          "description": "Valor do campo extra. Exibido ao lado do `extra-label`.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-cookiebar-group",
      "description": "Uma categoria de cookies dentro do `br-cookiebar`, como \"Necessários\" ou \"Estatísticas\". Contém um `br-cookiebar-cookie` para cada cookie.\n\nInforme `group-id`, `group-name` e `group-text`. Use `group-opt-out=\"false\"` quando a categoria não puder ser desativada: ela aparece como \"Sempre ativo\".\n---\n\n\n### **Events:**\n - **brCookiebarGroupChange** - Emitido quando o estado de seleção do grupo muda (por interação do usuário ou propagação).\nO `br-cookiebar` pai escuta este evento para recalcular o checkbox \"Selecionar todos\".\n- **brCookiebarGroupToggle** - Emitido ao expandir ou recolher a lista de cookies do grupo.\n\n### **Methods:**\n - **handleGroupSelectedChange(newValue: _boolean_)** - Observa mudanças externas em `groupSelected` (propagação top-down do `br-cookiebar`).\nPropaga o novo valor para todos os cookies opt-out filhos e atualiza os contadores.\nIgnorado quando a mudança é originada internamente pelo recálculo bottom-up.\n- **handleCookieChange()** - Escuta o evento `brCookiebarCookieChange` emitido por qualquer `br-cookiebar-cookie` filho.\nRecalcula o estado do grupo (marcado / desmarcado / indeterminado) com base\nno estado atual de todos os cookies opt-out. Ignorado durante propagações top-down.\n- **getState(): _Promise<CookiebarSelectionState>_** - Retorna o estado atual de seleção do grupo:\n- `true`: todos os cookies opt-out estão selecionados.\n- `false`: nenhum cookie opt-out está selecionado.\n- `'indeterminate'`: seleção parcial.\n\n### **Slots:**\n - **default** - Recebe os subcomponentes `br-cookiebar-cookie` do grupo.\n\n### **CSS Parts:**\n - **container** - Div raiz do grupo.\n- **header** - Linha de cabeçalho com nome, contadores e controles.\n- **body** - Área expansível que contém os cookies.",
      "attributes": [
        {
          "name": "custom-id",
          "description": "ID interno gerado automaticamente. Não é necessário informar.",
          "values": []
        },
        {
          "name": "group-id",
          "description": "Identificador único do grupo. Usado internamente para montar o JSON de resposta.",
          "values": []
        },
        {
          "name": "group-name",
          "description": "Nome exibido no cabeçalho do grupo (ex: `Desempenho`, `Marketing`).",
          "values": []
        },
        {
          "name": "group-text",
          "description": "Texto descritivo exibido abaixo do cabeçalho, explicando a finalidade do grupo.",
          "values": []
        },
        {
          "name": "group-opt-out",
          "description": "Indica se o usuário pode desativar este grupo de cookies.\n- `true` (padrão): exibe checkbox e permite desativar.\n- `false`: exibe \"Sempre ativo\" e não permite desativar.",
          "values": []
        },
        {
          "name": "group-selected",
          "description": "Estado de seleção do checkbox do grupo.\nPode ser controlado externamente pelo `br-cookiebar` (propagação top-down)\nou recalculado automaticamente a partir do estado dos cookies filhos (bottom-up).",
          "values": []
        },
        {
          "name": "group-alert-message",
          "description": "Mensagem exibida quando o grupo é desmarcado, alertando sobre o impacto.",
          "values": []
        },
        {
          "name": "expanded",
          "description": "Controla se a lista de cookies está visível.",
          "values": []
        },
        {
          "name": "select-all-group-label",
          "description": "Texto do checkbox quando o grupo está totalmente selecionado (ação: desselecionar).",
          "values": []
        },
        {
          "name": "unselect-all-group-label",
          "description": "Texto do checkbox quando o grupo está desmarcado ou indeterminado (ação: selecionar).",
          "values": []
        },
        {
          "name": "always-active-label",
          "description": "Texto exibido no lugar do checkbox quando `group-opt-out=\"false\"`.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-cookiebar-header",
      "description": "Título e texto de introdução do painel do `br-cookiebar`. Use no slot `header` do cookiebar.\n\nInforme `main-title`, `entry-text` e, se quiser, a data em `last-update`. Para outro layout, coloque seu próprio conteúdo dentro do componente.\n---\n\n\n### **Slots:**\n - **default** - Conteúdo HTML personalizado que substitui o layout estruturado. Quando preenchido, as props `main-title`, `entry-text` e `last-update` são ignoradas.\n\n### **CSS Parts:**\n - **container** - Div raiz do cabeçalho.",
      "attributes": [
        {
          "name": "custom-id",
          "description": "ID interno gerado automaticamente. Não é necessário informar.",
          "values": []
        },
        {
          "name": "main-title",
          "description": "Título principal exibido no topo do cabeçalho (ex: `Política de Cookies`).",
          "values": []
        },
        {
          "name": "entry-text",
          "description": "Texto introdutório exibido abaixo do título e da data, descrevendo a política.",
          "values": []
        },
        {
          "name": "last-update",
          "description": "Data da última atualização da política de cookies.\nQuando não informada, a linha de data não é exibida.",
          "values": []
        },
        {
          "name": "last-update-label",
          "description": "Rótulo exibido antes da data de atualização.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-cookiebar-link",
      "description": "Link do `br-cookiebar` para a política de privacidade ou os termos de uso. Use no slot `links` do cookiebar.\n\nInforme `name` e `href`. Em SPA, use `navigation-mode=\"event\"` e trate o evento `brNavigate`.\n---\n\n\n### **Events:**\n - **brNavigate** - Evento cancelável emitido em `navigation-mode=\"event\"` para cliques primários sem modificadores em links `_self`.\nChame `event.preventDefault()` no listener para impedir a navegação nativa e entregar `event.detail.href` ao roteador da SPA.\n\n### **CSS Parts:**\n - **link** - Elemento âncora (`<a>`) do link.",
      "attributes": [
        {
          "name": "custom-id",
          "description": "ID interno gerado automaticamente. Não é necessário informar.",
          "values": []
        },
        {
          "name": "name",
          "description": "Texto visível do link (ex: `Política de Privacidade`).",
          "values": []
        },
        {
          "name": "href",
          "description": "URL de destino do link.",
          "values": []
        },
        {
          "name": "target",
          "description": "Define onde o link será aberto.\n- `_self` (padrão): abre na mesma aba.\n- `_blank`: abre em uma nova aba, com ícone de link externo e `rel=\"noopener noreferrer\"` automáticos.",
          "values": []
        },
        {
          "name": "navigation-mode",
          "description": "Controla como o componente integra a navegação mantendo `href` real no elemento navegável.\n- `native` (padrão): preserva o comportamento do navegador, conforme HTML/W3C.\n- `event`: emite `brNavigate`; se o evento for cancelado, bloqueia a navegação nativa para a SPA assumir.\nCliques com modificadores, botão do meio ou `target` diferente de `_self` permanecem nativos.",
          "values": [{ "name": "BrNavigationMode" }]
        }
      ],
      "references": []
    },
    {
      "name": "br-cookiebar-note",
      "description": "Uma pergunta e resposta complementar no painel do `br-cookiebar`. Informe `question` e `answer`.\n\nPara reunir várias notas, coloque-as em um `br-cookiebar-note-group`.\n---\n\n\n### **CSS Parts:**\n - **container** - Div raiz do item.\n- **question** - Parágrafo da pergunta.\n- **answer** - Parágrafo da resposta.",
      "attributes": [
        {
          "name": "custom-id",
          "description": "Identificador único; gerado automaticamente quando omitido.",
          "values": []
        },
        {
          "name": "question",
          "description": "Texto da pergunta.",
          "values": []
        },
        { "name": "answer", "description": "Texto da resposta.", "values": [] }
      ],
      "references": []
    },
    {
      "name": "br-cookiebar-note-group",
      "description": "Agrupa notas do `br-cookiebar` em uma seção que pode ser expandida. O título vem de `note-title`.\n\nColoque dentro dele elementos `br-cookiebar-note` ou outro conteúdo.\n---\n\n\n### **Events:**\n - **brCookiebarNoteGroupToggle** - Emitido ao expandir ou recolher a seção.\n\n### **Slots:**\n - **default** - Recebe `br-cookiebar-note` ou qualquer conteúdo HTML livre.\n\n### **CSS Parts:**\n - **container** - Div raiz do grupo.\n- **header** - Cabeçalho acessível que expande ou recolhe o conteúdo.\n- **content** - Área de conteúdo exibida quando o grupo está expandido.",
      "attributes": [
        {
          "name": "custom-id",
          "description": "ID interno gerado automaticamente. Não é necessário informar.",
          "values": []
        },
        {
          "name": "note-title",
          "description": "Título exibido no cabeçalho da seção.",
          "values": []
        },
        {
          "name": "expanded",
          "description": "Define se a seção começa expandida (`true`) ou recolhida (`false`, padrão).",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-datetime-picker",
      "description": "O `br-datetime-picker` é um campo para informar data, hora ou data e hora. A pessoa pode digitar ou escolher no calendário e nos controles de horário.\n\nEscolha o tipo em `mode`: `date`, `time` ou `datetime`. Para início e fim, use `selection-mode=\"range\"`.\n\n```html\n<br-datetime-picker mode=\"date\" name=\"nascimento\" required></br-datetime-picker>\n\n<br-datetime-picker mode=\"date\" selection-mode=\"range\" name=\"periodo\"></br-datetime-picker>\n```\n\n### Ler o valor\n\n| Onde | Formato |\n| --- | --- |\n| `value` | `Date` (ou `null`) |\n| `rangeValue` | `{ start, end }` com `Date` |\n| `serialized-value` e envio do formulário | `2026-05-20` (data), `14:30` (hora), `2026-05-20T14:30:00-03:00` (data e hora), `início/fim` (intervalo) |\n\nAtribua valores do tipo `Date` pelo JavaScript (`picker.value = new Date()`), não por atributo. Para restringir datas, use `min`, `max` e `disabled-dates`.\n\n### Quando usar\n\n- Formulários que pedem uma data, um horário ou um período.\n\n### Quando evitar\n\n- Para só exibir uma data: use texto formatado.\n- Para escolher várias datas soltas: o componente aceita uma data ou um intervalo.\n\nO calendário (`br-date-picker`), os controles de horário (`br-time-picker`) e o campo de texto (`br-datetime-input`) são criados pelo próprio componente; não é preciso declará-los.\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/datetimepicker?tab=designer).\n---\n\n\n### **Events:**\n - **dateStateChange** - Evento público emitido quando a data de referência ou a seleção mudam.\n\nPayload (`DatetimePickerDateState`):\n- `referenceDate`: Date — data usada para navegação visual (mês/semana exibidos).\n- `value`: Date | null — valor selecionado atualmente.\n- **brDatetimePickerChange** - Evento emitido quando a seleção muda.\n\nPayload (`DatetimePickerChangeDetail`):\n- `mode`: DatetimePickerMode — modo atual do componente (`date` | `time` | `datetime`).\n- `selectionMode`: DatetimePickerSelectionMode — `single` ou `range`.\n- `value`: Date | null | DatetimePickerDateRange — seleção atual (tipo depende de `selectionMode`).\n- `serializedValue`: string | undefined — representação serializada para integração com formulários.\n- **valueChange** - Evento emitido quando o valor selecionado muda.\n- **brDatetimePickerValidationChange** - Emitido ao iniciar e concluir a validação customizada.\n\nPayload (`FormValidationChangeDetail`):\n- `validating`: boolean — indica se a validação está em execução.\n- `valid`: boolean | null — resultado da validação (`null` enquanto valida).\n- `message`: string | null — mensagem de validação associada.\n\n### **Methods:**\n - **handleModeChange(newValue: _string_)** - Revalida o modo sempre que a prop mudar.\n- **handleRequiredChange()** - Revalida o estado do formulário quando required mudar.\n- **handleDisabledChange()** - Exclui o valor do FormData enquanto o componente estiver desabilitado.\n- **handleSelectionModeChange(newValue: _DatetimePickerSelectionMode_)** - Reage a mudanças no modo de seleção e limpa intervalo quando necessário.\n- **handleWeekStartsOnChange(newValue: _DatetimePickerWeekDayIndex_)** - Revalida o dia inicial da semana sempre que a prop mudar.\n- **handleInitialMomentChange(newValue: _DatetimePickerInitialMoment_)** - Aplica ou limpa a seleção da data atual conforme o novo valor da prop.\n- **handleValueChange(newValue: _Date | null_)** - Sincroniza alterações externas do valor com o estado visual e o formulário nativo.\n- **handleSerializedValueChange(newValue: _string_)** - Converte alterações externas no valor serializado sem mudar o tipo da prop legada `value`.\n- **handleValueAsDateChange(newValue: _Date | null_)** - Mantém `valueAsDate` e a prop legada `value` apontando para o mesmo estado observável.\n- **handleDisabledDatesChange(newValue: _DatetimePickerDisabledDates_)** - Recalcula a lista de datas desabilitadas quando a prop mudar.\n- **formResetCallback()** - Restaura o estado do componente quando o formulário é restaurado.\n- **formStateRestoreCallback(state: _string | File | FormData | null_)** - Restaura o estado do formulário (autofill / histórico).\n- **setDisabledDates(dates: _DatetimePickerDisabledDate[] | null_): _Promise<void>_** - Define programaticamente as datas desabilitadas.\n\nUse quando scripts externos precisam fornecer uma lista tipada de\ndatas a bloquear no calendário. Substitui a prop `disabledDates` para\natualizações imperativas.\n- **setValue(value: _Date | string | null_): _Promise<void>_** - Define o valor do componente de forma imperativa.\n\nAceita `Date`, string compatível com o `mode`, ou `null` para limpar a seleção.\nValidação de datas desabilitadas é aplicada antes da atribuição.\n- **getValue(): _Promise<Date | null>_** - Retorna uma cópia do valor selecionado atualmente.\n- **clear(): _Promise<void>_** - Limpa valor e intervalo selecionados.\n\nRemove seleção atual e restaura a referência de navegação para a data atual.\n- **open(): _Promise<void>_** - Abre o picker quando o componente estiver habilitado.\n- **close(): _Promise<void>_** - Fecha o picker.\n- **toggle(): _Promise<void>_** - Alterna o estado de abertura do picker.\n- **focusInput(): _Promise<void>_** - Move o foco para o input nativo interno.\n- **setRange(start: _Date | string | null_, end: _Date | string | null_): _Promise<void>_** - Define um intervalo no modo atual e ativa `selectionMode=\"range\"`.\n\nValida datas contra bloqueios e sincroniza estado visual e de formulário.\nEm `datetime`, mantém os limites informados e sinaliza intervalo inválido\nquando o término precede o início, sem ajustar datas automaticamente.\n- **getRange(): _Promise<{ start: Date | null; end: Date | null } | null>_** - Retorna o intervalo de datas selecionado quando em modo `selectionMode=\"range\"`.\n- **isOpen(): _Promise<boolean>_** - Consulta se o picker está atualmente aberto.\n- **resetToInitial(): _Promise<void>_** - Restaura o estado inicial atualmente registrado para reset.\n- **checkValidity(): _Promise<boolean>_** - Permite que consumidores acionem validação nativa do formulário via host.\n- **reportValidity(): _Promise<boolean>_** - Permite exibir mensagens nativas de validação no host.\n- **setCustomValidity(message: _string_): _Promise<void>_** - Define ou limpa uma mensagem de validade customizada.\n- **validate(): _Promise<boolean>_** - Executa o validator customizado (se houver) e valida o controle.\n\nEmite eventos de início/conclusão da validação e atualiza mensagens internas.\n- **getValidationState(): _Promise<FormValidationState>_** - Retorna um snapshot serializável da Constraint Validation API.\n- **render()** - Renderização principal do componente.\n\n### **Slots:**\n - **feedback** - Mensagem de validação, normalmente um `br-message`.\n\n### **CSS Parts:**\n - **container** - Parte para o container base do seletor.\n- **panel** - Parte para o painel em forma de card que engloba o seletor.\n- **input-container** - Container base do campo de entrada interno.\n- **input-field** - Campo textual interno.\n- **input-icon** - Ícone de ação (calendário/relógio).\n- **feedback** - Contêiner da mensagem de validação.",
      "attributes": [
        {
          "name": "mode",
          "description": "Modo exibido pelo componente.\n\nValores: `date` | `time` | `datetime`.\nValores inválidos são normalizados para o padrão.",
          "values": [{ "name": "DatetimePickerMode" }]
        },
        {
          "name": "locale",
          "description": "Locale usado para formatação e rótulos.",
          "values": [{ "name": "DatetimePickerLocale" }]
        },
        {
          "name": "placeholder",
          "description": "Texto placeholder exibido no input.",
          "values": []
        },
        {
          "name": "name",
          "description": "Nome do campo para submissão em formulários nativos.",
          "values": []
        },
        {
          "name": "required",
          "description": "Indica se o campo é requerido para submissão do formulário.",
          "values": []
        },
        {
          "name": "min",
          "description": "Menor data/hora aceito (Date | string | null).",
          "values": [{ "name": "Date" }]
        },
        {
          "name": "max",
          "description": "Maior data/hora aceito (Date | string | null).",
          "values": [{ "name": "Date" }]
        },
        {
          "name": "validator",
          "description": "Validador customizado (síncrono ou assíncrono) para a seleção.\n\nRecebe `Date | DatetimePickerDateRange | null` como valor.",
          "values": [{ "name": "DatetimePickerValidator" }]
        },
        {
          "name": "selection-mode",
          "description": "Tipo de seleção: `single` ou `range`.",
          "values": [{ "name": "DatetimePickerSelectionMode" }]
        },
        {
          "name": "week-starts-on",
          "description": "Dia inicial da semana exibido no calendário (0 = Dom, 6 = Sáb).",
          "values": [{ "name": "DatetimePickerWeekDayIndex" }]
        },
        {
          "name": "initial-moment",
          "description": "Valor inicial da seleção: `'now' | Date | string | null`.",
          "values": [{ "name": "DatetimePickerInitialMoment" }]
        },
        {
          "name": "value",
          "description": "Valor selecionado pelo usuário (Date | null).\n\nPode ser controlado externamente e é refletido internamente.",
          "values": [{ "name": "Date" }]
        },
        {
          "name": "serialized-value",
          "description": "Representação serializada compatível com controles HTML.\n\nFormatos variam conforme `mode`. Em intervalos, usa `início/fim`.",
          "values": []
        },
        { "name": "value-as-date", "values": [{ "name": "Date" }] },
        {
          "name": "range-value",
          "description": "Intervalo controlado quando `selectionMode=\"range\"`.\n\nEm `datetime`, preserva as datas e horários informados; término anterior ao\ninício torna o controle inválido, sem reordenar ou avançar datas.",
          "values": [{ "name": "DatetimePickerDateRange" }]
        },
        {
          "name": "disabled",
          "description": "Desabilita toda a interação do componente.",
          "values": []
        },
        {
          "name": "disabled-dates",
          "description": "Datas indisponíveis para seleção. Aceita `Date[]`, `string` ou `null`.\n\nDatas inválidas são ignoradas. A comparação considera apenas o dia.",
          "values": [{ "name": "DatetimePickerDisabledDates" }]
        },
        {
          "name": "fixed-row-count",
          "description": "Mantém número fixo de linhas no calendário (6 semanas) quando `true`.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-date-picker",
      "description": "Calendário usado pelo `br-datetime-picker`. Também pode ser usado sozinho, quando a tela precisa de um calendário sempre visível.\n\nUsado sozinho, ele não tem campo de texto nem participa de formulário: a aplicação lê a seleção e cuida da validação.\n\n```html\n<br-date-picker id=\"agenda\"></br-date-picker>\n```\n\n```js\nconst calendario = document.querySelector('#agenda');\ncalendario.addEventListener('change', () => console.log(calendario.value));\n```\n\n- `value`: data selecionada (`Date`).\n- `referenceDate`: mês exibido.\n- `disabledDates`: datas que não podem ser escolhidas.\n- `selectionMode=\"range\"`: seleção de intervalo, lida em `rangeValue`.\n\nPara mudar o idioma, veja \"Idiomas\" na documentação do `br-datetime-picker`.\n---\n\n\n### **Events:**\n - **dateStateChange** - Emite o estado consolidado do componente quando há mudança de referência/seleção.\n\nPayload (DatetimePickerDateState):\n\n### **Methods:**\n - **handleValueChange(newValue: _Date | null_, oldValue: _Date | null_)** - Sincroniza `focusedDate` quando o valor selecionado muda externamente.\n- **handleWeekStartsOnChange(newValue: _number_)** - Revalida a configuração quando o início da semana muda.\n- **handleLocaleChange(newValue: _string_)** - Revalida o locale quando a prop muda.\n\n### **CSS Parts:**\n - **container** - Parte para o container base do calendário.\n- **header** - Cabeçalho do calendário (contendo navegação e seleção de mês/ano).\n- **month-select** - Elemento de seleção do mês.\n- **year-input** - Elemento de entrada do ano.\n- **calendar** - Grade geral do calendário.\n- **weekdays** - Container para os rótulos dos dias da semana.\n- **weekday** - Rótulo individual do dia da semana.\n- **grid** - Grade de dias do mês.\n- **day** - Célula individual do dia no calendário.",
      "attributes": [
        {
          "name": "week-starts-on",
          "description": "Índice do dia em que a semana começa na interface do calendário.",
          "values": [{ "name": "WeekDayIndex" }]
        },
        {
          "name": "reference-date",
          "description": "Data usada como base visual para o mês atualmente exibido.",
          "values": [{ "name": "Date" }]
        },
        {
          "name": "value",
          "description": "Data atualmente selecionada pelo usuário, ou `null` quando não há seleção.",
          "values": [{ "name": "Date" }]
        },
        {
          "name": "selection-mode",
          "description": "Define se a seleção ocorre por data única ou por intervalo.",
          "values": [{ "name": "DatetimePickerSelectionMode" }]
        },
        {
          "name": "range-start",
          "description": "Data inicial selecionada quando o calendário opera no modo de intervalo.",
          "values": [{ "name": "Date" }]
        },
        {
          "name": "range-end",
          "description": "Data final selecionada quando o calendário opera no modo de intervalo.",
          "values": [{ "name": "Date" }]
        },
        {
          "name": "range-value",
          "description": "Intervalo controlado no modo `range`.\nQuando definido, mantém `rangeStart` e `rangeEnd` sincronizados.",
          "values": [{ "name": "DatetimePickerDateRange" }]
        },
        {
          "name": "disabled",
          "description": "Desabilita a interação do calendário quando `true`.",
          "values": []
        },
        {
          "name": "disabled-dates",
          "description": "Lista de datas indisponíveis para seleção no calendário.",
          "values": [{ "name": "Date[]" }]
        },
        {
          "name": "locale",
          "description": "Locale usado para gerar nomes de meses e dias da semana.",
          "values": []
        },
        {
          "name": "fixed-row-count",
          "description": "Se `true`, o calendário sempre exibe 6 semanas (42 dias); caso contrário, adapta-se ao mês.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-datetime-input",
      "description": "Campo de texto com máscara usado pelo `br-datetime-picker`. Interpreta a data ou a hora digitada e abre o calendário pelo botão do campo.\n\nÉ criado pelo `br-datetime-picker`; não é preciso declará-lo. Para um campo de data em formulário, use o `br-datetime-picker`.\n---\n\n\n### **Events:**\n - **dateStateChange** - Evento emitido quando o estado de data/hora muda (após commit ou parsing).\n\nPayload (`detail`):\n- **togglePicker** - Emite uma solicitação ao componente pai para alternar a abertura do picker.\nEmite sem payload.\n- **inputValidationChange** - Emite validação do texto digitado sem alterar o valor selecionado.\n\nPayload (`detail`):\n\n### **Methods:**\n - **handleRangeValueChange(newValue: _DatetimePickerDateRange | undefined_): _void_** - Watcher: sincroniza `rangeStart`/`rangeEnd` a partir de `rangeValue` controlado.\n- **handleValueChange(newValue: _Date | null_): _void_** - Watcher: reage a mudanças externas em `value`, normalizando e sincronizando\no texto exibido no input.\n- **handleModeChange(newValue: _string_): _void_** - Watcher: aplica normalização do `mode` e atualiza a máscara/valor exibido.\n- **handleReferenceDateChange(newValue: _Date_): _void_** - Watcher: valida `referenceDate` e resina o input quando não há seleção.\n- **handleRangeStartChange(newValue): _void_** - Watcher: atualiza a representação textual quando o início do range muda.\n- **handleRangeEndChange(newValue): _void_** - Watcher: atualiza a representação textual quando o fim do range muda.\n- **render()** - Renderização principal do componente.\n\n### **CSS Parts:**\n - **container** - Container do campo.\n- **input** - Elemento de entrada textual interno.\n- **icon** - Ícone de ação (calendário/relógio).",
      "attributes": [
        {
          "name": "placeholder",
          "description": "Texto de placeholder exibido quando o campo estiver vazio.",
          "values": []
        },
        {
          "name": "mode",
          "description": "Modo de entrada que controla máscara, parser e formato exibido.",
          "values": [{ "name": "DatetimePickerMode" }]
        },
        {
          "name": "reference-date",
          "description": "Data de referência usada para navegação e preenchimento de valores parciais.",
          "values": [{ "name": "Date" }]
        },
        {
          "name": "value",
          "description": "Valor atualmente selecionado pelo componente.",
          "values": [{ "name": "Date" }]
        },
        {
          "name": "disabled",
          "description": "Controla os estados de read-only ou bloqueio de formulário.",
          "values": []
        },
        {
          "name": "selection-mode",
          "description": "Define o modo de seleção: `single` (valor único) ou `range` (intervalo).",
          "values": [{ "name": "DatetimePickerSelectionMode" }]
        },
        {
          "name": "range-start",
          "description": "Início do intervalo em `selectionMode === 'range'`.",
          "values": [{ "name": "Date" }]
        },
        {
          "name": "range-end",
          "description": "Fim do intervalo em `selectionMode === 'range'`.",
          "values": [{ "name": "Date" }]
        },
        {
          "name": "range-value",
          "description": "Intervalo controlado no modo `range` como objeto `{ start, end }`.",
          "values": [{ "name": "DatetimePickerDateRange" }]
        }
      ],
      "references": []
    },
    {
      "name": "br-time-picker",
      "description": "Controles de hora e minuto usados pelo `br-datetime-picker`. Em um intervalo, o componente cria um controle para o início e outro para o fim.\n\nPara um campo de horário em formulário, use `<br-datetime-picker mode=\"time\">`. Usado sozinho, ele não participa de formulário: leia o horário em `value` e trate a validação na aplicação.\n---\n\n\n### **Events:**\n - **dateStateChange** - Evento emitido sempre que `referenceDate` ou `value` são atualizados.\n\nO `detail` segue a forma de `DatetimePickerDateState` e contém o estado\ncompartilhado entre subcomponentes de data e horário.\n\nPayload (`detail`):\n\n### **Methods:**\n - **handleValueChange(newValue: _Date | null_): _void_** - Sincroniza `referenceDate` quando a prop `value` muda.\n\nNormaliza segundos/milissegundos e restaura rascunhos locais.\n- **render(): _JSX.Element_** - Render principal do componente.\n\n### **CSS Parts:**\n - **container** - Container base do seletor de horários.\n- **timer** - Grupo que contém os campos de hora e minuto.\n- **field** - Campo de tempo com botões de ajuste.\n- **separator** - Separador visual entre hora e minuto.\n- **input** - Campo de entrada textual interno do tempo.",
      "attributes": [
        {
          "name": "reference-date",
          "description": "Data de referência usada para exibir e ajustar hora e minuto.",
          "values": [{ "name": "Date" }]
        },
        {
          "name": "value",
          "description": "Valor selecionado pelo usuário.",
          "values": [{ "name": "Date" }]
        },
        {
          "name": "disabled",
          "description": "Indica se os controles do seletor estão desabilitados.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-divider",
      "description": "O `br-divider` é uma linha que separa seções ou grupos de conteúdo. Pode ser horizontal ou vertical e ter um texto no meio.\n\n```html\n<br-divider></br-divider>\n\n<br-divider>ou</br-divider>\n\n<br-divider orientation=\"vertical\" thickness=\"medium\" border-style=\"dashed\"></br-divider>\n```\n\n### Quando usar\n\n- Marcar o fim de um bloco e o início de outro.\n- Separar alternativas, como \"Entrar com gov.br\" ou \"Entrar com certificado digital\".\n\n### Quando evitar\n\n- Quando o espaço em branco já separa bem o conteúdo.\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/divider?tab=designer).\n---\n\n\n### **Methods:**\n - **updateColor()** - Watcher para a cor do divisor.\nAtualiza a propriedade CSS '--border-color' do elemento para refletir a cor definida.\nIsso permite que o divisor use cores personalizadas sem precisar de estilos adicionais.\n- **updateMargins()** - Watcher para as propriedades de margin.\nAtualiza as propriedades CSS customizáveis do elemento para refletir os margins definidos.\n\n### **Slots:**\n - **default** - Slot opcional para conteúdo dentro do divisor (texto, ícones ou elementos personalizados).\n\n### **CSS Parts:**\n - **divider** - Elemento principal do divisor.\n- **content** - Conteúdo do divisor (quando há slot).",
      "attributes": [
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        },
        {
          "name": "orientation",
          "description": "Orientação do divisor. Em modo vertical, posicione dentro de um container com `display: flex`. Valores inválidos usam `horizontal`.",
          "values": [{ "name": "DividerOrientation" }]
        },
        {
          "name": "thickness",
          "description": "Espessura visual do divisor. Valores inválidos usam `small`.",
          "values": [{ "name": "DividerThickness" }]
        },
        {
          "name": "border-style",
          "description": "Estilo de borda do divisor. Valores inválidos usam `solid`.",
          "values": [{ "name": "DividerBorderStyle" }]
        },
        {
          "name": "is-dark-mode",
          "description": "Ativa variante de alto contraste para fundos escuros.",
          "values": []
        },
        {
          "name": "color-mode",
          "description": "Esquema de cor padrão. Quando informado, tem precedência sobre `isDarkMode`; valores inválidos usam `light`.",
          "values": [{ "name": "light" }, { "name": "dark" }]
        },
        {
          "name": "color",
          "description": "Cor do divisor.\nAceita os seguintes formatos de cor:\n- Cores nomeadas do CSS: 'red', 'blue', 'green', 'yellow', etc.\n- Códigos hexadecimais: '#ff0000', '#00ff00', '#0000ff', etc.\n- Valores RGB: 'rgb(255, 0, 0)', 'rgb(0, 255, 0)', etc.\n- Valores RGBA: 'rgba(255, 0, 0, 0.5)', 'rgba(0, 255, 0, 0.8)', etc.\n- Valores HSL: 'hsl(0, 100%, 50%)', 'hsl(120, 100%, 50%)', etc.\n- Valores HSLA: 'hsla(0, 100%, 50%, 0.5)', 'hsla(240, 100%, 50%, 0.7)', etc.\nSe não definida, usa a cor padrão do tema.",
          "values": []
        },
        {
          "name": "align",
          "description": "Alinhamento do conteúdo quando há slot interno. Valores inválidos são ignorados.",
          "values": [{ "name": "DividerAlign" }]
        },
        {
          "name": "bleed",
          "description": "Faz o divisor ocupar toda a largura do container, compensando paddings laterais.",
          "values": []
        },
        {
          "name": "margin-top",
          "description": "Margin top em pixels; se omitido, aplica padrão interno.\nDeve ser um número finito; valores inválidos usam 0.",
          "values": []
        },
        {
          "name": "margin-bottom",
          "description": "Margin bottom em pixels; se omitido, aplica padrão interno.\nDeve ser um número finito; valores inválidos usam 0.",
          "values": []
        },
        {
          "name": "margin-left",
          "description": "Margin left em pixels; se omitido, aplica padrão interno.\nDeve ser um número finito; valores inválidos usam 0.",
          "values": []
        },
        {
          "name": "margin-right",
          "description": "Margin right em pixels; se omitido, aplica padrão interno.\nDeve ser um número finito; valores inválidos usam 0.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-dropdown",
      "description": "O `br-dropdown` abre um painel flutuante a partir de um botão, com ações ou conteúdo complementar, como um menu \"Mais opções\".\n\nColoque o botão no slot `trigger` e o conteúdo no slot `target`:\n\n```html\n<br-dropdown>\n  <br-button slot=\"trigger\" emphasis=\"tertiary\">Mais opções</br-button>\n  <br-list slot=\"target\">\n    <br-item>Exportar</br-item>\n    <br-item>Imprimir</br-item>\n  </br-list>\n</br-dropdown>\n```\n\nO painel fecha com Escape ou com um clique fora dele (desative com `prevent-auto-dismiss`). A posição é definida por `placement`, por exemplo `bottom-start` ou `top-end`. Para acompanhar a abertura e o fechamento, ouça `brDropdownOpenChange`.\n\n### Quando usar\n\n- Várias ações secundárias quando há pouco espaço na tela.\n\n### Quando evitar\n\n- Escolher um valor de formulário: use `br-select`.\n- Navegação principal do site: use `br-menu`.\n- Avisos: use `br-message` ou `br-notification`.\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/dropdown?tab=designer).\n---\n\n\n### **Events:**\n - **brDidOpen** - Emitido quando o dropdown abre.\n- **brDidClose** - Emitido quando o dropdown fecha.\n- **brDropdownChange**\n- **brDropdownOpenChange** - Evento emitido quando o estado aberto muda.\n\n### **Methods:**\n - **targetZIndexChanged()** - Aplica o novo valor de z-index ao elemento target.\n- **matchTriggerWidthChanged()** - Recalcula a superfície aberta quando a política de largura muda.\n- **disabledChanged(newValue: _boolean_)** - Fecha o dropdown se for desabilitado enquanto estiver aberto.\n- **hide(): _Promise<{ isOpen: boolean }>_** - @deprecated Use `close`. - Esconde o dropdown.\nDefine a propriedade `isOpen` como falsa e retorna o novo estado.\nEste método pode ser chamado externamente.\n- **close(): _Promise<{ isOpen: boolean }>_** - Fecha o dropdown e mantém o formato de retorno legado.\n- **open(): _Promise<{ isOpen: boolean }>_** - Abre o dropdown.\nDefine a propriedade `isOpen` como verdadeira e retorna o novo estado.\nEste método pode ser chamado externamente.\n- **setFocus()** - Define o foco no elemento interno do componente.\nEste método pode ser chamado externamente para garantir que o foco seja aplicado ao elemento correto.\n\n### **Slots:**\n - **trigger** - Slot para o elemento que aciona a abertura do dropdown.\n- **target** - Slot para o conteúdo exibido pelo dropdown.\n\n### **CSS Parts:**\n - **trigger** - Área do acionador do dropdown.\n- **target** - Área de conteúdo exibida pelo dropdown.\n- **trigger-arrow** - Indicador visual opcional do acionador do dropdown.",
      "attributes": [
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().\n\n> **Uso compartilhado:** mantenha esta descrição idêntica em todos os componentes que usam `customId`.",
          "values": []
        },
        {
          "name": "is-open",
          "description": "Indica se o dropdown está aberto ou fechado.\nEsta propriedade é refletida no DOM e pode ser alterada externamente.\nO valor padrão é falso (fechado).",
          "values": []
        },
        {
          "name": "placement",
          "description": "Define o posicionamento do target (alvo) em relação ao trigger (acionador).",
          "values": [{ "name": "DropdownPlacement" }]
        },
        {
          "name": "show-arrow",
          "description": "Exibe uma seta ao lado do elemento acionador.\nO valor padrão é falso para preservar a apresentação dos triggers existentes.",
          "values": []
        },
        {
          "name": "arrow-position",
          "description": "Define o posicionamento da seta ('left' ou 'right') em relação ao elemento acionador.\nO valor padrão é 'right'.",
          "values": [{ "name": "DropdownArrowPosition" }]
        },
        {
          "name": "prevent-auto-dismiss",
          "description": "Define se o dropdown deve permanecer aberto quando outro dropdown é aberto.\nQuando definido como false (padrão), o dropdown será fechado automaticamente quando outro dropdown for aberto.\nQuando definido como true, o dropdown permanecerá aberto mesmo quando outro dropdown for aberto.",
          "values": []
        },
        {
          "name": "match-trigger-width",
          "description": "Faz o painel acompanhar a largura do acionador enquanto estiver aberto.\nO valor padrão `false` preserva a largura determinada pelo conteúdo.",
          "values": []
        },
        {
          "name": "target-z-index",
          "description": "Define o z-index do elemento target (alvo) do dropdown.\nPermite customizar a ordem de sobreposição do painel dropdown em relação aos demais elementos da página.\nO valor padrão utiliza a variável CSS do design system: var(--z-index-layer-1).",
          "values": []
        },
        {
          "name": "disabled",
          "description": "Desabilita a interação com o componente.\n\n> **Uso compartilhado:** mantenha esta descrição idêntica em todos os componentes que usam `disabled`.",
          "values": []
        },
        {
          "name": "aria-label",
          "description": "Define o rótulo acessível usado por tecnologias assistivas.\n\n> **Uso compartilhado:** mantenha esta descrição idêntica em todos os componentes que usam `ariaLabel`.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-footer",
      "description": "O `br-footer` é o rodapé da página: logotipo, mapa do site, redes sociais, parceiros e informações legais.\n\n### Como montar\n\n| Área | Onde colocar |\n| --- | --- |\n| Logotipo | `br-footer-logo` no slot `logo` |\n| Mapa do site | `br-footer-category` com `br-footer-item`, no conteúdo do footer |\n| Redes sociais | `br-footer-social` no slot `social-network` |\n| Parceiros | `br-footer-logo partner` no slot `partner-logo` |\n| Informações legais | `br-footer-legal` no slot `legal` |\n\n```html\n<br-footer social-network-title=\"Redes sociais\">\n  <br-footer-logo slot=\"logo\" src=\"/logo.svg\" description=\"Nome do órgão\" href=\"/\"></br-footer-logo>\n\n  <br-footer-category label=\"Serviços\">\n    <br-footer-item href=\"/servicos/emitir\">Emitir documento</br-footer-item>\n    <br-footer-item href=\"/servicos/consultar\">Consultar processo</br-footer-item>\n  </br-footer-category>\n\n  <br-footer-social slot=\"social-network\" icon=\"instagram\" description=\"Instagram\" href=\"https://instagram.com/orgao\" target=\"_blank\"></br-footer-social>\n\n  <br-footer-legal slot=\"legal\">Texto destinado a exibir informações sobre o licenciamento.</br-footer-legal>\n</br-footer>\n```\n\nEm telas pequenas, as categorias viram seções que abrem e fecham. O tema padrão é escuro; use `theme=\"light\"` para o claro.\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/footer?tab=designer).\n---\n\n\n### **Methods:**\n - **render(): __** - Renderiza o componente.\n\n### **Slots:**\n - **logo** - Slot para o logo do rodapé, utilizando o componente br-logo.\n- **default** - Slot para o mapa do site, utilizando br-footer-category e br-footer-item.\n- **social-network** - Slot para as redes sociais, utilizando br-footer-social.\n- **partner-logo** - Slot para logos de parceiros, utilizando br-logo.\n- **legal** - Slot para informações legais, utilizando br-footer-legal.\n\n### **CSS Parts:**\n - **container** - Wrapper principal do footer.\n- **site-map** - Área do mapa do site.\n- **social** - Área de redes sociais.\n- **partners** - Área de logos de parceiros.",
      "attributes": [
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        },
        {
          "name": "theme",
          "description": "Indica o tema do rodapé.",
          "values": [{ "name": "FooterTheme" }]
        },
        {
          "name": "color-mode",
          "description": "Esquema de cor padrão. Quando informado, tem precedência sobre `theme`.",
          "values": [{ "name": "FooterTheme" }]
        },
        {
          "name": "social-network-title",
          "description": "Texto de descrição das redes sociais.",
          "values": []
        },
        {
          "name": "layout-width",
          "description": "Define a largura do container interno do rodapé.\n- `contained`: largura máxima limitada pela grade no breakpoint desktop (`container-lg`).\n- `full`: sempre ocupa 100% da largura disponível (`container-fluid`).",
          "values": [{ "name": "FooterLayoutWidth" }]
        }
      ],
      "references": []
    },
    {
      "name": "br-footer-category",
      "description": "Grupo de links do mapa do site no `br-footer`. O título vem de `label` e os links são `br-footer-item`.\n\nEm telas pequenas, a categoria vira uma seção que abre e fecha.\n---\n\n\n### **Methods:**\n - **render(): __** - Renderiza o componente.\n\n### **Slots:**\n - **default** - Slot para os itens da categoria no rodapé, utilizando br-footer-item.",
      "attributes": [
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        },
        {
          "name": "label",
          "description": "Título da categoria exibido no cabeçalho da lista.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-footer-item",
      "description": "Um link do mapa do site, dentro de um `br-footer-category`. Informe o destino em `href` e o texto no conteúdo.\n\nEm SPA, use `navigation-mode=\"event\"` e trate o evento `brNavigate`.\n---\n\n\n### **Events:**\n - **brNavigate** - Evento cancelável emitido em `navigation-mode=\"event\"` para cliques primários sem modificadores em links `_self`.\nChame `event.preventDefault()` no listener para impedir a navegação nativa e entregar `event.detail.href` ao roteador da SPA.\n\n### **Methods:**\n - **render(): __** - Renderiza o componente\n\n### **Slots:**\n - **default** - Slot para o conteúdo do item no rodapé, incluindo texto ou componentes de roteamento para SPAs.",
      "attributes": [
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        },
        {
          "name": "href",
          "description": "URL ou caminho para o qual o usuário será direcionado ao clicar no item.\nQuando definido, o item será renderizado como um link.",
          "values": []
        },
        {
          "name": "navigation-mode",
          "description": "Controla como o componente integra a navegação mantendo `href` real no elemento navegável.\n- `native` (padrão): preserva o comportamento do navegador, conforme HTML/W3C.\n- `event`: emite `brNavigate`; se o evento for cancelado, bloqueia a navegação nativa para a SPA assumir.\nCliques com modificadores, botão do meio ou `target` diferente de `_self` permanecem nativos.",
          "values": [{ "name": "BrNavigationMode" }]
        }
      ],
      "references": []
    },
    {
      "name": "br-footer-legal",
      "description": "Informações legais do `br-footer`, como licença de uso e direitos autorais. Use no slot `legal`.\n---\n\n\n### **Methods:**\n - **render(): __** - Renderiza o componente.\n\n### **Slots:**\n - **default** - Slot para informações legais no rodapé, como direitos autorais ou termos de uso.\n\n### **CSS Parts:**\n - **container** - Wrapper principal do footer-legal.",
      "attributes": [
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-footer-logo",
      "description": "Logotipo do `br-footer`. Use no slot `logo` para a marca do órgão, ou com `partner` no slot `partner-logo` para parceiros.\n\nInforme a imagem em `src` e o texto alternativo em `description`. Com `href`, a logo vira link.\n---\n\n\n### **Events:**\n - **brNavigate** - Evento cancelável emitido em `navigation-mode=\"event\"` para cliques primários sem modificadores em links `_self`.\nChame `event.preventDefault()` no listener para impedir a navegação nativa e entregar `event.detail.href` ao roteador da SPA.\n\n### **Methods:**\n - **render(): __** - Monta o JSX que representa o componente.\n\n### **CSS Parts:**\n - **container** - Wrapper principal do footer-logo.",
      "attributes": [
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        },
        { "name": "src", "description": "Url da logo padrão.", "values": [] },
        {
          "name": "description",
          "description": "Descrição da logo.",
          "values": []
        },
        {
          "name": "position",
          "description": "Posição da logo.",
          "values": [{ "name": "FooterLogoPosition" }]
        },
        {
          "name": "is-partner",
          "description": "Define se a logo é de um parceiro.",
          "values": []
        },
        {
          "name": "partner",
          "description": "Identifica logo de parceiro. Quando informada, tem precedência sobre `isPartner`.",
          "values": []
        },
        {
          "name": "href",
          "description": "URL de destino quando a logo for clicada.\nSe fornecido, a logo será envolvida em um link.",
          "values": []
        },
        {
          "name": "target",
          "description": "Target do link quando href é fornecido.",
          "values": [{ "name": "BrLinkTarget" }]
        },
        {
          "name": "navigation-mode",
          "description": "Controla como o componente integra a navegação mantendo `href` real no elemento navegável.\n- `native` (padrão): preserva o comportamento do navegador, conforme HTML/W3C.\n- `event`: emite `brNavigate`; se o evento for cancelado, bloqueia a navegação nativa para a SPA assumir.\nCliques com modificadores, botão do meio ou `target` diferente de `_self` permanecem nativos.",
          "values": [{ "name": "BrNavigationMode" }]
        }
      ],
      "references": []
    },
    {
      "name": "br-footer-social",
      "description": "Link para uma rede social no `br-footer`. Use no slot `social-network`.\n\nInforme em `icon` o nome do ícone de marca, como `instagram` ou `youtube`; em `description`, o nome da rede (usado como texto acessível); e em `href`, o endereço. Para outro ícone, use o slot `icon`.\n---\n\n\n### **Events:**\n - **brNavigate** - Evento cancelável emitido em `navigation-mode=\"event\"` para cliques primários sem modificadores em links `_self`.\nChame `event.preventDefault()` no listener para impedir a navegação nativa e entregar `event.detail.href` ao roteador da SPA.\n\n### **Methods:**\n - **render(): __** - Renderiza o componente.\n\n### **Slots:**\n - **icon** - Ícone personalizado. Quando preenchido, substitui o ícone definido por `icon`.",
      "attributes": [
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        },
        {
          "name": "icon",
          "description": "Identificador da rede social. Os ícones oficiais mais comuns são\nrenderizados pelo registro SVG local; use o slot `icon` para uma fonte\ndiferente ou uma classe Font Awesome personalizada.",
          "values": []
        },
        {
          "name": "description",
          "description": "Descrição do ícone da rede social",
          "values": []
        },
        { "name": "href", "description": "URL da rede social", "values": [] },
        {
          "name": "target",
          "description": "Target do link quando href é fornecido.",
          "values": [{ "name": "BrLinkTarget" }]
        },
        {
          "name": "navigation-mode",
          "description": "Controla como o componente integra a navegação mantendo `href` real no elemento navegável.\n- `native` (padrão): preserva o comportamento do navegador, conforme HTML/W3C.\n- `event`: emite `brNavigate`; se o evento for cancelado, bloqueia a navegação nativa para a SPA assumir.\nCliques com modificadores, botão do meio ou `target` diferente de `_self` permanecem nativos.",
          "values": [{ "name": "BrNavigationMode" }]
        }
      ],
      "references": []
    },
    {
      "name": "br-header",
      "description": "O `br-header` é o cabeçalho da página: logotipo, nome do sistema, links, atalhos, busca, acesso e botão do menu.\n\n### Como montar\n\nCada área tem um slot:\n\n| Área | Slot | Componente sugerido |\n| --- | --- | --- |\n| Logotipo | `logo` | `br-header-logo` |\n| Nome e subtítulo | — | props `caption` e `subcaption` |\n| Links | `links` | `br-header-list` com `br-header-link` |\n| Atalhos (contraste, ajuda…) | `functions` | `br-header-list` com `br-header-function` |\n| Busca | `search` e `search-icon` | `br-input` e um `br-button` com ícone |\n| Entrar | `access` | `br-sign-in` |\n| Menu | `menu-trigger` | `br-button` que abre o `br-menu` |\n\n```html\n<br-header caption=\"Nome do sistema\" subcaption=\"Nome do órgão\" sticky>\n  <br-header-logo slot=\"logo\" src=\"/logo.svg\" description=\"gov.br\"></br-header-logo>\n\n  <br-header-list slot=\"links\" list-title=\"Acesso rápido\">\n    <br-header-link href=\"/servicos\">Serviços</br-header-link>\n  </br-header-list>\n\n  <br-input slot=\"search\" label=\"Buscar\" type=\"search\"></br-input>\n\n  <br-button slot=\"menu-trigger\" shape=\"circle\" aria-label=\"Abrir menu\" data-toggle=\"menu\" data-target=\"#menu-principal\">\n    <br-icon src=\"/icones/menu.svg\"></br-icon>\n  </br-button>\n</br-header>\n```\n\nUse `sticky` para manter o cabeçalho visível ao rolar a página e `compact` para a versão reduzida. Em telas menores, a busca fica escondida até o clique no botão do slot `search-icon`.\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/header?tab=designer).\n---\n\n\n### **Events:**\n - **headerCompactChange** - Evento disparado quando o cabeçalho entra ou sai do modo compacto.\nO evento contém os detalhes do estado compacto e o ID do componente pai.\n- **brHeaderCompactChange** - Evento emitido quando o modo compacto muda.\n- **headerWidthChange** - Evento disparado para indicar qual lista deve encolher primeiro.\nO evento contém os detalhes do ID do componente pai e o nome da lista.\n- **brMenuToggle** - Evento disparado para alternar o estado de um menu associado.\n- **brNavigate** - Evento cancelável emitido em `navigation-mode=\"event\"` para cliques primários sem modificadores em links `_self`.\nChame `event.preventDefault()` no listener para impedir a navegação nativa e entregar `event.detail.href` ao roteador da SPA.\n\n### **Methods:**\n - **watchIsCompact(newValue: _boolean_)** - Observa mudanças na propriedade isCompact.\n- **resetHeaderList()** - Reinicializa o estado das listas do cabeçalho, disparando o evento de redimensionamento.\nPode ser chamado externamente para forçar a atualização das listas.\n- **render(): __** - Renderiza o componente.\n\n### **Slots:**\n - **logo** - Slot para a logo do cabeçalho.\n- **signature** - Slot para a assinatura visual da organização.\n- **links** - Slot para links de navegação principais.\n- **functions** - Slot para botões de ação no cabeçalho.\n- **search-icon** - Botão que mostra o campo de busca em telas menores e no modo compacto.\n- **search** - Slot para o campo de busca.\n- **access** - Slot para o botão de acesso ou autenticação.\n- **menu-trigger** - Slot para o botão que abre o menu.\n- **caption** - Slot para o título do cabeçalho.\n- **subcaption** - Slot para o subtítulo do cabeçalho.\n\n### **CSS Parts:**\n - **header** - Elemento header principal.\n- **top** - Área superior do header.\n- **top-left** - Área superior esquerda (logo + assinatura).\n- **top-right** - Área superior direita (links + funções + busca + acesso).\n- **bottom** - Área inferior do header.\n- **bottom-left** - Área inferior esquerda (menu + título).\n- **bottom-right** - Área inferior direita (busca expandida).",
      "attributes": [
        {
          "name": "caption",
          "description": "Texto exibido como título do cabeçalho.",
          "values": []
        },
        {
          "name": "caption-url",
          "description": "URL associada ao título do cabeçalho.",
          "values": []
        },
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        },
        {
          "name": "density",
          "description": "Define a densidade visual do componente.\n\n- `small`: Alta densidade (componente menor, mais compacto e com menos espaçamento).\n- `medium`: Densidade intermediária, padrão recomendado para a maioria dos casos.\n- `large`: Baixa densidade (componente maior, mais espaçamento e altura).\n\nValores inválidos usam `medium`.",
          "values": [{ "name": "HeaderDensity" }]
        },
        {
          "name": "is-compact",
          "description": "Ativa o modo compacto do cabeçalho.",
          "values": []
        },
        {
          "name": "compact",
          "description": "Estado compacto. Quando informado, tem precedência sobre `isCompact`.",
          "values": []
        },
        {
          "name": "is-sticky",
          "description": "Fixa o cabeçalho no topo durante a rolagem.\nQuando `compact` ou `is-compact` é definido explicitamente, o modo visual\npermanece fixo durante a rolagem. Sem essa configuração, o header sticky\nalterna automaticamente entre os modos compacto e expandido.",
          "values": []
        },
        {
          "name": "sticky",
          "description": "Fixa o cabeçalho no topo. Quando informado, tem precedência sobre `isSticky`.",
          "values": []
        },
        {
          "name": "signature",
          "description": "Texto da assinatura exibida ao lado da logo.",
          "values": []
        },
        {
          "name": "shrink-first",
          "description": "Define qual lista encolhe primeiro quando o espaço é limitado.",
          "values": [{ "name": "HeaderShrinkFirst" }]
        },
        {
          "name": "subcaption",
          "description": "Texto exibido como subtítulo do cabeçalho.",
          "values": []
        },
        {
          "name": "subcaption-url",
          "description": "URL associada ao subtítulo do cabeçalho.",
          "values": []
        },
        {
          "name": "navigation-mode",
          "description": "Controla como os links internos do cabeçalho integram a navegação mantendo `href` real.\n- `native` (padrão): preserva o comportamento do navegador, conforme HTML/W3C.\n- `event`: emite `brNavigate`; se o evento for cancelado, bloqueia a navegação nativa para a SPA assumir.",
          "values": [{ "name": "BrNavigationMode" }]
        },
        {
          "name": "layout-width",
          "description": "Define a largura do container interno do cabeçalho.\n- `contained`: largura máxima limitada pela grade no breakpoint desktop (`container-lg`).\n- `full`: sempre ocupa 100% da largura disponível (`container-fluid`).",
          "values": [{ "name": "HeaderLayoutWidth" }]
        }
      ],
      "references": []
    },
    {
      "name": "br-header-function",
      "description": "Atalho do `br-header`, como contraste ou ajuda, dentro de um `br-header-list` no slot `functions`.\n\nColoque o ícone no slot `icon` e o nome no conteúdo:\n\n```html\n<br-header-function href=\"/ajuda\">\n  <br-icon slot=\"icon\" src=\"/icones/ajuda.svg\"></br-icon>\n  Ajuda\n</br-header-function>\n```\n\nEm telas grandes, aparece como botão de ícone, e o nome é usado como texto acessível. Em telas menores, aparece com ícone e nome dentro do menu da lista.\n---\n\n\n### **Events:**\n - **brNavigate** - Evento cancelável emitido em `navigation-mode=\"event\"` para cliques primários sem modificadores em links `_self`.\nChame `event.preventDefault()` no listener para impedir a navegação nativa e entregar `event.detail.href` ao roteador da SPA.\n\n### **Methods:**\n - **handleHeaderWidthChange(event: _CustomEvent<{ id: string; listNames: string[]; shrink: boolean }>_)** - Listener para o evento 'headerWidthChange', disparado pelo componente pai 'br-header'.\nO evento contém o ID do pai e o nome da lista.\nSe o ID do pai corresponder ao ID do cabeçalho atual, o evento será tratado.\n- **render(): __** - Renderiza o componente.\n\n### **Slots:**\n - **default** - Slot para o nome ou rótulo da funcionalidade.\n- **icon** - Slot para ícone que representa a funcionalidade.",
      "attributes": [
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        },
        {
          "name": "href",
          "description": "URL de destino da funcionalidade.",
          "values": []
        },
        {
          "name": "icon-name",
          "description": "Identificador legado do ícone exibido. Nomes conhecidos são resolvidos pelo\nregistro SVG local; para novos usos, prefira o slot `icon` com um SVG, asset\nlocal ou elemento de ícone controlado pela aplicação.",
          "values": []
        },
        {
          "name": "target",
          "description": "Define o alvo do link quando `href` está presente. Pode ser:\n- `_blank` para abrir em uma nova aba,\n- `_self` para abrir na mesma aba,\n- `_parent` para abrir na aba pai,\n- `_top` para abrir na aba superior.",
          "values": [{ "name": "BrLinkTarget" }]
        },
        {
          "name": "navigation-mode",
          "description": "Controla como o componente integra a navegação mantendo `href` real no elemento navegável.\n- `native` (padrão): preserva o comportamento do navegador, conforme HTML/W3C.\n- `event`: emite `brNavigate`; se o evento for cancelado, bloqueia a navegação nativa para a SPA assumir.\nCliques com modificadores, botão do meio ou `target` diferente de `_self` permanecem nativos.",
          "values": [{ "name": "BrNavigationMode" }]
        }
      ],
      "references": []
    },
    {
      "name": "br-header-link",
      "description": "Link do `br-header`, dentro de um `br-header-list` no slot `links`. Informe o destino em `href` e o texto no conteúdo.\n\nEm SPA, use `navigation-mode=\"event\"` e trate `brNavigate`.\n---\n\n\n### **Events:**\n - **brNavigate** - Evento cancelável emitido em `navigation-mode=\"event\"` para cliques primários sem modificadores em links `_self`.\nChame `event.preventDefault()` no listener para impedir a navegação nativa e entregar `event.detail.href` ao roteador da SPA.\n\n### **Methods:**\n - **render(): __** - Renderiza o componente.\n\n### **Slots:**\n - **default** - Slot para o conteúdo do link exibido no cabeçalho.",
      "attributes": [
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        },
        { "name": "href", "description": "URL do link.", "values": [] },
        {
          "name": "target",
          "description": "Define o alvo do link quando `href` está presente. Pode ser:\n- `_blank` para abrir em uma nova aba,\n- `_self` para abrir na mesma aba,\n- `_parent` para abrir na aba pai,\n- `_top` para abrir na aba superior.",
          "values": [{ "name": "BrLinkTarget" }]
        },
        {
          "name": "navigation-mode",
          "description": "Controla como o componente integra a navegação mantendo `href` real no elemento navegável.\n- `native` (padrão): preserva o comportamento do navegador, conforme HTML/W3C.\n- `event`: emite `brNavigate`; se o evento for cancelado, bloqueia a navegação nativa para a SPA assumir.\nCliques com modificadores, botão do meio ou `target` diferente de `_self` permanecem nativos.",
          "values": [{ "name": "BrNavigationMode" }]
        }
      ],
      "references": []
    },
    {
      "name": "br-header-list",
      "description": "Lista de links ou atalhos do `br-header`. Use no slot `links`, com `br-header-link`, ou no slot `functions`, com `br-header-function`.\n\nEm telas menores, a lista vira um menu que abre e fecha; o título desse menu vem de `list-title`.\n---\n\n\n### **Events:**\n - **headerListUpdate** - Evento disparado para indicar qual lista deve encolher primeiro.\nO evento envia o ID do componente pai e o nome da lista.\n- **headerListFocused** - Evento disparado quando a lista recebe foco.\nO evento envia o ID do componente.\n\n### **Methods:**\n - **closeList()** - Fecha a lista.\n- **isListOpen(): _Promise<boolean>_** - Verifica se a lista está aberta.\n- **openList(): _Promise<void>_** - Abre a lista.\n- **render(): __** - Renderiza o componente.\n\n### **Slots:**\n - **default** - Slot para o conteúdo da lista de navegação no cabeçalho.",
      "attributes": [
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        },
        {
          "name": "list-title",
          "description": "Título da lista.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-header-logo",
      "description": "Logotipo do `br-header`. Use no slot `logo`.\n\nInforme a imagem em `src` e o texto alternativo em `description`. Com `href`, a logo vira link; em SPA, use `navigation-mode=\"event\"` e trate `brNavigate`.\n---\n\n\n### **Events:**\n - **brNavigate** - Evento cancelável emitido em `navigation-mode=\"event\"` para cliques primários sem modificadores em links `_self`.\nChame `event.preventDefault()` no listener para impedir a navegação nativa e entregar `event.detail.href` ao roteador da SPA.\n\n### **Methods:**\n - **handleIsCompactChange()** - Observa mudanças na propriedade `isCompact` e ajusta a altura da logo se `hasDefaultHeight` for verdadeiro.\n- **render(): __** - Renderiza o componente.\n\n### **Slots:**\n - **default** - Slot para a logo personalizada exibida no cabeçalho.\n\n### **CSS Parts:**\n - **container** - Wrapper da logo do header.",
      "attributes": [
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        },
        {
          "name": "description",
          "description": "Texto alternativo/descritivo da logo.",
          "values": []
        },
        {
          "name": "href",
          "description": "URL de destino quando a logo for clicada.\nSe fornecido, a logo será envolvida em um link.",
          "values": []
        },
        {
          "name": "is-compact",
          "description": "Alterna para versão compacta quando true.",
          "values": []
        },
        {
          "name": "target",
          "description": "Target do link quando href é fornecido.\nAceita `_self`, `_blank`, `_parent` ou `_top`. Valores inválidos usam `_self`.",
          "values": [{ "name": "BrLinkTarget" }]
        },
        {
          "name": "navigation-mode",
          "description": "Controla como o componente integra a navegação mantendo `href` real no elemento navegável.\n- `native` (padrão): preserva o comportamento do navegador, conforme HTML/W3C.\n- `event`: emite `brNavigate`; se o evento for cancelado, bloqueia a navegação nativa para a SPA assumir.\nCliques com modificadores, botão do meio ou `target` diferente de `_self` permanecem nativos.\nValores inválidos usam `native`.",
          "values": [{ "name": "BrNavigationMode" }]
        },
        { "name": "src", "description": "Url da logo padrão.", "values": [] },
        { "name": "width", "description": "Largura da imagem.", "values": [] },
        { "name": "height", "description": "Altura da imagem.", "values": [] }
      ],
      "references": []
    },
    {
      "name": "br-icon",
      "description": "O `br-icon` exibe um ícone com tamanho e alinhamento padronizados. O ícone vem da sua aplicação, de uma destas formas:\n\n```html\n<!-- Arquivo ou URL -->\n<br-icon src=\"/icones/busca.svg\"></br-icon>\n\n<!-- SVG no próprio código -->\n<br-icon svg='<svg viewBox=\"0 0 24 24\"><path d=\"…\" fill=\"currentColor\"/></svg>'></br-icon>\n\n<!-- Outra biblioteca, como Font Awesome -->\n<br-icon><i class=\"fas fa-search\"></i></br-icon>\n```\n\nSem `label`, o ícone é decorativo e ignorado por leitores de tela. Quando o ícone transmite informação sozinho, descreva-o em `label`:\n\n```html\n<br-icon src=\"/icones/alerta.svg\" label=\"Atenção\"></br-icon>\n```\n\nO tamanho padrão é 16 × 16 px; ajuste com `width` e `height`, em qualquer unidade CSS. Use `rotate` e `flip` para girar ou espelhar.\n\nSe mais de uma forma for informada, vale nesta ordem: conteúdo, `svg`, `src` e, por último, `icon-name` (depreciado). Para fixar uma delas, use `source`.\n\n### Quando evitar\n\n- Fotos e ilustrações: use `<img>`.\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/icon?tab=designer).\n---\n\n\n### **Slots:**\n - _default_ - Conteúdo customizado do ícone. Pode receber elementos como `<i>`, `<svg>` ou componentes de outras bibliotecas.\n\n### **CSS Parts:**\n - **icon** - Elemento interno que representa o ícone renderizado.\n- **image** - Elemento img interno quando `src` é usado.\n- **svg** - Elemento interno que recebe SVG inline quando `svg` é usado.\n- **slot** - Elemento interno que recebe conteúdo via slot.",
      "attributes": [
        {
          "name": "label",
          "description": "Texto alternativo para ícones informativos. Sem label, o ícone é decorativo.",
          "values": []
        },
        {
          "name": "icon-name",
          "description": "Identificador legado do ícone. Identificadores que pertencem ao registro local são\nrenderizados como SVG empacotado; nomes desconhecidos continuam disponíveis via Iconify\nsomente para compatibilidade.",
          "values": []
        },
        {
          "name": "src",
          "description": "URL ou caminho local para um arquivo de imagem que será usado como ícone.\nO caminho é resolvido pelo navegador no contexto da aplicação consumidora,\nportanto pode ser relativo (`./assets/icone.svg`), absoluto (`/assets/icone.svg`)\nou uma URL completa.\nAceita SVG, PNG, WebP e outros formatos suportados pelo elemento `img`.",
          "values": []
        },
        {
          "name": "svg",
          "description": "Conteúdo SVG inline a ser renderizado como ícone.\n\nUse apenas SVGs confiáveis e sanitizados pela aplicação.\nPasse o conteúdo por property binding para evitar serialização no atributo.",
          "values": []
        },
        {
          "name": "source",
          "description": "Define explicitamente a origem do ícone.\nQuando `auto`, o componente prioriza slot, SVG inline e imagem por URL.\nIconify fica apenas como fallback de compatibilidade quando nenhuma fonte própria foi informada.\nAceita `auto`, `iconify`, `image`, `svg` ou `slot`; valores inválidos usam `auto`.",
          "values": [{ "name": "IconSource" }]
        },
        {
          "name": "height",
          "description": "Define a altura do ícone. Pode ser especificada em qualquer unidade CSS válida, como pixels (px), ems (em), rems (rem), etc.\nO valor padrão é '16'. O tamanho pode ser sobrescrito independentemente da largura.",
          "values": []
        },
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        },
        {
          "name": "width",
          "description": "Define a largura do ícone. Pode ser especificada em qualquer unidade CSS válida, como pixels (px), ems (em), rems (rem), etc.\nO valor padrão é '16'. A largura pode ser sobrescrita independentemente da altura.",
          "values": []
        },
        {
          "name": "css-classes",
          "description": "Permite adicionar classes CSS adicionais ao ícone.\nUse esta propriedade para aplicar estilos personalizados ao ícone, além dos estilos padrão.",
          "values": []
        },
        {
          "name": "is-inline",
          "description": "Exibe o rótulo e o controle na mesma linha.",
          "values": []
        },
        {
          "name": "inline",
          "description": "Renderiza o ícone inline. Quando informada, tem precedência sobre `isInline`.",
          "values": []
        },
        {
          "name": "rotate",
          "description": "Define o ângulo de rotação do ícone.\nAceita `90deg`, `180deg` ou `270deg`; valores inválidos são ignorados.",
          "values": [{ "name": "IconRotate" }]
        },
        {
          "name": "flip",
          "description": "Define o tipo de espelhamento do ícone.\nAceita `horizontal` ou `vertical`; valores inválidos são ignorados.",
          "values": [{ "name": "IconFlip" }]
        },
        {
          "name": "is-focusable",
          "description": "Determina se o ícone pode receber foco.\nSe definido como verdadeiro, o ícone pode ser navegado usando Tab.\nO valor padrão é `false`.",
          "values": []
        },
        {
          "name": "focusable",
          "description": "Torna o ícone focável. Quando informada, tem precedência sobre `isFocusable`.",
          "values": []
        },
        {
          "name": "lazy",
          "description": "Controla o comportamento de carregamento do ícone.\n\nComportamento:\n- Padrão (propriedade não definida): carregamento imediato aplicando `noobserver` para evitar problemas de layout shift\n- `lazy={true}`: ativa o carregamento tardio nativo para imagens em `src` e o observer do Iconify no fallback legado\n- `lazy={false}`: carregamento imediato\n\n**Nota**: O padrão foi alterado para carregamento imediato para resolver problemas de deslocamento de layout\nque ocorriam quando ícones eram carregados depois do conteúdo inicial.\n\nSVG inline e conteúdo em slot não precisam de carregamento tardio, pois já estão disponíveis no DOM.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-input",
      "description": "O `br-input` captura dados de texto em linha única, como nomes, e-mails, números ou senhas.\n\nConfigure `label`, `placeholder` e o tipo em `type` (como `text`, `email`, `password`, `number`). Use `state` (`success`, `danger`, `info`, `warning`) para indicar validação.\n\n```html\n<br-input label=\"E-mail\" type=\"email\" placeholder=\"nome@exemplo.com\"></br-input>\n<br-input label=\"Senha\" type=\"password\"></br-input>\n```\n\nEm formulários HTML, o componente integra-se nativamente via `ElementInternals`, participando do submit e da validação nativa com `required`.\n\n### Quando usar\n\n- Entrada de texto curto que cabe em uma única linha (nome, CPF, e-mail, telefone).\n- Campo de busca ou senha com alternância de visualização.\n\n### Quando evitar\n\n- Textos longos ou com quebra de linha: use `br-textarea`.\n- Escolha entre opções pré-definidas: use `br-select` ou `br-radio`.\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/input?tab=designer).\n---\n\n\n### **Events:**\n - **valueChange** - Valor atualizado do input\n- **brClear** - Emitido quando o usuário aciona o botão de limpar (`clearable`), depois que o\nvalor foi limpo e o evento `input` foi disparado.\n- **brInputActionClick** - Notifica a ativação do botão do slot `action` por clique ou teclado.\nEmitido no host com `detail.originalEvent` contendo o clique original.\nPropaga e atravessa Shadow DOM; não é cancelável nem altera o clique nativo.\nNão emite para o campo textual, botão de senha, inicialização ou controle desabilitado.\n- **brInputValidationChange** - Informa o início e o resultado do validator, inclusive quando ele consulta\num serviço remoto. O `detail` contém `validating`, `valid` e `message`;\nescrita programática e reset não representam interação do usuário.\n\n### **Methods:**\n - **reportValidity(): _Promise<boolean>_** - Retorna `true` se o valor do input for válido, caso contrário `false`.\nSe o input for inválido, exibe uma mensagem de erro padrão do navegador.\n- **setCustomValidity(message: _string_): _Promise<void>_** - Define uma mensagem de validação customizada para o input.\nSe a mensagem for uma string vazia, o erro customizado é limpo.\n- **validate(): _Promise<boolean>_** - Executa a regra customizada e retorna se o campo está válido.\nSe o validator for assíncrono, aguarda a resposta e ignora resultados\nantigos quando uma execução posterior já começou.\n- **checkValidity(): _Promise<boolean>_** - Retorna `true` se o valor do input for válido, caso contrário `false`.\nSe o input for inválido, dispara um evento 'invalid'.\n- **getValidationState(): _Promise<FormValidationState>_** - Retorna um snapshot serializável da Constraint Validation API.\n- **select(): _Promise<void>_** - Seleciona todo o texto do controle nativo, conforme HTMLInputElement.select().\n- **setRangeText(replacement: _string_, start: _number_, end: _number_, selectionMode: _SelectionMode_): _Promise<void>_** - Substitui um intervalo de texto usando a API nativa do input.\n- **setSelectionRange(start: _number_, end: _number_, direction: _'forward' | 'backward' | 'none'_): _Promise<void>_** - Define o intervalo selecionado no controle nativo.\n- **stepUp(n: _number_): _Promise<void>_** - Incrementa o valor numérico pelo step nativo.\n- **stepDown(n: _number_): _Promise<void>_** - Decrementa o valor numérico pelo step nativo.\n- **showPicker(): _Promise<void>_** - Abre o picker nativo quando o navegador e o tipo do input oferecem essa API.\n- **render(): __** - Renderiza o componente de input.\n\n### **Slots:**\n - **action** - Botão à direita do input.\n- **icon** - Ícone à esquerda do input.\n- **help-text** - Personalização do texto de ajuda.\n- **feedback** - Mensagem de feedback como resposta específica a uma interação do usuário com o input. Pode ser feedback de erro, aviso, sucesso ou informação.\n- **validation-loading** - Indicador exibido enquanto o validator assíncrono está pendente.\n\n### **CSS Parts:**\n - **container** - Contêiner visual principal do input.\n- **label** - Rótulo do input.\n- **input** - Elemento input nativo.\n- **group** - Grupo que contém ícone, input, botão e ajuda.\n- **icon** - Contêiner do slot de ícone.\n- **action** - Botão de ação lateral.\n- **action-button** - Botão interno reexportado do br-button da ação.\n- **clear** - Botão de limpar exibido com `clearable` enquanto há texto editável.\n- **help-text** - Texto de ajuda ou slot de ajuda.\n- **feedback** - Slot de feedback.",
      "attributes": [
        {
          "name": "type",
          "description": "Especifica o tipo de entrada do campo.",
          "values": [{ "name": "InputType" }]
        },
        {
          "name": "autocomplete",
          "description": "Controla o comportamento de preenchimento automático do navegador para o input.",
          "values": [{ "name": "InputToggle" }]
        },
        {
          "name": "density",
          "description": "Ajusta a densidade, alterando o espaçamento interno para um visual mais compacto ou mais expandido.\nAceita `small`, `medium` ou `large`. Valores inválidos usam `medium`.",
          "values": [{ "name": "InputDensity" }]
        },
        {
          "name": "disabled",
          "description": "Desativa o input, tornando-o não interativo.",
          "values": []
        },
        {
          "name": "is-inline",
          "description": "Se verdadeiro, o rótulo e o input estarão na mesma linha (layout inline).",
          "values": []
        },
        {
          "name": "inline",
          "description": "Exibe rótulo e controle em linha. Quando informada, tem precedência sobre `isInline`.",
          "values": []
        },
        {
          "name": "is-highlight",
          "description": "Se verdadeiro, o input terá destaque visual.",
          "values": []
        },
        {
          "name": "highlight",
          "description": "Habilita destaque visual. Quando informada, tem precedência sobre `isHighlight`.",
          "values": []
        },
        {
          "name": "state",
          "description": "Define o estado do input",
          "values": [{ "name": "InputState" }]
        },
        {
          "name": "feedback-state",
          "description": "Estado de feedback. Quando informado, tem precedência sobre `state`.",
          "values": [{ "name": "InputState" }]
        },
        {
          "name": "label",
          "description": "Texto exibido como rótulo do input.",
          "values": []
        },
        {
          "name": "aria-label",
          "description": "Nome acessível usado quando não há um rótulo visual.",
          "values": []
        },
        {
          "name": "custom-id",
          "description": "Identificador único.\nCaso não seja fornecido, um ID gerado automaticamente será usado.",
          "values": []
        },
        {
          "name": "name",
          "description": "Nome do input, utilizado para identificação em formulários.",
          "values": []
        },
        {
          "name": "placeholder",
          "description": "Texto exibido dentro do input quando está vazio, fornecendo uma dica ou sugestão ao usuário.",
          "values": []
        },
        {
          "name": "readonly",
          "description": "Se verdadeiro, o valor do input é exibido, mas não pode ser editado pelo usuário.",
          "values": []
        },
        {
          "name": "required",
          "description": "Se verdadeiro, o input é obrigatório e deve ser preenchido antes que o formulário possa ser enviado.",
          "values": []
        },
        {
          "name": "value",
          "description": "Valor exibido no input.\nPode ser alterado pelo usuário se a propriedade `readonly` não estiver ativa.",
          "values": []
        },
        {
          "name": "control-width",
          "description": "Largura do campo de entrada (por exemplo, '88px').\nQuando definido, sobrescreve a largura padrão de 100%.",
          "values": []
        },
        {
          "name": "borderless",
          "description": "Remove a borda do input quando não está em foco.\nÚtil para composições contextuais (ex.: paginação).",
          "values": []
        },
        {
          "name": "help-text",
          "description": "Texto adicional que fornece ajuda ou informações sobre o input.",
          "values": []
        },
        {
          "name": "autocorrect",
          "description": "Controla a correção automática do texto.",
          "values": []
        },
        {
          "name": "min",
          "description": "Define o valor mínimo para campos de entrada numéricos. Deve ser um número finito;\nvalores inválidos são ignorados.",
          "values": []
        },
        {
          "name": "max",
          "description": "Define o valor máximo para campos de entrada numéricos. Deve ser um número finito;\nvalores inválidos são ignorados.",
          "values": []
        },
        {
          "name": "minlength",
          "description": "Define o comprimento mínimo do valor do campo de entrada. Deve ser um inteiro não negativo;\nvalores inválidos são ignorados.",
          "values": []
        },
        {
          "name": "maxlength",
          "description": "Define o comprimento máximo do valor do campo de entrada. Deve ser um inteiro não negativo;\nvalores inválidos são ignorados.",
          "values": []
        },
        {
          "name": "multiple",
          "description": "Se verdadeiro, permite a entrada de múltiplos e-mails (quando type=\"email\").",
          "values": []
        },
        {
          "name": "pattern",
          "description": "Expressão regular usada para validar o valor final, sem alterar o texto digitado.\nDiferentemente de `mask`, esta prop valida, mas não formata a entrada.",
          "values": []
        },
        {
          "name": "mask",
          "description": "Formata o valor durante a digitação; use `#` para marcar posições numéricas.\nDiferentemente de `pattern`, esta prop não substitui uma regra de validação.",
          "values": []
        },
        {
          "name": "validator",
          "description": "Função ou regra de validação customizada para o campo.\n\nA função pode ser síncrona ou assíncrona. Retorne uma mensagem para invalidar o\ncampo e `null` ou `''` para validá-lo. A regra é executada no `change` ou pelo\nmétodo `validate()`, nunca a cada tecla.\n\nEm frameworks, passe a função como property binding, por exemplo:\n`validator={validate}` no React, `[validator]=\"validate\"` no Angular ou\n`:validator=\"validate\"` no Vue.\n\nComo alternativa para HTML sem binding de propriedades, uma string pode\nreferenciar uma função global em `window`. A forma inline legada aceita apenas\ncomparação simples; JavaScript arbitrário é rejeitado para manter CSP segura.\nPrefira sempre a função por binding.\n\nDurante validações assíncronas, o campo sinaliza `aria-busy=\"true\"`, exibe o\nindicador de carregamento e emite `brInputValidationChange`.",
          "values": [{ "name": "InputValidator" }]
        },
        {
          "name": "step",
          "description": "Define o valor do passo para campos de entrada numéricos. Deve ser um número finito maior que 0;\nvalores inválidos são ignorados.",
          "values": []
        },
        {
          "name": "action-label",
          "description": "Texto exibido no botão de ação à direita do input.",
          "values": []
        },
        {
          "name": "action-tab-index",
          "description": "Define o tabindex do botão de ação.\nÚtil para remover o botão da sequência de tabulação quando o foco é gerenciado externamente (ex.: br-select).\nAceita inteiros maiores ou iguais a -1; valores inválidos são ignorados.",
          "values": []
        },
        {
          "name": "clearable",
          "description": "Exibe um botão para limpar o texto enquanto o campo tem valor e aceita edição.\nO botão fica à esquerda do botão de ação, quando houver. Ao ser acionado,\nlimpa o valor, emite `input` uma única vez e `brClear`, e devolve o foco ao campo.\nNão é exibido com `disabled` ou `readonly`.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-item",
      "description": "O `br-item` padroniza uma linha de conteúdo, ação ou link dentro de listas, menus ou agrupamentos verticais.\n\nColoque o texto ou elementos no slot padrão. Use `interactive` para habilitar efeito de clique e foco, ou `href` para transformá-lo em link navegável. Para destacar um item escolhido, use `selected`.\n\n```html\n<br-item interactive>Item de ação</br-item>\n<br-item href=\"/perfil\">Meu Perfil</br-item>\n```\n\n### Quando usar\n\n- Linhas de dados em listas (`br-list`) ou painéis verticais.\n- Linhas com foco, hover e seleção consistentes com o design system.\n\n### Quando evitar\n\n- Itens específicos de navegação estruturada: use `br-breadcrumb-item`, `br-tab-item` ou `br-step-item`.\n- Opções de seleção em formulário: use `br-select-option`.\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/item?tab=designer).\n---\n\n\n### **Events:**\n - **brDidClick** - Evento customizado emitido quando o item é clicado, aplicável apenas se o item for um botão (`<button>`).\nPode ser utilizado para ações personalizadas, exceto quando o item está desativado.\n- **brItemClick** - Evento emitido quando o item com comportamento de botão é acionado.\n- **brDidSelect** - Evento customizado aplicável para todos os tipos de elementos (`div`, `button`, `a`), emitido quando a seleção do item interativo ou botão muda.\nO `detail` expõe `{ selected: boolean }` indicando o novo estado.\nNão é emitido quando `disabled` está ativo.\n- **brItemSelect** - Evento emitido quando a seleção muda.\n- **brNavigate** - Evento cancelável emitido em `navigation-mode=\"event\"` para cliques primários sem modificadores em links `_self`.\nChame `event.preventDefault()` no listener para impedir a navegação nativa e entregar `event.detail.href` ao roteador da SPA.\n\n### **Methods:**\n - **activate()** - Ativa o item programaticamente, simulando um clique na superfície.\nUtilizado pelo br-list para tratar Enter e Espaço via teclado, e\ninternamente pelo próprio item quando standalone (fora de br-list).\n- **setFocus()** - Define o foco no elemento interno do componente.\nEste método pode ser chamado externamente para garantir que o foco seja aplicado ao elemento correto.\n- **setTabIndex(value: _number_)** - Define o tabIndex do elemento interno.\nUtilizado pelo br-list para implementar o padrão roving tabindex,\ngarantindo que apenas um item por vez seja alcançável via Tab.\n\n### **Slots:**\n - **default** - Área de conteúdo, podendo conter qualquer componente, exceto botões primários e componentes relacionados à navegação (como carrosséis, paginações, abas, menus, etc.).\n- **start** - Área de recursos visuais, podendo conter elementos como ícones, avatares e mídias.\n- **end** - Área de recursos complementares, podendo conter componentes interativos, metadados e informações adicionais.\n\n### **CSS Parts:**\n - **item** - Elemento principal do item (botão, link ou div).",
      "attributes": [
        {
          "name": "disabled",
          "description": "Desabilita a interação com o componente.",
          "values": []
        },
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        },
        {
          "name": "is-active",
          "description": "Indica se o item está no estado ativo.\nSe definido como verdadeiro, o item será exibido como ativo.",
          "values": []
        },
        {
          "name": "active",
          "description": "Estado ativo atual. Quando informado, tem precedência sobre `isActive`.",
          "values": []
        },
        {
          "name": "is-selected",
          "description": "Indica se o item está no estado selecionado.\nSe definido como verdadeiro, o item será exibido como selecionado.",
          "values": []
        },
        {
          "name": "selected",
          "description": "Estado selecionado. Em itens interativos, também é atualizado pelo acionamento.",
          "values": []
        },
        {
          "name": "is-interactive",
          "description": "Marca o item como interativo, permitindo que toda a superfície do item seja clicável.",
          "values": []
        },
        {
          "name": "interactive",
          "description": "Torna toda a superfície interativa. Quando informado, tem precedência sobre `isInteractive`.",
          "values": []
        },
        {
          "name": "href",
          "description": "URL ou caminho para o qual o usuário será direcionado ao clicar no item. Quando definido, o item será renderizado como um link.",
          "values": []
        },
        {
          "name": "target",
          "description": "Define o alvo do link quando `href` está presente. Pode ser:\n- `_blank` para abrir em uma nova aba,\n- `_self` para abrir na mesma aba,\n- `_parent` para abrir na aba pai,\n- `_top` para abrir na aba superior.",
          "values": [{ "name": "BrLinkTarget" }]
        },
        {
          "name": "navigation-mode",
          "description": "Controla como o componente integra a navegação mantendo `href` real no elemento navegável.\n- `native` (padrão): preserva o comportamento do navegador, conforme HTML/W3C.\n- `event`: emite `brNavigate`; se o evento for cancelado, bloqueia a navegação nativa para a SPA assumir.\nCliques com modificadores, botão do meio ou `target` diferente de `_self` permanecem nativos.",
          "values": [{ "name": "BrNavigationMode" }]
        },
        {
          "name": "is-button",
          "description": "Quando definido como `true`, o item será tratado como um botão.",
          "values": []
        },
        {
          "name": "button",
          "description": "Renderiza o item como botão de alternância: o acionamento alterna `selected`, emite\n`brItemSelect` e expõe o estado em `aria-pressed`. Para uma ação sem estado (ex.: \"Sair\"),\nuse `href` com `navigation-mode=\"event\"` ou um `br-button`.\nQuando informado, tem precedência sobre `isButton`.",
          "values": []
        },
        {
          "name": "type",
          "description": "Tipo do botão, aplicável apenas se `isButton` for `true`. Pode ser:\n- `'submit'` para enviar um formulário,\n- `'reset'` para redefinir um formulário,\n- `'button'` para um botão padrão.",
          "values": [{ "name": "BrButtonType" }]
        },
        {
          "name": "value",
          "description": "Define um valor associado ao br-item quando renderizado como um botão, utilizado em contextos de formulário.",
          "values": []
        },
        {
          "name": "density",
          "description": "Define a densidade visual do componente.\n\n- `small`: Alta densidade (componente menor, mais compacto e com menos espaçamento).\n- `medium`: Densidade intermediária, padrão recomendado para a maioria dos casos.\n- `large`: Baixa densidade (componente maior, mais espaçamento e altura).\n\nValores inválidos usam `medium`.",
          "values": [{ "name": "BrDensity" }]
        }
      ],
      "references": []
    },
    {
      "name": "br-link",
      "description": "O `br-link` conduz a pessoa usuária a outra página, arquivo para download ou seção externa.\n\nColoque o texto ou ícone no slot padrão e aponte o destino em `href`. Para destinos externos ou abas novas, use `target=\"_blank\"`. Para integração com roteadores de SPA, use `navigation-mode=\"event\"` e ouça o evento `brNavigate`.\n\n```html\n<br-link href=\"/servicos\">Serviços disponíveis</br-link>\n<br-link href=\"https://www.gov.br\" target=\"_blank\">Portal Gov.br</br-link>\n```\n\n### Quando usar\n\n- Navegar para outra página, rota ou domínio.\n- Fazer download de arquivos ou saltar para âncoras na mesma página.\n\n### Quando evitar\n\n- Executar uma ação na página atual (salvar, abrir diálogo): use `br-button`.\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/link?tab=designer).\n---\n\n\n### **Events:**\n - **brNavigate** - Evento cancelável emitido em `navigation-mode=\"event\"` para cliques primários sem modificadores em links `_self`.\nChame `event.preventDefault()` no listener para impedir a navegação nativa e entregar `event.detail.href` ao roteador da SPA.\n- **brSpaNavigate**\n\n### **Slots:**\n - **default** - Conteúdo do link (texto, ícones ou outros elementos).\n\n### **CSS Parts:**\n - **anchor** - Parte exposta para o elemento âncora interno, usada para estilos customizados via `::part(anchor)`.",
      "attributes": [
        {
          "name": "href",
          "description": "URL de destino do link.",
          "values": []
        },
        {
          "name": "target",
          "description": "Define como o link será aberto.\n- `_self`: abre no mesmo contexto de navegação\n- `_blank`: abre em nova aba ou janela\n- `_parent`: abre no contexto pai\n- `_top`: abre no contexto de nível superior",
          "values": [
            { "name": "_self" },
            { "name": "_blank" },
            { "name": "_parent" },
            { "name": "_top" }
          ]
        },
        {
          "name": "rel",
          "description": "Relação entre o documento atual e o destino (`rel`).\nQuando `target=\"_blank\"`, `noopener` e `noreferrer` são sempre incluídos\n(mesmo que `rel` seja definido) para mitigar tabnabbing e vazamento de `window.opener`.",
          "values": []
        },
        {
          "name": "download",
          "description": "Nome sugerido para download. Uma string vazia preserva o nome definido pelo servidor.",
          "values": []
        },
        {
          "name": "hreflang",
          "description": "Idioma do recurso apontado pelo link.",
          "values": []
        },
        {
          "name": "referrer-policy",
          "description": "Política de referrer usada ao buscar o destino.",
          "values": [{ "name": "ReferrerPolicy" }]
        },
        {
          "name": "type",
          "description": "Tipo MIME informativo do recurso apontado.",
          "values": []
        },
        {
          "name": "navigation-mode",
          "description": "Controla como o componente integra a navegação mantendo `href` real no elemento navegável.\n- `native` (padrão): preserva o comportamento do navegador, conforme HTML/W3C.\n- `event`: emite `brNavigate`; se o evento for cancelado, bloqueia a navegação nativa para a SPA assumir.\nCliques com modificadores, botão do meio ou `target` diferente de `_self` permanecem nativos.",
          "values": [{ "name": "BrNavigationMode" }]
        },
        {
          "name": "is-spa-link-behavior",
          "description": "Ativa o comportamento legado de navegação SPA, interceptando cliques simples\npara atualizar o histórico e emitir `brSpaNavigate`.",
          "values": []
        },
        {
          "name": "disabled",
          "description": "Desativa o link, tornando-o não interativo.\nQuando `true`: remove o `href` (um `<a>` sem `href` sai da ordem de\ntabulação e não recebe foco, nem por clique), marca `aria-disabled=\"true\"`\ne bloqueia o clique (sem navegação nem emissão de `brNavigate`).\nSe o link estiver focado no momento da desativação, o foco é removido.\nÚtil para componentes como `br-pagination` e `br-wizard`.",
          "values": []
        },
        {
          "name": "button",
          "description": "Exibe o link com o mesmo visual do componente `br-button`.",
          "values": []
        },
        {
          "name": "link-role",
          "description": "Encaminhamento de `role` para o elemento âncora interno.",
          "values": []
        },
        {
          "name": "link-aria-expanded",
          "description": "Encaminhamento de `aria-expanded` para o elemento âncora interno.",
          "values": []
        },
        {
          "name": "aria-expanded",
          "description": "Valor de `aria-expanded`.",
          "values": []
        },
        {
          "name": "link-aria-selected",
          "description": "Encaminhamento de `aria-selected` para o elemento âncora interno.",
          "values": []
        },
        {
          "name": "aria-selected",
          "description": "Valor de `aria-selected`.",
          "values": []
        },
        {
          "name": "link-aria-haspopup",
          "description": "Encaminhamento de `aria-haspopup` para o elemento âncora interno.",
          "values": []
        },
        {
          "name": "aria-haspopup",
          "description": "Valor de `aria-haspopup`.",
          "values": []
        },
        {
          "name": "link-aria-current",
          "description": "Encaminhamento de `aria-current` para o elemento âncora interno.\nIndica o item ativo em um conjunto de navegação (breadcrumb, menu, paginação).\nValores comuns: `\"page\"` (link da página atual), `\"step\"` (etapa ativa), `\"true\"`.\nReferência: WCAG 1.3.1 e ARIA `aria-current`.",
          "values": []
        },
        {
          "name": "aria-current",
          "description": "Valor de `aria-current`.",
          "values": []
        },
        {
          "name": "link-aria-label",
          "description": "Encaminhamento de `aria-label` para o elemento âncora interno.\nFornece nome acessível ao link quando o conteúdo do slot não é descritivo\npor si só (ex.: link com ícone sem texto visível).",
          "values": []
        },
        {
          "name": "aria-label",
          "description": "Valor de `aria-label`.",
          "values": []
        },
        {
          "name": "link-aria-describedby",
          "description": "Encaminhamento de `aria-describedby` para o elemento âncora interno.\nReferencia o `id` de um elemento externo que descreve o link.",
          "values": []
        },
        {
          "name": "aria-describedby",
          "description": "Valor de `aria-describedby`.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-list",
      "description": "O `br-list` organiza coleções verticais de itens homogêneos ou relacionados, como listas de contatos, tarefas ou configurações.\n\nAdicione os itens (como `br-item`) no slot padrão. Se precisar de um título ou ações no topo da lista, use o slot `header` ou a propriedade `title`.\n\n```html\n<br-list title=\"Configurações\">\n  <br-item interactive>Notificações</br-item>\n  <br-item interactive>Segurança</br-item>\n</br-list>\n```\n\n### Quando usar\n\n- Sequências verticais de itens com leitura linear.\n- Listas de opções simples ou links agrupados.\n\n### Quando evitar\n\n- Dados em linhas e colunas com ordenação: use `br-table`.\n- Menu lateral de navegação da página: use `br-menu`.\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/list?tab=designer).\n---\n\n\n### **Methods:**\n - **handleAccordionExclusivity(event: _CustomEvent<{ accordionGroup?: string }>_)** - Coordena o accordion entre listas irmãs. Quando o `br-collapse` interno\ndesta lista abre, fecha o `br-collapse` das demais `br-list` irmãs que\ncompartilham o mesmo valor de `accordion`. Só reage ao evento da própria\nlista — `brCollapseOpen` de outras listas não passa por este host.\n- **focusFirstItem()** - Move o foco para o primeiro item navegável da lista.\nAPI pública para componentes que abrem a lista programaticamente\n(ex.: `br-dropdown`), evitando acesso direto ao `br-item`.\n\n### **Slots:**\n - **default** - Slot para os itens da lista.\n- **header** - Slot para ações ou conteúdo do cabeçalho da lista.\n\n### **CSS Parts:**\n - **container** - Wrapper principal da lista.",
      "attributes": [
        {
          "name": "header",
          "description": "Define o texto do cabeçalho da lista.\nQuando definido, também é usado como `aria-label` do elemento `role=\"list\"`,\nfornecendo um nome acessível que leitores de tela anunciam ao entrar na lista.",
          "values": []
        },
        {
          "name": "is-horizontal",
          "description": "Indica se a lista será horizontal. Por padrão, a lista é vertical.",
          "values": []
        },
        {
          "name": "orientation",
          "description": "Orientação padrão. Quando informada, tem precedência sobre `isHorizontal`; valores inválidos usam `vertical`.",
          "values": [{ "name": "horizontal" }, { "name": "vertical" }]
        },
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        },
        {
          "name": "hide-header-divider",
          "description": "Indica que o divider para o título da lista estará oculto.",
          "values": []
        },
        {
          "name": "divider",
          "description": "Indica se a lista possui divisores (divider) entre os itens.",
          "values": []
        },
        {
          "name": "collapse",
          "description": "Torna a lista recolhível: o corpo é envolvido por um `br-collapse` interno\nque abre e fecha ao acionar o cabeçalho. Começa recolhida.\n\nRequer um cabeçalho (atributo `header` ou slot `header`) — ele é o acionador.\nSem cabeçalho não há como recolher.\n\nPara \"apenas uma aberta por vez\" entre listas, use `accordion`.",
          "values": []
        },
        {
          "name": "accordion",
          "description": "Título do grupo de accordion. `br-list` irmãs (mesmo elemento-pai) com o\nmesmo valor formam um grupo e mantêm apenas uma aberta por vez — abrir uma\nfecha as demais do grupo.\n\nSozinha já torna a lista recolhível (não precisa de `collapse`) e, como o\n`collapse`, exige um cabeçalho (`header` ou slot `header`) como acionador.\nComeça recolhida.",
          "values": []
        },
        {
          "name": "list-role",
          "description": "Semântica do host quando o conteúdo não representa itens de lista. Valores inválidos usam `list`.",
          "values": [{ "name": "list" }, { "name": "group" }]
        },
        {
          "name": "density",
          "description": "Modificador de densidade da lista. Aceita `small`, `medium` ou `large`.\nValores inválidos usam `medium`. Quando omitida ou `null`, nenhuma densidade é aplicada.",
          "values": [
            { "name": "small" },
            { "name": "medium" },
            { "name": "large" }
          ]
        }
      ],
      "references": []
    },
    {
      "name": "br-loading",
      "description": "O `br-loading` indica visualmente que uma operação assíncrona está em andamento.\n\nSuporta o modo circular padrão (indeterminado) ou o modo determinístico com barra e percentual via `progress`. Para adicionar uma mensagem explicativa, informe `label`.\n\n```html\n<br-loading label=\"Carregando dados...\"></br-loading>\n<br-loading progress=\"60\" label=\"Enviando arquivo...\"></br-loading>\n```\n\n### Quando usar\n\n- Operações que demoram mais de 300 ms (carregamento de dados, envio de formulário).\n- Downloads ou uploads com percentual de progresso mensurável.\n\n### Quando evitar\n\n- Operações instantâneas (menos de 300 ms).\n- Carregamento interno em botão: use a propriedade `loading` do `br-button`.\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/loading?tab=designer).\n---\n\n\n### **Events:**\n - **brLoadingChange** - Notifica mudança de progresso no modo `progress`.\n- **brLoadingComplete** - Notifica conclusão do progresso no modo `progress`.\n- **brLoadingReset** - Notifica reinício do progresso no modo `progress`.\n- **brLoadingCancel** - Notifica clique no botão de cancelamento no modo `progress`.\nEste evento não altera o progresso automaticamente.\nA aplicação consumidora define a ação após o cancelamento (ex.: limpar ou ocultar).\n- **brIndeterminateStateChange** - Notifica mudança do estado lógico no modo `spinner`.\n- **brDidShow** - Notifica que o componente foi exibido.\n- **brLoadingShow** - Evento emitido quando o loading é exibido.\n- **brDidHide** - Notifica que o componente foi ocultado.\n- **brLoadingHide** - Evento emitido quando o loading é ocultado.\n\n### **Methods:**\n - **handleCompletion(newValue: _number_)** - Reage a mudanças em `value` no modo `progress`.\n- **handleModeChange()** - Reage a mudanças em `mode` e atualiza o estado lógico de atividade.\n- **setValue(value: _number_): _Promise<{ value: number }>_** - Define o valor do progresso.\n- **incrementValue(step): _Promise<{ value: number }>_** - Soma um valor ao progresso atual.\n- **complete(): _Promise<{ value: number }>_** - Define o progresso como concluído.\n- **reset(): _Promise<{ value: number }>_** - Reinicia o progresso e exibe o componente.\n- **show(): _Promise<{ visible: boolean }>_** - Exibe o componente.\n- **hide(): _Promise<{ visible: boolean }>_** - Oculta o componente.\n- **render(): __** - Renderiza o componente conforme o modo atual.\n\n### **Slots:**\n - **label** - Rótulo customizado do loading. Quando utilizado, a prop `label` é ignorada.\n- **cancel-button** - Conteúdo customizado do botão de cancelar. Quando utilizado, a prop `cancelLabel` é ignorada.\n\n### **CSS Parts:**\n - **container** - Wrapper principal do loading.\n- **wrapper** - Wrapper do conteúdo do spinner/progress.\n- **svg** - Elemento SVG principal do loading.\n- **percentage** - Texto de percentual no modo `progress`.\n- **label-wrapper** - Wrapper do rótulo no modo `spinner`.\n- **cancel-button** - Botão de cancelamento no modo `progress` cancelável.",
      "attributes": [
        {
          "name": "label-position",
          "description": "Define a posição da label em relação ao loading. Valores inválidos usam `bottom`.",
          "values": [{ "name": "LoadingLabelPosition" }]
        },
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        },
        {
          "name": "mode",
          "description": "Define o modo de exibição do componente. Valores inválidos usam `spinner`.",
          "values": [{ "name": "LoadingMode" }]
        },
        {
          "name": "size",
          "description": "Define o tamanho visual nos modos `spinner` e `progress`.",
          "values": [{ "name": "LoadingSize" }]
        },
        {
          "name": "density",
          "description": "Densidade visual. Quando informada, tem precedência sobre `size`.\nAceita `small`, `medium` ou `large`. Valores inválidos usam `medium`.",
          "values": [{ "name": "LoadingSize" }]
        },
        {
          "name": "compact",
          "description": "Remove o espaçamento externo e oculta visualmente o rótulo, mantendo-o\ndisponível para tecnologias assistivas. Use em áreas compactas, como\ncontroles de paginação ou campos de formulário.",
          "values": []
        },
        {
          "name": "speed",
          "description": "Define a velocidade da animação/transição. Valores inválidos usam `normal`.",
          "values": [{ "name": "LoadingSpeed" }]
        },
        {
          "name": "label",
          "description": "Define o rótulo exibido no modo `spinner`.\nNo modo `progress`, esta prop não tem efeito.",
          "values": []
        },
        {
          "name": "value",
          "description": "Define o progresso no modo `progress`.\nNo modo `spinner`, esta prop não tem efeito.\nValores não numéricos usam `0`; valores fora de `0`–`100` são limitados ao intervalo.",
          "values": []
        },
        {
          "name": "completion",
          "description": "Define o comportamento quando o progresso atinge 100. Valores inválidos usam `persist`.\nNo modo `spinner`, esta prop não tem efeito.",
          "values": [{ "name": "LoadingCompletionBehavior" }]
        },
        {
          "name": "cancelable",
          "description": "Define se o botão de cancelamento será exibido.\nAo pressionar o botão, o evento `brLoadingCancel` é emitido.\nNo modo `spinner`, esta prop não tem efeito.",
          "values": []
        },
        {
          "name": "cancel-label",
          "description": "Define o texto do botão de cancelamento.\nNo modo `spinner`, esta prop não tem efeito.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-magic-button",
      "description": "O `br-magic-button` é o botão de ação flutuante (FAB) que destaca a ação primária ou mais frequente da tela.\n\nPode ser exibido apenas com ícone (formato circular) ou expandido com texto descritivo.\n\n```html\n<br-magic-button icon=\"fa6-solid:plus\" aria-label=\"Novo item\"></br-magic-button>\n<br-magic-button icon=\"fa6-solid:plus\">Criar documento</br-magic-button>\n```\n\n### Quando usar\n\n- Ação principal e dominante da tela em dispositivos móveis ou interfaces focadas em uma tarefa única.\n\n### Quando evitar\n\n- Múltiplas ações de mesma importância: use `br-button`.\n- Ações secundárias ou destrutivas.\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/magic-button?tab=designer).\n---\n\n\n### **Methods:**\n - **render()** - Renderiza o componente.\n\n### **Slots:**\n - **default** - Conteúdo interno do botão (texto ou ícone).\n- **icon** - Ícone customizado do botão. Quando utilizado, a prop `icon` é ignorada.\n\n### **CSS Parts:**\n - **container** - Wrapper principal do magic-button.\n- **button** - Elemento button interno.",
      "attributes": [
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        },
        {
          "name": "label",
          "description": "Texto do rótulo do botão.\nUtilizado como conteúdo principal quando presente.",
          "values": []
        },
        {
          "name": "icon",
          "description": "Ícone como identificador Iconify (ex.: `fa6-solid:star`) ou nome simples (ex.: `question`,\nresolvido como `fa6-solid:question` no registro SVG local), renderizado pelo `br-icon`.\nPara classes CSS (ex.: Font Awesome) ou SVGs personalizados, use o slot `icon`, a forma preferida.\nUso descontinuado: classes CSS nesta prop (ex.: `fas fa-star`) não são exibidas no Shadow DOM\ne geram aviso.",
          "values": []
        },
        {
          "name": "density",
          "description": "Define a densidade visual do componente.\n\n- `small`: Alta densidade (componente menor, mais compacto e com menos espaçamento).\n- `medium`: Densidade intermediária, padrão recomendado para a maioria dos casos.\n- `large`: Baixa densidade (componente maior, mais espaçamento e altura).\n\nValores inválidos usam `medium`.",
          "values": [{ "name": "BrDensity" }]
        },
        {
          "name": "circle",
          "description": "Define se o botão terá formato circular.\nAplica contorno arredondado completo quando `true` e não houver `label`.",
          "values": []
        },
        {
          "name": "aria-label",
          "description": "Define o rótulo acessível usado por tecnologias assistivas.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-menu",
      "description": "O `br-menu` organiza a navegação lateral da aplicação em gaveta retrátil ou barra fixa.\n\nUse `is-open` para controlar a visibilidade, ou chame os métodos `open()`, `close()` e `toggle()`. Estruture a navegação com os subcomponentes `br-menu-header`, `br-menu-group`, `br-menu-list` e `br-menu-item`.\n\n```html\n<br-menu id=\"menu-principal\">\n  <div slot=\"header\">\n    <br-menu-header title-text=\"Menu Principal\"></br-menu-header>\n  </div>\n  <br-menu-list>\n    <br-menu-item>\n      <br-menu-link href=\"/inicio\">Início</br-menu-link>\n    </br-menu-item>\n    <br-menu-item>\n      <br-menu-link href=\"/servicos\">Serviços</br-menu-link>\n    </br-menu-item>\n  </br-menu-list>\n</br-menu>\n```\n\n### Quando usar\n\n- Menus com hierarquia de seções, grupos ou múltiplos níveis de páginas.\n- Navegação lateral que precisa ser recolhida em telas móveis com fechamento por máscara (`br-scrim`).\n\n### Quando evitar\n\n- Poucos itens que cabem diretamente no cabeçalho: use `br-header`.\n- Alternar visões na mesma página: use `br-tab`.\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/menu?tab=designer).\n---\n\n\n### **Events:**\n - **brMenuStateChange** - Evento emitido quando o menu abre ou fecha.\n- **brMenuOpenChange** - Evento emitido quando o menu abre ou fecha.\n`detail.open` contém o estado concluído e `detail.sourceId` identifica a instância pelo `id` ou `customId`.\n\n### **Methods:**\n - **onDocumentClick(ev: _MouseEvent_)** - Escuta cliques no documento para alternar o estado do menu automaticamente\nquando um elemento com o atributo `data-toggle=\"menu\"` é clicado.\nUtiliza o caminho completo do evento (composedPath) para permitir o funcionamento\ncorreto quando o botão acionador está dentro de outros componentes com Shadow DOM (ex: br-header).\n- **open(): _Promise<void>_** - Abre o painel do menu.\nPode ser chamado externamente: `menuEl.open()`.\n- **close(): _Promise<void>_** - Fecha o painel do menu.\nPode ser chamado externamente: `menuEl.close()`.\n- **toggle(): _Promise<void>_** - Alterna o estado do painel do menu (abre se fechado, fecha se aberto).\nPode ser chamado externamente: `menuEl.toggle()`.\n\n### **Slots:**\n - **default** - Slot para o conteúdo principal do menu (menu-list, menu-group e menu-item).\n- **header** - Slot para o cabeçalho do menu, exibido apenas em modo não contextual e não push.\n- **logo** - Slot para logotipos de parceiros no rodapé.\n- **link** - Slot para links externos no rodapé (use br-menu-link).\n- **social** - Slot para ícones de redes sociais no rodapé.\n- **info** - Slot para informações adicionais no rodapé.\n\n### **CSS Parts:**\n - **footer** - Parte para o contêiner principal do rodapé do menu, agrupando logos, links, redes sociais e informações.\n- **logo** - Parte para a área de logotipos de parceiros no rodapé.\n- **link** - Parte para links úteis ou navegação secundária no rodapé.\n- **social** - Parte para ícones de redes sociais no rodapé.\n- **info** - Parte para informações adicionais, como licença ou direitos autorais.\n- **container** - Parte para o container externo que envolve o menu inteiro.\n- **panel** - Parte para o painel de navegação do menu (o menu propriamente dito).\n- **body** - Parte principal onde ficam os links e grupos de navegação.\n- **trigger** - Botão de acionamento do menu (hambúrguer ou contextual).\n- **back-btn** - Botão de voltar do menu de navegação drill-down.",
      "attributes": [
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        },
        {
          "name": "breakpoints",
          "description": "Classes de coluna do grid GovBR para definir a largura responsiva do painel sobreposto.\nExemplo: `col-sm-4 col-lg-3`. Os modos `push`, `fixed` e `contextual` não usam esta propriedade.\nQuando vazia, o painel ocupa a largura disponível.",
          "values": []
        },
        {
          "name": "push",
          "description": "Define se o menu deve usar comportamento push.\nQuando ativado, o menu permanece fixo na lateral e empurra o conteúdo principal.",
          "values": []
        },
        {
          "name": "fixed",
          "description": "Mantém o menu como uma barra lateral fixa quando estiver aberto.\nO menu continua podendo ser ocultado alterando `isOpen` ou chamando `close()`.\nA largura padrão é `20rem`, limitada à viewport, e pode ser sobrescrita\npela variável CSS `--menu-fixed-width`.",
          "values": []
        },
        {
          "name": "is-open",
          "description": "Define se o painel do menu está aberto/visível.\nEm modo push, esta propriedade permite controle externo da visibilidade.\nO nome permanece porque o método público `open()` já ocupa a propriedade `open` no host.",
          "values": []
        },
        {
          "name": "contextual",
          "description": "Define se o menu deve usar comportamento contextual (aparece na parte inferior).\nQuando ativado, o menu é posicionado na parte inferior da tela em dispositivos móveis.",
          "values": []
        },
        {
          "name": "density",
          "description": "Define a densidade dos itens do menu, alterando o espaçamento interno.\n- `small` (densidade alta): itens mais compactos\n- `medium` (padrão): equilíbrio entre economia de espaço e separação\n- `large` (densidade baixa): maior espaçamento (recomendado em touch)\nValores inválidos usam `medium`.",
          "values": [{ "name": "MenuDensity" }]
        },
        {
          "name": "social-title",
          "description": "Título da seção de redes sociais exibida no rodapé do menu.\nUtilize esta propriedade para personalizar o texto que aparece acima dos ícones sociais.",
          "values": []
        },
        {
          "name": "contextual-label",
          "description": "Rótulo do botão trigger do menu contextual.\nExibido apenas em modo contextual e em telas menores (mobile).",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-menu-group",
      "description": "Agrupa itens de menu sob um título ou categoria comum. Use dentro do `br-menu`.\n\nDefina o título do grupo pelo slot `label` ou pela propriedade `label`. Insira a lista de itens (`br-menu-list`) no slot padrão.\n---\n\n\n### **Slots:**\n - **default** - Itens do grupo.\n\n### **CSS Parts:**\n - **container** - Contêiner do agrupamento.\n- **label** - Rótulo visual do agrupamento.\n- **list** - Contêiner dos itens agrupados.",
      "attributes": [
        {
          "name": "label",
          "description": "Rótulo visual do grupo. O elemento não entra na ordem de foco.",
          "values": []
        },
        {
          "name": "divider",
          "description": "Exibe uma linha separadora antes do grupo.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-menu-header",
      "description": "Cabeçalho do menu lateral com título e botão de fechar. Use no slot `header` do `br-menu`.\n\nDefina o título da área em `title-text`. O botão de fechar emite o fechamento para o `br-menu` pai.\n---\n\n\n### **Events:**\n - **brMenuToggle** - Evento emitido para alternar o estado do menu\n\n### **Slots:**\n - **logo** - Slot para logo personalizado no cabeçalho.\n- **signature** - Slot para a assinatura personalizada do sistema.\n\n### **CSS Parts:**\n - **container** - Wrapper do cabeçalho do menu.\n- **title** - Área do título com logo e assinatura.\n- **close** - Área do botão de fechar.\n- **logo** - Elemento de imagem do logotipo (se renderizado a partir de logoSrc).\n- **signature** - Elemento de texto contendo a assinatura do sistema.",
      "attributes": [
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        },
        {
          "name": "logo-src",
          "description": "URL da imagem do logo no cabeçalho do menu",
          "values": []
        },
        {
          "name": "logo-alt",
          "description": "Texto alternativo para a imagem do logo",
          "values": []
        },
        {
          "name": "signature",
          "description": "Texto de identificação do site ou sistema",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-menu-info",
      "description": "Exibe informações de apoio (versão do sistema, dados do usuário ou licença) no menu. Use no slot `info` ou no rodapé do `br-menu`.\n---\n\n\n### **Slots:**\n - **default** - Slot para conteúdo personalizado no lugar do texto padrão de informações.",
      "attributes": [
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        },
        {
          "name": "info",
          "description": "Informações adicionais em formato de texto",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-menu-item",
      "description": "Representa uma linha de navegação ou botão de submenu dentro do `br-menu-list`.\n\nColoque um `br-menu-link` ou texto no slot padrão. Para submenus multiníveis, adicione a lista filha no interior do item.\n---\n\n\n### **Events:**\n - **brNavigate** - Evento cancelável emitido em `navigation-mode=\"event\"` para cliques primários sem modificadores em links `_self`.\nChame `event.preventDefault()` no listener para impedir a navegação nativa e entregar `event.detail.href` ao roteador da SPA.\n\n### **Slots:**\n - **default** - Conteúdo textual principal exibido no item de menu.\n- **icon** - Ícone personalizado. Quando preenchido, substitui o ícone definido por `icon`.\n\n### **CSS Parts:**\n - **link** - Elemento âncora do item de menu.\n- **icon** - Ícone do item de menu.\n- **content** - Conteúdo textual do item de menu.\n- **support** - Ícone de suporte (seta para baixo/direita).",
      "attributes": [
        {
          "name": "icon",
          "description": "Identificador legado do ícone exibido no item do menu.\nNomes simples conhecidos são resolvidos pelo registro SVG local; para\nclasses CSS, SVGs ou bibliotecas externas, prefira o slot `icon`.",
          "values": []
        },
        {
          "name": "href",
          "description": "URL de destino do link do item do menu.\nUtilize esta propriedade para definir o endereço para onde o usuário será direcionado ao clicar no item.",
          "values": []
        },
        {
          "name": "target",
          "description": "Define como o link será aberto.\n- `_self`: abre no mesmo contexto de navegação (padrão)\n- `_blank`: abre em nova aba ou janela\n- `_parent`: abre no contexto pai\n- `_top`: abre no contexto de nível superior\nValores inválidos usam `_self`.",
          "values": [{ "name": "BrLinkTarget" }]
        },
        {
          "name": "divider",
          "description": "Define se o item deve exibir um divisor visual.\nQuando ativado, adiciona uma linha separadora para organizar visualmente os itens do menu.",
          "values": []
        },
        {
          "name": "active",
          "description": "Define se o item do menu está ativo/selecionado.\nQuando ativado, aplica estilos visuais para destacar o item como atual ou selecionado.",
          "values": []
        },
        {
          "name": "display-mode",
          "description": "Define o modo de exibição do item, controlando os ícones de expansão.\n- `accordion`: exibe setas para cima/baixo (usado em menus de nível 0).\n- `drill-down`: exibe seta para a direita (usado em menus de níveis 1+).\n- `none`: não exibe ícones de expansão.\nValores inválidos usam `none`.",
          "values": [{ "name": "MenuItemDisplayMode" }]
        },
        {
          "name": "expanded",
          "description": "Indica se o item está expandido para fins de acessibilidade (ARIA).\nEste estado é controlado externamente (por exemplo, por br-menu-list).\nNão altera o estado visual de \"active\".",
          "values": []
        },
        {
          "name": "navigation-mode",
          "description": "Controla como o componente integra a navegação mantendo `href` real no elemento navegável.\n- `native` (padrão): preserva o comportamento do navegador, conforme HTML/W3C.\n- `event`: emite `brNavigate`; se o evento for cancelado, bloqueia a navegação nativa para a SPA assumir.\nCliques com modificadores, botão do meio ou `target` diferente de `_self` permanecem nativos.\nValores inválidos usam `native`.",
          "values": [{ "name": "BrNavigationMode" }]
        }
      ],
      "references": []
    },
    {
      "name": "br-menu-link",
      "description": "Hiperlink de navegação dentro do `br-menu`. Use dentro de um `br-menu-item` ou no rodapé do menu.\n\nAponte o destino em `href`. Para destinos externos, use `target=\"_blank\"`.\n---\n\n\n### **Events:**\n - **brLinkClick** - Evento emitido quando o link externo é clicado.\n- **brMenuLinkClick** - Evento emitido quando o link externo é clicado.\n- **brNavigate** - Evento cancelável emitido em `navigation-mode=\"event\"` para cliques primários sem modificadores em links `_self`.\nChame `event.preventDefault()` no listener para impedir a navegação nativa e entregar `event.detail.href` ao roteador da SPA.\n\n### **Slots:**\n - **icon** - Slot para ícone personalizado do link.\n- **url** - Slot para o texto exibido no link.\n\n### **CSS Parts:**\n - **link** - Elemento âncora do link.",
      "attributes": [
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        },
        { "name": "href", "description": "URL do link.", "values": [] },
        {
          "name": "target",
          "description": "Destino do link.",
          "values": [{ "name": "BrLinkTarget" }]
        },
        {
          "name": "navigation-mode",
          "description": "Controla como o componente integra a navegação mantendo `href` real no elemento navegável.\n- `native` (padrão): preserva o comportamento do navegador, conforme HTML/W3C.\n- `event`: emite `brNavigate`; se o evento for cancelado, bloqueia a navegação nativa para a SPA assumir.\nCliques com modificadores, botão do meio ou `target` diferente de `_self` permanecem nativos.",
          "values": [{ "name": "BrNavigationMode" }]
        },
        { "name": "titulo", "description": "Título do link", "values": [] },
        {
          "name": "label",
          "description": "Texto do link. Quando informado, tem precedência sobre `titulo`.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-menu-list",
      "description": "Lista de itens de navegação dentro do `br-menu` ou `br-menu-group`.\n\nInsira os elementos `br-menu-item` no slot padrão para compor a lista navegável.\n---\n\n\n### **Events:**\n - **folderToggled** - Emitido quando um folder é expandido ou recolhido no nível 0 (comportamento acordeão).\n- **navigateToSubmenu** - Emitido quando navegando para um submenu nos níveis 1+ (comportamento drill-down).\n\n### **Slots:**\n - **default** - Itens filhos renderizados no conteúdo do grupo.\n- **icon** - Ícone personalizado do item principal. Quando preenchido, substitui `icon`.\n\n### **CSS Parts:**\n - **container** - Wrapper do grupo de menu.\n- **list** - Lista de itens do grupo.\n- **header-link** - Elemento âncora do item de menu principal (header).\n- **header-icon** - Ícone do item de menu principal (header).\n- **header-content** - Conteúdo textual do item de menu principal (header).\n- **header-support** - Ícone de suporte (seta) do item de menu principal (header).",
      "attributes": [
        {
          "name": "icon",
          "description": "Identificador legado do ícone exibido no item principal do menu.\nNomes simples conhecidos são resolvidos pelo registro SVG local; para\nclasses CSS, SVGs ou bibliotecas externas, prefira o slot `icon`.",
          "values": []
        },
        {
          "name": "label",
          "description": "Texto do label do item do menu.\nUtilize esta propriedade para definir o texto que será exibido no item do menu.",
          "values": []
        },
        {
          "name": "menu-level",
          "description": "Nível do menu na hierarquia de navegação.\nUtilizado para determinar o comportamento do menu (acordeão para nível 0, drill-down para níveis superiores).",
          "values": []
        },
        {
          "name": "divider",
          "description": "Define se o item deve exibir um divisor visual.\nQuando ativado, adiciona uma linha separadora para organizar visualmente os itens do menu.",
          "values": []
        },
        {
          "name": "expanded",
          "description": "Define se o menu-list inicia expandido.\nÚtil para manter agrupamentos abertos por padrão no menu contextual.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-menu-logo",
      "description": "Exibe o logotipo institucional no interior do `br-menu`. Use no cabeçalho ou rodapé do menu.\n---\n\n\n### **Events:**\n - **brMenuLogoError** - Emitido quando a imagem principal e o fallback falham.\n- **brMenuLogoError**\n\n### **Slots:**\n - **default** - Slot para logo ou conteúdo que substitui a imagem padrão.\n\n### **CSS Parts:**\n - **container** - Wrapper da logo.",
      "attributes": [
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        },
        { "name": "src", "description": "URL da imagem", "values": [] },
        {
          "name": "fallback-src",
          "description": "URL opcional usada uma única vez quando `src` falha.",
          "values": []
        },
        {
          "name": "alt",
          "description": "Texto alternativo da imagem",
          "values": []
        },
        {
          "name": "width",
          "description": "Largura da imagem (com unidade, ex: '100px', '50%')",
          "values": []
        },
        {
          "name": "height",
          "description": "Altura da imagem (com unidade, ex: '80px', 'auto')",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-menu-social",
      "description": "Bloco de canais e redes sociais institucionais dentro do `br-menu`. Use no slot `social` ou rodapé do menu.\n---\n\n\n### **Events:**\n - **brSocialClick** - Evento emitido quando o link de rede social é clicado.\n- **brMenuSocialClick** - Evento emitido quando o link de rede social é clicado.\n- **brNavigate** - Evento cancelável emitido em `navigation-mode=\"event\"` para cliques primários sem modificadores em links `_self`.\nChame `event.preventDefault()` no listener para impedir a navegação nativa e entregar `event.detail.href` ao roteador da SPA.\n\n### **Slots:**\n - **icon** - Slot para ícone personalizado da rede social.",
      "attributes": [
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        },
        { "name": "href", "description": "URL do link.", "values": [] },
        {
          "name": "target",
          "description": "Target do link quando href é fornecido.\nAceita `_self`, `_blank`, `_parent` ou `_top`. Valores inválidos usam `_self`.",
          "values": [{ "name": "BrLinkTarget" }]
        },
        {
          "name": "navigation-mode",
          "description": "Controla como o componente integra a navegação mantendo `href` real no elemento navegável.\n- `native` (padrão): preserva o comportamento do navegador, conforme HTML/W3C.\n- `event`: emite `brNavigate`; se o evento for cancelado, bloqueia a navegação nativa para a SPA assumir.\nCliques com modificadores, botão do meio ou `target` diferente de `_self` permanecem nativos.\nValores inválidos usam `native`.",
          "values": [{ "name": "BrNavigationMode" }]
        },
        {
          "name": "aria-label",
          "description": "Define o rótulo acessível usado por tecnologias assistivas.",
          "values": []
        },
        {
          "name": "icon",
          "description": "Identificador da rede social. Os ícones oficiais mais comuns são\nrenderizados pelo registro SVG local; use o slot `icon` para uma fonte\ndiferente ou uma classe Font Awesome personalizada.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-message",
      "description": "O `br-message` apresenta um aviso contextual ou feedback em linha sobre uma operação ou estado do sistema.\n\nDefina o tipo de mensagem em `state` (`success`, `danger`, `warning` ou `info`). Opcionalmente, adicione um botão para fechar com `closable`.\n\n```html\n<br-message state=\"success\" message-title=\"Sucesso\">\n  Operação realizada com sucesso.\n</br-message>\n<br-message state=\"danger\" closable>\n  Não foi possível salvar os dados. Tente novamente.\n</br-message>\n```\n\n### Quando usar\n\n- Feedback sobre uma ação recém-executada na página (salvar, excluir, atualizar).\n- Mensagens de erro ou orientação em formulários (no slot `feedback` de inputs).\n\n### Quando evitar\n\n- Avisos críticos que exigem decisão antes de prosseguir: use `br-modal`.\n- Notificações acumuladas em uma central: use `br-notification`.\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/message?tab=designer).\n---\n\n\n### **Events:**\n - **brDidClose** - Evento emitido quando o usuário fecha a mensagem, se closable for true.\n- **brMessageClose** - Evento emitido quando a mensagem é fechada.\n\n### **Slots:**\n - **default** - Conteúdo principal da mensagem. Quando utilizado, a prop `message` é ignorada.\n- **icon** - Ícone customizado da mensagem. Quando utilizado, o ícone padrão gerado pela prop `state` é ignorado.\n- **message-title** - Título customizado da mensagem. Quando utilizado, a prop `messageTitle` é ignorada.\n- **message-body** - Corpo customizado da mensagem. Quando utilizado, a prop `message` é ignorada.\n- **close-button** - Botão de fechar customizado. Quando utilizado, o botão padrão é substituído.\n\n### **CSS Parts:**\n - **container** - Wrapper principal da mensagem.\n- **icon** - Área do ícone da mensagem.\n- **content** - Área de conteúdo da mensagem.\n- **close** - Área do botão de fechar.",
      "attributes": [
        {
          "name": "message-title",
          "description": "Define o título da mensagem, que é exibido no início, acima da mensagem principal.\nEste título serve para destacar a mensagem textual. Não é aplicável para mensagens do tipo feedback.",
          "values": []
        },
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        },
        {
          "name": "message",
          "description": "Define o texto da mensagem que será exibido.\nEste é o conteúdo principal da mensagem. A propriedade `message` é obrigatória e deve ser fornecida para que a mensagem apareça.",
          "values": []
        },
        {
          "name": "is-inline",
          "description": "Exibe o rótulo e o controle na mesma linha.",
          "values": []
        },
        {
          "name": "inline",
          "description": "Exibe o conteúdo em linha. Quando informada, tem precedência sobre `isInline`.",
          "values": []
        },
        {
          "name": "is-closable",
          "description": "Se definido como verdadeiro, um botão de fechar será exibido para permitir que o usuário feche a mensagem.\nO fechamento emitirá o evento `brDidClose`, mas não removerá automaticamente o componente do DOM, a menos que a propriedade `autoRemove` também esteja definida como `true`.\nEste recurso não está disponível para mensagens do tipo feedback.",
          "values": []
        },
        {
          "name": "closable",
          "description": "Exibe ação de fechar. Quando informada, tem precedência sobre `isClosable`.",
          "values": []
        },
        {
          "name": "auto-remove",
          "description": "Controla o comportamento do fechamento do componente quando `isClosable` é verdadeiro.\n- Se definido como `true`, o componente será automaticamente removido do DOM ao clicar no botão de fechar.\n- Se definido como `false`, o componente permanecerá no DOM e apenas emitirá o evento `brDidClose`.\n\nEsta propriedade não tem efeito se `isClosable` for `false`.\nO valor padrão é `false`.",
          "values": []
        },
        {
          "name": "show-icon",
          "description": "Se definido como verdadeiro, um ícone associado à mensagem será exibido.\nUse esta propriedade para mostrar ou ocultar o ícone da mensagem conforme necessário.",
          "values": []
        },
        {
          "name": "is-feedback",
          "description": "Define se a mensagem é do tipo feedback, geralmente usada para fornecer contexto adicional sobre ações do usuário.\nExemplos incluem mensagens de validação em campos de formulário. Não disponível para mensagens que não sejam de feedback.",
          "values": []
        },
        {
          "name": "feedback",
          "description": "Usa apresentação de feedback. Quando informada, tem precedência sobre `isFeedback`.",
          "values": []
        },
        {
          "name": "state",
          "description": "Define o estado do message. Valores inválidos usam `info`.\nOs possíveis valores são:\n- 'info': Mensagem informativa.\n- 'warning': Mensagem de aviso.\n- 'danger': Mensagem de erro ou alerta.\n- 'success': Mensagem de sucesso.\nO valor padrão é 'info'.",
          "values": [{ "name": "BrFeedbackState" }]
        },
        {
          "name": "feedback-state",
          "description": "Estado de feedback. Quando informado, tem precedência sobre `state`.",
          "values": [{ "name": "BrFeedbackState" }]
        },
        {
          "name": "aria-label",
          "description": "Define o rótulo acessível usado por tecnologias assistivas.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-modal",
      "description": "O `br-modal` abre uma janela de diálogo bloqueadora sobre uma máscara, capturando a atenção imediata da pessoa usuária.\n\nControle a abertura com os métodos `open()`, `close()` e `showModal()`. Estruture o conteúdo usando os slots `header`, `default` (corpo) e `footer` (botões de ação).\n\n```html\n<br-modal title-text=\"Excluir item\">\n  <p>Deseja realmente excluir este registro? Esta ação não pode ser desfeita.</p>\n  <div slot=\"footer\">\n    <br-button emphasis=\"secondary\">Cancelar</br-button>\n    <br-button emphasis=\"primary\">Excluir</br-button>\n  </div>\n</br-modal>\n```\n\n### Quando usar\n\n- Confirmação de ações críticas ou irreversíveis (excluir registro, descartar alterações).\n- Formulários curtos e contextuais sem sair da tela atual.\n\n### Quando evitar\n\n- Mensagens informativas que não exigem confirmação: use `br-message`.\n- Conteúdos longos com navegação interna: use uma página dedicada.\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/modal?tab=designer).\n---\n\n\n### **Events:**\n - **brModalOpen** - Evento emitido quando o modal é aberto (quando `show` muda de `false` para `true`).\n- **brModalClose** - Evento emitido após o modal ser fechado (quando `show` muda de `true` para `false`).\n- **brModalBeforeClose** - Evento emitido antes do fechamento do modal (quando o botão X é clicado).\nSe autoClose está desativado, o desenvolvedor deve fechar manualmente o modal após este evento.\nSe autoClose está ativado, o modal fecha automaticamente após este evento.\n- **brModalOpened** - Evento emitido após o modal estar completamente aberto e com o foco estabilizado\ndentro dele. Complementa `brModalOpen` (que dispara imediatamente ao abrir):\nuse `brModalOpened` quando precisar interagir com o modal já pronto.\n\n### **Methods:**\n - **open()** - Método público para abrir o modal\n- **showModal(): _Promise<void>_** - Abre o modal usando a nomenclatura de `HTMLDialogElement`.\n- **close()** - Método público para fechar o modal\n- **requestClose(): _Promise<void>_** - Solicita fechamento e permite cancelamento pelo evento `cancel`.\n- **toggle()** - Método público para alternar a visibilidade do modal\n\n### **Slots:**\n - **header** - Cabeçalho do modal. Se não for usado, o `title-text` será exibido.\n- **default** - Corpo do modal.\n- **footer** - Rodapé do modal.\n- **close-button** - Botão de fechar customizado. Se não for usado, o botão padrão será exibido.\n\n### **CSS Parts:**\n - **container** - Wrapper principal do modal.\n- **header** - Cabeçalho do modal.\n- **title** - Título do modal.\n- **body** - Corpo do modal.\n- **footer** - Rodapé do modal.\n- **close-button** - Botão de fechar do modal.",
      "attributes": [
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        },
        {
          "name": "title-text",
          "description": "O texto do título a ser exibido no cabeçalho do modal. Usado quando o slot `header` não é fornecido.",
          "values": []
        },
        {
          "name": "show",
          "description": "Controla a visibilidade do modal.",
          "values": []
        },
        {
          "name": "auto-close",
          "description": "Define o comportamento de fechamento do modal.\n\n- `true`: O modal fecha automaticamente ao clicar no botão fechar.\n- `false`: O modal emite `brModalBeforeClose` mas não fecha, permitindo a implementação de lógica customizada (validação, confirmação, etc.) antes do fechamento. O desenvolvedor deve\n  controlar manualmente o fechamento.",
          "values": []
        },
        {
          "name": "initial-focus-selector",
          "description": "Seletor CSS do elemento que deve receber foco quando o modal é aberto (ex: `\"#meu-elemento\"`).",
          "values": []
        },
        {
          "name": "size",
          "description": "Define o tamanho (largura) do modal. Valores inválidos usam `medium`.",
          "values": [{ "name": "ModalSize" }]
        },
        {
          "name": "scrollable",
          "description": "Se `true`, habilita a rolagem interna do conteúdo do modal.",
          "values": []
        },
        {
          "name": "align-footer",
          "description": "Define o alinhamento do conteúdo do rodapé (slot=\"footer\"). Valores inválidos usam `center`.",
          "values": [{ "name": "ModalFooterAlign" }]
        }
      ],
      "references": []
    },
    {
      "name": "br-notification",
      "description": "O `br-notification` organiza a central de mensagens, comunicados e avisos do usuário em um painel retrátil.\n\nUse os métodos `open()`, `close()` ou a propriedade `isOpen` para controlar o painel. Estruture o conteúdo com `br-notification-header`, `br-notification-body` e `br-notification-item`.\n\n```html\n<br-notification>\n  <div slot=\"header\">\n    <br-notification-header title-text=\"Notificações\"></br-notification-header>\n  </div>\n  <br-notification-body>\n    <br-notification-item title-text=\"Seu processo foi atualizado\" date=\"10/10/2026\"></br-notification-item>\n  </br-notification-body>\n</br-notification>\n```\n\n### Quando usar\n\n- Central de avisos acumulados da aplicação, normalmente acionada por um botão no cabeçalho.\n\n### Quando evitar\n\n- Mensagens em linha como resposta direta a uma ação na tela: use `br-message`.\n- Confirmação de ação crítica: use `br-modal`.\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/notification?tab=designer).\n---\n\n\n### **Events:**\n - **brOpenChange** - Informa a mudança de estado aberto/fechado do painel.\n- **brNotificationOpen** - Informa que o painel foi aberto.\n- **brNotificationClose** - Informa que o painel foi fechado.\n- **brNotificationItemClick** - Expõe a interação com um item da lista.\n- **brNotificationTabChange** - Informa troca de aba quando o componente possuir navegação por tabs.\n\n### **Methods:**\n - **show()** - Abre o painel de notificações.\n- **hide(reason: _NotificationCloseReason_)** - Fecha o painel de notificações.\n- **toggle()** - Alterna o estado aberto/fechado.\n- **focusTrigger()** - Move o foco de volta para o acionador.\n- **focusFirstItem()** - Move o foco para o primeiro item interativo da lista.\n\n### **Slots:**\n - **trigger** - Elemento acionador externo responsável por abrir e fechar o painel.\n- **header** - Região superior do componente, para uso com subcomponentes de cabeçalho ou conteúdo customizado.\n- **tabs** - Região opcional para navegação por abas.\n- **default** - Região principal da lista de notificações.\n- **footer** - Região opcional para ações complementares, como \"ver todas\".\n\n### **CSS Parts:**\n - **base** - Superfície principal do painel.\n- **header** - Região superior do componente.\n- **body** - Região principal do componente.\n- **tabs** - Região de abas, quando existir.\n- **list** - Região com rolagem onde os itens são exibidos.\n- **close-button** - Botão de fechar do painel.\n- **divider** - Divisor entre itens da lista.",
      "attributes": [
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        },
        {
          "name": "label",
          "description": "Nome acessível do painel de notificações. Exposto via `aria-label`.",
          "values": []
        },
        {
          "name": "open",
          "description": "Controla se o painel de notificações está aberto.",
          "values": []
        },
        {
          "name": "close-on-outside-click",
          "description": "Fecha o painel ao clicar fora da superfície.",
          "values": []
        },
        {
          "name": "close-on-trigger-click",
          "description": "Fecha o painel ao clicar novamente no acionador.",
          "values": []
        },
        {
          "name": "mobile-fullscreen",
          "description": "Faz o painel ocupar toda a largura disponível em viewports pequenas.",
          "values": []
        },
        {
          "name": "internal-scroll",
          "description": "Habilita rolagem apenas na região de itens, preservando cabeçalho e abas fixos.",
          "values": []
        },
        {
          "name": "placement",
          "description": "Define o posicionamento do painel em relação ao acionador. Valores inválidos usam `bottom-end`.",
          "values": [{ "name": "NotificationPlacement" }]
        },
        {
          "name": "width",
          "description": "Largura explícita do painel. Quando não definida, o painel dimensiona conforme o conteúdo,\nrespeitando o `max-width` definido por spec ou pelo prop `maxWidth`.",
          "values": []
        },
        {
          "name": "max-width",
          "description": "Sobrescreve o `max-width` do painel. Por padrão, o CSS aplica `max-width: 50vw` em viewports ≥576px\nconforme a especificação do Design System.",
          "values": []
        },
        {
          "name": "max-height",
          "description": "Sobrescreve a altura máxima do painel.\nPor padrão, o CSS aplica `calc(100vh - 86px)` via token `--notification-height`.",
          "values": []
        },
        {
          "name": "is-static",
          "description": "Define se o painel de notificações deve ser renderizado de forma estática (inline).\nQuando verdadeiro, o posicionamento absoluto é desativado. Ideal para centrais de notificações fixas ou documentação.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-notification-body",
      "description": "Corpo do painel de notificações com rolagem independente. Use dentro do `br-notification`.\n\nInsira os itens `br-notification-item` no slot padrão.\n---\n\n\n### **Slots:**\n - **tabs** - Navegação por abas quando presente.\n- **default** - Lista principal de notificações.\n- **empty** - Conteúdo para estado vazio.",
      "attributes": [
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        },
        {
          "name": "internal-scroll",
          "description": "Controla se a rolagem ocorre apenas na lista de itens.",
          "values": []
        },
        {
          "name": "empty",
          "description": "Indica que não há notificações para exibir.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-notification-header",
      "description": "Cabeçalho da central de notificações com título e botão de fechar. Use no slot `header` do `br-notification`.\n\nDefina o título em `title-text`. O botão de fechar emite o fechamento para o painel pai.\n---\n\n\n### **Events:**\n - **brNotificationHeaderClose** - Solicita o fechamento do painel a partir do cabeçalho.\n\n### **Slots:**\n - **title** - Conteúdo customizado do título.\n- **subtitle** - Conteúdo customizado do subtítulo.\n- **actions** - Região para botão de fechar ou outras ações contextuais.",
      "attributes": [
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        },
        {
          "name": "label",
          "description": "Título textual do cabeçalho.",
          "values": []
        },
        {
          "name": "subtitle",
          "description": "Texto complementar, como e-mail ou identificação adicional do usuário.",
          "values": []
        },
        {
          "name": "show-close-button",
          "description": "Exibe botão de fechar dentro do cabeçalho.",
          "values": []
        },
        {
          "name": "close-label",
          "description": "Texto acessível do botão de fechar. Permite internacionalização.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-notification-item",
      "description": "Item individual de notificação com título, data e status de leitura. Use dentro do `br-notification-body`.\n\nDefina o título em `title-text` e a data em `date`. Use `read` para indicar se o item já foi lido.\n---\n\n\n### **Events:**\n - **brNotificationItemSelect** - Informa seleção ou acionamento do item.\n- **brNotificationItemRead** - Informa mudança de estado para lido.\n\n### **Methods:**\n - **callFocus()** - Move o foco para o elemento interativo do item.\n\n### **Slots:**\n - **default** - Conteúdo principal da notificação.\n- **actions** - Ações contextuais do item.",
      "attributes": [
        {
          "name": "item-id",
          "description": "Identificador único do item.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        },
        {
          "name": "label",
          "description": "Título principal da notificação.",
          "values": []
        },
        {
          "name": "description",
          "description": "Conteúdo resumido ou complementar da notificação.",
          "values": []
        },
        {
          "name": "datetime",
          "description": "Informação cronológica associada à notificação.",
          "values": []
        },
        {
          "name": "unread",
          "description": "Indica se a notificação ainda não foi lida.",
          "values": []
        },
        {
          "name": "clickable",
          "description": "Define se o item é interativo.",
          "values": []
        },
        {
          "name": "state",
          "description": "Define o estado visual da notificação.\nAceita `success`, `danger`, `warning` ou `info`.\nValores inválidos são ignorados.",
          "values": [{ "name": "NotificationItemState" }]
        }
      ],
      "references": []
    },
    {
      "name": "br-pagination",
      "description": "O `br-pagination` divide grandes volumes de dados em páginas numeradas sequenciais.\n\nInforme a quantidade total de itens em `total` e a página atual em `current`. Ouça o evento `brPaginationPageChange` para carregar a página solicitada. Para permitir alterar itens por página, use a variante contextual ou defina `per-page`.\n\n```html\n<br-pagination total=\"100\" per-page=\"10\" current=\"1\"></br-pagination>\n```\n\n### Quando usar\n\n- Paginação de tabelas (`br-table`) ou listas extensas.\n\n### Quando evitar\n\n- Poucos itens (menos de 20 itens) que cabem em uma visualização direta.\n- Etapas sequenciais de um formulário ou cadastro: use `br-step` ou `br-wizard`.\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/pagination?tab=designer).\n---\n\n\n### **Events:**\n - **pageChange** - Solicita uma página por interação do usuário ou pelo método público.\n\nEm `controlled`, o evento informa a página solicitada, mas `current` só\nmuda quando a aplicação confirma o resultado. O componente não faz\nchamadas remotas nem cancela a consulta do consumidor.\n- **brPaginationPageChange** - Evento para iniciar o carregamento de uma página.\nO `detail` contém `{ page }`; o evento não é cancelável.\n- **perPageChange** - Solicita uma quantidade de itens por página (variante contextual).\nEm `controlled`, a aplicação confirma a mudança atribuindo `perPage`.\n- **brPaginationPerPageChange** - Evento para iniciar o carregamento de uma nova quantidade de\nitens. O `detail` contém `{ perPage }`; o evento não é cancelável.\n\n### **Methods:**\n - **setPage(page: _number_): _Promise<void>_** - Define programaticamente a página atual dentro do intervalo permitido.\n- **goToPage(page: _number_): _Promise<void>_** - Solicita navegação programática para uma página (1-indexada).\nEm `controlled`, aguarda a confirmação externa para alterar `current`.\n\n### **Slots:**\n - **pagination-info** - Informação customizada da paginação contextual. Quando utilizado, o texto padrão de contagem é substituído.\n- **loading** - Indicador exibido enquanto uma página é carregada.\n\n### **CSS Parts:**\n - **nav** - Parte para o contêiner raiz da paginação (elemento nav), usada para estilização via ::part().\n- **list** - Parte para a lista de páginas (elemento ul), usada para estilização via ::part().\n- **page** - Parte para os itens de página numérica (elemento a), usada para estilização via ::part().\n- **ellipsis** - Parte para o botão de reticências e seu contêiner.\n- **ellipsis-button** - Parte encaminhada do botão de reticências.\n- **per-page** - Parte para o seletor de itens por página na variante contextual.\n- **per-page-container** - Contêiner encaminhado do seletor de itens por página.\n- **per-page-input** - Campo encaminhado do seletor de itens por página.\n- **per-page-input-label** - Rótulo encaminhado do seletor de itens por página.\n- **per-page-list** - Lista encaminhada do seletor de itens por página.\n- **go-to** - Parte para o seletor de navegação direta na variante contextual.\n- **go-to-container** - Contêiner encaminhado do seletor de navegação direta.\n- **go-to-input** - Campo encaminhado do seletor de navegação direta.\n- **go-to-input-label** - Rótulo encaminhado do seletor de navegação direta.\n- **go-to-list** - Lista encaminhada do seletor de navegação direta.\n- **prev-button** - Parte para o botão de página anterior, usada para estilização via ::part().\n- **prev-button-inner** - Botão interno encaminhado da página anterior.\n- **next-button** - Parte para o botão de próxima página, usada para estilização via ::part().\n- **next-button-inner** - Botão interno encaminhado da próxima página.\n- **loading** - Área do indicador de carregamento.",
      "attributes": [
        {
          "name": "color-mode",
          "description": "Define se a paginação usará um esquema de cores escuro. Valores inválidos são ignorados.\nQuando definido como `dark`, aplica a classe `dark-mode` ao container principal.",
          "values": [{ "name": "PaginationColorMode" }]
        },
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por `generateUniqueId()`.\n\n> **Uso compartilhado:** mantenha esta descrição idêntica em todos os componentes que usam `customId`.",
          "values": []
        },
        {
          "name": "total",
          "description": "Quantidade total de páginas (inteiro mínimo 1). Valores inválidos usam 1.",
          "values": []
        },
        {
          "name": "total-pages",
          "description": "Quantidade total de páginas. Tem precedência sobre `total`; valores inválidos usam 1.",
          "values": []
        },
        {
          "name": "current",
          "description": "Página atual (inteira e 1-indexada). Valores inválidos usam 1; valores fora do intervalo são ajustados.",
          "values": []
        },
        {
          "name": "current-page",
          "description": "Página atual. Tem precedência sobre `current`; valores inválidos usam 1.",
          "values": []
        },
        {
          "name": "aria-label",
          "description": "Define o rótulo acessível usado por tecnologias assistivas.\n\n> **Uso compartilhado:** mantenha esta descrição idêntica em todos os componentes que usam `ariaLabel`.",
          "values": []
        },
        {
          "name": "previous-label",
          "description": "Rótulo acessível do botão de página anterior.",
          "values": []
        },
        {
          "name": "next-label",
          "description": "Rótulo acessível do botão de próxima página.",
          "values": []
        },
        {
          "name": "ellipsis-label",
          "description": "Rótulo acessível do botão de reticências que abre a lista de páginas ocultas.",
          "values": []
        },
        {
          "name": "density",
          "description": "Define a densidade visual do componente.\n\n- `small`: Alta densidade (componente menor, mais compacto e com menos espaçamento).\n- `medium`: Densidade intermediária, padrão recomendado para a maioria dos casos.\n- `large`: Baixa densidade (componente maior, mais espaçamento e altura).\n\n> **Uso compartilhado:** mantenha esta descrição idêntica em todos os componentes que usam `density`.\nValores inválidos usam `medium`.",
          "values": [{ "name": "PaginationDensity" }]
        },
        {
          "name": "variant",
          "description": "Variante de renderização do componente. Valores inválidos usam `default`.\n- `default`: paginação numérica (padrão)\n- `contextual`: paginação contextual com seletores e informação de itens",
          "values": [{ "name": "PaginationVariant" }]
        },
        {
          "name": "controlled",
          "description": "Mantém `current` e `perPage` sob controle da aplicação.\n\nQuando ativo, interações apenas emitem a intenção de mudança. A aplicação\ndeve atualizar a propriedade correspondente após concluir seu processamento.",
          "values": []
        },
        {
          "name": "loading",
          "description": "Indica que a página solicitada ainda está sendo carregada pelo consumidor.",
          "values": []
        },
        {
          "name": "total-items",
          "description": "Total de itens (inteiro não negativo, aplicável na variante contextual). Valores inválidos usam 0.",
          "values": []
        },
        {
          "name": "per-page",
          "description": "Itens por página (inteiro positivo, aplicável na variante contextual). Valores inválidos usam 10.",
          "values": []
        },
        {
          "name": "per-page-options",
          "description": "Opções disponíveis de itens por página na variante `contextual`.\nPasse o array por property binding; atributos HTML não representam arrays.",
          "values": [{ "name": "number[]" }]
        },
        {
          "name": "per-page-label",
          "description": "Rótulo do seletor de itens por página (variante contextual).",
          "values": []
        },
        {
          "name": "go-to-page-label",
          "description": "Rótulo do seletor \"ir para página\" (variante contextual).",
          "values": []
        },
        {
          "name": "items-text",
          "description": "Sufixo textual para a informação de quantidade de itens (variante contextual).",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-radio",
      "description": "O `br-radio` representa uma opção individual dentro de um conjunto de escolha única.\n\nDefina `name` para associar as opções do mesmo grupo, `value` para o valor enviado no formulário e `label` para o texto exibido.\n\n```html\n<br-radio name=\"preferencia\" value=\"email\" label=\"Receber por e-mail\" checked></br-radio>\n<br-radio name=\"preferencia\" value=\"sms\" label=\"Receber por SMS\"></br-radio>\n```\n\nEm formulários HTML, integra-se nativamente via `ElementInternals` com suporte a `required`.\n\n### Quando usar\n\n- Opção única em grupos pequenos de 2 a 5 alternativas.\n\n### Quando evitar\n\n- Mais de 5 opções: use `br-select`.\n- Seleção múltipla: use `br-checkbox`.\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/radio?tab=designer).\n---\n\n\n### **Events:**\n - **checkedChange** - Disparado depois que o valor do `checked` foi alterado.\n- **brRadioValidationChange** - Emitido ao iniciar e concluir a validação customizada.\n\n### **Methods:**\n - **handleCheckedChange(event: _CustomEvent<boolean>_)** - @deprecated A coordenação interna agora é limitada à raiz DOM do grupo. - Mantém o protocolo legado de sincronização por `checkedChange`.\n- **handleKeyDown(event: _KeyboardEvent_)** - Navega e seleciona o próximo/anterior rádio habilitado no grupo via teclas de seta.\nAtivado por 'keydown', move a seleção entre rádios do mesmo 'name'\nusando as setas, partindo do rádio atualmente checado.\n- **checkValidity(): _Promise<boolean>_** - Retorna `true` se o valor do radio for válido, caso contrário `false`.\nSe o radio for inválido, dispara um evento 'invalid'.\n- **reportValidity(): _Promise<boolean>_** - Retorna `true` se o valor do radio for válido, caso contrário `false`.\nSe for inválido, exibe a mensagem de erro padrão do navegador.\n- **setCustomValidity(message: _string_): _Promise<void>_** - Define uma mensagem de validação customizada para o radio.\nSe a mensagem for uma string vazia, o erro customizado é limpo.\n- **validate(): _Promise<boolean>_** - Executa o validator do radio e retorna se o valor atual é válido.\n- **getValidationState(): _Promise<FormValidationState>_** - Retorna um snapshot serializável da Constraint Validation API.\n- **toggleChecked()** - @deprecated Atualize a propriedade `checked` diretamente. - Inverte o valor da prop `checked`\n- **setFocus()** - Move o foco para o input radio nativo interno.\n\n### **Slots:**\n - **default** - Slot para o rótulo do rádio, como alternativa à propriedade label.\n- **feedback** - Mensagem de validação, normalmente um `br-message`.\n\n### **CSS Parts:**\n - **container** - Contêiner visual do radio.\n- **radio-input** - Elemento input nativo do radio.\n- **radio-label** - Rótulo do radio.\n- **feedback** - Contêiner da mensagem de validação.",
      "attributes": [
        {
          "name": "checked",
          "description": "Define o estado de seleção do radio.\nSe definido como verdadeiro, o radio estará marcado. Caso contrário, estará desmarcado.",
          "values": []
        },
        {
          "name": "uncheck-on-click",
          "description": "Permite desmarcar o radio ao clicar novamente sobre ele quando já estiver selecionado.\nPor padrão, um radio selecionado permanece marcado ao receber um novo clique.\nQuando usada junto com `uncheckOnDoubleClick`, esta opção tem precedência.",
          "values": []
        },
        {
          "name": "uncheck-on-double-click",
          "description": "Permite desmarcar o radio ao clicar duas vezes sobre ele.\nPor padrão, um radio selecionado permanece marcado ao receber um segundo clique.",
          "values": []
        },
        {
          "name": "disabled",
          "description": "Desativa o radio, tornando-o não interativo.",
          "values": []
        },
        {
          "name": "required",
          "description": "Se verdadeiro, o radio é obrigatório e uma opção deve ser selecionada antes que o formulário possa ser enviado.",
          "values": []
        },
        {
          "name": "validator",
          "description": "Regra síncrona ou assíncrona aplicada ao estado booleano do radio.\nRetorne uma mensagem para invalidar ou `null` para aceitar o valor.",
          "values": [{ "name": "RadioValidator" }]
        },
        {
          "name": "state",
          "description": "Indica a validade do radio.\nSe não for especificado, o valor padrão é `null`, indicando que a validade não foi definida.",
          "values": [{ "name": "valid" }, { "name": "invalid" }]
        },
        {
          "name": "feedback-state",
          "description": "Estado de feedback. Quando informado, tem precedência sobre `state`.",
          "values": [{ "name": "valid" }, { "name": "invalid" }]
        },
        {
          "name": "has-hidden-label",
          "description": "Define se o label associado ao radio deve ser oculto.\nSe definido como verdadeiro, o texto do label será oculto, mas o radio ainda estará visível e funcional.",
          "values": []
        },
        {
          "name": "label-hidden",
          "description": "Oculta visualmente o rótulo. Quando informada, tem precedência sobre `hasHiddenLabel`.",
          "values": []
        },
        {
          "name": "custom-id",
          "description": "Identificador único; gerado automaticamente quando omitido.",
          "values": []
        },
        {
          "name": "name",
          "description": "Define o nome do radio, que é utilizado para agrupar radios em formulários e identificar o campo.\nO valor é obrigatório e deve ser fornecido para garantir o correto funcionamento em formulários.",
          "values": []
        },
        {
          "name": "label",
          "description": "Texto descritivo exibido à direita do radio.\nCaso um slot seja utilizado para fornecer um texto alternativo, o valor desta propriedade será ignorado.",
          "values": []
        },
        {
          "name": "value",
          "description": "Define o valor associado ao radio quando ele faz parte de um formulário nativo (`<form>`).\nEsse valor é enviado com o formulário quando o radio está selecionado.\n**Nota:** Esta propriedade não deve ser utilizada para determinar se o radio está selecionado; para verificar o estado de seleção, use a propriedade `checked`.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-radio-group",
      "description": "O `br-radio-group` agrupa opções de múltipla escolha onde apenas uma pode ser selecionada.\n\nAdicione os elementos `br-radio` no slot padrão. Defina o rótulo do grupo em `label` e o valor selecionado em `value`.\n\n```html\n<br-radio-group label=\"Turno de atendimento\" name=\"turno\">\n  <br-radio value=\"manha\" label=\"Manhã\"></br-radio>\n  <br-radio value=\"tarde\" label=\"Tarde\"></br-radio>\n  <br-radio value=\"noite\" label=\"Noite\"></br-radio>\n</br-radio-group>\n```\n\nEm formulários HTML, o grupo integra-se via `ElementInternals`, controlando validação nativa com `required`.\n\n### Quando usar\n\n- Entre 2 e 5 opções mutuamente exclusivas que devem permanecer visíveis.\n\n### Quando evitar\n\n- Mais de 6 opções: use `br-select` para economizar espaço de tela.\n- Seleção de múltiplas opções ao mesmo tempo: use `br-checkbox-group`.\n- Liga/desliga imediato: use `br-switch`.\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/radio-group?tab=designer).\n---\n\n\n### **Events:**\n - **brRadioGroupValidationChange** - Emitido ao iniciar e concluir uma validação customizada.\n\n### **Methods:**\n - **checkValidity(): _Promise<boolean>_** - Verifica a validade do grupo.\n- **reportValidity(): _Promise<boolean>_** - Verifica a validade e apresenta a mensagem do grupo.\n- **setCustomValidity(message: _string_): _Promise<void>_** - Define a mensagem de validade customizada do grupo.\n- **validate(): _Promise<boolean>_** - Executa o validator do grupo.\n- **getValidationState(): _Promise<FormValidationState>_** - Retorna o snapshot de validade do grupo.\n- **setFocus(): _Promise<void>_** - Move o foco para o radio marcado ou para o primeiro radio habilitado.\n\n### **Slots:**\n - **default** - Radios pertencentes ao grupo.\n- **label** - Legenda do grupo, como alternativa à propriedade `label`.\n- **description** - Texto auxiliar do grupo.\n- **feedback** - Mensagem de validação do grupo.\n- **validation-loading** - Indicador exibido durante validação assíncrona.\n\n### **CSS Parts:**\n - **group** - Fieldset semântico do grupo.\n- **legend** - Legenda e nome acessível do grupo.\n- **options** - Contêiner das opções.\n- **description** - Área de texto auxiliar.\n- **feedback** - Área de mensagem de validação.\n- **validation-loading** - Área do indicador de validação assíncrona.",
      "attributes": [
        {
          "name": "name",
          "description": "Nome do campo enviado pelo formulário.",
          "values": []
        },
        {
          "name": "value",
          "description": "Valor atualmente selecionado; `null` representa nenhuma seleção.",
          "values": []
        },
        {
          "name": "default-value",
          "description": "Valor restaurado por `form.reset()` e usado como seleção inicial.",
          "values": []
        },
        {
          "name": "required",
          "description": "Exige uma opção habilitada selecionada.",
          "values": []
        },
        {
          "name": "disabled",
          "description": "Desabilita o grupo e seus radios.",
          "values": []
        },
        {
          "name": "orientation",
          "description": "Orientação visual das opções. Valores inválidos usam `vertical`.",
          "values": [{ "name": "RadioGroupOrientation" }]
        },
        {
          "name": "label",
          "description": "Texto visível usado como legenda do grupo.",
          "values": []
        },
        {
          "name": "aria-label",
          "description": "Nome acessível usado quando não há uma legenda visível.",
          "values": []
        },
        {
          "name": "feedback-state",
          "description": "Estado visual opcional do feedback. Valores inválidos não aplicam estado. A validade real vem de ElementInternals.",
          "values": [{ "name": "valid" }, { "name": "invalid" }]
        },
        {
          "name": "validator",
          "description": "Regra síncrona ou assíncrona aplicada ao valor do grupo.\nRecebe a string selecionada ou `null` quando nenhuma opção está marcada.",
          "values": [{ "name": "RadioGroupValidator" }]
        },
        {
          "name": "custom-id",
          "description": "Identificador usado nas relações acessíveis internas.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-scrim",
      "description": "O `br-scrim` cria uma máscara visual escura sobre a tela ou sobre um elemento pai para focar a atenção do usuário.\n\nUse os métodos `show()`, `hide()` ou a propriedade `active` para controlar a exibição. Coloque o conteúdo em destaque no slot padrão.\n\n```html\n<br-scrim active>\n  <div class=\"destaque\">Conteúdo em evidência</div>\n</br-scrim>\n```\n\n### Quando usar\n\n- Destaque visual pontual de um elemento (tutoriais guiados ou máscaras personalizadas).\n\n### Quando evitar\n\n- Caixas de diálogo modais padrão: use `br-modal` (que já gerencia seu próprio scrim internamente).\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/scrim?tab=designer).\n---\n\n\n### **Events:**\n - **brScrimOpen** - Indica que o scrim foi aberto.\n- **brScrimClose** - Indica que o scrim foi fechado\n\n### **Methods:**\n - **setScrollThreshold(threshold: _number_)** - Define o limite de rolagem para o fechamento automático do scrim.\n- **open()** - Método público para exibir o scrim\n- **close()** - Método público para esconder o scrim\n- **toggle()** - Método público para alternar o estado de exibição do scrim\n- **updateSpotlight()** - Recalcula manualmente a posição e dimensões da fresta do scrim vazado.\nÚtil quando o elemento alvo muda de posição sem disparar resize ou scroll.\n- **handleDocumentKeyDown(event: _KeyboardEvent_)** - Intercepta todos os eventos de teclado globalmente quando o scrim está ativo.\n\nUsa `composedPath()[0]` para obter o elemento real com foco, mesmo dentro de shadow roots.\n`event.target` é redirecionado ao cruzar shadow boundaries e não reflete o elemento concreto\nquando o foco está dentro do shadow DOM de componentes filhos como `br-modal`.\n\n### **Slots:**\n - **default** - Slot para o conteúdo principal a ser exibido sobre o fundo escurecido do scrim.\n- **activator** - Slot para o elemento ativador do scrim, com prioridade sobre a propriedade activator.",
      "attributes": [
        {
          "name": "custom-id",
          "description": "Identificador único.\nCaso não seja fornecido, um ID gerado automaticamente será usado.",
          "values": []
        },
        {
          "name": "is-open",
          "description": "Ativa/desativa o scrim",
          "values": []
        },
        {
          "name": "position-content",
          "description": "Posiciona o conteúdo no topo, centro, direita, esquerda, abaixo dentro do scrim",
          "values": [{ "name": "ScrimPositionContent" }]
        },
        {
          "name": "disable-close-on-click",
          "description": "Desativa o fechamento do scrim ao ser clicado",
          "values": []
        },
        {
          "name": "z-index",
          "description": "Define o valor de z-index do scrim. Deve ser um inteiro entre 0 e Number.MAX_SAFE_INTEGER; valores inválidos usam 0.",
          "values": []
        },
        {
          "name": "bg-color",
          "description": "Cor de fundo personalizada para o scrim.\nAceita os seguintes formatos de cor:\n- Cores nomeadas do CSS: 'red', 'blue', 'green', 'yellow', etc.\n- Códigos hexadecimais: '#ff0000', '#00ff00', '#0000ff', etc.\n- Valores RGB: 'rgb(255, 0, 0)', 'rgb(0, 255, 0)', etc.\n- Valores RGBA: 'rgba(255, 0, 0, 0.5)', 'rgba(0, 255, 0, 0.8)', etc.\n- Valores HSL: 'hsl(0, 100%, 50%)', 'hsl(120, 100%, 50%)', etc.\n- Valores HSLA: 'hsla(0, 100%, 50%, 0.5)', 'hsla(240, 100%, 50%, 0.7)', etc.\nSe não especificada, usa a cor padrão do tema.",
          "values": []
        },
        {
          "name": "custom-opacity",
          "description": "Define a opacidade personalizada do scrim. O valor é limitado ao intervalo `0`–`1`; entradas inválidas usam `0.4`.",
          "values": []
        },
        {
          "name": "display-mode",
          "description": "Define o modo de exibição do scrim:\n- `'fullscreen'`: Ocupa toda a tela (`position: fixed`). (_padrão_)\n- `'parent'`: Ocupa apenas o elemento pai (`position: absolute`).\n  O elemento pai deve ter `position: relative` ou outro valor diferente de `static`.\n\nPara a variante `'legibility'`, este atributo é ignorado: o posicionamento é sempre\ncalculado automaticamente a partir das coordenadas do elemento pai.",
          "values": [{ "name": "ScrimDisplayMode" }]
        },
        {
          "name": "scroll-strategy",
          "description": "Define a estratégia de manipulação de rolagem quando scrim está aberto\n- 'block': Impede a rolagem completamente\n- 'close': Fecha o scrim quando ocorre rolagem",
          "values": [{ "name": "ScrimScrollStrategy" }]
        },
        {
          "name": "scroll-threshold",
          "description": "Determina quanto de rolagem (em pixels) é necessário para acionar a ação de fechamento automático do scrim. Valores negativos usam `0`.",
          "values": []
        },
        {
          "name": "activator",
          "description": "Define o seletor para o elemento activator.\nNota: O slot 'activator' tem prioridade sobre esta propriedade.",
          "values": []
        },
        {
          "name": "aria-label",
          "description": "Define um rótulo acessível personalizado para o diálogo.\nSe não fornecido, será usado \"Conteúdo do diálogo\" como padrão.",
          "values": []
        },
        {
          "name": "variant",
          "description": "Define a variante semântica do scrim\n- `'focus'`: Redireciona o foco hierárquico do usuário. Cor #000000 com opacidade 40%. (_padrão_)\n- `'spotlight'`: Scrim vazado — destaca um elemento específico criando uma fresta no overlay.\n  Aplica as mesmas cores da variante `'focus'`. Use `spotlightTargetId` para indicar o elemento a ser destacado.\n- `'legibility'`: Melhora o contraste e leitura de texto sobre superfícies. Cor #000000 com opacidade 64%.\n  Para cobertura parcial, use `legibilityAnchor` + `legibilitySize`.\n  Para gradiente suave, use `bgColor` com um valor de gradiente CSS e `customOpacity=\"1\"`,\n  ex.: `bg-color=\"linear-gradient(to top, rgba(0,0,0,0.64), transparent)\"`..\n\nQuando definida, aplica automaticamente as especificações de cor e opacidade do Design System.\nAs propriedades `bgColor` e `customOpacity` têm prioridade e sobrepõem os valores da variante.",
          "values": [{ "name": "ScrimVariant" }]
        },
        {
          "name": "legibility-anchor",
          "description": "Define a borda de ancoragem da faixa de cobertura da variante `legibility`.\n\nControla de qual borda (ou centro) do elemento a máscara de overlay cresce,\ntendo seu tamanho determinado por `legibilitySize`.\n\n- `'top'`: faixa ancorada na borda superior, cresce para baixo.\n- `'bottom'`: faixa ancorada na borda inferior, cresce para cima.\n- `'left'`: faixa ancorada na borda esquerda, cresce para a direita.\n- `'right'`: faixa ancorada na borda direita, cresce para a esquerda.\n- `'center'`: faixa centralizada verticalmente no elemento.\n\nQuando `legibilitySize` é `null`, a máscara ocupa 100% independentemente\nda âncora definida, equivalendo a uma cobertura total.\n\nSó tem efeito quando `variant=\"legibility\"`.",
          "values": [{ "name": "ScrimLegibilityAnchor" }]
        },
        {
          "name": "legibility-size",
          "description": "Define o tamanho da faixa de cobertura da variante `legibility`, usado em\nconjunto com `legibilityAnchor`.\n\nAceita qualquer valor CSS de comprimento válido:\n- Percentual relativo ao elemento pai: `'40%'`, `'75%'`\n- Comprimento absoluto: `'120px'`, `'8rem'`, `'6em'`\n- Função CSS: `'calc(100% - 2rem)'`\n\nQuando `null` (padrão), a máscara ocupa **100%** da dimensão relevante:\n- **altura** para âncoras `top`, `bottom` e `center`\n- **largura** para âncoras `left` e `right`\n\nSó tem efeito quando `variant=\"legibility\"` está definido.",
          "values": []
        },
        {
          "name": "legibility-target-id",
          "description": "Seletor CSS do elemento que deve receber o posicionamento da variante\n`legibility`. Quando não informado (padrão), o alvo é o elemento pai\ndireto do `<br-scrim>`.",
          "values": []
        },
        {
          "name": "spotlight-target-id",
          "description": "Ativa o modo de scrim vazado (variante 'spotlight'), criando uma área de fresta no overlay\nque destaca o elemento referenciado pelo seletor CSS fornecido.",
          "values": []
        },
        {
          "name": "spotlight-padding",
          "description": "Espaçamento interno (em pixels) ao redor da área de fresta no scrim vazado. Valores negativos usam `0`.",
          "values": []
        },
        {
          "name": "spotlight-shape",
          "description": "Define a forma da área de fresta no scrim vazado.\n- 'rect': Retangular com bordas retas.\n- 'rounded': Retangular com bordas arredondadas (border-radius de 8px).\n- 'circle': Elipse inscrita na área do elemento alvo.",
          "values": [{ "name": "ScrimSpotlightShape" }]
        },
        {
          "name": "content-layout",
          "description": "Define como o scrim aplica estilos de layout ao elemento filho (slot padrão).\n\n- `'default'`: O scrim gerencia o layout do conteúdo, centralizando, animando e aplicando transformações e opacidade automaticamente.\n\n- `'none'`: o scrim age como um componente controlado pelo pai. O filho recebe apenas a máscara visual, sem interferência de posicionamento, transformação ou opacidade.\nAdequado para componentes que gerenciam seu próprio layout e estado de abertura. Além disso:\n\n  - Foco e eventos globais** não são interceptados pelo scrim — o componente filho gerencia seu próprio foco, navegação por teclado e fechamento via ESC.\n  - Clique no scrim emite `brScrimClose` sem fechar o scrim internamente, delegando o controle de estado ao pai (quem define `isOpen`).\n  - Use `zIndex` apenas para sobrescrever a camada bloqueadora no fallback CSS. Máscara e painel devem usar subcamadas locais, sem aritmética entre camadas globais.",
          "values": [{ "name": "ScrimContentLayout" }]
        }
      ],
      "references": []
    },
    {
      "name": "br-select",
      "description": "O `br-select` permite escolher uma ou mais opções em uma lista suspensa expansível com suporte a busca e virtualização.\n\nDeclare as opções com `<br-select-option>` no slot padrão, ou forneça os dados dinamicamente com o método `setOptions()`. Para seleção múltipla, use `multiple`. Para habilitar busca por digitação, use `filterable`.\n\n```html\n<br-select label=\"Estado\" placeholder=\"Selecione um estado\">\n  <br-select-option value=\"df\" label=\"Distrito Federal\"></br-select-option>\n  <br-select-option value=\"sp\" label=\"São Paulo\"></br-select-option>\n  <br-select-option value=\"rj\" label=\"Rio de Janeiro\"></br-select-option>\n</br-select>\n```\n\nEm formulários HTML, o componente integra-se nativamente via `ElementInternals`, enviando os valores selecionados no submit e validando campos obrigatórios com `required`.\n\n### Quando usar\n\n- Listas com 5 ou mais opções que ocupariam muito espaço visível se exibidas abertas.\n- Seleção que exige filtro ou busca por digitação.\n- Carregamento dinâmico ou remoto de opções a partir de uma API (`search-mode=\"remote\"`).\n\n### Quando evitar\n\n- Poucas opções fixas (2 a 4 opções): use `br-radio` ou `br-radio-group`.\n- Escolha simples de sim/não: use `br-switch` ou `br-checkbox`.\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/select?tab=designer).\n---\n\n\n### **Events:**\n - **brSelectStateChange** - Evento emitido quando o estado público do select muda.\n- **valueChange** - Evento emitido quando o valor público do select é alterado.\n- **optionHover** - Emite a opção que recebeu foco ou hover.\n- **brSelectSearch** - Emitido uma vez por edição do campo de busca, inclusive ao limpar a consulta.\nO `detail` contém `{ query }`; o evento é informativo e não cancelável.\nA aplicação deve controlar debounce, transporte e ciclo de vida da busca.\n- **opened** - Emitido quando a lista é aberta.\n- **closed** - Emitido quando a lista é fechada.\n- **brSelectValidationChange** - Informa o início e o resultado de uma validação síncrona ou assíncrona.\nO `detail` contém `validating`, `valid` e `message`.\n\n### **Methods:**\n - **handleSelectOptionPropsChange(event: _Event_)** - Recalcula a coleção quando uma opção projetada muda por atribuição direta\nde `selected`, `disabled`, `label`, `group` ou `value`. A lista virtualizada em\nShadow DOM não é uma fonte independente; ela recebe o snapshot pelo seu\ncontrato público `options`.\n- **enable(): _Promise<void>_** - Habilita o select para interação do usuário.\n- **disable(): _Promise<void>_** - Desabilita o select e impede novas interações.\n- **show(): _Promise<void>_** - Abre a lista de opções quando o componente está habilitado.\n- **close(): _Promise<void>_** - Fecha a lista de opções quando o componente está habilitado.\n- **toggleOpen(): _Promise<void>_** - Alterna entre os estados aberto e fechado do select.\n- **clear(): _Promise<void>_** - @deprecated Use `setValue('')` ou a API de formulário. - Limpa a seleção atual.\n- **getValue(): _Promise<string | string[]>_** - @deprecated Leia a propriedade `value` diretamente. - Retorna o valor público atual.\n- **setValue(value: _string | string[]_): _Promise<void>_** - @deprecated Atribua a propriedade `value` diretamente. - Define o valor público do select.\n- **setFocus(): _Promise<void>_** - @deprecated Use o foco nativo do componente quando possível. - Move o foco para o campo interno.\n- **setOptions(options: _SelectOptionData[]_): _Promise<void>_** - Substitui a coleção atual de opções por uma nova lista.\n- **setOption(option: _SelectOptionData_): _Promise<void>_** - Adiciona ou atualiza uma única opção na coleção interna.\n\n### **Slots:**\n - **default** - Opções declaradas com elementos br-select-option.\n- **feedback** - Mensagem de validação, normalmente um br-message.\n- **validation-loading** - Indicador exibido durante validação assíncrona.\n- **loading** - Indicador exibido na lista enquanto `loading` está ativo. Padrão: spinner com o texto \"Pesquisando…\"; aceita texto, imagem ou qualquer HTML.\n\n### **CSS Parts:**\n - **container** - Contêiner visual principal do select.\n- **input** - Campo de seleção e busca.\n- **input-container** - Contêiner visual do campo.\n- **input-label** - Rótulo do campo.\n- **input-field** - Campo input nativo.\n- **input-group** - Grupo visual do campo.\n- **input-icon** - Ícone do campo.\n- **input-action** - Botão de abertura e fechamento.\n- **input-action-button** - Botão interno da ação.\n- **input-clear** - Botão de limpar o termo digitado durante a busca.\n- **list** - Lista de opções.\n- **option** - Opção individual.\n- **option-group** - Cabeçalho visual de um grupo de opções.\n- **select-all** - Alias legado para a opção de selecionar todos.\n- **empty-option** - Alias legado para a opção vazia da lista.\n- **option-checkbox** - Alias legado para o checkbox da opção.\n- **option-radio** - Alias legado para o radio da opção.\n- **hidden-select** - Select nativo invisível usado na integração com formulários.\n- **feedback** - Área de mensagem de validação.\n- **validation-loading** - Área do indicador de validação assíncrona.",
      "attributes": [
        {
          "name": "borderless",
          "description": "Remove a borda do input quando o componente não está em foco.",
          "values": []
        },
        {
          "name": "disabled",
          "description": "Desativa toda a interação do select.",
          "values": []
        },
        {
          "name": "density",
          "description": "Define a densidade visual compartilhada pelo campo e pela lista de opções.\nAceita `small`, `medium` ou `large`. Valores inválidos usam `medium`.\nA opção sintética de selecionar todos permanece com densidade `small`.",
          "values": [{ "name": "BrDensity" }]
        },
        {
          "name": "is-inline",
          "description": "Exibe label e campo na mesma linha.",
          "values": []
        },
        {
          "name": "inline",
          "description": "Exibe rótulo e controle em linha. Quando informada, tem precedência sobre `isInline`.",
          "values": []
        },
        {
          "name": "is-multiple",
          "description": "Habilita o modo de seleção múltipla.",
          "values": []
        },
        {
          "name": "multiple",
          "description": "Habilita seleção múltipla. Quando informada, tem precedência sobre `isMultiple`.",
          "values": []
        },
        {
          "name": "keep-open-on-select",
          "description": "Mantém a lista aberta depois de uma seleção.",
          "values": []
        },
        {
          "name": "visible-items",
          "description": "Define quantas linhas visuais ficam visíveis na janela da lista.\nCabeçalhos de grupo também ocupam uma linha quando existem.\nDeve ser um inteiro positivo; valores inválidos usam 6.",
          "values": []
        },
        {
          "name": "item-height",
          "description": "Informa a altura base de cada opção ou cabeçalho para o cálculo de virtual scroll.\nDeve ser um número finito positivo; valores inválidos usam 40.",
          "values": []
        },
        {
          "name": "input-width",
          "description": "Controla a largura do campo de entrada.",
          "values": []
        },
        {
          "name": "overscan",
          "description": "Define quantas opções extras são renderizadas antes e depois da área visível no virtual scroll.\nDeve ser um inteiro não negativo; valores inválidos usam 1.",
          "values": []
        },
        {
          "name": "hide-dividers",
          "description": "Oculta os divisores entre opções consecutivas, sem alterar a altura das linhas.",
          "values": []
        },
        {
          "name": "is-open",
          "description": "Controla o estado aberto/fechado da lista.",
          "values": []
        },
        {
          "name": "open",
          "description": "Controla o estado aberto. Quando informada, tem precedência sobre `isOpen`.",
          "values": []
        },
        {
          "name": "label",
          "description": "Texto exibido como rótulo do campo.",
          "values": []
        },
        {
          "name": "name",
          "description": "Nome do campo para integração com formulários.",
          "values": []
        },
        {
          "name": "value",
          "description": "Valor público do select baseado nas opções atualmente selecionadas.",
          "values": [{ "name": "string[]" }]
        },
        {
          "name": "placeholder",
          "description": "Texto exibido quando não há seleção.",
          "values": []
        },
        {
          "name": "required",
          "description": "Indica que o preenchimento do select é obrigatório.",
          "values": []
        },
        {
          "name": "select-all-label",
          "description": "Rótulo apresentado para a opção de selecionar todos no modo múltiplo.",
          "values": []
        },
        {
          "name": "filterable",
          "description": "Habilita a filtragem textual das opções por rótulo ou valor.",
          "values": []
        },
        {
          "name": "search-mode",
          "description": "Define se as opções são filtradas localmente ou fornecidas por uma busca remota.\nEm `remote`, o componente emite `brSelectSearch` e exibe as opções recebidas\nsem filtrá-las de novo pelo termo digitado; a aplicação deve buscar, validar e\naplicar a resposta com `setOptions()` ou re-renderizando os `br-select-option`.\nA seleção é preservada mesmo quando não aparece na resposta seguinte.",
          "values": [{ "name": "SelectSearchMode" }]
        },
        {
          "name": "loading",
          "description": "Indica que uma busca remota de opções está pendente.\nEnquanto ativo, a lista exibe o slot `loading` (padrão: \"Pesquisando…\") e novas\nopções não podem ser selecionadas; a aplicação continua responsável por\ndebounce, cancelamento, erros e autenticação.",
          "values": []
        },
        {
          "name": "show-search-icon",
          "description": "Exibe a lupa mesmo quando o select não é filtrável; selects com `filterable`\njá a exibem. A lupa é omitida quando o campo é estreito demais (menos de\n128px) para comportar lupa, valor e seta.",
          "values": []
        },
        {
          "name": "hide-search-icon",
          "description": "Oculta a lupa mesmo quando `filterable` está ativo, sem desabilitar a busca.\nTem precedência visual sobre `showSearchIcon` e não altera o comportamento padrão.",
          "values": []
        },
        {
          "name": "unselect-all-label",
          "description": "Rótulo apresentado quando todas as opções já estão selecionadas no modo múltiplo.",
          "values": []
        },
        {
          "name": "options",
          "description": "Fornece opções como array ou JSON, além das opções projetadas por slot.\nUse property binding para arrays em JavaScript e frameworks; no atributo\nHTML, informe uma string JSON válida. Na inicialização, opções no slot têm\nprecedência quando existem. Depois de uma alteração nesta prop ou de uma\nchamada a `setOptions()`, a coleção imperativa passa a ser a fonte de dados.\nNão use em código novo. Declare `br-select-option` no slot padrão ou, para\nrespostas dinâmicas/remotas, atualize a coleção com `setOptions()`.",
          "values": [
            { "name": "" },
            {
              "name": "{ group?: string; label: string; value: string; selected?: boolean }[]"
            },
            { "name": "SelectOptionData[]" }
          ]
        },
        {
          "name": "autocomplete",
          "description": "Controla o autocomplete do campo de busca interno. Aceita `on` ou `off`; valores inválidos são ignorados.",
          "values": [{ "name": "InputToggle" }]
        },
        {
          "name": "custom-id",
          "description": "Identificador público do controle.",
          "values": []
        },
        {
          "name": "min-selections",
          "description": "Quantidade mínima de opções selecionadas no modo múltiplo. Deve ser um inteiro não negativo; valores inválidos usam 0.",
          "values": []
        },
        {
          "name": "max-selections",
          "description": "Quantidade máxima de opções selecionadas no modo múltiplo. Deve ser um inteiro não negativo; valores inválidos usam 0.",
          "values": []
        },
        {
          "name": "validator",
          "description": "Validação síncrona ou assíncrona executada no método `validate()`.\nRecebe uma string no modo simples e um array de strings no modo múltiplo.",
          "values": [{ "name": "SelectValidator" }]
        }
      ],
      "references": []
    },
    {
      "name": "br-select-input",
      "description": "Campo de texto e acionamento interno do `br-select`.\n\nÉ gerenciado automaticamente pelo `br-select` para exibir o valor selecionado, receber termos de busca e abrir ou fechar a lista suspensa. Não é necessário utilizá-lo de forma avulsa.\n---\n\n\n### **Events:**\n - **brSelectInputFocus** - Evento emitido quando o campo interno recebe foco.\n- **brSelectInputValueChange** - Evento emitido quando o valor digitado no campo de busca muda.\n- **brSelectInputActionClick** - Evento emitido quando o usuário aciona o ícone de abertura/fechamento.\n- **brSelectInputClick** - Evento emitido quando o usuário clica no campo do select.\n\n### **Methods:**\n - **flipUp(): _Promise<void>_** - Atualiza o ícone para o estado visual de lista aberta.\n- **flipDown(): _Promise<void>_** - Atualiza o ícone para o estado visual de lista fechada.\n- **setFocus(): _Promise<void>_** - Reaplica o foco no input nativo encapsulado por `br-input`.\n\n### **CSS Parts:**\n - **container** - Contêiner visual do campo.\n- **input** - Campo input nativo.\n- **label** - Rótulo do campo.\n- **group** - Grupo visual do campo.\n- **icon** - Ícone do campo.\n- **action** - Botão de ação.\n- **action-button** - Botão interno da ação.\n- **clear** - Botão de limpar o texto digitado.",
      "attributes": [
        {
          "name": "borderless",
          "description": "Remove a borda do campo quando ele não está em foco.",
          "values": []
        },
        {
          "name": "autocomplete",
          "description": "Controla o preenchimento automático do input interno. Aceita `on` ou `off`; valores inválidos são ignorados.",
          "values": [{ "name": "InputToggle" }]
        },
        {
          "name": "disabled",
          "description": "Desativa toda a interação do campo de entrada.",
          "values": []
        },
        {
          "name": "density",
          "description": "Define a densidade visual do campo e do input interno.\nAceita `small`, `medium` ou `large`. Valores inválidos usam `medium`.",
          "values": [{ "name": "BrDensity" }]
        },
        {
          "name": "is-inline",
          "description": "Exibe label e campo na mesma linha.",
          "values": []
        },
        {
          "name": "input-width",
          "description": "Controla a largura visual do campo.",
          "values": []
        },
        {
          "name": "label",
          "description": "Texto exibido como rótulo do campo.",
          "values": []
        },
        {
          "name": "name",
          "description": "Nome do campo para integração com formulários.",
          "values": []
        },
        {
          "name": "placeholder",
          "description": "Texto exibido quando o campo não possui valor.",
          "values": []
        },
        {
          "name": "required",
          "description": "Indica que o valor do campo é obrigatório.",
          "values": []
        },
        {
          "name": "filterable",
          "description": "Habilita a edição do campo usada para filtrar as opções.",
          "values": []
        },
        {
          "name": "show-search-icon",
          "description": "Exibe a lupa mesmo quando o campo não é filtrável.\nQuando filterable é true, a lupa é exibida automaticamente.\nEm campos com menos de 128px, a lupa é omitida para preservar valor e seta.",
          "values": []
        },
        {
          "name": "clearable",
          "description": "Exibe o botão de limpar enquanto houver texto no campo editável.\nO `br-select` o ativa somente durante a busca, para limpar o termo digitado\nsem alterar a seleção.",
          "values": []
        },
        {
          "name": "value",
          "description": "Valor textual apresentado no input.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-select-list",
      "description": "Painel suspenso com lista virtualizada do `br-select`.\n\nÉ gerenciado internamente pelo `br-select` para exibir as opções com alta performance, mesmo em listas grandes. Não é necessário utilizá-lo de forma avulsa.\n---\n\n\n### **Methods:**\n - **open(): _Promise<void>_** - Abre a lista e agenda a medição das opções quando necessário.\n- **close(): _Promise<void>_** - Fecha a lista de opções.\n- **setOptions(options: _SelectOptionData[]_): _Promise<void>_** - Substitui todas as opções renderizadas pela lista.\n- **setOption(option: _SelectOptionData_): _Promise<void>_** - Adiciona ou atualiza uma única opção na coleção atual.\n- **setSearchTerm(term: _string_): _Promise<void>_** - Atualiza o termo de busca e reinicia a janela virtual no topo.\n- **setMultiple(isMultiple: _boolean_): _Promise<void>_** - Alterna a lista entre modo simples e múltiplo.\n- **getOptions(): _Promise<SelectOptionData[]>_** - Retorna uma cópia das opções atualmente controladas pela lista.\n- **scrollOptionToTop(index: _number_): _Promise<boolean>_** - Posiciona uma opção no topo da viewport virtual, respeitando o limite final da lista.\n- **scrollFirstSelectedOptionToTop(): _Promise<boolean>_** - Posiciona no topo a primeira opção selecionada na ordem visual da lista.\nA opção auxiliar de selecionar tudo não participa dessa escolha.\n- **focusOption(index: _number_): _Promise<boolean>_** - Garante visibilidade e foco para uma opção específica.\n- **revealOption(index: _number_): _Promise<boolean>_** - Torna o item ativo visível sem retirar o foco do campo.\n- **setOptionSelected(index: _number_, selected: _boolean_): _Promise<boolean>_** - Aciona a seleção programática de uma opção específica.\n\n### **Slots:**\n - **loading** - Indicador exibido enquanto resultados remotos são carregados. Padrão: spinner com o texto \"Pesquisando…\".\n\n### **CSS Parts:**\n - **list** - Contêiner visual da lista virtualizada.\n- **loading** - Área do indicador de carregamento.\n- **option-group** - Cabeçalho visual de um grupo de opções.",
      "attributes": [
        {
          "name": "density",
          "description": "Define a densidade visual da lista, das opções regulares e do indicador de carregamento.\nA opção sintética de selecionar todos permanece com densidade `small`.\nAceita `small`, `medium` ou `large`. Valores inválidos usam `medium`.",
          "values": [{ "name": "BrDensity" }]
        },
        {
          "name": "options",
          "description": "É um contrato de composição abastecido pelo `br-select`; não é a API de\nopções do componente principal. Cada opção deve conter `value` string e\npode conter `label` e `group` como strings opcionais; entradas inválidas\nsão ignoradas.",
          "values": [{ "name": "SelectOptionData[]" }]
        },
        {
          "name": "search-term",
          "description": "Termo usado para filtrar opções por rótulo ou valor.",
          "values": []
        },
        {
          "name": "search-mode",
          "description": "Define se `searchTerm` filtra as opções (`local`) ou se as opções já chegam\nfiltradas pelo servidor (`remote`). Nos dois modos, um termo sem resultados\nexibe a mensagem de lista vazia. Valores inválidos usam `local`.",
          "values": [{ "name": "SelectSearchMode" }]
        },
        {
          "name": "loading",
          "description": "Indica que os resultados remotos estão sendo carregados.",
          "values": []
        },
        {
          "name": "visible-items",
          "description": "Define quantas linhas visuais permanecem visíveis na viewport da lista.\nCabeçalhos de grupo também ocupam uma linha quando existem.\nDeve ser um inteiro positivo; valores inválidos usam 6.",
          "values": []
        },
        {
          "name": "item-height",
          "description": "Informa a altura base usada no cálculo de posicionamento das opções.\nDeve ser um número finito positivo; valores inválidos usam 56.",
          "values": []
        },
        {
          "name": "overscan",
          "description": "Define quantas opções extras são renderizadas fora da viewport quando o virtual scroll está ativo.\nDeve ser um inteiro não negativo; valores inválidos usam 0.",
          "values": []
        },
        {
          "name": "hide-dividers",
          "description": "Oculta os divisores entre opções consecutivas, sem alterar a altura das linhas.",
          "values": []
        },
        {
          "name": "select-all-label",
          "description": "Rótulo apresentado para a ação de selecionar todos no modo múltiplo.",
          "values": []
        },
        {
          "name": "unselect-all-label",
          "description": "Rótulo apresentado quando todas as opções já estão selecionadas no modo múltiplo.",
          "values": []
        },
        {
          "name": "active-option-index",
          "description": "Índice da opção atualmente ativa para navegação por teclado.\nDeve ser um inteiro maior ou igual a -1; valores inválidos usam -1.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-select-option",
      "description": "Representa uma opção dentro do `br-select`. Use no slot padrão do componente.\n\nDefina `value` para o valor de formulário e `label` para o texto exibido. Use `selected` para marcar a opção como selecionada inicialmente e `disabled` para desabilitá-la. Para agrupamento, utilize `group`.\n\n```html\n<br-select-option value=\"df\" label=\"Distrito Federal\"></br-select-option>\n```\n---\n\n\n### **Events:**\n - **brSelectOptionStateChange** - Evento emitido quando o estado da opção muda.\n- **brSelectOptionPropsChange** - Evento legado emitido quando as propriedades da opção são alteradas.\n\n### **Methods:**\n - **getItemHeight(): _Promise<number>_** - Retorna a altura efetiva da opção para cálculo de virtual scroll.\n- **setFocus(): _Promise<void>_** - Encaminha o foco para o elemento interativo interno da opção.\n- **setSelectedState(selected: _boolean_): _Promise<void>_** - Atualiza programaticamente o estado selecionado da opção.\n\n### **Slots:**\n - **default** - Conteúdo ou rótulo visual da opção.\n\n### **CSS Parts:**\n - **option** - Item visual da opção.\n- **checkbox** - Checkbox exibido no modo múltiplo.",
      "attributes": [
        {
          "name": "density",
          "description": "Define a densidade visual da opção e do item interno.\nAceita `small`, `medium` ou `large`. Valores inválidos usam `medium`.",
          "values": [{ "name": "BrDensity" }]
        },
        {
          "name": "disabled",
          "description": "Desativa a interação da opção.",
          "values": []
        },
        {
          "name": "active",
          "description": "Marca a opção como ativa para navegação por teclado.",
          "values": []
        },
        {
          "name": "label",
          "description": "Rótulo textual exibido para a opção.",
          "values": []
        },
        {
          "name": "group",
          "description": "Nome do grupo visual e semântico da opção dentro do `br-select`.\nString vazia é tratada como ausência de grupo.",
          "values": []
        },
        {
          "name": "indeterminate",
          "description": "Indica o estado intermediário da opção.",
          "values": []
        },
        {
          "name": "selected",
          "description": "Indica se a opção está selecionada.",
          "values": []
        },
        {
          "name": "value",
          "description": "Valor semântico associado à opção.",
          "values": []
        },
        {
          "name": "show-checkbox",
          "description": "Exibe o checkbox de seleção ao lado do conteúdo.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-sign-in",
      "description": "O `br-sign-in` padroniza o botão oficial de autenticação da conta gov.br.\n\nPode ser exibido no formato padrão (bloco com texto) ou no formato circular compacto com `shape=\"circle\"`. Use a propriedade `density` para ajustar a densidade visual.\n\n```html\n<br-sign-in label=\"Entrar com gov.br\"></br-sign-in>\n<br-sign-in shape=\"circle\" aria-label=\"Entrar com gov.br\"></br-sign-in>\n```\n\n### Quando usar\n\n- Ponto de acesso ou login único com a conta Gov.br em serviços públicos federais.\n\n### Quando evitar\n\n- Ações gerais de formulário (salvar, enviar, cancelar): use `br-button`.\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/signin?tab=designer).\n---\n\n\n### **Events:**\n - **brNavigate** - Evento cancelável emitido em `navigation-mode=\"event\"` para cliques primários sem modificadores em links `_self`.\nChame `event.preventDefault()` no listener para impedir a navegação nativa e entregar `event.detail.href` ao roteador da SPA.\n\n### **Slots:**\n - **default** - Slot para o texto do sign-in.\n- **icon** - Slot para ícone personalizado; em `shape=\"circle\"`, o padrão é um SVG local de usuário.\n- **image** - Slot para imagem ou ícone ao lado do texto.\n\n### **CSS Parts:**\n - **content** - Parte para a área de conteúdo/texto do sign-in, usada para estilização via ::part().\n- **image** - Parte para a área da imagem/ícone, usada para controle de tamanho via CSS e ::part().",
      "attributes": [
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        },
        {
          "name": "color-mode",
          "description": "Define se o sign-in usará um esquema de cores escuro, para fundos escuros.\nQuando omitido, ou com valor diferente de `dark`, usa o esquema claro.",
          "values": [{ "name": "dark" }]
        },
        {
          "name": "density",
          "description": "Define a densidade visual do componente.\n\n- `small`: Alta densidade (componente menor, mais compacto e com menos espaçamento).\n- `medium`: Densidade intermediária, padrão recomendado para a maioria dos casos.\n- `large`: Baixa densidade (componente maior, mais espaçamento e altura).\n\nValores inválidos usam `medium`.",
          "values": [{ "name": "BrDensity" }]
        },
        {
          "name": "disabled",
          "description": "Desabilita a interação com o componente.",
          "values": []
        },
        {
          "name": "emphasis",
          "description": "Define a ênfase do sign-in, alterando sua aparência para criar hierarquia visual.",
          "values": [{ "name": "SignInEmphasis" }]
        },
        {
          "name": "shape",
          "description": "Define o formato do sign-in.",
          "values": [{ "name": "SignInShape" }]
        },
        {
          "name": "href",
          "description": "URL para onde o usuário será redirecionado ao clicar. Use para login com provedores externos ou em sites tradicionais.",
          "values": []
        },
        {
          "name": "target",
          "description": "Define onde abrir o link quando href é fornecido.",
          "values": [{ "name": "BrLinkTarget" }]
        },
        {
          "name": "navigation-mode",
          "description": "Controla como o componente integra a navegação mantendo `href` real no elemento navegável.\n- `native` (padrão): preserva o comportamento do navegador, conforme HTML/W3C.\n- `event`: emite `brNavigate`; se o evento for cancelado, bloqueia a navegação nativa para a SPA assumir.\nCliques com modificadores, botão do meio ou `target` diferente de `_self` permanecem nativos.",
          "values": [{ "name": "BrNavigationMode" }]
        },
        {
          "name": "aria-label",
          "description": "Define o rótulo acessível usado por tecnologias assistivas.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-skip-link",
      "description": "O `br-skip-link` fornece atalhos acessíveis de teclado no topo da página para saltar blocos repetitivos de conteúdo.\n\nPosicione no início da página. Declare os atalhos usando elementos `br-skip-link-item` no slot padrão, apontando cada destino em `target`.\n\n```html\n<br-skip-link>\n  <br-skip-link-item target=\"#conteudo-principal\">Ir para o conteúdo</br-skip-link-item>\n  <br-skip-link-item target=\"#menu-navegacao\">Ir para o menu</br-skip-link-item>\n</br-skip-link>\n```\n\nO componente permanece oculto e se torna visível automaticamente assim que recebe o foco do teclado (Tab).\n\n### Quando usar\n\n- No topo de todas as páginas para cumprir as diretrizes de acessibilidade (WCAG 2.4.1).\n\n### Quando evitar\n\n- Links de navegação comuns no corpo do texto: use `br-link`.\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/skip-link?tab=designer).\n---\n\n\n### **Events:**\n - **brSkiplinkNavigation** - Evento emitido quando um item do skiplink é ativado.\nO evento contém informações sobre o item acionado e o elemento target.\n- **brSkipLinkNavigate** - Evento emitido quando um destino é ativado.\n- **brDidShow** - Evento emitido quando o skiplink se torna visível.\n- **brSkipLinkShow** - Evento emitido ao exibir o componente.\n- **brDidHide** - Evento emitido quando o skiplink se torna oculto.\n- **brSkipLinkHide** - Evento emitido ao ocultar o componente.\n\n### **Methods:**\n - **watchModeChanges()** - Observa mudanças nos estados que afetam o modo efetivo (simple/compound)\ne atualiza as contagens dos itens quando necessário.\n- **handleItemNavigation(event: _CustomEvent<{ itemId: string; target: string }>_)** - Listener para eventos de navegação dos itens filhos.\n- **handleFocusIn(event: _FocusEvent_)** - Listener para evento de foco no componente.\n- **handleFocusOut(event: _FocusEvent_)** - Listener para evento de perda de foco no componente.\n- **handleKeyDown(event: _KeyboardEvent_)** - Listener para a tecla Escape.\n- **hide(): _Promise<void>_** - Oculta o componente programaticamente.\n- **show(): _Promise<void>_** - Exibe o componente programaticamente.\n\n### **Slots:**\n - **default** - Slot para inserir os itens de navegação rápida (br-skip-link-item). A tag br-skiplink-item é aceita por compatibilidade.\n\n### **CSS Parts:**\n - **container** - Parte para o contêiner principal do componente skip-link, usada para estilização via ::part().",
      "attributes": [
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        },
        {
          "name": "open",
          "description": "Controla se o skip link está aberto.",
          "values": []
        },
        {
          "name": "variant",
          "description": "Define se o skip link apresenta um ou múltiplos itens visíveis.\n- 'simple': Exibe apenas um item por vez.\n- 'compound': Exibe uma lista com múltiplos itens.\nValores inválidos usam 'compound'.",
          "values": [{ "name": "SkipLinkVariant" }]
        },
        {
          "name": "position",
          "description": "Define a posição do skip link na tela.\n- 'top-left': Posicionado no canto superior esquerdo.\n- 'top-center': Posicionado no centro superior.\n- 'top-right': Posicionado no canto superior direito.\nValores inválidos usam 'top-left'.",
          "values": [{ "name": "SkipLinkPosition" }]
        },
        {
          "name": "z-index",
          "description": "Define o z-index do componente.\nControla a ordem de empilhamento do componente na página.\nDeve ser um inteiro entre 0 e Number.MAX_SAFE_INTEGER; valores inválidos usam 0.",
          "values": []
        },
        {
          "name": "show-item-count",
          "description": "Exibe a contagem de itens no formato (1/4), (2/4), etc.\nQuando `true`, cada item mostrará sua posição relativa ao total de itens.\nPor padrão, é `true` para o modo simple e `false` para o modo compound.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-skip-link-item",
      "description": "Representa um atalho de salto dentro do `br-skip-link`.\n\nAponte em `target` o seletor ou `id` do elemento de destino (ex.: `#conteudo`). Coloque o texto no slot padrão.\n\n```html\n<br-skip-link-item target=\"#conteudo\">Ir para o conteúdo principal</br-skip-link-item>\n```\n---\n\n\n### **Methods:**\n - **itemFocus(): _Promise<void>_** - Encaminha o foco para o item legado sem expor seu Shadow DOM ao pai.\n- **navigateToTarget(): _Promise<void>_** - Encaminha a navegação para o item legado sem expor seu Shadow DOM ao pai.\n\n### **Slots:**\n - **default** - Texto do link de navegação rápida.\n- **tag** - Conteúdo da indicação do atalho.",
      "attributes": [
        {
          "name": "target",
          "description": "ID ou seletor CSS de destino.",
          "values": []
        },
        {
          "name": "key-number",
          "description": "Número inteiro de 1 a 9 do atalho de teclado; valores inválidos são ignorados.",
          "values": []
        },
        {
          "name": "custom-id",
          "description": "Identificador encaminhado ao item legado.",
          "values": []
        },
        {
          "name": "hide-tag",
          "description": "Oculta a indicação visual do atalho.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-skiplink-item",
      "description": "@deprecated Use `br-skip-link-item`.\n\nItem legado de atalho do `br-skip-link`. Em código novo, utilize `br-skip-link-item`.\n\nDefina o destino em `target` e o texto do link no slot padrão.\n---\n\n\n### **Events:**\n - **brSkiplinkItemClick** - Evento emitido quando o item é clicado/ativado.\nO evento contém informações sobre o item e o target.\n- **brSkipLinkItemActivate** - Evento emitido quando o item é ativado.\n- **brSkiplinkItemFocus** - Evento emitido quando o item recebe foco.\n- **brSkipLinkItemFocus** - Evento emitido quando o item recebe foco.\n\n### **Methods:**\n - **handleClick(_event: _MouseEvent_)** - Listener para cliques no item.\n- **handleKeyDown(event: _KeyboardEvent_)** - Listener para teclas Enter, Space e atalho Alt+[keyNumber].\n- **handleFocus()** - Listener para foco no item.\n- **itemFocus(): _Promise<void>_** - Move o foco para este item.\n- **navigateToTarget(): _Promise<void>_** - Navega para o target definido.\nMove o foco para o elemento alvo e ajusta a rolagem da página se necessário.\n\n### **Slots:**\n - **default** - Slot para o texto do link de navegação rápida.\n- **tag** - Slot para personalizar a tag numérica do atalho de teclado, exibindo o valor de key-number por padrão.",
      "attributes": [
        {
          "name": "target",
          "description": "ID do elemento de destino ou seletor CSS.\nEste é o elemento para o qual o usuário será levado ao ativar este item.",
          "values": []
        },
        {
          "name": "key-number",
          "description": "Número da tecla para acesso rápido.\nPermite que o usuário ative este item pressionando Alt+[keyNumber].\nAceita valores de 1 a 9.\nEsta propriedade implementa uma alternativa ao accessKey nativa,\nfornecendo um atalho de teclado consistente e acessível.\nValores inválidos são ignorados.",
          "values": []
        },
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        },
        {
          "name": "hide-tag",
          "description": "Controla a visibilidade da tag numérica.\nQuando `true`, a tag numérica não será exibida, mesmo que `keyNumber` esteja definido.\nO atalho de teclado continua funcionando, apenas a indicação visual é ocultada.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-slider",
      "description": "O `br-slider` seleciona um valor ou uma faixa de valores numéricos em uma trilha graduada.\n\nUse `min`, `max`, `step` e `value` para definir os limites e o valor. Para selecionar um intervalo (faixa com duas alças), use `range` e `range-value`.\n\n```html\n<br-slider min=\"0\" max=\"100\" value=\"50\" label=\"Volume\"></br-slider>\n<br-slider min=\"0\" max=\"1000\" range range-value=\"[200, 800]\" label=\"Faixa de preço\"></br-slider>\n```\n\n### Quando usar\n\n- Ajuste gradual de quantidades contínuas (volume, brilho, zoom).\n- Filtros de intervalos numéricos ou de preços.\n\n### Quando evitar\n\n- Entrada numérica exata arbitrária: use `br-input` com `type=\"number\"`.\n- Poucas escolhas fixas discretas: use `br-radio` ou `br-select`.\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/slider?tab=designer).\n---\n\n\n### **Events:**\n - **brDidChangeValue** - Disparado após alteração do valor da alça inicial.\n- **brDidChangeValueEnd** - Disparado após alteração do valor da alça final (modo composto).\n- **brSliderValidationChange** - Emitido ao iniciar e concluir a validação customizada.\n\n### **Methods:**\n - **checkValidity(): _Promise<boolean>_** - Retorna se o slider atende às constraints configuradas.\n- **reportValidity(): _Promise<boolean>_** - Valida e solicita ao navegador a apresentação do erro atual.\n- **setCustomValidity(message: _string_): _Promise<void>_** - Define ou limpa uma mensagem de validade customizada.\n- **validate(): _Promise<boolean>_** - Executa o validator do slider e retorna se o valor atual é válido.\n- **getValidationState(): _Promise<FormValidationState>_** - Retorna um snapshot serializável da Constraint Validation API.\n\n### **Slots:**\n - **ref-start** - Conteúdo exibido como referência inicial abaixo da trilha.\n- **ref-end** - Conteúdo exibido como referência final abaixo da trilha.\n- **feedback** - Mensagem de validação, normalmente um `br-message`.\n- **thumb-icon** - Ícone customizado na alça de controle em modo simples.\n- **thumb-start-icon** - Ícone customizado na alça inicial em modo composto.\n- **thumb-end-icon** - Ícone customizado na alça final em modo composto.\n\n### **CSS Parts:**\n - **base** - Contêiner principal do slider.\n- **layout** - Contêiner de layout do slider.\n- **body** - Área que agrupa trilha e referências.\n- **track** - Área interativa da trilha.\n- **track-visual** - Trilha visual do slider.\n- **tick-labels** - Contêiner das etiquetas das marcações.\n- **tick-label** - Etiqueta de uma marcação intermediária.\n- **filled-track** - Trecho preenchido da trilha.\n- **value-label** - Etiqueta com o valor da alça.\n- **value-label-arrow** - Seta da etiqueta de valor.\n- **thumb** - Alça de controle do slider.\n- **thumb-start** - Alça inicial do slider.\n- **thumb-end** - Alça final do slider em modo composto.\n- **references** - Contêiner das referências inicial e final.\n- **reference-start** - Referência inicial.\n- **reference-end** - Referência final.\n- **reference-bound** - Valor fixo de limite renderizado por `show-bounds`.\n- **input-wrapper** - Contêiner do campo numérico.\n- **input** - Campo numérico sincronizado com o slider.\n- **feedback** - Contêiner da mensagem de validação.\n- **steps** - Contêiner das marcações de passos customizados.\n- **step** - Botão indicador de passo customizado individual.",
      "attributes": [
        {
          "name": "custom-id",
          "description": "Identificador único.\nCaso não seja fornecido, um ID gerado automaticamente será usado.",
          "values": []
        },
        {
          "name": "name",
          "description": "Nome do campo, utilizado em formulários nativos (`<form>`).",
          "values": []
        },
        {
          "name": "label",
          "description": "Texto descritivo associado ao slider para acessibilidade.",
          "values": []
        },
        {
          "name": "min",
          "description": "Valor mínimo aceito pelo slider. Valores inválidos usam `0`.",
          "values": []
        },
        {
          "name": "max",
          "description": "Valor máximo aceito pelo slider. Deve ser maior que `min`; valores inválidos usam `100` e relações inválidas usam `min + 100`.",
          "values": []
        },
        {
          "name": "step",
          "description": "Incremento aplicado a cada passo. Deve ser maior que `0`; valores inválidos usam `1`.",
          "values": []
        },
        {
          "name": "validator",
          "description": "Regra síncrona ou assíncrona aplicada ao número ou intervalo selecionado.\nNo modo `range`, recebe um objeto com `start` e `end`.",
          "values": [{ "name": "SliderValidator" }]
        },
        {
          "name": "value",
          "description": "Valor atual do slider (alça inicial no modo composto). Valores não finitos usam o limite mínimo;\nvalores fora do intervalo são limitados.",
          "values": []
        },
        {
          "name": "value-end",
          "description": "Valor da alça final no modo composto (`range`).\nQuando não fornecido em modo composto, assume o valor de `max`. Valores não finitos usam `max`,\nvalores fora do intervalo são limitados.",
          "values": []
        },
        {
          "name": "range-value",
          "description": "Valor estruturado das duas alças no modo `range`.\nDeve conter `start` e `end` finitos; valores inválidos mantêm o último valor efetivo.\nPasse o objeto por property binding.",
          "values": [{ "name": "SliderRangeValue" }]
        },
        {
          "name": "disabled",
          "description": "Desativa o slider, tornando-o não interativo.",
          "values": []
        },
        {
          "name": "vertical",
          "description": "Exibe o slider na orientação vertical.",
          "values": []
        },
        {
          "name": "orientation",
          "description": "Orientação padrão. Quando informada, tem precedência sobre `vertical`; valores inválidos usam `horizontal`.",
          "values": [{ "name": "horizontal" }, { "name": "vertical" }]
        },
        {
          "name": "range",
          "description": "Ativa o modo composto com duas alças para seleção de faixa.",
          "values": []
        },
        {
          "name": "show-label",
          "description": "Exibe etiqueta com o valor atual acima da alça (horizontal) ou à esquerda (vertical).\nIgnorado quando `show-input` está ativo.",
          "values": []
        },
        {
          "name": "show-input",
          "description": "Exibe um `br-input` numérico sincronizado com a alça.\nNo modo `range`, exibe um campo para o início e outro para o fim; na\norientação horizontal ficam nas extremidades esquerda e direita, e na\nvertical ficam acima e abaixo da trilha. Quando ativo, a etiqueta de valor\nnão é exibida.",
          "values": []
        },
        {
          "name": "show-ticks",
          "description": "Exibe gradações na trilha como pequenos espaços que indicam os steps disponíveis,\nforçando a alça de controle a saltar entre os valores predefinidos e\nimpossibilitando a seleção de valores aleatórios.",
          "values": []
        },
        {
          "name": "show-tick-labels",
          "description": "Exibe os valores das marcações derivadas de `min`, `max` e `step`.",
          "values": []
        },
        {
          "name": "show-bounds",
          "description": "Exibe os limites nas referências inicial e final: `min` no início e `max` no fim\n(limites fixos), tanto em modo simples quanto em modo composto (`range`). O valor\nselecionado por cada alça é exibido na etiqueta (`show-label`), não nas referências.\nQuando ativo, sobrescreve o conteúdo dos slots `ref-start` e `ref-end`.",
          "values": []
        },
        {
          "name": "density",
          "description": "Densidade visual do componente.\nAltera exclusivamente as dimensões da alça de controle (thumb).\nValores aceitos: 'small' (16px), 'medium' (20px - padrão), 'large' (24px).\n'high' e 'low' são aceitos como sinônimos de 'small' e 'large'.",
          "values": [{ "name": "SliderDensity" }]
        },
        {
          "name": "thumb-icon",
          "description": "Nome do ícone a ser exibido no interior da alça de controle (thumb).\nNo modo `range`, aplica-se a ambas as alças caso `thumbStartIcon` ou `thumbEndIcon` não sejam especificados.\nExemplo: 'fa-solid:arrows-left-right', 'fa-solid:circle'.",
          "values": []
        },
        {
          "name": "thumb-start-icon",
          "description": "Nome do ícone da alça inicial (no modo `range`, alça à esquerda/inferior).",
          "values": []
        },
        {
          "name": "thumb-end-icon",
          "description": "Nome do ícone da alça final (no modo `range`, alça à direita/superior).",
          "values": []
        },
        {
          "name": "gradient",
          "description": "Habilita gradiente de cores na trilha e sincroniza dinamicamente a cor da alça (thumb)\ne da etiqueta de valor (tooltip) com a cor correspondente à posição atual.\nPode ser um booleano (usa gradiente padrão verde -> amarelo -> vermelho)\nou uma string com cores/gradiente customizado (ex.: '#168821, #ffcd07, #e52207' ou 'linear-gradient(...)').",
          "values": []
        },
        {
          "name": "steps",
          "description": "Lista de passos customizados para o slider.\nCada passo pode definir `value`, `label` (texto exibido no tooltip e/ou abaixo da trilha)\ne `icon` (nome do ícone exibido abaixo da marcação do passo).\nAceita array de objetos `SliderStep[]`, array de strings `string[]`, ou string JSON.",
          "values": [{ "name": "SliderStep[]" }]
        }
      ],
      "references": []
    },
    {
      "name": "br-step",
      "description": "O `br-step` exibe o progresso visual de um fluxo dividido em etapas consecutivas.\n\nDeclare cada etapa com `br-step-item` no slot padrão. Controle a etapa ativa pela propriedade `current`. Suporta orientação horizontal e vertical via `direction`.\n\n```html\n<br-step current=\"2\">\n  <br-step-item step-number=\"1\" label=\"Identificação\"></br-step-item>\n  <br-step-item step-number=\"2\" label=\"Dados Pessoais\"></br-step-item>\n  <br-step-item step-number=\"3\" label=\"Confirmação\"></br-step-item>\n</br-step>\n```\n\n### Quando usar\n\n- Processos lineares com 3 ou mais etapas bem delimitadas.\n\n### Quando evitar\n\n- Formulários de múltiplas páginas onde o próprio componente gerencia as telas: use `br-wizard`.\n- Navegação plana entre abas da mesma tela: use `br-tab`.\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/step?tab=designer).\n---\n\n\n### **Events:**\n - **brStepChange** - Emite um evento quando o step ativo muda.\nO evento carrega o índice do novo step ativo (0-based).\n\n### **Methods:**\n - **activeStepChanged(newValue: _number_, oldValue: _number_)** - Observa mudanças na etapa ativa e sincroniza os itens filhos.\n- **initialStepChanged(newValue: _string | number_, oldValue: _string | number_)** - Observa mudanças no passo inicial e atualiza a etapa ativa.\n- **labelPositionChanged()** - Observa mudanças na posição do label e propaga aos itens.\n- **contentTypeChanged()** - Observa mudanças no tipo de conteúdo e propaga aos itens.\n- **modeChanged(_newValue: _StepMode_)** - Observa mudanças no modo e propaga aos itens.\n- **layoutChanged()** - Observa mudanças no layout e atualiza a linha do tempo dos itens.\n- **progressionTypeChanged()** - Observa mudanças no tipo de progressão e atualiza itens desabilitados.\n- **verticalContentPlacementChanged()** - Observa mudanças na posição do conteúdo vertical e propaga aos itens.\n- **handleClick(event: _MouseEvent_)** - listener para ouvir o evento de click no componente step\nAtravés desse listener o componente define qual será o proximo passo do step que terá o estado ativo\n- **ProceedToNextStep()** - @deprecated Use `next`. - \nMétodo disponibilizado via API do elemento que controla o componente Step, responsável por avançar para o próximo passo e atualizar o valor do estado activeStep\n- **next(): _Promise<void>_** - Avança para o próximo passo.\n- **BackToPreviousStep()** - @deprecated Use `previous`. - \nMétodo disponibilizado via API do elemento que controla o componente Step, responsável por retornar ao passo anterior e atualizar o valor do estado activeStep\n- **previous(): _Promise<void>_** - Retorna ao passo anterior.\n- **StepValidation(validationStatus: _StepValidationStatus_)** - @deprecated Use `setCurrentValidation`. - \nMétodo disponibilizado via API do elemento que integra um componente externo ao componente Step, permitindo sinalizar validações ou destacar a etapa com estado ativo.\n- **setCurrentValidation(validationStatus: _StepValidationStatus_): _Promise<void>_** - Define o estado de validação do passo ativo.\n- **GetActiveStep()** - \nMétodo disponibilizado via API do elemento que permite a um componente externo obter a etapa com o estado ativo do componente Step.\n\n### **Slots:**\n - **default** - Slot para os itens do step (br-step-item), aceitando apenas esse componente.\n\n### **CSS Parts:**\n - **container** - Parte para o contêiner principal envolvendo todos os step-items, usada para estilizar layout geral via ::part().",
      "attributes": [
        {
          "name": "layout",
          "description": "propriedade responsável por definir a orientação do componente Step. Valores inválidos usam `horizontal`.",
          "values": [{ "name": "BrOrientation" }]
        },
        {
          "name": "orientation",
          "description": "Orientação do componente. Quando informada, tem precedência sobre `layout`; valores inválidos usam `horizontal`.",
          "values": [{ "name": "BrOrientation" }]
        },
        {
          "name": "initial-step",
          "description": "\ndefine o passo que começará destacado. Valores inválidos usam 0.",
          "values": []
        },
        {
          "name": "initial-index",
          "description": "Índice inicial zero-based. Quando informado, tem precedência sobre `initialStep`; valores inválidos usam 0.",
          "values": []
        },
        {
          "name": "label-position",
          "description": "\nPropriedade que define a posição onde o texto de destaque, label, ficará localizado no stepItem. Valores inválidos usam `bottom`.",
          "values": [{ "name": "StepLabelPosition" }]
        },
        {
          "name": "content-type",
          "description": "\nPropriedade que define o tipo de conteúdo a ser exibido dentro do componente step e stepItem. Valores inválidos usam `default`.",
          "values": [{ "name": "StepContentType" }]
        },
        {
          "name": "mode",
          "description": "\nPropriedade que define o tipo de comportamento que o componente Step deverá seguir. Valores inválidos usam `step`.",
          "values": [{ "name": "StepMode" }]
        },
        {
          "name": "progression-type",
          "description": "\nPropriedade que define o tipo de progressão de etapas que o step vai executar. Valores inválidos usam `nonlinear`.",
          "values": [{ "name": "BrProgressionType" }]
        },
        {
          "name": "vertical-content-placement",
          "description": "Define a posição do conteúdo de cada etapa no layout vertical.\n- `between`: conteúdo abaixo do indicador/rótulo, entre as etapas.\n- `side`: conteúdo em coluna lateral à linha de indicadores.\nValores inválidos usam `between`.",
          "values": [{ "name": "StepVerticalContentPlacement" }]
        }
      ],
      "references": []
    },
    {
      "name": "br-step-item",
      "description": "Representa uma etapa individual dentro do `br-step`.\n\nDefina o número da etapa em `step-number` e o texto em `label`. Use `status` (`done`, `active`, `pending`) para indicar o estado da etapa.\n---\n\n\n### **Methods:**\n - **setStepItemPositionStatus(value: _StepItemPositionStatus_)** - \nMétodo disponibilizado via api do elemento que indica a posição do step item, ele serve para setar o state stepItemPositionStatus do componente\n- **handleShowTimeLine(value: _boolean_, layout: _StepItemLayout_)** - Método que define a orientação do stepItem e controla a exibição da linha do tempo após o componente.\n- **setLabelPosition(value: _StepItemLabelPosition_)** - \nMétodo disponibilizado via api do elemento que atribui o valor ao estado que define onde o label, o texto de destaque, irá ficar localizado\n- **setContentType(value: _StepItemContentType_)** - \nMétodo disponibilizado via api do elemento que atribui o valor que irá definir o tipo de conteúdo apresentado dentro do componente stepItem\n- **setMode(value: _StepItemMode_)** - \nMétodo disponibilizado via api do elemento que atribui o valor que irá definir o modo como o componente irá se comportar e exibir seu estilo.\n- **setItemRole(value: _StepItemRole_)** - Define o role ARIA do botão interno.\nChamado pelo componente pai quando o contexto semântico exige um role\ndiferente do padrão `option` (ex.: `tab` em contexto de tablist).\n- **setContent(value: _string_)** - \nMétodo disponibilizado via api do elemento que atribui o valor que irá ser exibido dentro do componente stepItem\n- **setVerticalContentPlacement(value: _StepItemVerticalContentPlacement_)** - Método que define a posição do conteúdo no layout vertical.\n\n### **Slots:**\n - **content-area** - Slot para conteúdo customizado dentro do botão do item do step.\n- **step-content** - Slot para conteúdo da etapa exibido no layout vertical (texto, formulário, etc.).\n\n### **CSS Parts:**\n - **label** - Parte para o contêiner do texto da etapa, usada para estilizar tipografia e cor via ::part().",
      "attributes": [
        {
          "name": "label",
          "description": "Propriedade que define o conteúdo do texto auxiliar de realce do item de Step.",
          "values": []
        },
        {
          "name": "highlight",
          "description": "Propriedade que define o tipo de ícone de destaque exibido pelo item Step, com quatro opções disponíveis: \"success\", \"info\", \"danger\" e \"warning\".",
          "values": [{ "name": "StepItemHighlight" }]
        },
        {
          "name": "active",
          "description": "Propriedade que define se o item Step está com estado ativo.",
          "values": []
        },
        {
          "name": "disabled",
          "description": "Propriedade que define se o item Step está com estado desativado.",
          "values": []
        },
        {
          "name": "aria-label",
          "description": "Rótulo acessível explicitamente definido para o botão interno do item.\nQuando preenchido, substitui o texto gerado automaticamente pelo componente\n(\"passo X ...\") em qualquer modo, seguindo o comportamento padrão do\natributo HTML `aria-label`.",
          "values": []
        },
        {
          "name": "controls-id",
          "description": "ID do elemento controlado por este item, atribuído como `aria-controls`\nno botão interno. Vincula semanticamente o controle ao painel ou região\nque ele gerencia — podendo ser usado em qualquer contexto que exija essa ligação",
          "values": []
        },
        {
          "name": "br-icon-name",
          "description": "Identificador legado do ícone exibido como conteúdo do step item quando `contentType` é `br-icon`.\nPrefira o slot `content-area` com um SVG ou elemento de ícone controlado pela aplicação.",
          "values": []
        },
        {
          "name": "br-icon-aria",
          "description": "Propriedade Define o nome do ícone o texto de acessibilidade apresentando quando o tipo de conteúdo for o br-icon",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-switch",
      "description": "O `br-switch` alterna instantaneamente entre os estados ligado e desligado.\n\nDefina o estado em `checked`. Opcionalmente configure os rótulos de estado em `label-on` e `label-off`.\n\n```html\n<br-switch label=\"Receber notificações por e-mail\" checked></br-switch>\n<br-switch label=\"Modo escuro\" label-on=\"Ligado\" label-off=\"Desligado\"></br-switch>\n```\n\nEm formulários HTML, o componente integra-se via `ElementInternals`, participando do submit nativo.\n\n### Quando usar\n\n- Ativar ou desativar uma funcionalidade com efeito imediato na tela ou configuração.\n\n### Quando evitar\n\n- Confirmação de termos em formulários (ex.: \"Li e concordo\"): use `br-checkbox`.\n- Escolha entre alternativas mutuamente exclusivas: use `br-radio`.\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/switch?tab=designer).\n---\n\n\n### **Events:**\n - **checkedChange** - Disparado depois que o valor do `checked` foi alterado.\n- **brSwitchValidationChange** - Emitido ao iniciar e concluir a validação customizada.\n\n### **Methods:**\n - **checkValidity(): _Promise<boolean>_** - Retorna `true` se o valor do switch for válido, caso contrário `false`.\nSe o switch for inválido, dispara um evento 'invalid'.\n- **reportValidity(): _Promise<boolean>_** - Retorna `true` se o valor do componente for válido, caso contrário `false`.\nSe for inválido, exibe a mensagem de erro padrão do navegador.\n- **setCustomValidity(message: _string_): _Promise<void>_** - Define uma mensagem de validação customizada para o switch.\nSe a mensagem for uma string vazia, o erro customizado é limpo.\n- **validate(): _Promise<boolean>_** - Executa o validator do switch e retorna se o valor atual é válido.\n- **getValidationState(): _Promise<FormValidationState>_** - Retorna um snapshot serializável da Constraint Validation API.\n- **toggleChecked()** - @deprecated Atualize a propriedade `checked` diretamente. - Inverte o valor da prop `checked`\n\n### **Slots:**\n - **default** - Slot para o rótulo do switch, com prioridade sobre a propriedade label.\n- **feedback** - Mensagem de validação, normalmente um `br-message`.\n\n### **CSS Parts:**\n - **container** - Contêiner visual do switch.\n- **input** - Elemento input nativo com role switch.\n- **label** - Rótulo do switch.\n- **data** - Elemento com textos de estado ligado/desligado.\n- **feedback** - Contêiner da mensagem de validação.",
      "attributes": [
        {
          "name": "disabled",
          "description": "Desativa o switch, tornando-o não interativo.",
          "values": []
        },
        {
          "name": "required",
          "description": "Se verdadeiro, o switch é obrigatório e deve ser ativado antes que o formulário possa ser enviado.",
          "values": []
        },
        {
          "name": "validator",
          "description": "Regra síncrona ou assíncrona aplicada ao estado booleano do switch.\nRetorne uma mensagem para invalidar ou `null` para aceitar o valor.",
          "values": [{ "name": "SwitchValidator" }]
        },
        {
          "name": "checked",
          "description": "Define o estado de seleção do checkbox.\nSe definido como verdadeiro, o checkbox estará marcado. Caso contrário, estará desmarcado.",
          "values": []
        },
        {
          "name": "custom-id",
          "description": "Identificador único; gerado automaticamente quando omitido.",
          "values": []
        },
        {
          "name": "label",
          "description": "Texto descritivo.\nCaso um slot seja utilizado para fornecer um texto alternativo, o valor desta propriedade será ignorado.",
          "values": []
        },
        {
          "name": "label-position",
          "description": "Posição do rótulo em relação ao switch. Valores inválidos usam `left`.",
          "values": [{ "name": "right" }, { "name": "left" }, { "name": "top" }]
        },
        {
          "name": "label-on",
          "description": "Texto exibido quando o switch está ativado.",
          "values": []
        },
        {
          "name": "label-off",
          "description": "Texto exibido quando o switch está desativado.",
          "values": []
        },
        {
          "name": "has-icon",
          "description": "Adiciona um ícone ao switch para indicar a mudança de estado.",
          "values": []
        },
        {
          "name": "show-icon",
          "description": "Exibe o ícone de estado. Quando informada, tem precedência sobre `hasIcon`.",
          "values": []
        },
        {
          "name": "name",
          "description": "Define o nome do switch, que é utilizado para agrupar switches em formulários e identificar o campo.\nO valor é obrigatório e deve ser fornecido para garantir o correto funcionamento em formulários.",
          "values": []
        },
        {
          "name": "value",
          "description": "Define o valor associado ao switch quando ele faz parte de um formulário nativo (`<form>`).\nEsse valor é enviado com o formulário quando o switch está selecionado.\n**Nota:** Esta propriedade não deve ser utilizada para determinar se o switch está selecionado; para verificar o estado de seleção, use a propriedade `checked`.",
          "values": []
        },
        {
          "name": "density",
          "description": "Ajusta a área de interação: `small` é compacto, `medium` é o padrão e `large` é mais espaçado.\nValores inválidos usam `medium`.",
          "values": [
            { "name": "large" },
            { "name": "medium" },
            { "name": "small" }
          ]
        }
      ],
      "references": []
    },
    {
      "name": "br-tab",
      "description": "O `br-tab` organiza diferentes visões ou painéis de conteúdo na mesma página através de abas navegáveis.\n\nDeclare os itens usando `br-tab-item` no slot padrão. O componente gera automaticamente os botões da barra de navegação e controla a exibição do painel correspondente.\n\n```html\n<br-tab>\n  <br-tab-item label=\"Dados Cadastrais\">\n    <p>Conteúdo da primeira aba.</p>\n  </br-tab-item>\n  <br-tab-item label=\"Documentos\">\n    <p>Conteúdo da segunda aba.</p>\n  </br-tab-item>\n</br-tab>\n```\n\n### Quando usar\n\n- Alternar entre conjuntos equivalentes de informação sem sair da página e sem ordem fixa de leitura.\n\n### Quando evitar\n\n- Processos com etapas sequenciais que dependem de preenchimento prévio: use `br-wizard` ou `br-step`.\n- Links para páginas ou rotas distintas: use `br-link` ou `br-header`.\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/tab?tab=designer).\n---\n\n\n### **Events:**\n - **brTabChange** - Evento disparado quando um tab é ativado.\n\n### **Methods:**\n - **activeTabChanged(newId: _string_)** - Observa mudanças no tab ativo para atualizar os estados\n- **colorModeChanged(_newValue: _string_)** - Observa mudanças no color mode para propagar aos filhos\n- **handleTabItemPropsChange()** - Escuta evento de mudança de propriedades dos tab-items filhos.\nEste listener garante que o componente pai seja re-renderizado quando\npropriedades mudam dinamicamente, sincronizando o painel ativo.\n- **setActiveTab(tabId: _string_): _Promise<void>_** - Ativa programaticamente uma aba a partir do seu identificador.\n- **getActiveTab(): _Promise<string | undefined>_** - Retorna o identificador da aba ativa atual.\n- **render(): __** - Renderiza o componente.\n\n### **Slots:**\n - **default** - Slot para inserir os itens das abas (br-tab-item)\n- **icon-{id}** - Ícone da aba cujo `br-tab-item` tem o `id` informado (ex.: `<i slot=\"icon-avisos\" class=\"fas fa-bell\" aria-hidden=\"true\"></i>`). Forma preferida para ícones por classe CSS, como Font Awesome: o elemento fica em light DOM e recebe os estilos globais da página. Tem precedência sobre a prop `icon` do item.\n\n### **CSS Parts:**\n - **container** - Contêiner principal que envolve toda a estrutura do componente (navegação e conteúdo). Expõe o elemento para customizações de fundo, bordas e espaçamentos globais.\n- **nav** - Área de navegação (`tablist`) onde os botões das abas estão localizados. Permite customizar o alinhamento, espaçamento e plano de fundo da barra de abas.\n- **button** - Botão individual de cada aba.\n- **indicator** - Indicador visual da aba ativa.\n- **content** - Área de conteúdo das abas.",
      "attributes": [
        {
          "name": "active-tab-id",
          "description": "ID do tab atualmente ativo",
          "values": []
        },
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        },
        {
          "name": "density",
          "description": "Define a densidade visual do componente.\n\n- `small`: Alta densidade (componente menor, mais compacto e com menos espaçamento).\n- `medium`: Densidade intermediária, padrão recomendado para a maioria dos casos.\n- `large`: Baixa densidade (componente maior, mais espaçamento e altura).\n\nValores inválidos usam `medium`.",
          "values": [{ "name": "TabDensity" }]
        },
        {
          "name": "color-mode",
          "description": "Define se o Tab usará um esquema de cores escuro. Valores inválidos são ignorados.",
          "values": [{ "name": "TabColorMode" }]
        },
        {
          "name": "label",
          "description": "Label de acessibilidade para a navegação das tabs",
          "values": []
        },
        {
          "name": "align-items-tab",
          "description": "Define o alinhamento horizontal dos itens da tab na barra de navegação.",
          "values": [{ "name": "TabAlignItems" }]
        },
        {
          "name": "alignment",
          "description": "Alinhamento horizontal. Quando informado, tem precedência sobre `alignItemsTab`; valores inválidos usam `start`.",
          "values": [{ "name": "TabAlignItems" }]
        },
        {
          "name": "scroll-disabled",
          "description": "Desabilita o scroll automático da área de conteúdo.\nPor padrão, o scroll vertical fica apenas na região de conteúdo.",
          "values": []
        },
        {
          "name": "scrollable",
          "description": "Controla o scroll interno. Quando informado, tem precedência sobre `scrollDisabled`.",
          "values": []
        },
        {
          "name": "height",
          "description": "Define a altura máxima da área de conteúdo, ativando o scroll interno quando o conteúdo ultrapassa essa altura.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-tab-item",
      "description": "Define uma aba e seu respectivo painel de conteúdo dentro do `br-tab`.\n\nDefina o título da aba em `label` ou no slot `label`, e insira o conteúdo do painel no slot padrão. Use `active` para iniciar a aba selecionada e `disabled` para desabilitá-la.\n---\n\n\n### **Events:**\n - **brTabItemPropsChange** - Evento disparado quando as propriedades do tab-item mudam.\nO componente pai (br-tab) escuta este evento para atualizar a navegação.\n\n### **Methods:**\n - **tabItemTitleChanged()** - Observa mudanças no título e notifica o pai\n- **iconChanged()** - Observa mudanças no ícone e notifica o pai\n- **counterChanged()** - Observa mudanças no contador e notifica o pai\n- **onlyIconChanged()** - Observa mudanças em onlyIcon e notifica o pai\n- **isActiveChanged()** - Observa mudanças no estado ativo (alterações via JS/DOM direto) e notifica o pai\n\n### **Slots:**\n - **default** - Slot para o conteúdo do item da aba.",
      "attributes": [
        {
          "name": "tab-item-id",
          "description": "Identificador único do item da tab.\nCaso não seja fornecido, um ID gerado automaticamente será usado.",
          "values": []
        },
        {
          "name": "tab-item-title",
          "description": "Define o título do item de tab que aparece no botão de navegação",
          "values": []
        },
        {
          "name": "label",
          "description": "Texto do item. Quando informado, tem precedência sobre `tabItemTitle`.",
          "values": []
        },
        {
          "name": "icon",
          "description": "Ícone da aba como identificador Iconify (ex.: `fa6-solid:bell`), renderizado em SVG pelo `br-icon`.\nPara ícones por classe CSS (ex.: Font Awesome), use o slot `icon-{id}` do `br-tab`, a forma\npreferida: `<i slot=\"icon-avisos\" class=\"fas fa-bell\" aria-hidden=\"true\"></i>`.\nO slot tem precedência sobre esta prop.\nUso descontinuado: classes CSS nesta prop (ex.: `fas fa-bell`) não são exibidas no Shadow DOM,\ngeram aviso e devem migrar para o slot `icon-{id}`. Identificadores Iconify continuam suportados.",
          "values": []
        },
        {
          "name": "only-icon",
          "description": "Define se exibe apenas o ícone, sem texto",
          "values": []
        },
        {
          "name": "icon-only",
          "description": "Exibe apenas o ícone. Quando informado, tem precedência sobre `onlyIcon`.",
          "values": []
        },
        {
          "name": "is-active",
          "description": "Define se o item de tab está ativo/visível",
          "values": []
        },
        {
          "name": "active",
          "description": "Estado ativo atual. Quando informado, tem precedência sobre `isActive`.",
          "values": []
        },
        {
          "name": "counter",
          "description": "Define contador do item de tab (exibido abaixo do botão)",
          "values": []
        },
        {
          "name": "color-mode",
          "description": "Define se o Tab usará um esquema de cores escuro",
          "values": [{ "name": "dark" }]
        }
      ],
      "references": []
    },
    {
      "name": "br-table",
      "description": "O `br-table` estrutura e exibe conjuntos de dados organizados em linhas e colunas.\n\nEstruture a tabela usando os subcomponentes `br-table-header`, `br-table-body`, `br-table-row` e `br-table-cell`. Para exibir um indicador de carregamento durante atualizações assíncronas, use a propriedade `loading`.\n\n```html\n<br-table>\n  <br-table-header slot=\"header\">\n    <br-table-row>\n      <br-table-header-cell>Nome</br-table-header-cell>\n      <br-table-header-cell>Cargo</br-table-header-cell>\n    </br-table-row>\n  </br-table-header>\n  <br-table-body slot=\"body\">\n    <br-table-row>\n      <br-table-cell>Maria Silva</br-table-cell>\n      <br-table-cell>Analista</br-table-cell>\n    </br-table-row>\n  </br-table-body>\n</br-table>\n```\n\n### Quando usar\n\n- Dados bidimensionais com cabeçalhos de coluna e necessidades de ordenação ou comparação.\n\n### Quando evitar\n\n- Listas simples de itens lineares: use `br-list`.\n- Agrupamento de informações de um único registro: use `br-card`.\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/table?tab=designer).\n---\n\n\n### **Methods:**\n \n\n\n\n\n- **startLoading(): _Promise<void>_** - Inicia o estado de carregamento da tabela.\n- **stopLoading(): _Promise<void>_** - Interrompe o estado de carregamento da tabela.\n- **render(): __** - Renderiza o host do componente.\n\n### **Slots:**\n - **loading** - Indicador exibido enquanto as linhas são atualizadas.\n\n### **CSS Parts:**\n - **container** - Wrapper principal da tabela.\n- **content** - Área de conteúdo que contém header e body.\n- **loading** - Área do indicador de carregamento.",
      "attributes": [
        {
          "name": "column-width",
          "description": "Largura global aplicada a todas as colunas.",
          "values": [{ "name": "ColumnWidth" }]
        },
        {
          "name": "density",
          "description": "Define a densidade visual do componente.\n\n- `small`: Alta densidade (componente menor, mais compacto e com menos espaçamento).\n- `medium`: Densidade intermediária, padrão recomendado para a maioria dos casos.\n- `large`: Baixa densidade (componente maior, mais espaçamento e altura).\n\nValores inválidos usam `medium`. Quando omitida, a densidade média é aplicada ao token.",
          "values": [{ "name": "TableDensity" }]
        },
        {
          "name": "divider-style",
          "description": "Define o estilo visual dos divisores.",
          "values": [{ "name": "TableDividerStyle" }]
        },
        {
          "name": "has-column-divider",
          "description": "Ativa divisores verticais entre colunas.",
          "values": []
        },
        {
          "name": "column-divider",
          "description": "Ativa divisores verticais. Quando informada, tem precedência sobre `hasColumnDivider`.",
          "values": []
        },
        {
          "name": "has-row-divider",
          "description": "Ativa divisores horizontais entre linhas.",
          "values": []
        },
        {
          "name": "row-divider",
          "description": "Ativa divisores horizontais. Quando informada, tem precedência sobre `hasRowDivider`.",
          "values": []
        },
        {
          "name": "horizontal-alignment",
          "description": "Define o alinhamento horizontal do conteúdo das células.",
          "values": [{ "name": "TableAlignment" }]
        },
        {
          "name": "vertical-alignment",
          "description": "Define o alinhamento vertical do conteúdo das células.",
          "values": [{ "name": "TableAlignment" }]
        },
        {
          "name": "overflow",
          "description": "Define o comportamento de overflow para as células.",
          "values": [{ "name": "TableOverflow" }]
        },
        {
          "name": "tooltip-state",
          "description": "Define o estado semântico do tooltip nas células da tabela.",
          "values": [{ "name": "TableTooltipState" }]
        },
        {
          "name": "tooltip-mode",
          "description": "Define o modo de resolução do tooltip nas células da tabela.",
          "values": [{ "name": "TableTooltipMode" }]
        },
        {
          "name": "loading",
          "description": "Indica que as linhas estão sendo atualizadas pelo consumidor.\nO componente mantém o conteúdo anterior, aplica `aria-busy=\"true\"` e\nexibe o slot `loading` sobre os dados; transporte, erro e substituição das\nlinhas ficam sob responsabilidade da aplicação.\nA prop pode ser alterada diretamente ou pelos métodos `startLoading()` e\n`stopLoading()`.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-table-body",
      "description": "Corpo de dados (`<tbody>`) da tabela. Use no slot `body` do `br-table`.\n\nAgrupa as linhas `br-table-row` contendo as células de dados `br-table-cell`.\n---\n\n\n### **Methods:**\n - **render(): __** - Renderiza o host do componente.\n\n### **CSS Parts:**\n - **body** - Wrapper do corpo da tabela.",
      "attributes": [],
      "references": []
    },
    {
      "name": "br-table-cell",
      "description": "Célula de dados (`<td>`) da tabela. Use dentro de um `br-table-row` no corpo da tabela.\n\nColoque o conteúdo do registro no slot padrão.\n---\n\n\n### **Events:**\n - **brAlignmentChange** - Evento customizado emitido quando o alinhamento é alterado, permitindo que a célula reaja dinamicamente a mudanças nos tokens de alinhamento.\n- **brOverflowChange** - Evento customizado emitido quando a configuração de overflow é alterada, permitindo que a célula reaja dinamicamente a mudanças no token de overflow.\n\n### **Methods:**\n \n\n- **render(): __** - Renderiza o host do componente.\n\n### **CSS Parts:**\n - **cell** - Wrapper da célula.\n- **content** - Área de conteúdo da célula.",
      "attributes": [
        {
          "name": "horizontal-alignment",
          "description": "Define o alinhamento horizontal do conteúdo dentro da célula.",
          "values": [{ "name": "TableAlignment" }]
        },
        {
          "name": "vertical-alignment",
          "description": "Define o alinhamento vertical do conteúdo dentro da célula.",
          "values": [{ "name": "TableAlignment" }]
        },
        {
          "name": "overflow",
          "description": "Define se o conteúdo dentro da célula deve ser truncado, permitindo a herança dessa configuração para as células filhas com base no valor definido.",
          "values": [{ "name": "TableOverflow" }]
        },
        {
          "name": "tooltip-state",
          "description": "Define o estado semântico do tooltip nesta célula.",
          "values": [{ "name": "TableTooltipState" }]
        },
        {
          "name": "tooltip-mode",
          "description": "Define o modo de resolução do tooltip nesta célula.",
          "values": [{ "name": "TableTooltipMode" }]
        }
      ],
      "references": []
    },
    {
      "name": "br-table-header",
      "description": "Cabeçalho da tabela (`br-table`). Use no slot `header`.\n\nAgrupa as linhas `br-table-row` com as células de cabeçalho `br-table-header-cell`.\n---\n\n\n### **Methods:**\n - **render(): __** - Renderiza o host do componente.\n\n### **CSS Parts:**\n - **header** - Wrapper do cabeçalho da tabela.",
      "attributes": [],
      "references": []
    },
    {
      "name": "br-table-header-cell",
      "description": "Célula de cabeçalho (`<th>`) da tabela. Use dentro de um `br-table-row` no cabeçalho.\n\nColoque o título da coluna no slot padrão. Para habilitar ordenação, ative `sortable`.\n---\n\n\n### **Events:**\n - **brColumnWidthChange** - Evento customizado emitido quando a largura da coluna é alterada, permitindo que as células reajam dinamicamente a mudanças no layout.\n- **brAlignmentChange** - Evento customizado emitido quando o alinhamento é alterado, permitindo que a célula de cabeçalho reaja dinamicamente a mudanças nos tokens de alinhamento.\n- **brOverflowChange** - Evento customizado emitido quando a configuração de overflow é alterada, permitindo que a célula de cabeçalho reaja dinamicamente a mudanças no token de overflow.\n\n### **Methods:**\n \n\n\n- **render(): __** - Renderiza o host do componente.\n\n### **CSS Parts:**\n - **cell** - Wrapper da célula de cabeçalho.\n- **content** - Área de conteúdo da célula de cabeçalho.",
      "attributes": [
        {
          "name": "column-width",
          "description": "Define a largura da coluna.\nAceita `fill`, `content`, larguras positivas em `px` ou frações positivas em `fr`.\nValores inválidos usam o fallback da tabela.",
          "values": [{ "name": "ColumnWidth" }]
        },
        {
          "name": "horizontal-alignment",
          "description": "Define o alinhamento horizontal do conteúdo dentro da célula de cabeçalho, permitindo a herança de alinhamento para as células filhas com base no valor definido.",
          "values": [{ "name": "TableAlignment" }]
        },
        {
          "name": "vertical-alignment",
          "description": "Define o alinhamento vertical do conteúdo dentro da célula de cabeçalho, permitindo a herança de alinhamento para as células filhas com base no valor definido.",
          "values": [{ "name": "TableAlignment" }]
        },
        {
          "name": "overflow",
          "description": "Define se o conteúdo dentro da célula de cabeçalho deve ser truncado, permitindo a herança dessa configuração para as células filhas com base no valor definido.",
          "values": [{ "name": "TableOverflow" }]
        },
        {
          "name": "tooltip-state",
          "description": "Define o estado semântico do tooltip nesta coluna/célula de cabeçalho.",
          "values": [{ "name": "TableTooltipState" }]
        },
        {
          "name": "tooltip-mode",
          "description": "Define o modo de resolução do tooltip nesta coluna/célula de cabeçalho.",
          "values": [{ "name": "TableTooltipMode" }]
        }
      ],
      "references": []
    },
    {
      "name": "br-table-row",
      "description": "Linha horizontal (`<tr>`) da tabela. Use dentro de `br-table-header` ou `br-table-body`.\n\nUse `selected` para indicar que a linha está selecionada.\n---\n\n\n### **Events:**\n - **brAlignmentChange** - Evento customizado emitido quando o alinhamento é alterado, permitindo que as células reajam dinamicamente a mudanças nos tokens de alinhamento.\n- **brOverflowChange** - Evento customizado emitido quando a configuração de overflow é alterada, permitindo que as células reajam dinamicamente a mudanças no token de overflow.\n\n### **Methods:**\n \n\n- **render(): __** - Renderiza o host do componente.\n\n### **CSS Parts:**\n - **row** - Wrapper da linha da tabela.",
      "attributes": [
        {
          "name": "horizontal-alignment",
          "description": "Define o alinhamento horizontal das células dentro da linha, permitindo a herança de alinhamento para as células filhas com base no valor definido.",
          "values": [{ "name": "TableAlignment" }]
        },
        {
          "name": "vertical-alignment",
          "description": "Define o alinhamento vertical das células dentro da linha, permitindo a herança de alinhamento para as células filhas com base no valor definido.",
          "values": [{ "name": "TableAlignment" }]
        },
        {
          "name": "overflow",
          "description": "Define se o conteúdo dentro das células da linha deve ser truncado, permitindo a herança dessa configuração para as células filhas com base no valor definido.",
          "values": [{ "name": "TableOverflow" }]
        },
        {
          "name": "tooltip-state",
          "description": "Define o estado semântico do tooltip nas células desta linha.",
          "values": [{ "name": "TableTooltipState" }]
        },
        {
          "name": "tooltip-mode",
          "description": "Define o modo de resolução do tooltip nas células desta linha.",
          "values": [{ "name": "TableTooltipMode" }]
        }
      ],
      "references": []
    },
    {
      "name": "br-tag",
      "description": "O `br-tag` categoriza, rotula ou destaca informações curtas e metadados.\n\nSuporta modo estático informativo, modo interativo clicável com `action`, modo com botão de fechar (`closable`) e modo selecionável com `selectable`.\n\n```html\n<br-tag>Pendente</br-tag>\n<br-tag status=\"success\">Concluído</br-tag>\n<br-tag closable>Filtro: Brasília</br-tag>\n```\n\n### Quando usar\n\n- Rótulos de estado, tags de categorias ou palavras-chave.\n- Filtros aplicados que podem ser removidos individualmente.\n\n### Quando evitar\n\n- Ações primárias ou envio de formulário: use `br-button`.\n- Contagem numérica pura: use `br-avatar` ou texto de badge.\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/tag?tab=designer).\n---\n\n\n### **Events:**\n - **radioSelected** - Evento emitido quando a tag é selecionada.\n- **brTagValidationChange** - Emitido ao iniciar e concluir a validação customizada.\n\n### **Methods:**\n - **checkValidity(): _Promise<boolean>_** - Retorna se a tag selecionável atende às constraints configuradas.\n- **reportValidity(): _Promise<boolean>_** - Valida e solicita ao navegador a apresentação do erro atual.\n- **setCustomValidity(message: _string_): _Promise<void>_** - Define ou limpa uma mensagem de validade customizada.\n- **validate(): _Promise<boolean>_** - Executa o validator da tag e retorna se o valor atual é válido.\n- **getValidationState(): _Promise<FormValidationState>_** - Retorna um snapshot serializável da Constraint Validation API.\n\n### **Slots:**\n - **default** - Slot para inserir o conteúdo da tag, como rótulo ou ícone.\n- **label** - Rótulo customizado da tag. Quando utilizado, a prop `label` é ignorada.\n- **icon** - Ícone customizado da tag. Quando utilizado, a prop `icon` é ignorada.\n- **close-button** - Botão de fechar customizado. Quando utilizado, o botão padrão é substituído.\n- **feedback** - Mensagem de validação, normalmente um `br-message`.\n\n### **CSS Parts:**\n - **tag** - Elemento principal da tag.\n- **input** - Elemento input da tag de seleção.\n- **label** - Rótulo da tag de seleção.\n- **feedback** - Contêiner da mensagem de validação.",
      "attributes": [
        {
          "name": "label",
          "description": "A propriedade 'label' é uma string que representa o texto a ser exibido no componente.\nEla é refletida no DOM, permitindo que alterações no valor sejam refletidas no elemento HTML correspondente.",
          "values": []
        },
        {
          "name": "icon-name",
          "description": "Identificador legado do ícone exibido ao lado do texto.",
          "values": []
        },
        {
          "name": "name",
          "description": "A propriedade 'name' é uma string que representa o nome do grupo da tag para seleção.\nEla é refletida no DOM, permitindo que alterações no valor sejam refletidas no elemento HTML correspondente.",
          "values": []
        },
        {
          "name": "value",
          "description": "Valor submetido quando a tag selecionável está ativa.",
          "values": []
        },
        {
          "name": "validator",
          "description": "Regra síncrona ou assíncrona aplicada ao estado, valor e rótulo da tag.",
          "values": [{ "name": "TagValidator" }]
        },
        {
          "name": "multiple",
          "description": "A tag permite seleção múltipla.",
          "values": []
        },
        {
          "name": "selected",
          "description": "A tag está selecionada.",
          "values": []
        },
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        },
        {
          "name": "bg-color",
          "description": "A propriedade 'color' permite definir a cor do componente.\nAceita valores como 'red', 'blue', entre outros, e é refletida no DOM.",
          "values": []
        },
        {
          "name": "density",
          "description": "Define a densidade visual do componente.\n\n- `small`: Alta densidade (componente menor, mais compacto e com menos espaçamento).\n- `medium`: Densidade intermediária, padrão recomendado para a maioria dos casos.\n- `large`: Baixa densidade (componente maior, mais espaçamento e altura).\n\nValores inválidos usam `medium`.",
          "values": [{ "name": "BrDensity" }]
        },
        {
          "name": "shape",
          "description": "A propriedade 'shape' define o formato do componente.",
          "values": [{ "name": "TagShape" }]
        },
        {
          "name": "size",
          "description": "Define o tamanho personalizado do componente quando o formato for circular (`circle`), arredondado (`rounded`) ou status.\nAceita qualquer valor de tamanho CSS válido (ex: `16px`, `1.5rem`).",
          "values": []
        },
        {
          "name": "variant",
          "description": "Variante funcional padrão. Aceita `default`, `status`, `action` ou `selectable`.\nValores inválidos são ignorados; nesse caso, os aliases booleanos legados\ncontinuam disponíveis para manter a compatibilidade.",
          "values": [{ "name": "TagVariant" }]
        },
        {
          "name": "status",
          "description": "Transforma a tag em um indicador de status, com aparência circular.\nÉ flexível podendo ser utilizado com label ou apenas a superfície circular (informação é transmitida por meio de cores).",
          "values": []
        },
        {
          "name": "interaction",
          "description": "Interação deve ser habilitada.",
          "values": []
        },
        {
          "name": "interaction-select",
          "description": "Interação de seleção deve ser habilitada.",
          "values": []
        },
        {
          "name": "disabled",
          "description": "Desabilita a interação com o componente.",
          "values": []
        },
        {
          "name": "required",
          "description": "Exige uma seleção no grupo quando `interaction-select` está ativo.",
          "values": []
        },
        {
          "name": "min-selections",
          "description": "Quantidade mínima de tags selecionadas no mesmo grupo. Deve ser um inteiro não negativo; valores inválidos usam 0.",
          "values": []
        },
        {
          "name": "max-selections",
          "description": "Quantidade máxima de tags selecionadas no mesmo grupo. Zero significa sem limite. Deve ser um inteiro não negativo; valores inválidos usam 0.",
          "values": []
        },
        {
          "name": "aria-label",
          "description": "Define o rótulo acessível usado por tecnologias assistivas.",
          "values": []
        },
        {
          "name": "aria-describedby",
          "description": "ID do elemento que fornece descrição adicional da tag.\nReferencia um elemento na página que contém informações complementares sobre a tag.\nA descrição é lida após o conteúdo principal, fornecendo contexto extra aos usuários de leitores de tela.\nExemplo: aria-describedby=\"help-status\" onde existe <div id=\"help-status\">Aguardando aprovação</div>",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-textarea",
      "description": "O `br-textarea` captura textos longos em múltiplas linhas em formulários.\n\nConfigure `label`, `placeholder`, `maxlength` e `state` para validação. Use `show-counter` para exibir o contador de caracteres restantes.\n\n```html\n<br-textarea label=\"Observações\" placeholder=\"Digite sua mensagem\" maxlength=\"500\" show-counter></br-textarea>\n```\n\nEm formulários HTML, o componente integra-se via `ElementInternals`, participando da validação nativa com `required`.\n\n### Quando usar\n\n- Mensagens, comentários, justificativas, descrições ou textos extensos.\n\n### Quando evitar\n\n- Dados curtos de linha única (nome, CPF, e-mail): use `br-input`.\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/textarea?tab=designer).\n---\n\n\n### **Events:**\n - **valueChange** - Valor atualizado do textarea\n- **brTextareaValidationChange** - Informa o início e o resultado do validator; o `detail` contém\n`validating`, `valid` e `message`.\n\n### **Methods:**\n - **checkValidity(): _Promise<boolean>_** - Retorna `true` se o valor do textarea for válido, caso contrário `false`.\nSe o textarea for inválido, dispara um evento 'invalid'.\n- **reportValidity(): _Promise<boolean>_** - Retorna `true` se o valor do textarea for válido, caso contrário `false`.\nSe for inválido, exibe a mensagem de erro padrão do navegador.\n- **setCustomValidity(message: _string_): _Promise<void>_** - Define uma mensagem de validação customizada para o textarea.\nSe a mensagem for uma string vazia, o erro customizado é limpo.\n- **validate(): _Promise<boolean>_** - Executa o validator customizado e retorna se o textarea está válido.\n- **getValidationState(): _Promise<FormValidationState>_** - Retorna um snapshot serializável da Constraint Validation API.\n- **select(): _Promise<void>_** - Seleciona todo o texto do controle nativo, conforme HTMLTextAreaElement.select().\n- **setRangeText(replacement: _string_, start: _number_, end: _number_, selectionMode: _SelectionMode_): _Promise<void>_** - Substitui um intervalo de texto usando a API nativa do textarea.\n- **setSelectionRange(start: _number_, end: _number_, direction: _'forward' | 'backward' | 'none'_): _Promise<void>_** - Define o intervalo selecionado no controle nativo.\n- **setValue(newValue: _string_)** - Define um novo valor para o textarea.\n\n### **Slots:**\n - **default** - Slot para texto adicional ou instruções a serem exibidos junto ao textarea.\n- **feedback** - Mensagem de validação, normalmente um `br-message`.\n- **validation-loading** - Indicador exibido durante validação assíncrona.\n\n### **CSS Parts:**\n - **container** - Contêiner visual principal.\n- **label** - Rótulo do textarea.\n- **textarea** - Elemento textarea nativo.\n- **counter** - Contêiner do contador.\n- **counter-text** - Texto do contador.\n- **helper** - Contêiner do conteúdo auxiliar do slot default.\n- **feedback** - Contêiner da mensagem de validação.",
      "attributes": [
        {
          "name": "value",
          "description": "Valor exibido no textarea.\nPode ser alterado pelo usuário se a propriedade `readonly` não estiver ativa.",
          "values": []
        },
        {
          "name": "label",
          "description": "Texto exibido como rótulo do input.",
          "values": []
        },
        {
          "name": "placeholder",
          "description": "Texto exibido dentro do input quando está vazio, fornecendo uma dica ou sugestão ao usuário.",
          "values": []
        },
        {
          "name": "aria-label",
          "description": "Texto alternativo para acessibilidade quando não há label visível.\nFornece um rótulo para tecnologias assistivas sem exibir visualmente.",
          "values": []
        },
        {
          "name": "custom-id",
          "description": "Identificador único.\nCaso não seja fornecido, um ID gerado automaticamente será usado.",
          "values": []
        },
        {
          "name": "name",
          "description": "Nome do campo para identificação no formulário.\nNecessário para participação correta no envio de formulários e integração com frameworks.",
          "values": []
        },
        {
          "name": "disabled",
          "description": "Indica se o textarea está desabilitado. Quando verdadeiro, o usuário não pode interagir com o campo.",
          "values": []
        },
        {
          "name": "required",
          "description": "Se verdadeiro, o input é obrigatório e deve ser preenchido antes que o formulário possa ser enviado.",
          "values": []
        },
        {
          "name": "readonly",
          "description": "Impede edição sem remover o campo do envio do formulário.",
          "values": []
        },
        {
          "name": "minlength",
          "description": "Número mínimo de caracteres necessário para o valor ser válido. Deve ser um inteiro não negativo; valores inválidos usam 0.",
          "values": []
        },
        {
          "name": "maxlength",
          "description": "Número máximo de caracteres permitidos no textarea. Se definido como 0, não há limite.\nDeve ser um inteiro não negativo; valores inválidos usam 0.",
          "values": []
        },
        {
          "name": "show-counter",
          "description": "Mostra o contador com a quantidade máxima de caracteres.",
          "values": []
        },
        {
          "name": "state",
          "description": "Define o estado visual do componente, podendo ser 'danger', 'success' ou 'warning'. Valores inválidos não aplicam estado.",
          "values": [
            { "name": "danger" },
            { "name": "success" },
            { "name": "warning" }
          ]
        },
        {
          "name": "feedback-state",
          "description": "Estado de feedback. Quando informado, tem precedência sobre `state`; valores inválidos não aplicam estado.",
          "values": [
            { "name": "danger" },
            { "name": "success" },
            { "name": "warning" }
          ]
        },
        {
          "name": "validator",
          "description": "Regra síncrona ou assíncrona executada no `change` ou por `validate()`.\nPode consultar um serviço remoto; o componente controla apenas loading,\nvalidade e a precedência do resultado mais recente.",
          "values": [{ "name": "InputValidator" }]
        },
        {
          "name": "density",
          "description": "Ajusta a densidade do componente, podendo ser 'small', 'medium' ou 'large'.\nValores inválidos usam `medium`.",
          "values": [
            { "name": "small" },
            { "name": "medium" },
            { "name": "large" }
          ]
        },
        {
          "name": "is-inline",
          "description": "Se verdadeiro, o rótulo e o input estarão na mesma linha (layout inline).",
          "values": []
        },
        {
          "name": "inline",
          "description": "Exibe rótulo e controle em linha. Quando informada, tem precedência sobre `isInline`.",
          "values": []
        },
        {
          "name": "rows",
          "description": "Número de linhas visíveis no textarea.\nDefine a altura do componente em relação ao número de linhas de texto exibidas.\nDeve ser um inteiro positivo; valores inválidos são ignorados.",
          "values": []
        },
        {
          "name": "cols",
          "description": "Número de colunas (caracteres) visíveis no textarea.\nDefine a largura do componente em relação ao número de caracteres por linha.\nDeve ser um inteiro positivo; valores inválidos são ignorados.",
          "values": []
        },
        {
          "name": "auto-grow",
          "description": "Ajusta automaticamente a altura ao conteúdo sem exibir rolagem vertical.\nQuando ativo, o componente controla a dimensão vertical; `resize=\"vertical\"`\ne `resize=\"both\"` passam a se comportar como `none`, enquanto\n`resize=\"horizontal\"` continua disponível.",
          "values": []
        },
        {
          "name": "resize",
          "description": "Define os eixos que a pessoa usuária pode redimensionar manualmente.\nQuando omitida, preserva o comportamento nativo atual do navegador.\nValores inválidos são ignorados.",
          "values": [{ "name": "TextareaResize" }]
        },
        {
          "name": "wrap",
          "description": "Encaminha a política nativa de quebra de linha ao `<textarea>` interno.\nQuando omitida, o navegador usa o comportamento nativo `soft`.\nValores inválidos são ignorados.",
          "values": [{ "name": "TextareaWrap" }]
        }
      ],
      "references": []
    },
    {
      "name": "br-tooltip",
      "description": "O `br-tooltip` exibe uma dica rápida e contextual quando o usuário foca ou passa o mouse sobre um elemento.\n\nColoque o texto da dica em `text` ou no slot padrão, e vincule-o ao elemento acionador através de `target` ou colocando o acionador no slot `trigger`.\n\n```html\n<br-button id=\"btn-ajuda\" shape=\"circle\" aria-label=\"Ajuda\">?</br-button>\n<br-tooltip target=\"#btn-ajuda\" text=\"Clique para obter informações\"></br-tooltip>\n```\n\n### Quando usar\n\n- Esclarecer o significado de botões que usam apenas ícones ou rótulos abreviados.\n\n### Quando evitar\n\n- Informações essenciais que todos os usuários precisam ler imediatamente: exiba como texto visível na página.\n- Conteúdos longos com links clicáveis: use `br-message` ou diálogo.\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/tooltip?tab=designer).\n---\n\n\n### **Events:**\n - **brDidOpen** - Emitido quando o tooltip abre.\n- **brDidClose** - Emitido quando o tooltip fecha.\n\n### **Methods:**\n - **handleVisibilityChange(visible: _boolean_): __** - Watcher para monitorar alterações na propriedade `isVisible`.\n- **handleMatchTriggerWidthChange()** - Recalcula a superfície visível quando a política de largura muda.\n- **handleFocusIn()** - Exibe o tooltip quando o acionador recebe foco.\n- **handleFocusOut()** - Oculta o tooltip quando o acionador perde foco.\n- **handleKeyDown(event: _KeyboardEvent_)** - Fecha com Escape enquanto o tooltip estiver visível.\n- **setTriggerElement(element: _HTMLElement | null_)** - Define um trigger externo para o tooltip.\n- **showTooltip()** - Exibe o tooltip programaticamente.\n- **hideTooltip()** - Oculta o tooltip programaticamente.\n- **show()** - Exibe o tooltip programaticamente (alias para `showTooltip`).\n- **hide()** - Oculta o tooltip programaticamente (alias para `hideTooltip`).\n- **render(): __** - Renderiza o componente.\nEste método é responsável por gerar o conteúdo HTML do componente.\nEle utiliza a função `h` do Stencil para criar elementos JSX.\n\n### **Slots:**\n - **trigger** - Slot para o elemento que aciona a exibição do tooltip.\n- **content** - Slot para o conteúdo exibido no tooltip.\n\n### **CSS Parts:**\n - **container** - Wrapper principal do tooltip.\n- **trigger** - Área do acionador do tooltip.\n- **content** - Área de conteúdo do tooltip.\n- **arrow** - Seta indicativa do tooltip.",
      "attributes": [
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        },
        {
          "name": "aria-label",
          "description": "Nome acessível do popover. Quando omitido, usa o rótulo derivado do estado visual.",
          "values": []
        },
        {
          "name": "position",
          "description": "Posição do tooltip em relação ao acionador. Valores inválidos usam `top`.",
          "values": [{ "name": "TooltipPosition" }]
        },
        {
          "name": "type",
          "description": "Tipo do tooltip: 'standard' (simples) ou 'popover' (mais rico, com fechamento por interação). Valores inválidos usam `standard`.",
          "values": [{ "name": "TooltipType" }]
        },
        {
          "name": "interaction",
          "description": "Modo de interação para exibição do tooltip: 'hover' ou 'click'. Valores inválidos usam `hover`.",
          "values": [{ "name": "hover" }, { "name": "click" }]
        },
        {
          "name": "density",
          "description": "Define a densidade visual do componente.\n\n- `small`: Alta densidade (componente menor, mais compacto e com menos espaçamento).\n- `medium`: Densidade intermediária, padrão recomendado para a maioria dos casos.\n- `large`: Baixa densidade (componente maior, mais espaçamento e altura).\n\nValores inválidos usam `medium`.",
          "values": [{ "name": "TooltipDensity" }]
        },
        {
          "name": "state",
          "description": "Estado visual do tooltip: 'info', 'warning', 'error', 'danger' ou 'success'. Valores inválidos usam `info`.",
          "values": [{ "name": "TooltipState" }]
        },
        {
          "name": "is-auto-visible",
          "description": "Exibe automaticamente sem interação quando true; caso contrário, depende do acionador.",
          "values": []
        },
        {
          "name": "match-trigger-width",
          "description": "Faz o conteúdo acompanhar a largura do acionador enquanto estiver visível.\nO valor padrão `false` preserva a largura determinada pelo conteúdo.",
          "values": []
        },
        {
          "name": "show-delay",
          "description": "Atraso em milissegundos antes de exibir. Valores negativos usam `0`.",
          "values": []
        },
        {
          "name": "hide-delay",
          "description": "Atraso em milissegundos antes de ocultar. Valores negativos usam `0`.",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-upload",
      "description": "O `br-upload` gerencia a seleção e envio de arquivos em formulários, com suporte a arrastar e soltar (drag and drop).\n\nDefina os tipos aceitos em `accept` e permita múltiplos arquivos com `multiple`. Use a lista de arquivos para exibir o progresso e o botão de exclusão.\n\n```html\n<br-upload label=\"Enviar documento\" accept=\".pdf,.png,.jpg\" multiple></br-upload>\n```\n\nEm formulários HTML, o componente integra-se via `ElementInternals`, enviando a lista de arquivos no submit nativo.\n\n### Quando usar\n\n- Anexar comprovantes, fotos ou documentos em formulários.\n\n### Quando evitar\n\n- Campo de texto ou URL de arquivo remoto: use `br-input`.\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/upload?tab=designer).\n---\n\n\n### **Events:**\n - **selectedFilesChange** - Emitido quando a lista de arquivos selecionados muda.\n- **brRemove** - Evento emitido quando um arquivo da lista `uploadFiles` (externos) é removido pelo usuário.\nO objeto emitido contém os dados do arquivo removido.\n- **brUploadRemove** - Evento emitido quando um arquivo existente é removido.\n- **brUploadCancel** - Emitido quando o usuário fecha a caixa de seleção de arquivos sem escolher nada.\n- **brUploadValidationChange** - Emitido ao iniciar e concluir a validação customizada.\nO `detail` contém `validating`, `valid` e `message`.\n- **brUploadStart** - Emitido antes de o `uploadHandler` processar um arquivo.\n- **brUploadProgress** - Emitido quando o `uploadHandler` informa o progresso de um arquivo.\n- **brUploadSuccess** - Emitido quando o `uploadHandler` conclui um arquivo.\n- **brUploadError** - Emitido quando o `uploadHandler` falha ao enviar um arquivo.\n\n### **Methods:**\n - **checkValidity(): _Promise<boolean>_** - Retorna `true` se o valor do componente for válido, caso contrário `false`.\nSe o componente for inválido, dispara um evento 'invalid'.\n- **reportValidity(): _Promise<boolean>_** - Retorna `true` se o valor do componente for válido, caso contrário `false`.\nSe for inválido, exibe a mensagem de erro padrão do navegador.\n- **setCustomValidity(message: _string_): _Promise<void>_** - Define uma mensagem de validação customizada para o upload.\nSe a mensagem for uma string vazia, o erro customizado é limpo.\n- **validate(): _Promise<boolean>_** - Executa o validator do upload e retorna se a lista atual é válida.\n- **getValidationState(): _Promise<FormValidationState>_** - Retorna um snapshot serializável da Constraint Validation API.\n- **cancelUpload(): _Promise<void>_** - Cancela o envio atual iniciado pelo `uploadHandler`.\n\n### **Slots:**\n - **default** - Conteúdo personalizado do botão de upload, com precedência sobre `buttonLabel` (use a prop para texto simples).\n- **upload-list** - Permite customizar a área de listagem de arquivos. Se utilizado, substitui a lista padrão gerada pelo componente.\n- **label** - Rótulo customizado do upload. Quando utilizado, a prop `label` é ignorada.\n- **helper** - Texto auxiliar exibido abaixo da superfície de seleção.\n- **feedback** - Mensagem de validação, normalmente um `br-message`.\n- **loading** - Conteúdo exibido enquanto o handler fornecido pela aplicação envia um arquivo.\n\n### **CSS Parts:**\n - **container** - Wrapper principal do upload.\n- **label** - Rótulo do campo de upload.\n- **input** - Elemento input de arquivo.\n- **button** - Botão de seleção de arquivo.\n- **helper** - Texto auxiliar do upload.\n- **remove-button** - Botão de remoção de arquivo.\n- **file-list** - Lista de arquivos selecionados.\n- **feedback** - Contêiner da mensagem de validação.\n- **loading** - Estado e progresso do envio assíncrono.",
      "attributes": [
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        },
        {
          "name": "name",
          "description": "Nome do campo enviado no formulário.",
          "values": []
        },
        {
          "name": "accept",
          "description": "Tipos de arquivo permitidos (ex.: 'image/*').",
          "values": []
        },
        {
          "name": "capture",
          "description": "Sugere a câmera usada na captura de imagem ou vídeo. Valores inválidos são ignorados.\nO navegador pode ignorar a preferência conforme dispositivo e permissões.",
          "values": [
            { "name": "''" },
            { "name": "user" },
            { "name": "environment" }
          ]
        },
        {
          "name": "label",
          "description": "Rótulo exibido acima do botão de upload.",
          "values": []
        },
        {
          "name": "button-label",
          "description": "Texto do botão de seleção. Quando omitido, usa \"Selecione o arquivo\" ou,\ncom `multiple`, \"Selecione o(s) arquivo(s)\". O slot padrão tem precedência.",
          "values": []
        },
        {
          "name": "upload-files",
          "description": "Lista de arquivos já enviados (para edição ou pré-visualização).\nPode ser uma string JSON ou um array de objetos IUploadFile. Cada item deve ter `name` não vazio e `size` numérico não negativo opcional; itens inválidos são ignorados.",
          "values": [{ "name": "IUploadFile[]" }]
        },
        {
          "name": "existing-files",
          "description": "Arquivos já existentes. Quando informada, tem precedência sobre `uploadFiles`.\nCada item deve ter `name` não vazio e `size` numérico não negativo opcional.\nUse JSON no atributo HTML ou um array por property binding.",
          "values": [{ "name": "IUploadFile[]" }]
        },
        {
          "name": "disabled",
          "description": "Desabilita a interação com o componente.",
          "values": []
        },
        {
          "name": "required",
          "description": "Se verdadeiro, o input de upload é obrigatório antes que o formulário possa ser enviado.",
          "values": []
        },
        {
          "name": "state",
          "description": "Estado visual: 'info', 'warning', 'danger' ou 'success'. Valores inválidos não aplicam estado.",
          "values": [{ "name": "BrFeedbackState" }]
        },
        {
          "name": "feedback-state",
          "description": "Estado de feedback. Quando informado, tem precedência sobre `state`.",
          "values": [{ "name": "BrFeedbackState" }]
        },
        {
          "name": "multiple",
          "description": "Indica se o componente permite a seleção de múltiplos arquivos.\nQuando definido como `true`, o usuário pode selecionar mais de um arquivo para upload.",
          "values": []
        },
        {
          "name": "min-files",
          "description": "Quantidade mínima de arquivos, incluindo arquivos já enviados. Deve ser um inteiro não negativo; valores inválidos usam `0`.",
          "values": []
        },
        {
          "name": "max-files",
          "description": "Quantidade máxima de arquivos. Zero significa sem limite. Deve ser um inteiro não negativo; valores inválidos usam `0`.",
          "values": []
        },
        {
          "name": "max-file-size",
          "description": "Tamanho máximo permitido para cada arquivo, em bytes. Zero significa sem limite. Deve ser um inteiro não negativo; valores inválidos usam `0`.",
          "values": []
        },
        {
          "name": "validator",
          "description": "Regra síncrona ou assíncrona aplicada à lista de arquivos selecionados.\nO componente valida `File[]`, mas não envia arquivos nem interpreta a\nresposta do servidor.",
          "values": [{ "name": "UploadValidator" }]
        },
        {
          "name": "upload-handler",
          "description": "Função assíncrona opcional fornecida pela aplicação para enviar cada arquivo.\n\nO componente fornece o arquivo, um `AbortSignal` e uma função de progresso,\nmas não conhece endpoint, autenticação nem formato de resposta.",
          "values": [{ "name": "UploadHandler" }]
        },
        {
          "name": "files",
          "description": "Lista de arquivos selecionados, equivalente a `HTMLInputElement.files`.",
          "values": [{ "name": "FileList" }]
        }
      ],
      "references": []
    },
    {
      "name": "br-wizard",
      "description": "O `br-wizard` conduz fluxos passo a passo divididos em telas sequenciais com botões de navegação e barra de progresso.\n\nInsira cada tela com `br-wizard-panel` no slot padrão. Acompanhe a mudança de etapas pelo evento `brStepChange`.\n\n```html\n<br-wizard>\n  <br-wizard-panel title-text=\"Identificação\">\n    <p>Primeira etapa do cadastro.</p>\n  </br-wizard-panel>\n  <br-wizard-panel title-text=\"Endereço\">\n    <p>Segunda etapa do cadastro.</p>\n  </br-wizard-panel>\n  <br-wizard-panel title-text=\"Confirmação\">\n    <p>Revise os dados antes de enviar.</p>\n  </br-wizard-panel>\n</br-wizard>\n```\n\n### Quando usar\n\n- Formulários extensos com dependência lógica entre etapas.\n\n### Quando evitar\n\n- Apenas indicar o status de um pedido já realizado: use `br-step`.\n- Conteúdos independentes onde a ordem de preenchimento é livre: use `br-tab`.\n\nConsulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/wizard?tab=designer).\n---\n\n\n### **Events:**\n - **brWizardStepChange** - Evento emitido APÓS mudar de etapa com sucesso.\n\nEste evento é disparado independente da origem da navegação:\n- Botões \"Avançar\" ou \"Voltar\"\n- Click direto em um step do indicador de progresso\n- Chamadas programáticas via métodos públicos (goToStep, nextStep, etc)\n- **brWizardBeforeStepChange** - Evento emitido ANTES de mudar de etapa (permite validação e cancelamento).\n\nComportamento:\n- Disparado apenas ao AVANÇAR (targetStep > currentStep)\n- Não é disparado ao VOLTAR (targetStep < currentStep)\n- Funciona tanto para cliques nos botões quanto para cliques diretos nos steps\n- Pode ser cancelado com `event.preventDefault()` para bloquear a navegação\n- **brWizardComplete** - Evento emitido ao concluir o wizard (última etapa).\n- **brWizardCancel** - Evento emitido ao cancelar o wizard.\n- **brWizardNavigationBlocked** - Evento emitido quando uma ação é bloqueada (validação falha, progressão linear impedida).\nEmite uma string indicando o motivo: 'linear-progression' ou 'validation-failed'.\nUse getCurrentStepIndex() para obter o contexto da etapa atual.\n\n### **Methods:**\n - **handleProgressionTypeChange()** - Observa mudanças no tipo de progressão.\nAtualiza a navegação dos painéis quando muda entre linear/nonlinear.\n- **handleInitialStepChange()** - Observa mudanças na etapa inicial.\nReinicializa o wizard quando a prop initialStep é alterada externamente.\n- **handleCurrentStepChange(newStep: _number_, oldStep: _number_)** - Observa mudanças na etapa atual (fonte única de verdade).\nSincroniza com br-step, atualiza painéis, anuncia mudança e move foco.\n- **handleSlotChange(event: _Event_)** - Detecta quando o slot muda (painéis adicionados/removidos dinamicamente).\nRedescobre os painéis e ressincroniza o estado.\n- **handleStepChange(event: _CustomEvent<{ activeStep: number }>_)** - Detecta quando o br-step muda de etapa ativa.\nValida e sincroniza a navegação com o componente interno br-step.\n- **nextStep(): _Promise<boolean>_** - Avança para a próxima etapa.\nExecuta validação via evento `brWizardBeforeStepChange` antes de navegar.\n- **next(): _Promise<boolean>_** - Avança para a próxima etapa.\n- **previousStep(): _Promise<boolean>_** - Volta para a etapa anterior.\nNão executa validação ao retornar.\n- **previous(): _Promise<boolean>_** - Retorna para a etapa anterior.\n- **goToStep(stepNumber: _number_): _Promise<boolean>_** - Navega para uma etapa específica.\nExecuta validação se estiver avançando (etapa alvo > etapa atual).\n- **reset(): _Promise<void>_** - Retorna à primeira etapa do wizard.\nNão executa validação (útil para reiniciar o fluxo).\n- **getCurrentStep(): _Promise<HTMLElement | null>_** - Retorna o elemento HTML do painel ativo no momento.\n- **getAllSteps(): _Promise<HTMLElement[]>_** - Retorna todos os painéis do wizard.\n- **getStepByIndex(stepNumber: _number_): _Promise<HTMLElement | null>_** - Retorna um painel específico pelo índice.\n- **getCurrentStepIndex(): _Promise<number>_** - Retorna o índice (número) da etapa atual.\nA numeração começa em 1 (primeira etapa = 1, segunda = 2, etc).\n- **getTotalSteps(): _Promise<number>_** - Retorna o número total de etapas do wizard.\n- **render(): __** - Método de renderização principal do componente.\nMonta a estrutura completa do wizard com acessibilidade integrada.\n\n### **Slots:**\n - **default** - Slot para os painéis de etapa (br-wizard-panel) do wizard.\n- **cancel-button** - Conteúdo customizado do botão de cancelar. Quando utilizado, o texto padrão \"Cancelar\" é substituído.\n- **next-button** - Conteúdo customizado do botão de avançar/concluir. Quando utilizado, os textos padrão \"Avançar\" e \"Concluir\" são substituídos.\n- **previous-button** - Conteúdo customizado do botão de voltar. Quando utilizado, o texto padrão \"Voltar\" é substituído.\n\n### **CSS Parts:**\n - **form** - Área do formulário do wizard.\n- **panel** - Painel ativo do wizard.\n- **progress** - Área de progresso do wizard.\n- **content** - Conteúdo do painel ativo.\n- **buttons** - Área de botões de navegação.",
      "attributes": [
        {
          "name": "step",
          "description": "Etapa atual (numeração 1-indexada). Reflete para atributo step.",
          "values": []
        },
        {
          "name": "initial-step",
          "description": "Índice da etapa inicial do wizard.\nDefine qual etapa será exibida ao carregar o componente.\nA numeração começa em 1 (primeira etapa = 1, segunda = 2, etc).\nValores inválidos usam 1.",
          "values": []
        },
        {
          "name": "initial-index",
          "description": "Índice inicial zero-based. Quando informado, tem precedência sobre `initialStep`; valores inválidos usam 0.",
          "values": []
        },
        {
          "name": "current-index",
          "description": "Índice atual zero-based para controle externo opcional.",
          "values": []
        },
        {
          "name": "orientation",
          "description": "Orientação visual do wizard.\nDefine se os indicadores de progresso serão exibidos horizontalmente ou verticalmente.",
          "values": [{ "name": "BrOrientation" }]
        },
        {
          "name": "progression-type",
          "description": "Tipo de progressão entre etapas.\n- `linear`: O usuário deve completar cada etapa sequencialmente. Não é possível pular etapas futuras.\n- `nonlinear`: O usuário pode navegar livremente entre qualquer etapa.",
          "values": [{ "name": "BrProgressionType" }]
        },
        {
          "name": "custom-id",
          "description": "Identificador único do componente.\nQuando omitido, um valor é gerado automaticamente.\n\n> **Padrão:** valor único gerado por generateUniqueId().",
          "values": []
        }
      ],
      "references": []
    },
    {
      "name": "br-wizard-panel",
      "description": "Painel de conteúdo de uma etapa individual do `br-wizard`.\n\nDefina o título da etapa em `title-text`. Insira os campos e conteúdos dessa fase no slot padrão.\n---\n\n\n### **Slots:**\n - **default** - Slot para o conteúdo da etapa (formulários, campos ou informações da fase atual).\n\n### **CSS Parts:**\n - **panel** - Wrapper do painel.\n- **content** - Área de conteúdo do painel.",
      "attributes": [
        {
          "name": "label",
          "description": "Label do painel (aparece no indicador de progresso)",
          "values": []
        }
      ],
      "references": []
    }
  ]
}
