Skip to content
Extensões

Toggle Card

Card que alterna entre estados ativo e inativo ao clicar. Ideal para campos booleanos de habilitacao/desabilitacao em formularios. Suporta icones condicionais, texto de estado, grid de multiplos cards e dark mode automatico.

components/toggle-card.cssAbrir no Figma

Uso

Quando e como utilizar o toggle card para campos booleanos visuais.

  • Card unico — Um toggle simples com icone, titulo e label de estado.
  • Grid de cards — Use .toggle-card-grid para dispor multiplos cards em colunas responsivas (min 280px).
  • Com drawer — Associe um drawer para exibir detalhes ou formulario ao ativar o card.
O toggle card e ideal para opcoes booleanas onde o contexto visual (icone e cor) facilita a compreensao. Para multiplas opcoes exclusivas, prefira selection cards ou radio buttons.

Anatomia

Estrutura interna do componente e seus elementos.

ParteElementoDescricao
Wrapper.toggle-card-wrapperContainer vertical com gap 8px
Card.toggle-cardElemento clicavel com borda e fundo
Icone.toggle-card-iconCirculo 40x40 com icone condicional
Icone ativo.toggle-card-icon--activeVisivel apenas quando --active
Icone inativo.toggle-card-icon--inactiveVisivel apenas quando nao ativo
Conteudo.toggle-card-contentWrapper flex de titulo e estado
Titulo.toggle-card-titleTexto principal, Inter 15px w500
Estado ativo.toggle-card-state--activeLabel "Habilitado", cor accent
Estado inativo.toggle-card-state--inactiveLabel "Nao Habilitado", cor neutra
Helper.toggle-card-helperTexto auxiliar 12px abaixo do card
Erro.toggle-card-errorMensagem de erro 12px em vermelho

Propriedades

Classes disponiveis para configurar o toggle card.

PropriedadeTipoDefaultDescrição
.toggle-card-wrapperclasseWrapper com gap e margem inferior.
.toggle-cardclasseCard principal clicavel.
.toggle-card--activeclasseEstado ativo com borda e fundo destacados.
.toggle-card--disabledclasseDesabilita interacao e reduz opacidade.
.toggle-card-iconclasseContainer circular do icone (40x40).
.toggle-card-icon--activeclasseIcone exibido quando o card esta ativo.
.toggle-card-icon--inactiveclasseIcone exibido quando o card esta inativo.
.toggle-card-contentclasseWrapper flex-column para titulo e estado.
.toggle-card-titleclasseTitulo principal do card.
.toggle-card-state--activeclasseLabel de estado exibido quando ativo.
.toggle-card-state--inactiveclasseLabel de estado exibido quando inativo.
.toggle-card-helperclasseTexto auxiliar abaixo do card.
.toggle-card-errorclasseMensagem de erro abaixo do card.
.toggle-card-gridclasseGrid responsivo para multiplos cards.
.toggle-card-drawer-contentclasseContainer de conteudo dentro de um drawer associado.

Codigo

Snippets prontos para copiar e usar no seu projeto.

Card inativo

html
<div class="toggle-card-wrapper">
  <div class="toggle-card" tabindex="0" role="switch" aria-checked="false">
    <div class="toggle-card-icon">
      <span class="toggle-card-icon--active"><i class="ipe-check-circle"></i></span>
      <span class="toggle-card-icon--inactive"><i class="ipe-circle"></i></span>
    </div>
    <div class="toggle-card-content">
      <span class="toggle-card-title">Notificacoes por e-mail</span>
      <span class="toggle-card-state--active">Habilitado</span>
      <span class="toggle-card-state--inactive">Nao Habilitado</span>
    </div>
  </div>
  <span class="toggle-card-helper">Receba atualizacoes sobre seus processos.</span>
</div>

Card ativo

html
<div class="toggle-card-wrapper">
  <div class="toggle-card toggle-card--active" tabindex="0" role="switch" aria-checked="true">
    <div class="toggle-card-icon">
      <span class="toggle-card-icon--active"><i class="ipe-check-circle"></i></span>
      <span class="toggle-card-icon--inactive"><i class="ipe-circle"></i></span>
    </div>
    <div class="toggle-card-content">
      <span class="toggle-card-title">Notificacoes por e-mail</span>
      <span class="toggle-card-state--active">Habilitado</span>
      <span class="toggle-card-state--inactive">Nao Habilitado</span>
    </div>
  </div>
</div>

Grid de multiplos cards

html
<div class="toggle-card-grid">
  <div class="toggle-card-wrapper">
    <div class="toggle-card" tabindex="0" role="switch" aria-checked="false">
      <div class="toggle-card-icon">
        <span class="toggle-card-icon--active"><i class="ipe-check-circle"></i></span>
        <span class="toggle-card-icon--inactive"><i class="ipe-circle"></i></span>
      </div>
      <div class="toggle-card-content">
        <span class="toggle-card-title">Opcao A</span>
        <span class="toggle-card-state--active">Habilitado</span>
        <span class="toggle-card-state--inactive">Nao Habilitado</span>
      </div>
    </div>
  </div>
  <div class="toggle-card-wrapper">
    <div class="toggle-card toggle-card--active" tabindex="0" role="switch" aria-checked="true">
      <div class="toggle-card-icon">
        <span class="toggle-card-icon--active"><i class="ipe-check-circle"></i></span>
        <span class="toggle-card-icon--inactive"><i class="ipe-circle"></i></span>
      </div>
      <div class="toggle-card-content">
        <span class="toggle-card-title">Opcao B</span>
        <span class="toggle-card-state--active">Habilitado</span>
        <span class="toggle-card-state--inactive">Nao Habilitado</span>
      </div>
    </div>
  </div>
</div>

Card com erro

html
<div class="toggle-card-wrapper">
  <div class="toggle-card" tabindex="0" role="switch" aria-checked="false">
    <div class="toggle-card-icon">
      <span class="toggle-card-icon--active"><i class="ipe-check-circle"></i></span>
      <span class="toggle-card-icon--inactive"><i class="ipe-circle"></i></span>
    </div>
    <div class="toggle-card-content">
      <span class="toggle-card-title">Termo de aceite</span>
      <span class="toggle-card-state--active">Habilitado</span>
      <span class="toggle-card-state--inactive">Nao Habilitado</span>
    </div>
  </div>
  <span class="toggle-card-error">Este campo e obrigatorio.</span>
</div>

Design

Especificacoes visuais e tokens utilizados no componente.

Especificacoes

PropriedadeValor
Padding16px 20px (desktop), 14px 16px (mobile)
Border2px solid
Border-radius8px
Gap (card)16px
Gap (wrapper)8px
Icone container40x40 (desktop), 36x36 (mobile)
Icone size24px (desktop), 20px (mobile)
Fonte tituloInter 15px w500 (desktop), 14px (mobile)
Fonte estadoInter 13px w400
Fonte helper/erroInter 12px w400
Grid min-column280px
Grid gap12px
Transicao200ms ease

Tokens utilizados

EstadoBackgroundBordaTituloEstado label
Inativo--color-bg-secondary--color-neutral-300--color-text-primary--color-neutral-500
Inativo hover--color-neutral-100--color-neutral-400--color-text-primary--color-neutral-500
Ativo--color-accent-50--color-accent-400--color-text-primary--color-accent-400
Ativo hover--color-accent-100--color-accent-500--color-text-primary--color-accent-400
Desabilitado--color-neutral-100--color-neutral-300-- (opacity 0.6)-- (opacity 0.6)

Design System interno do GALES