About Team Grid
Avatar cards with name, role, short bio and social links.
6 个框架中级
Founding narrative beside a portrait, with a founding-year callout.
<!--
The narrative is real <p> elements, not one blob with <br> between paragraphs:
a screen reader can jump paragraph by paragraph, and a translator gets units
that make sense.
The founding-year callout is an <aside> - it is genuinely tangential to the
prose beside it, which is exactly what the element is for. Its year is a real
text node inside a <p>, not a background image or a ::before, so it can be
read, copied and translated like any other fact on the page.
The portrait's alt is empty because the caption underneath names the person.
Filling both in makes a screen reader say the name twice in a row.
-->
<section class="abt-story" aria-labelledby="abt-story-title">
<div class="abt-story__copy">
<p class="abt-story__kicker">Our story</p>
<h2 class="abt-story__title" id="abt-story-title">We started with one stubborn question</h2>
<p class="abt-story__text">
Why does software that costs a fortune so often ship late and please nobody? We had both
spent a decade inside teams that could not answer it, so in 2019 we left to find out.
</p>
<p class="abt-story__text">
The answer turned out to be unglamorous. Teams were not short of talent or tools - they
were short of a decision-making habit. So that is what we build with our clients now,
and the software is what falls out of it.
</p>
<aside class="abt-story__callout">
<p class="abt-story__year">2019</p>
<p class="abt-story__year-label">Founded in Bristol, two people and one contract</p>
</aside>
</div>
<figure class="abt-story__figure">
<img class="abt-story__image" src="/promo/all-access.svg" alt="" width="480" height="600" />
<figcaption class="abt-story__caption">Priya Raman and Tom Ashcroft, founders</figcaption>
</figure>
</section>| Prop | 类型 | 默认值 | 说明 |
|---|---|---|---|
kicker | string | - | 显示在标题上方的小标签。 |
title必填 | string | - | 卡片的标题文本。 |
paragraphs必填 | string[] | - | 正文内容,每段一个字符串。 |
foundingYear | string | - | 故事开始的年份。 |
foundingLabel | string | - | 创立年份下方的一行简短说明,用于补充背景。 |
imageSrc必填 | string | - | 卡片配图的图片 URL。 |
imageAlt | string | '' | 图片的替代文本。若 title 已说明图片内容则留空。 |
caption | string | - | 描述该图内容的说明文字。 |
className | string | - | 合并到根元素上的额外类名。 |
The narrative is one string per paragraph rendered as real `<p>` elements - never one blob split by `<br>`, which gives a screen reader nothing to jump between and a translator no units that make sense. `max-w-prose` holds the measure even as the column widens, which is why the portrait takes the 5fr side of a 7fr/5fr split rather than half the page. The founding-year callout is an `<aside>` because it is genuinely tangential to the prose beside it, and it wears a left rule rather than a card so it stays a note instead of being promoted into a competing block. The portrait's `alt` is empty on purpose: the caption underneath names the founders, and filling both in makes a screen reader say the names twice in a row.