Componentdata-display

Logos Carousel

Stable

Grade de logos que troca coluna por coluna, numa onda escalonada. É conteúdo ambiente: roda só enquanto está na tela e com a aba visível, a grade em movimento fica 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-carousel

Preview

Basic

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

With Caption

Construído sobre ferramentas abertas

  • Next.js
  • React
  • TypeScript
  • Tailwind CSS
  • Base UI
  • React Aria
  • Vitest
  • Playwright
  • Biome
  • Motion
  • Zod
  • shadcn

Right To Left

  • Next.js
  • React
  • TypeScript
  • Tailwind CSS
  • Base UI
  • React Aria
  • Vitest
  • Playwright
  • Biome
  • Motion
  • Zod
  • shadcn

Responsive

  • Next.js
  • React
  • TypeScript
  • Tailwind CSS
  • Base UI
  • React Aria
  • Vitest
  • Playwright
  • Biome
  • Motion
  • Zod
  • shadcn

Few Logos

  • Next.js
  • React
  • TypeScript

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

With Caption

Construído sobre ferramentas abertas

  • Next.js
  • React
  • TypeScript
  • Tailwind CSS
  • Base UI
  • React Aria
  • Vitest
  • Playwright
  • Biome
  • Motion
  • Zod
  • shadcn

Right To Left

  • Next.js
  • React
  • TypeScript
  • Tailwind CSS
  • Base UI
  • React Aria
  • Vitest
  • Playwright
  • Biome
  • Motion
  • Zod
  • shadcn

Responsive

  • Next.js
  • React
  • TypeScript
  • Tailwind CSS
  • Base UI
  • React Aria
  • Vitest
  • Playwright
  • Biome
  • Motion
  • Zod
  • shadcn

Few Logos

  • Next.js
  • React
  • TypeScript

Pausable

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

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

Usage

@/components/logos-carousel
import { LogosCarousel } from '@/components/logos-carousel'
Logos Carousel
<LogosCarousel>
  <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>
</LogosCarousel>

Props

Props de LogosCarousel
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 columns to spread the logos across. Capped at the number of logos. Set `--column-count` on the element to change it per breakpoint.
direction"ltr" | "rtl""ltr"Direction the ripple travels: left-to-right or right-to-left.
playbooleantrueWhether the logos cycle. Set it from a pause control when the logos are content rather than ambience.

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

prop obrigatória.

Metadata

Notas de acessibilidade

Verificado em tests/e2e/logos-carousel.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 em movimento é 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 e pela árvore de acessibilidade do navegador: a grade é aria-hidden — uma coluna mostra um logo por vez e mantém o que sai montado durante o fade, o que faria o leitor anunciar um recorte arbitrário, às vezes repetido — 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 o ciclo, que também para fora da tela e com a aba oculta; no exemplo pausable o controle vem antes da grade, é acionado por Enter e o foco permanece nele quando o rótulo muda. Touch verificado em 320px com emulação de toque: --column-count quebra a grade em duas colunas dentro do contêiner, cada célula contém o próprio wordmark em vez de invadir a vizinha, e o controle de pausa atende ao piso de 24x24 e responde ao toque. Reduced motion verificado em navegador com prefers-reduced-motion: reduce — o ciclo continua, porque é conteúdo, mas nenhum logo se desloca nem desfoca em nenhum quadro; as variants reduzidas levam transform e filter ao repouso sem tween, porque a preferência é lida depois do primeiro render e uma entrada já iniciada ficaria presa no meio do deslocamento (defeito encontrado pelo spec e corrigido). Timing: 2,4s por batida, 125ms de escalonamento e 500ms de troca são do upstream e foram mantidos como uma coreografia só.

Classificação

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

Origem e distribuição

Fonte
ncdai registry / logos-carousel
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