Social proof

Testimonial Marquee

Two rows of quotes sliding in opposite directions, pausing under the pointer.

Shipped by people who do not enjoy writing components.

Hover any row to stop it and read at your own pace.

  • We replaced three half-finished internal components in an afternoon. The part I did not expect: the diff was readable.

    Marta Ibáñez

    Staff Engineer, Northwind

  • It is the first Angular kit where the accessibility was not something we had to add back in afterwards.

    Dan Okoro

    Frontend Lead, Kestrel

  • Our designers picked a preset, we changed one variable, and the whole app followed. That never happens.

    Priya Raman

    Design Systems, Bloom

  • No runtime dependency means no upgrade meeting. The code is ours now, and that is the entire pitch.

    Tomás Vidal

    CTO, Fathom

  • Zoneless and signal-first out of the box, so it fit the app we already had instead of the one we wish we had.

    Sasha Lund

    Principal Engineer, Verge

  • I copied a block, deleted half of it, and it still worked. That is the compliment I mean most.

    Ines Ferreira

    Product Engineer, Tilt

What moves

Each row loops a duplicated list by exactly half its width, so the seam is invisible, and stops on hover or focus.

Block source

TypeScript
Loading editor…

One standalone component. Paste it into your project, point the imports at your Volt path, and wire the buttons to your own routes.

Every animation here is guarded by prefers-reduced-motion, and the colours come from theme tokens — try a different preset with the switcher in the header and the block follows.