Serviços públicos · Novo recurso

sistema de design Europa Component Library.

Examine as funções de cor EC, tipografia e espaçamento do Europa por meio de um briefing completo com acordeão nativo, incluindo navegação por teclado, comportamento de abrir tudo e uma alternativa legível sem JavaScript.

Guia OpenDesign8 capítulos41 entradas de referênciaGuia de aplicação original
01

Prévia da interface do sistema de design Europa Component Library

Abra notas individuais, expanda ou feche todas as seções e confira o layout completo de leitura.

Explore um briefing sobre debate públicoAbrir exemplo completo
Runtime nativo do EC 4.11.2 CSS e do Accordion, com conteúdo original e controle para abrir todas as seções. · Referência de implementação
02

Referência de design do sistema de design Europa Component Library

Folha de estilos @ecl/preset-ec 4.11.2 e código-fonte do Accordion verificados. O comportamento nativo e a composição original do controle em lote são diferenciados explicitamente.

Paleta do EC e papéis de status

Fonte
Nome / RegraValor / ConfiguraçãoUso
--ecl-color-primary#3860ed Valores publicados da predefinição do EC. O azul da marca é distinto da cor primária de ação; as cores de status não substituem mensagens por escrito.
--ecl-color-primary-140#0f2fa2 Valores publicados da predefinição do EC. O azul da marca é distinto da cor primária de ação; as cores de status não substituem mensagens por escrito.
--ecl-color-secondary#ffbe5c Valores publicados da predefinição do EC. O azul da marca é distinto da cor primária de ação; as cores de status não substituem mensagens por escrito.
--ecl-color-dark#26324b Valores publicados da predefinição do EC. O azul da marca é distinto da cor primária de ação; as cores de status não substituem mensagens por escrito.
--ecl-color-info#3860ed Valores publicados da predefinição do EC. O azul da marca é distinto da cor primária de ação; as cores de status não substituem mensagens por escrito.
--ecl-color-success#24a148 Valores publicados da predefinição do EC. O azul da marca é distinto da cor primária de ação; as cores de status não substituem mensagens por escrito.
--ecl-color-error#da1e28 Valores publicados da predefinição do EC. O azul da marca é distinto da cor primária de ação; as cores de status não substituem mensagens por escrito.
--ecl-color-warning#f39811 Valores publicados da predefinição do EC. O azul da marca é distinto da cor primária de ação; as cores de status não substituem mensagens por escrito.
--ecl-color-background#fcfcfc Valores publicados da predefinição do EC. O azul da marca é distinto da cor primária de ação; as cores de status não substituem mensagens por escrito.
--ecl-color-branding#004494 Valores publicados da predefinição do EC. O azul da marca é distinto da cor primária de ação; as cores de status não substituem mensagens por escrito.
--ecl-color-neutral-20#f8f9fd Valores publicados da predefinição do EC. O azul da marca é distinto da cor primária de ação; as cores de status não substituem mensagens por escrito.
--ecl-color-neutral-60#e0e5f5 Valores publicados da predefinição do EC. O azul da marca é distinto da cor primária de ação; as cores de status não substituem mensagens por escrito.
--ecl-color-white#fffValores publicados da predefinição do EC. O azul da marca é distinto da cor primária de ação; as cores de status não substituem mensagens por escrito.

Escala de espaçamento

Fonte
Nome / RegraValor / ConfiguraçãoUso
--ecl-spacing-2xs0.25remEscala real baseada em rem na predefinição fixada. A composição personalizada usa esses papéis sem inventar uma escala institucional diferente.
--ecl-spacing-xs0.5remEscala real baseada em rem na predefinição fixada. A composição personalizada usa esses papéis sem inventar uma escala institucional diferente.
--ecl-spacing-s0.75remEscala real baseada em rem na predefinição fixada. A composição personalizada usa esses papéis sem inventar uma escala institucional diferente.
--ecl-spacing-m1remEscala real baseada em rem na predefinição fixada. A composição personalizada usa esses papéis sem inventar uma escala institucional diferente.
--ecl-spacing-l1.25remEscala real baseada em rem na predefinição fixada. A composição personalizada usa esses papéis sem inventar uma escala institucional diferente.
--ecl-spacing-xl1.5remEscala real baseada em rem na predefinição fixada. A composição personalizada usa esses papéis sem inventar uma escala institucional diferente.
--ecl-spacing-2xl2remEscala real baseada em rem na predefinição fixada. A composição personalizada usa esses papéis sem inventar uma escala institucional diferente.
--ecl-spacing-3xl2.5remEscala real baseada em rem na predefinição fixada. A composição personalizada usa esses papéis sem inventar uma escala institucional diferente.
--ecl-spacing-4xl3remEscala real baseada em rem na predefinição fixada. A composição personalizada usa esses papéis sem inventar uma escala institucional diferente.
--ecl-spacing-5xl3.5remEscala real baseada em rem na predefinição fixada. A composição personalizada usa esses papéis sem inventar uma escala institucional diferente.
--ecl-spacing-6xl4remEscala real baseada em rem na predefinição fixada. A composição personalizada usa esses papéis sem inventar uma escala institucional diferente.

Tipografia e largura de leitura

Fonte
Nome / RegraValor / ConfiguraçãoUso
--ecl-font-family-defaultarial,sans-serifOs valores abreviados completos incluem peso, tamanho, altura da linha e fonte alternativa. A família de fontes usada nesta interface EC é Arial; não é necessária uma fonte web personalizada.
--ecl-font-xsnormal normal 400 0.75rem/1.125rem arial,sans-serifOs valores abreviados completos incluem peso, tamanho, altura da linha e fonte alternativa. A família de fontes usada nesta interface EC é Arial; não é necessária uma fonte web personalizada.
--ecl-font-snormal normal 400 0.875rem/1.125rem arial,sans-serifOs valores abreviados completos incluem peso, tamanho, altura da linha e fonte alternativa. A família de fontes usada nesta interface EC é Arial; não é necessária uma fonte web personalizada.
--ecl-font-mnormal normal 400 1rem/1.5rem arial,sans-serifOs valores abreviados completos incluem peso, tamanho, altura da linha e fonte alternativa. A família de fontes usada nesta interface EC é Arial; não é necessária uma fonte web personalizada.
--ecl-font-lnormal normal 400 1.25rem/1.75rem arial,sans-serifOs valores abreviados completos incluem peso, tamanho, altura da linha e fonte alternativa. A família de fontes usada nesta interface EC é Arial; não é necessária uma fonte web personalizada.
--ecl-font-xlnormal normal 400 1.5rem/2.25rem arial,sans-serifOs valores abreviados completos incluem peso, tamanho, altura da linha e fonte alternativa. A família de fontes usada nesta interface EC é Arial; não é necessária uma fonte web personalizada.
--ecl-font-2xlnormal normal 400 1.75rem/2.25rem arial,sans-serifOs valores abreviados completos incluem peso, tamanho, altura da linha e fonte alternativa. A família de fontes usada nesta interface EC é Arial; não é necessária uma fonte web personalizada.
--ecl-font-3xlnormal normal 400 2.5rem/2.75rem arial,sans-serifOs valores abreviados completos incluem peso, tamanho, altura da linha e fonte alternativa. A família de fontes usada nesta interface EC é Arial; não é necessária uma fonte web personalizada.
--ecl-font-4xlnormal normal 400 3.25rem/3.375rem arial,sans-serifOs valores abreviados completos incluem peso, tamanho, altura da linha e fonte alternativa. A família de fontes usada nesta interface EC é Arial; não é necessária uma fonte web personalizada.
--ecl-max-width80chOs valores abreviados completos incluem peso, tamanho, altura da linha e fonte alternativa. A família de fontes usada nesta interface EC é Arial; não é necessária uma fonte web personalizada.

Contrato do acordeão nativo

Fonte
Nome / RegraValor / ConfiguraçãoUso
Initializationdata-ecl-auto-init="Accordion" + ECL.autoInit()Inicializa este componente dentro da predefinição; não é necessário usar um wrapper de framework.
Triggerdata-ecl-accordion-toggleO listener nativo é associado ao botão de cada título.
Targetaria-controls matches a panel IDAlvos ausentes causam um erro; cada ID deve ser exclusivo.
Open statearia-expanded + panel.hiddenO runtime altera tanto a semântica quanto o conteúdo visível.
Eventroot.ECLAccordion.on("onToggle", callback)O exemplo calcula a quantidade de seções abertas após uma alternância nativa.
Event payload{ item, isOpening }O item é o painel de destino, não um índice de array nem uma aba selecionada.
Independent panelsSeveral may be open togetherAbrir todas é um comportamento original da aplicação que ativa os botões nativos de acionamento.
03

Guia completo do sistema de design Europa Component Library

Um guia prático para escolher, aplicar e avaliar este sistema em uma interface real.

DESIGN-europa-ecl.md

Orientações completas, um ponto de partida para a implementação e links para o código-fonte.

Baixar o guia

Predefinição Europa EC e escolha de versão do sistema de design Europa Component Library

Escolha EC ou EU antes de importar os recursos

O Europa oferece predefinições institucionais distintas. Este exemplo usa deliberadamente @ecl/preset-ec na versão 4.11.2, correspondente à documentação EC vinculada. Ele não mistura marcação EU, capturas de tela históricas do EC e uma folha de estilos sem versão fixada. O pacote fornece dist/styles/ecl-ec.css e dist/scripts/ecl-ec.js, portanto o exemplo estático pode ser servido sem introduzir um framework frontend.

Com base neste guia de OpenDesign
  • Use a predefinição EC para a implementação EC mostrada aqui.
  • Mantenha CSS e JavaScript na mesma versão.
  • Mantenha os IDs de origem exclusivos ao reutilizar itens do acordeão.

Trate isto como uma implementação versionada

A referência descreve a versão 4.11.2; isso não significa que todas as versões posteriores tenham tokens ou comportamentos idênticos. Nas atualizações, compare o preset escolhido, a marcação dos componentes e a inicialização em conjunto. Um novo nome de pacote ou número de versão, por si só, não comprova que um padrão copiado anteriormente ainda funcione corretamente.

Sistema de design Europa Component Library Europa: papéis de cor e identidade institucional do sistema de design

Mantenha a identidade visual separada da ação principal

A cor de identidade visual do preset é #004494, enquanto a cor primária é #3860ed. O briefing original usa a cor de identidade visual apenas em uma faixa superior estreita e deixa que o componente use seu próprio estilo de ação primária. Neutral-20 serve de fundo para a página, e Neutral-60 separa o conteúdo. Assim, preserva-se a distinção entre um destaque institucional e a cor de um controle interativo.

Não atribua um significado oficial ao exemplo

A página é um estudo de OpenDesign com notas fictícias de consulta. Ela não inclui o logotipo da Comissão Europeia nem representa um edital de financiamento, serviço ou requisito legal. As cores de erro, aviso e sucesso estão listadas como tokens reais, mas a demonstração não gera uma mensagem artificial de sucesso na solicitação apenas para exibir todas as cores.

Sistema de design Europa Component Library Europa: tipografia e escala de espaçamento do sistema de design

Use valores completos de abreviação de fonte

O preset EC define Arial como fonte padrão para telas. A função m usa 1rem, entrelinha de 1.5rem e peso 400; as funções maiores têm suas próprias entrelinhas. A referência inclui declarações completas, não apenas tamanhos de fonte isolados. O peso dos títulos do estudo é uma escolha original de ênfase aplicada à função fornecida, enquanto o texto dos componentes permanece sob o controle da folha de estilos nativa.

Mantenha visíveis os espaçamentos em rem e a largura de leitura

A sequência de espaçamentos inclui 0.25, 0.5, 0.75, 1, 1.25, 1.5, 2, 2.5, 3, 3.5 e 4rem. A largura máxima de leitura nativa é 80ch. O layout original usa um limite externo centralizado de 1080px e espaçamento interno responsivo, enquanto cada acordeão mantém o espaçamento próprio do preset. A largura externa é uma decisão de composição, não um novo token oficial.

Sistema de design Europa Component Library Europa: marcação e comportamento nativo do acordeão do sistema de design

Faça com que os botões dos títulos controlem painéis reais

Cada .ecl-accordion__item contém um título com um botão .ecl-accordion__toggle. O atributo aria-controls aponta para o painel .ecl-accordion__content correspondente. O exemplo inclui um ID estável para o acionador e aria-labelledby em cada região. O script nativo encontra o alvo pelo ID, altera aria-expanded e modifica panel.hidden; essas relações precisam continuar corretas se os itens forem reordenados ou copiados.

Use um indicador explícito sem sprite externo

Sistema de design Europa Component Library Europa: eventos do acordeão e comportamento de abrir todas as seções do sistema de design

Derive o estado do componente nativo

ECL.autoInit() disponibiliza o componente inicializado em root.ECLAccordion. A aplicação escuta o evento onToggle e calcula quantos botões acionadores têm aria-expanded="true" no momento. O payload do evento inclui o item de destino e isOpening, úteis para o tratamento individual de cada painel. A contagem não deduz o estado pelo texto visível nem mantém um segundo array independente com os estados abertos.

Mantenha previsível a ação em lote

Quando todos os painéis estão abertos, a ação em lote os fecha; caso contrário, abre todos. O manipulador ativa apenas os botões nativos cujo estado precisa mudar. Ele não altera hidden nem aria-expanded diretamente, mantendo consistentes os eventos nativos e a contagem derivada. O rótulo do controle alterna entre Abrir todas as seções e Fechar todas as seções para comunicar a próxima ação.

Sistema de design Europa Component Library Europa: navegação por teclado e leitura progressiva no sistema de design

Use a interação normal dos botões

A tecla Tab leva a um botão de título, enquanto Enter ou Espaço o ativa pelo comportamento nativo dos botões no navegador. Este componente é um acordeão, não uma lista de abas: não se deve adicionar navegação entre abas pelas teclas de seta por analogia. Vários painéis podem permanecer abertos, facilitando a comparação das notas. O indicador de foco vem da folha de estilos do componente e permanece visível sobre a superfície clara.

Mantenha o texto legível sem JavaScript

O código-fonte HTML começa com todos os painéis visíveis e aria-expanded="true". Após a inicialização nativa ser concluída com sucesso, a aplicação os recolhe ativando os respectivos botões. Portanto, com JavaScript desativado, o texto continua visível, e a barra de ferramentas inativa é ocultada pelo estilo no-js. Esse fallback foi testado verificando a visibilidade real, não apenas a presença dos parágrafos no código-fonte.

Sistema de design Europa Component Library Europa: painéis responsivos e conteúdo extenso do sistema de design

Permita altura natural e quebra de linha

O documento não usa altura fixa nos acordeões. As notas expandidas podem crescer para acomodar títulos, listas numeradas e uma nota de decisão destacada. Em telas menores, o espaçamento externo original diminui e o título principal usa uma função tipográfica fornecida de tamanho menor. O texto longo dos acionadores quebra em várias linhas, mantendo o indicador acessível. Isso foi verificado em 280px e também em larguras de desktop, tablet e celular.

Não transforme os controles de leitura em um fluxo de aprovação

Abrir ou fechar um painel altera apenas a apresentação. A contagem informa quantas seções estão abertas, não quantas foram concluídas ou quantos requisitos foram atendidos. O rodapé informa que nenhuma resposta à consulta nem aprovação formal é enviada. Um serviço real precisaria de regras próprias de elegibilidade, persistência e comportamento no back-end, nada disso estando implícito na demonstração do componente.

Sistema de design Europa Component Library Europa: configuração estática completa do sistema de design

Instale o preset correspondente e salve todos os arquivos

O index.html fornecido carrega a folha de estilos predefinida fixada e o script do navegador antes de ecl-app.js. Salve os arquivos ecl.css e ecl-app.js que acompanham o exemplo no mesmo diretório e disponibilize a pasta por HTTP. Todo o conteúdo, os SVGs dos indicadores e os manipuladores de estado estão incluídos. Não há estrutura de aplicação oculta nem necessidade de baixar ícones separadamente para este estudo.

  1. Instale a predefinição EC fixada.
  2. Salve index.html, ecl.css e ecl-app.js juntos.
  3. Disponibilize o diretório e teste as alternâncias individuais e em lote.
  4. Repita o teste com o teclado, em uma janela estreita e com JavaScript desativado.

Mantenha as atualizações de componentes fáceis de revisar

Exemplos de componentes do sistema de design Europa Component Library

ecl-index.html — código-fonte completo

Marcação completa do componente, conteúdo, indicadores em linha e caminhos dos recursos predefinidos.

html
<!doctype html><html lang="en" class="no-js"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>Public conversation brief</title><link rel="stylesheet" href="./node_modules/@ecl/preset-ec/dist/styles/ecl-ec.css"><link rel="stylesheet" href="./ecl.css"></head><body><main><header class="mast"><p class="eyebrow">European Commission preset / original study</p><h1>A clear brief for a public conversation</h1><p>Explore three preparation notes with native ECL expandable sections and an explicit open-all control.</p></header><p class="scope">ECL EC 4.11.2 CSS and native Accordion runtime. Original OpenDesign sample text; this is not an EU service, funding programme or legal guide.</p><div class="toolbar"><p id="count" role="status">0 of 3 sections open</p><button id="all" type="button" class="ecl-button ecl-button--secondary">Open all sections</button></div><div class="ecl-accordion" data-ecl-accordion data-ecl-auto-init="Accordion"><section class="ecl-accordion__item"><h2 class="ecl-accordion__title"><button class="ecl-accordion__toggle" data-ecl-accordion-toggle aria-controls="purpose" aria-expanded="true" id="toggle-purpose" type="button"><span class="ecl-accordion__toggle-flex"><span class="ecl-accordion__toggle-title">Define the purpose before collecting information</span><span class="ecl-accordion__toggle-indicator"><svg class="ecl-accordion__toggle-icon" aria-hidden="true" viewBox="0 0 24 24"><path d="M11 3h2v8h8v2h-8v8h-2v-8H3v-2h8z"/></svg><svg class="ecl-accordion__toggle-icon" aria-hidden="true" viewBox="0 0 24 24"><path d="M3 11h18v2H3z"/></svg></span></span></button></h2><div class="ecl-accordion__content" id="purpose" role="region" aria-labelledby="toggle-purpose"><p>This fictional planning note describes a small community consultation. It is sample editorial content, not an EU funding call, legal requirement or official application process.</p><h3>Make a decision possible</h3><ol><li>State which decision the conversation will inform.</li><li>List information already available before asking participants for more.</li><li>Name what remains outside the consultation.</li></ol><aside class="decision"><h3>Keep the outcome proportionate</h3><p>A short conversation may support a next step; it does not by itself prove consent, eligibility or public support.</p></aside></div></section><section class="ecl-accordion__item"><h2 class="ecl-accordion__title"><button class="ecl-accordion__toggle" data-ecl-accordion-toggle aria-controls="participation" aria-expanded="true" id="toggle-participation" type="button"><span class="ecl-accordion__toggle-flex"><span class="ecl-accordion__toggle-title">Make participation understandable and accessible</span><span class="ecl-accordion__toggle-indicator"><svg class="ecl-accordion__toggle-icon" aria-hidden="true" viewBox="0 0 24 24"><path d="M11 3h2v8h8v2h-8v8h-2v-8H3v-2h8z"/></svg><svg class="ecl-accordion__toggle-icon" aria-hidden="true" viewBox="0 0 24 24"><path d="M3 11h18v2H3z"/></svg></span></span></button></h2><div class="ecl-accordion__content" id="participation" role="region" aria-labelledby="toggle-participation"><p>Give participants enough context to decide whether and how to take part. The invitation should explain the topic, expected duration, available formats and the use of any notes.</p><h3>Provide usable alternatives</h3><ol><li>Offer a plain-language explanation of the activity.</li><li>Allow a person to contribute without speaking to the whole group.</li><li>Explain how to ask for an accessible format.</li></ol><aside class="decision"><h3>Check the invitation itself</h3><p>A technically accessible page is only one part of participation. Timing, language and the route for asking a question also affect who can join.</p></aside></div></section><section class="ecl-accordion__item"><h2 class="ecl-accordion__title"><button class="ecl-accordion__toggle" data-ecl-accordion-toggle aria-controls="record" aria-expanded="true" id="toggle-record" type="button"><span class="ecl-accordion__toggle-flex"><span class="ecl-accordion__toggle-title">Record decisions and unresolved questions separately</span><span class="ecl-accordion__toggle-indicator"><svg class="ecl-accordion__toggle-icon" aria-hidden="true" viewBox="0 0 24 24"><path d="M11 3h2v8h8v2h-8v8h-2v-8H3v-2h8z"/></svg><svg class="ecl-accordion__toggle-icon" aria-hidden="true" viewBox="0 0 24 24"><path d="M3 11h18v2H3z"/></svg></span></span></button></h2><div class="ecl-accordion__content" id="record" role="region" aria-labelledby="toggle-record"><p>After the session, distinguish what was agreed from what still needs investigation. A clean record helps the next reader understand how a proposal changed and why.</p><h3>Prepare a readable follow-up</h3><ol><li>Write the next action with an owner and review date.</li><li>Make open questions visible alongside conclusions.</li><li>Invite participants to correct an inaccurate summary.</li></ol><aside class="decision"><h3>Avoid a false completion signal</h3><p>Closing these panels is a reading action only. This preview sends no consultation response and records no formal approval.</p></aside></div></section></div><p class="footer">Each heading is a native button. Use Tab to move between headings and Enter or Space to toggle; several sections can remain open. Without JavaScript the notes remain readable.</p></main><script src="./node_modules/@ecl/preset-ec/dist/scripts/ecl-ec.js"></script><script src="./ecl-app.js"></script></body></html>

Referência de código

  • Salve o arquivo HTML como index.html e mantenha inalterados os nomes dos outros arquivos fornecidos.

ecl.css — código-fonte completo

Composição responsiva original com a estilização nativa dos componentes ECL.

css
*{box-sizing:border-box}body{margin:0;background:var(--ecl-color-neutral-20);font:var(--ecl-font-m);color:var(--ecl-color-dark)}main{max-width:1080px;margin:auto;padding:40px}.mast{border-top:6px solid var(--ecl-color-branding);padding:32px;background:white}.eyebrow{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--ecl-color-primary-140)}h1{font:var(--ecl-font-3xl);font-weight:700;margin:16px 0;max-width:22ch}.mast p{max-width:72ch}.scope{font:var(--ecl-font-s);margin:24px 0;max-width:90ch}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:24px;flex-wrap:wrap;margin:32px 0 16px}.toolbar p{margin:0}.ecl-accordion{background:white}.ecl-accordion__toggle-title{padding-right:16px}.ecl-accordion__toggle-icon{width:24px;height:24px}.ecl-accordion__content p:first-child{margin-top:0}.ecl-accordion__content ol,.ecl-accordion__content ul{padding-left:24px}.ecl-accordion__content li{margin:8px 0}.ecl-accordion__content h3{font-size:18px;line-height:1.4}.decision{border-left:4px solid var(--ecl-color-secondary);padding:16px;background:var(--ecl-color-neutral-20);margin:24px 0}.footer{font:var(--ecl-font-s);margin-top:24px;border-top:1px solid var(--ecl-color-neutral-60);padding-top:24px}.no-js .toolbar{display:none}@media(max-width:600px){main{padding:16px}.mast{padding:24px}h1{font:var(--ecl-font-2xl);font-weight:700}.ecl-accordion__toggle{overflow-wrap:anywhere}}

Referência de código

  • Salve o arquivo HTML como index.html e mantenha inalterados os nomes dos outros arquivos fornecidos.

ecl-app.js — código-fonte completo

Inicialização nativa e comportamento em lote orientado a eventos, com HTML inicial legível.

javascript
document.documentElement.classList.remove('no-js');ECL.autoInit();const root=document.querySelector('[data-ecl-accordion]');const buttons=[...root.querySelectorAll('[data-ecl-accordion-toggle]')];const all=document.querySelector('#all');function sync(){let open=buttons.filter(b=>b.getAttribute('aria-expanded')==='true').length;document.querySelector('#count').textContent=open+' of '+buttons.length+' sections open';all.textContent=open===buttons.length?'Close all sections':'Open all sections';}root.ECLAccordion.on('onToggle',sync);buttons.forEach(b=>b.click());all.addEventListener('click',()=>{let close=buttons.every(b=>b.getAttribute('aria-expanded')==='true');buttons.filter(b=>(b.getAttribute('aria-expanded')==='true')===close).forEach(b=>b.click());});sync();

Referência de código

  • Salve o arquivo HTML como index.html e mantenha inalterados os nomes dos outros arquivos fornecidos.
04

Configuração do agente de IA do sistema de design Europa Component Library

Ponto de partida para implementação

Abra http://localhost:8000/. O exemplo usa a predefinição EC e não requer downloads adicionais de ícones ou fontes.

sh
npm init -y
npm install @ecl/[email protected]
# Save index.html, ecl.css and ecl-app.js from the supplied examples.
python3 -m http.server 8000

Um prompt para seu projeto

Prompt para agente de IA
Implemente o briefing fornecido para o acordeão ECL EC 4.11.2 usando os três arquivos completos. Preserve as relações nativas entre acionadores e painéis, a contagem baseada em onToggle, a semântica de abrir/fechar em lote, a ativação dos botões pelo teclado, a leitura sem JavaScript e o escopo explícito da amostra original. Não dê a entender que se trata de um serviço oficial da UE ou de um processo formal de candidatura.
05

Fontes e escopo do sistema de design Europa Component Library

Um guia de aplicação de OpenDesign para ECL EC 4.11.2. As notas originais da amostra e a composição da página não representam um serviço da Comissão Europeia, um convite à apresentação de propostas de financiamento ou uma exigência legal.