Testimonials

apps/www/src/sections/Testimonials.astro · 37 lines · group Testimonials

Testimonials — quotes with a face and a role: cards with a round photo, the name, the role and the words, on a dark brand band by default (<Testimonial>). Use for: customer reviews, team voices, "what our clients say" — two to six short quotes. Not for: one or two long pull quotes on a light page (<Quotes>). Children: <Testimonial> tags. Layout: `columns` 1–3 (default 2).

In the fleet

Used on 1 site built with this engine.

Samples 1

sample

The people who run them

  • Anna Lindqvist

    Head of agronomy, Almara Farms

    The first frost night paid for the whole installation.

  • Marco Ferreira

    Orchard manager, Kestrel

    I stopped driving out at three in the morning to check a thermometer.

MDX of this sample
<Testimonials title="The people who run them" columns={2}>
  <Testimonial name="Anna Lindqvist" role="Head of agronomy, Almara Farms" avatar="avatar-01.jpg" quote="The first frost night paid for the whole installation." />
  <Testimonial name="Marco Ferreira" role="Orchard manager, Kestrel" avatar="avatar-02.jpg" quote="I stopped driving out at three in the morning to check a thermometer." />
</Testimonials>

Props

NameTypeRequiredDefaultDescription
idstringanchor of the section
titlestringthe section heading
descriptionstringa paragraph under the heading
columns1 | 2 | 32cards per row on desktop
theme'light' | 'muted' | 'dark' | 'brand' | 'brand-dark''dark'background of the section (default "dark")

Source apps/www/src/sections/Testimonials.astro @ gitt.one

---
/**
 * Testimonials — quotes with a face and a role: cards with a round photo, the
 *   name, the role and the words, on a dark brand band by default
 *   (<Testimonial>).
 *
 * Use for: customer reviews, team voices, "what our clients say" — two to six
 *   short quotes.
 * Not for: one or two long pull quotes on a light page (<Quotes>).
 * Children: <Testimonial> tags.
 * Layout: `columns` 1–3 (default 2).
 */
import Section from './_Section.astro';
import type { Theme } from './_Section.astro';

interface Props {
  /** anchor of the section */
  id?: string;
  /** the section heading */
  title?: string;
  /** a paragraph under the heading */
  description?: string;
  /** cards per row on desktop */
  columns?: 1 | 2 | 3;
  /** background of the section (default "dark") */
  theme?: Theme;
}
const { id, title, description, columns = 2, theme = 'dark' } = Astro.props;
const cols = { 1: 'max-w-3xl mx-auto', 2: 'sm:grid-cols-2', 3: 'sm:grid-cols-2 lg:grid-cols-3' }[columns];
---

<Section id={id} title={title} description={description} theme={theme} heading="left">
  <ul class:list={['grid list-none grid-cols-1 gap-6', cols]} data-variant="grid">
    <slot />
  </ul>
</Section>

Source links point to engine-astro@7b686388. Samples are demo content: the components are the real ones, the copy and the pictures are made up.