Componentdata-display

Logos Flip

Stable

Fileira de cards que viram um após o outro para revelar o próximo lote de logos. Só roda quando há mais logos que cards, enquanto está na tela e com a aba visível. As duas faces de cada card ficam fora da árvore de acessibilidade e do Tab, e o conjunto inteiro é listado uma vez para leitor de tela. Quando os logos importam, vem com um controle de pausa por `play`.

Instalação

npx up-web-ds add logos-flip

Preview

Basic

  • Next.js
  • React
  • TypeScript
  • Tailwind CSS
  • Base UI
  • React Aria
  • Vitest
  • Playwright

Three Cards

  • Next.js
  • React
  • TypeScript
  • Tailwind CSS
  • Base UI
  • React Aria
  • Vitest
  • Playwright

Responsive

  • Next.js
  • React
  • TypeScript
  • Tailwind CSS
  • Base UI
  • React Aria
  • Vitest
  • Playwright

Static

  • Next.js
  • React
  • TypeScript
  • Tailwind CSS

Pausable

Da validação à distribuição privada.

  • GitHub Actions
  • GitHub Packages
  • Vercel
  • Biome
  • Vitest
  • Playwright
  • axe-core
  • shadcn

All states

Basic

  • Next.js
  • React
  • TypeScript
  • Tailwind CSS
  • Base UI
  • React Aria
  • Vitest
  • Playwright

Three Cards

  • Next.js
  • React
  • TypeScript
  • Tailwind CSS
  • Base UI
  • React Aria
  • Vitest
  • Playwright

Responsive

  • Next.js
  • React
  • TypeScript
  • Tailwind CSS
  • Base UI
  • React Aria
  • Vitest
  • Playwright

Static

  • Next.js
  • React
  • TypeScript
  • Tailwind CSS

Pausable

Da validação à distribuição privada.

  • GitHub Actions
  • GitHub Packages
  • Vercel
  • Biome
  • Vitest
  • Playwright
  • axe-core
  • shadcn

Usage

@/components/logos-flip
import { LogosFlip } from '@/components/logos-flip'
Logos Flip
<LogosFlip>
  <span>Next.js</span>
  <span>React</span>
  <span>TypeScript</span>
  <span>Tailwind CSS</span>
  <span>Base UI</span>
  <span>React Aria</span>
  <span>Vitest</span>
  <span>Playwright</span>
</LogosFlip>

Props

Props de LogosFlip
PropTypeDefaultDescription
children, obrigatóriaReact.ReactNodesem valor padrãoLogo elements to cycle through. Each child is rendered as a single logo, and each one needs its own accessible name -- an `alt`, an `aria-label`, or the wordmark as text. Logos are content, not controls: the moving copy is inert, so a link inside it could not be reached.
columnCountnumber4Number of cards shown at once. Capped at the number of logos. The cards sit in one row by default; set `--column-count` to wrap them onto fewer columns.
playbooleantrueWhether the cards turn over. Set it from a pause control when the logos are content rather than ambience.

Estende Omit< React.ComponentProps<'div'>, 'ref' | 'children' >. Aceita também os atributos padrão de um elemento React (278 não listados).

prop obrigatória.

Metadata

Notas de acessibilidade

Verificado em tests/e2e/logos-flip.spec.ts no Chromium desktop e mobile, em light e dark, com Axe sem violações WCAG 2.2 AA. Teclado: o item não é interativo e a grade de cards é inert, então não há parada de Tab dentro dela; logos são conteúdo, não controles. Leitor de tela verificado por teste: cada card guarda frente e verso, e backface-visibility esconde um deles só do olho — por isso a grade é aria-hidden e o conjunto completo é exposto uma vez, em ordem, numa lista sr-only; cada logo precisa trazer o próprio nome acessível. Pausa (WCAG 2.2.2): `play` interrompe a onda — verificado em navegador que nenhum card vira enquanto pausado — e pausar no meio assenta a onda em vez de deixar cards virados pela metade; o ciclo também para fora da tela e com a aba oculta. Touch verificado em 320px com emulação de toque: --column-count quebra os cards em duas colunas dentro do contêiner, cada face contém o próprio wordmark, e o controle de pausa atende ao piso de 24x24 e responde ao toque. Reduced motion verificado em navegador com prefers-reduced-motion: reduce — a transição de transform é removida (motion-reduce:transition-none), nenhum card gira em nenhum quadro da onda (motion-reduce:rotate-x-0) e o lote seguinte aparece no lugar quando a onda assenta. Timing: duration-600 é do upstream e foi mantido de propósito, porque está amarrado a FLIP_DURATION, que agenda a troca das faces.

Classificação

Layer
Component
Domínio
Application
Categoria
data-display
Status
Stable

Origem e distribuição

Fonte
ncdai registry / logos-flip
Licença
MIT
Distribuição
Interna

Acessibilidade

  • Teclado: revisado
  • Leitor de tela: revisado
  • Touch: revisado
  • Reduced motion: revisado

Dependências

Pacotes
motion
Ícones
Nenhum
Construído sobre
Nenhum
Usado por
Nenhum ainda