Skip to components
Gemba / Components

Gemba

Components Library

Preview components and copy Markdown or MDX examples for pages, blogs and case studies.

AaMarkdown first.

Write ordinary content in Markdown. Reach for a component when the structure needs one.

A quick guide
Markdown or MDX? Start here.

For everyday writing

.md and .mdx both support headings, paragraphs, lists, links, quotes, images and tables. Use native Markdown for these. The Typography group includes a Markdown example that needs no imports.

For a little more structure

.mdx supports the named components below in regular pages, case studies and blogs. Copy the complete snippet, keep its imports below your frontmatter, then edit the words. .md files do not run these components.

Keep the content readable

Keep blank lines around Markdown inside components. Choose headings that fit the page. Do not add inline styles or classes to editorial content.

Browse the library

Components

40 examples

Reading previews are capped at 640px; wide previews use the available space. Both adapt to your screen.

01

Typography

Markdown

Headings, paragraphs, lists and links in the website’s typography.

Markdown

Start with a shared question

What would make work clearer for the people doing it?

Begin with what you can observe. Leave room for different perspectives, then choose a useful next step.

  • Listen to the people closest to the work.
  • Make the current situation visible.
  • Try one change and reflect on what happens.

Keep the conversation moving

  1. Agree what you want to understand.
  2. Choose a small experiment.
  3. Decide when to review it.

Explore how we work.

Written in Markdown with no imports. The preview shows the site’s text styles; use it in .md or .mdx.

View Markdown
## Start with a shared question

What would make work **clearer** for the people doing it?

Begin with what you can observe. Leave room for *different perspectives*, then choose a useful next step.

- Listen to the people closest to the work.
- Make the current situation visible.
- Try one change and reflect on what happens.

### Keep the conversation moving

1. Agree what you want to understand.
2. Choose a small experiment.
3. Decide when to review it.

[Explore how we work](/services/).

Surface

The same Markdown elements on a coloured surface.

MDX

A little space for the words

The surface groups related writing while the content stays in Markdown.

  • Use headings to show the structure.
  • Keep links descriptive.
  • Give each paragraph a clear purpose.

Explore our services.

Use when related text needs a shared surface. Choose paper, purple-hour or flow. Headings, paragraphs, lists and links stay in Markdown; prose without a surface needs no component.

View MDX and imports
import Prose from '@components/content/Prose.astro';

<Prose surface="paper">

### A little space for the words

The surface groups related writing while the content stays in **Markdown**.

- Use headings to show the structure.
- Keep links descriptive.
- Give each paragraph a clear purpose.

[Explore our services](/services/).

</Prose>
02

Introduction and columns

An introduction followed by two columns of content.

MDX
Page layout

A heading and introduction

Use a heading and a short paragraph to introduce this part of the page. Keep the main point clear before adding more detail.

First column

Place one related idea in each column.

Second column

On smaller screens, the columns stack in the same reading order.

LeadText provides the introductory label; Columns and Column arrange the content below it. The example uses the surrounding page’s spacing. Compact columns stack when the available width is narrow.

View MDX and imports
import Columns from '@components/columns/columns.astro';
import Column from '@components/column/column.astro';
import LeadText from '@components/lead-text/lead-text.astro';

<LeadText>Page layout</LeadText>

### A heading and introduction

Use a heading and a short paragraph to introduce this part of the page. Keep the **main point** clear before adding more detail.

<Columns compact>

<Column>

#### First column

Place one related idea in each column.

</Column>

<Column>

#### Second column

On smaller screens, the columns stack in the same reading order.

</Column>

</Columns>
03

Section

Give a related idea its own space.

MDX

A moment to reflect.

Look at the trail so far. What have you learned, and what would help you choose the next step?

  • Keep what is helping.
  • Explore what needs to change.

Choose paper, purple-hour or flow. Match titleLevel to the surrounding headings; use display only for a prominent section title.

View MDX and imports
import Section from '@components/content/Section.astro';

<Section title="A moment to reflect." titleLevel={3} surface="purple-hour" display>

Look at the trail so far. What have you learned, and what would help you choose the next step?

- Keep what is helping.
- Explore what needs to change.

</Section>
04

Columns

Compare two ideas without making readers jump around.

MDX

What we see

Work waits between teams. The handovers are difficult to see.

What we could try

Map one piece of work together, from the first request to the final outcome.

Use compact for content that must stack within a narrow column. Keep the reading order meaningful when the columns stack.

View MDX and imports
import Columns from '@components/columns/columns.astro';
import Column from '@components/column/column.astro';
import Section from '@components/content/Section.astro';

<Columns compact>
  <Column>
    <Section title="What we see" titleLevel={3}>

Work waits between teams. The handovers are difficult to see.

    </Section>
  </Column>
  <Column>
    <Section title="What we could try" titleLevel={3}>

Map one piece of work together, from the first request to the final outcome.

    </Section>
  </Column>
</Columns>
05

Cards

Group a small set of related next steps.

MDX

Understand the work

Find out how we help teams see their options more clearly.

Explore our services

Start a conversation

Bring a question about your team, your work or what comes next.

Talk to Gemba

Keep each card focused. Use a descriptive Markdown link inside the card, rather than nesting links inside a clickable card.

View MDX and imports
import Columns from '@components/columns/columns.astro';
import Column from '@components/column/column.astro';
import Card from '@components/card/card.astro';

<Columns compact>
  <Column>
    <Card surface="paper">

### Understand the work

Find out how we help teams see their options more clearly.

[Explore our services](/services/)

    </Card>
  </Column>
  <Column>
    <Card surface="flow">

### Start a conversation

Bring a question about your team, your work or what comes next.

[Talk to Gemba](/contact/)

    </Card>
  </Column>
</Columns>
06

Callout

Highlight a useful note without interrupting the flow.

MDX

Use sparingly for context readers need. This is an editorial note, not a live error or urgent alert.

View MDX and imports
import Callout from '@components/content/Callout.astro';

<Callout title="Leave room for different views" titleLevel={3}>

A shared conversation does not require everyone to have the same experience. Record **what differs** as well as what the team agrees on.

</Callout>
07

Quote

Markdown

A blockquote written entirely in Markdown.

Markdown

Make space to understand the work before deciding what to change.

An illustrative reflection, written as a native Markdown blockquote.

Works in .md and .mdx. This is an illustrative reflection. Use the attributed Quote component when the source needs structured credit.

View Markdown
> Make space to understand the work before deciding what to change.

An illustrative reflection, written as a native Markdown blockquote.

Attributed

A quotation with a clear attribution.

MDX

We can see where work waits. Our next step is to understand why.

Illustrative workshop reflection

Use the Markdown variant when no attribution structure is needed. Verify permission and the exact words before adding a real quote.

View MDX and imports
import Quote from '@components/content/Quote.astro';

<Quote attribution="Illustrative workshop reflection">

We can see where work waits. Our next step is to understand why.

</Quote>
08

Table

Markdown

A small table written entirely in Markdown.

Markdown
FocusNext step
ListenInvite different views
LearnTry one small change
ReflectReview what happened

Works in .md and .mdx with no imports. Use the Scrollable variant for wider tables in MDX.

View Markdown
| Focus | Next step |
| --- | --- |
| Listen | Invite different views |
| Learn | Try one small change |
| Reflect | Review what happened |

Scrollable

A Markdown table with a label and room to scroll.

MDX
An example experiment plan
QuestionSmall experimentReview
Where does work wait?Map one request togetherAfter the next delivery
Are priorities clear?Agree a single ordered listAt the next team check-in
What helps us learn?Record one observation each dayAt the next reflection

The table itself remains Markdown. The wrapper adds a labelled, keyboard-focusable scroll area on narrow screens. Keep cells concise.

View MDX and imports
import Table from '@components/content/Table.astro';

<Table caption="An example experiment plan">

| Question | Small experiment | Review |
| --- | --- | --- |
| Where does work wait? | Map one request together | After the next delivery |
| Are priorities clear? | Agree a single ordered list | At the next team check-in |
| What helps us learn? | Record one observation each day | At the next reflection |

</Table>
09

Figure

Caption

An image with a caption that adds context.

MDX
Rocky mountain landscape with a glowing trail beneath an open sky
A little perspective can help us choose the next step.

Use ordinary Markdown for an image without a caption. Supply meaningful alt text and the image’s actual width and height.

View MDX and imports
import Figure from '@components/content/Figure.astro';

<Figure
  src="/images/background-home.avif"
  alt="Rocky mountain landscape with a glowing trail beneath an open sky"
  width={3840}
  height={1918}
  caption="A little perspective can help us choose the next step."
/>

Full-size link

Keep a diagram readable in the page, with a link to its full-size image.

MDX
Diagram connecting a long-term product goal and strategic roadmap to quarterly objectives, key results, a product backlog and sprint goals.
From strategy to delivery: connect the product goal to the work of each sprint. View full size

Set fullSizeSrc on Figure to add View full size. This is an ordinary link in the same tab; use Back to return. Keep a useful caption, alternative text and the actual image dimensions.

View MDX and imports
import Figure from '@components/content/Figure.astro';

<Figure
  src="/images/blog/get-started-with-okrs/strategy-to-delivery.webp"
  fullSizeSrc="/images/blog/get-started-with-okrs/strategy-to-delivery.webp"
  alt="Diagram connecting a long-term product goal and strategic roadmap to quarterly objectives, key results, a product backlog and sprint goals."
  width={1575}
  height={998}
  caption="From strategy to delivery: connect the product goal to the work of each sprint."
/>
10

Statistics

Default

Large numbers with labels, in a layout that adapts to its container.

MDX

An illustrative workshop plan.

  • 1 shared question
  • 2 perspectives to explore
  • 3 possible experiments
  • 4 weeks until reflection

Omit surface for this appearance. The Surface variant below adds a framed background. These numbers illustrate a workshop plan.

View MDX and imports
import Stats from '@components/stats/stats.astro';

An **illustrative workshop plan**.

<Stats items={[
  { value: '1', label: 'shared question' },
  { value: '2', label: 'perspectives to explore' },
  { value: '3', label: 'possible experiments' },
  { value: '4', label: 'weeks until reflection' },
]} />

Surface

A few numbers with labels that explain them.

MDX
  • 1 shared question
  • 2 small experiments
  • 3 weeks to reflect

Set surface to paper, purple-hour or flow. These planning numbers are illustrative; replace them with your own figures and context.

View MDX and imports
import Stats from '@components/stats/stats.astro';

<Stats surface="paper" items={[
  { value: '1', label: 'shared question' },
  { value: '2', label: 'small experiments' },
  { value: '3', label: 'weeks to reflect' }
]} />
11

Team profiles

Names, roles and profile images in a responsive grid.

MDX

These illustrative roles use the same sample image.

  • Example facilitator Example facilitator Helps the conversation move forward
  • Example team member Example team member Brings experience of the work
  • Example sponsor Example sponsor Helps remove barriers

These are example roles using the existing sample image. Replace the names, roles and images with your team’s details. Images are optional; profiles wrap to fit the available width.

View MDX and imports
import Team from '@components/team/team.astro';

These **illustrative roles** use the same sample image.

<Team members={[
  { name: 'Example facilitator', role: 'Helps the conversation move forward', image: '/images/image-test.avif' },
  { name: 'Example team member', role: 'Brings experience of the work', image: '/images/image-test.avif' },
  { name: 'Example sponsor', role: 'Helps remove barriers', image: '/images/image-test.avif' },
]} />
12

FAQ

An expandable question-and-answer list with text answers.

MDX
  • Where could we start?

    Choose one question about the work and invite the people closest to it.

  • What should we bring?

    Bring a recent example, the questions it raises and room for different perspectives.

  • What happens afterwards?

    Agree one small experiment and a time to review what you learn.

FAQ accepts text question and answer strings. Use Disclosure below when an answer needs Markdown lists, emphasis or links. Both work without JavaScript.

View MDX and imports
import FAQ from '@components/faq/faq.astro';

<FAQ items={[
  { question: 'Where could we start?', answer: 'Choose one question about the work and invite the people closest to it.' },
  { question: 'What should we bring?', answer: 'Bring a recent example, the questions it raises and room for different perspectives.' },
  { question: 'What happens afterwards?', answer: 'Agree one small experiment and a time to review what you learn.' },
]} />
13

Disclosure

Keep an optional answer close to the question.

MDX
What should we bring to the conversation?

Bring a real example of work you want to understand.

  • A question the team keeps coming back to.
  • An example of a handover or delay.
  • A change you would like to try.

Get in touch if you would like help choosing a starting point.

Use for supporting detail, never the only copy of essential information. The native control works with keyboard and without JavaScript.

View MDX and imports
import Disclosure from '@components/content/Disclosure.astro';

<Disclosure title="What should we bring to the conversation?">

Bring a real example of work you want to understand.

- A question the team keeps coming back to.
- An example of a handover or delay.
- A change you would like to try.

[Get in touch](/contact/) if you would like help choosing a starting point.

</Disclosure>
14

Steps

Explain a short sequence with room for context.

MDX
  1. Look together

    Choose one part of the work and listen to the people closest to it.

  2. Try something small

    Make one change that helps you learn, with a clear question in mind.

  3. Pause and reflect

    Review what happened. Decide what to keep, adapt or stop.

Prefer a normal numbered Markdown list for simple instructions. Use this when each step needs its own heading and paragraph.

View MDX and imports
import Steps from '@components/content/Steps.astro';
import Step from '@components/content/Step.astro';

<Steps label="A small learning cycle">
  <Step title="Look together" titleLevel={3}>

Choose one part of the work and listen to the people closest to it.

  </Step>
  <Step title="Try something small" titleLevel={3}>

Make one change that helps you learn, with a clear question in mind.

  </Step>
  <Step title="Pause and reflect" titleLevel={3}>

Review what happened. Decide what to keep, adapt or stop.

  </Step>
</Steps>
15

Call to action

Give readers one clear place to go next.

MDX

Where could we start?

Bring the question you are working through. We can explore it together.

Start a conversation

Action is a link for navigation. Use an ordinary Markdown link for an inline reference; a form action needs a real button in its own component.

View MDX and imports
import Section from '@components/content/Section.astro';
import Action from '@components/content/Action.astro';

<Section title="Where could we start?" titleLevel={3} surface="flow" display>

Bring the question you are working through. We can explore it together.

<Action href="/contact/" label="Start a conversation" />

</Section>
16

Key takeaways

A short summary of what readers should take away.

MDX

Write a concise Markdown list. Use this for a summary of the article or section; a Callout is better for a single supporting note.

View MDX and imports
import Takeaways from '@components/content/Takeaways.astro';

<Takeaways title="Keep the next step small">

- Start with **one shared question**.
- Listen for different experiences of the same work.
- Choose a change you can learn from, then agree when to review it.

</Takeaways>
17

Timeline

Milestones with clear time labels and space for what happened.

MDX
  1. Listen together

    Choose one part of the work to understand. Collect observations from the people involved.

  2. Try a small change

    Agree a simple experiment and what you want to learn from it.

  3. Review what happened

    Compare your observations. Decide what to keep, adapt or stop.

Use meaningful dates or phase labels. Supply dateTime only for an actual machine-readable date. These are illustrative stages, not a client delivery claim.

View MDX and imports
import Timeline from '@components/content/Timeline.astro';
import Milestone from '@components/content/Milestone.astro';

<Timeline label="An illustrative three-week learning plan">
<Milestone title="Listen together" label="6 January 2027" dateTime="2027-01-06">

Choose one part of the work to understand. Collect observations from the people involved.

</Milestone>
<Milestone title="Try a small change" label="13 January 2027" dateTime="2027-01-13">

Agree a simple experiment and **what you want to learn** from it.

</Milestone>
<Milestone title="Review what happened" label="20 January 2027" dateTime="2027-01-20">

Compare your observations. Decide what to keep, adapt or stop.

</Milestone>
</Timeline>
18

Comparison

Compare a starting point with a possible next step.

MDX

Before: a broad concern

“There are too many delays” is difficult to act on without a shared example.

  • Different people may mean different things.
  • The next step is unclear.

After: a question to explore

“Where did this request wait?” gives the team something specific to examine.

  • Look at one real piece of work.
  • Choose one handover to understand together.

Keep the panels parallel and label them clearly. The example is illustrative; describe verified outcomes separately from proposed changes.

View MDX and imports
import Comparison from '@components/content/Comparison.astro';
import ComparisonPanel from '@components/content/ComparisonPanel.astro';

<Comparison label="An illustrative change to a team conversation" surface="purple-hour">
<ComparisonPanel title="Before: a broad concern">

“There are too many delays” is difficult to act on without a shared example.

- Different people may mean different things.
- The next step is unclear.

</ComparisonPanel>
<ComparisonPanel title="After: a question to explore">

“Where did this request wait?” gives the team something specific to examine.

- Look at one real piece of work.
- Choose one handover to understand together.

</ComparisonPanel>
</Comparison>
19

Facts

A compact set of labelled facts with Markdown values.

MDX
Time

One hour, with a clear question to explore.

People

The people who do the work and experience its handovers.

Outcome

One small experiment and a time to review it.

Use for a project brief or useful context. Labels and values remain paired when the grid stacks; keep labels short and facts accurate.

View MDX and imports
import Facts from '@components/content/Facts.astro';
import Fact from '@components/content/Fact.astro';

<Facts label="An example workshop at a glance">
<Fact label="Time">

One hour, with a clear question to explore.

</Fact>
<Fact label="People">

The people who do the work and experience its handovers.

</Fact>
<Fact label="Outcome">

**One small experiment** and a time to review it.

</Fact>
</Facts>
20

Checklist

A readable checklist for preparation or a review.

MDX

Before a team conversation

Use these prompts to prepare together.

  • Agree the question you want to explore.
  • Bring a recent example of the work.
  • Invite the people whose perspectives you need.
  • Leave time to choose a next step.

This is a static guidance list, not a form or a saved record of completion. Write each item in Markdown; use a real form when people need to submit answers.

View MDX and imports
import Checklist from '@components/content/Checklist.astro';

<Checklist title="Before a team conversation" surface="flow">

Use these prompts to prepare together.

- Agree the question you want to explore.
- Bring a recent example of the work.
- Invite the people whose perspectives you need.
- Leave time to choose a next step.

</Checklist>
21

Resource links

Useful links with a description of what readers will find.

MDX

Use descriptive titles and valid links. Metadata can identify a resource type; it does not add a download or tracking system. Links open normally in the same tab.

View MDX and imports
import Resources from '@components/content/Resources.astro';
import Resource from '@components/content/Resource.astro';

<Resources label="Explore more with Gemba">
<Resource title="Explore our services" href="/services/" meta="Gemba website">

See the areas where we work with teams and organisations.

</Resource>
<Resource title="Start a conversation" href="/contact/" meta="Contact Gemba">

Bring a question about your team, your work or what comes next.

</Resource>
</Resources>
22

Glossary

Terms paired with short definitions written in Markdown.

MDX
Observation

Something you noticed in the work. Separate what happened from your interpretation of why it happened.

Experiment

A small change made to answer a specific question, with a way to notice what happens.

Review

A conversation about what you learned and what to do next. Different views can help reveal what you have missed.

Define unfamiliar language close to where readers need it. This is a semantic definition list, with all explanations visible without interaction.

View MDX and imports
import Glossary from '@components/content/Glossary.astro';
import Term from '@components/content/Term.astro';

<Glossary label="Words for a learning conversation">
<Term name="Observation">

Something you noticed in the work. Separate what happened from your interpretation of why it happened.

</Term>
<Term name="Experiment">

A small change made to answer **a specific question**, with a way to notice what happens.

</Term>
<Term name="Review">

A conversation about what you learned and what to do next. Different views can help reveal what you have missed.

</Term>
</Glossary>
23

Image and text

Pair an image and optional caption with a Markdown explanation.

MDX
Rocky mountain landscape with a glowing trail beneath an open sky
Make space to look beyond the next step.

Make room for perspective

Pausing together can help a team see more than its immediate tasks.

  • What has changed around the work?
  • What are you learning from the people it affects?
  • What would help you choose the next step?

Find out about Gemba.

Supply meaningful alternative text and actual image dimensions. The image and text stack in the same reading order on narrow screens. Use Figure for an image and caption alone.

View MDX and imports
import Media from '@components/content/Media.astro';

<Media
  src="/images/background-home.avif"
  alt="Rocky mountain landscape with a glowing trail beneath an open sky"
  width={3840}
  height={1918}
  caption="Make space to look beyond the next step."
>

### Make room for perspective

Pausing together can help a team see more than its immediate tasks.

- What has changed around the work?
- What are you learning from the people it affects?
- What would help you choose the next step?

[Find out about Gemba](/about/).

</Media>
24

Hero

Page

A prominent introduction with an optional background image and link.

MDX

Make room for a useful question

An illustrative introduction with room for a short explanation and one clear next step.

Start a conversation

Use contained inside articles or other narrow parents, and set titleLevel to fit the document. Full-page defaults use H1; size supports default, small, medium and full. Descriptive body copy can remain Markdown in the slot.

View MDX and imports
import HeroBanner from '@components/hero-banner/hero-banner.astro';

<HeroBanner title="Make room for a useful question" titleLevel={3} image="/images/background-home.avif" ctaText="Start a conversation" ctaLink="/contact/" contained>

An illustrative introduction with room for **a short explanation** and one clear next step.

</HeroBanner>

Article

A publication date, title and image for an article introduction.

MDX
01 November 2026

An illustrative article introduction

A short introduction can help readers understand the question an article explores.

Rocky mountain landscape with a glowing trail beneath an open sky

Use contained and an appropriate titleLevel when embedding this within content. The page-level default uses H1 and page spacing. Supply a valid date, image and meaningful alternative text.

View MDX and imports
import BlogHero from '@components/blog-hero/blog-hero.astro';

<BlogHero title="An illustrative article introduction" titleLevel={3} date="2026-11-01" thumbnail="/images/background-home.avif" alt="Rocky mountain landscape with a glowing trail beneath an open sky" contained>

A short introduction can help readers understand the question an article explores.

</BlogHero>

Case study

Introduce a project with its image, context and summary.

MDX

An illustrative project summary

Use this structure to introduce a project and its context. This example demonstrates the layout; it does not describe a client engagement or result.

Client

Illustrative organisation

Industry

Example context

Timeline

Example: four weeks

Services

An illustrative learning session

The example is illustrative, not a client engagement. Use contained inside content and titleLevel to fit surrounding headings; metadata headings follow one level below. Keep the summary in the Markdown slot, or supply description as text.

View MDX and imports
import CaseStudyHero from '@components/case-study-hero-banner/case-study-hero-banner.astro';

<CaseStudyHero
  title="An illustrative project summary"
  titleLevel={3}
  client="Illustrative organisation"
  industry="Example context"
  timeline="Example: four weeks"
  services={['An illustrative learning session']}
  image="/images/background-home.avif"
  contained
>

Use this structure to introduce a project and its context. This example demonstrates the layout; it does not describe a client engagement or result.

</CaseStudyHero>
25

Testimonials

Attributed reflections presented as a responsive group of cards.

MDX

These are illustrative reflections, not client endorsements.

  • We can see where work waits. The next step is to understand why.
    Illustrative reflection Example content, not a client quote
  • A shared question gives us somewhere useful to begin.
    Illustrative reflection Example content, not a client quote

The sample reflections are explicitly illustrative. Supply approved items with quote, name and position; omitting items uses the stored website testimonials. Use contained for parent-width wrapping. Verify permission and wording before publishing a real endorsement.

View MDX and imports
import Testimonials from '@components/testimonials/testimonials.astro';

These are **illustrative reflections**, not client endorsements.

<Testimonials contained items={[
  { quote: 'We can see where work waits. The next step is to understand why.', name: 'Illustrative reflection', position: 'Example content, not a client quote' },
  { quote: 'A shared question gives us somewhere useful to begin.', name: 'Illustrative reflection', position: 'Example content, not a client quote' }
]} />
26

Client logos

The website’s stored client-logo collection in a wrapping list.

MDX
  • Toyota Logo
  • BP Logo
  • Funding Circle Logo
  • William Hill Logo
  • Sky Bet Logo
  • Wejo Logo
  • DAZN Logo
  • Sky Logo

This example loads the approved central collection rather than inventing client relationships. Update logo records in the shared data source only when their use is approved. Keep the surrounding background dark so the supplied artwork remains visible.

View MDX and imports
import ClientList from '@components/client-list/client-list.astro';

<ClientList />
27

Accreditations

The website’s stored accreditation artwork and accompanying text.

MDX

Recognised by

We are proud to be accredited by leading industry bodies

This uses the approved central collection. The contained variant wraps to its parent width and remains static; it does not introduce a moving carousel. Keep the supplied artwork on a dark background and verify accreditation claims before changing the stored records.

View MDX and imports
import Accreditations from '@components/accreditations/accreditations.astro';

<Accreditations contained />
28

Image divider

A cropped image that separates sections of a page.

MDX
Rocky mountain landscape with a glowing trail beneath an open sky

Use contained inside article and case-study text so the image stays within its parent. The full-page default extends beyond its container. Supply meaningful alternative text, or an empty alt only when the image is purely decorative.

View MDX and imports
import DividerImage from '@components/divider-image/divider-image.astro';

<DividerImage image="/images/background-home.avif" alt="Rocky mountain landscape with a glowing trail beneath an open sky" contained />
29

Service links

Prominent links from the website’s shared service collection.

MDX

Use contained within a narrow content area. The component reads the approved service titles and destinations from the shared data source; edit that source when services change.

View MDX and imports
import ServiceList from '@components/service-list/service-list.astro';

<ServiceList contained />
33

Reveal text

A short statement that reveals as you scroll, with a readable static fallback.

MDX

See the work. Make space for different perspectives. Choose one small step forward, together.

Use sparingly: the animated version deliberately takes a full scrolling section. Reduced-motion settings and browsers without scroll-animation support receive static readable text. The text prop is text.

View MDX and imports
import RevealText from '@components/reveal-text/reveal-text.astro';

<RevealText text="See the work. Make space for different perspectives. Choose one small step forward, together." />