Skip to content

SiteSplit

Media beside text from 1000px, stacked (media first) below. The parts of a landing feature section; with IllustrationFrame and Kicker.

LayoutServer-rendered

Examples

An illustration beside a sub-heading and text

Your agent's cable is re-patched from build A (local) to build B (staging); their two answers appear side by side with the one changed line marked.
Example caption under a hairline.
For server builders

Bare paragraphs in the text column get body style. Put a sub-heading, a Terminal or a CodeBlock here too.

Example
<SiteSplit ratio="text" align="start" media={<IllustrationFrame><ABSwitchIllustration /></IllustrationFrame>}>
  <Heading level={3} size="xl">Same call, two builds, one diff</Heading>
  <p>…</p>
  <Terminal lines={…} />
</SiteSplit>

IllustrationFrame with a control under it

Several upstream MCP servers are cabled into one Switchboard plate, and a single cable runs from it to your agent.

A CopyField of the MCP URL goes here on the landing hero.

Example
<IllustrationFrame foot={<CopyField value={mcpUrl} label="Your agents connect here" />}>
  <AggregateIllustration />
</IllustrationFrame>

Usage

Usage
import { SiteSplit, IllustrationFrame, Kicker } from '@switchboard/ui'

<SiteSplit media={…} reverse? ratio?="even|media|text" align?="center|start">…</SiteSplit>

Props

Every component also takes mix, for css() and mixins applied after its own style.

SiteSplit

SiteSplit props
PropTypeDefaultDescription
media*RemixNode–The visual. First on phones.
childrenRemixNode–The text column, stacked with a gap.
reverseboolean–From 1000px, put the media on the right.
ratio'even' | 'media' | 'text''even'Which column is wider (7:5) from 1000px; follows the column with reverse.
align'center' | 'start''center'Vertical alignment; use start when the text column is much taller.

Also accepts every <div> attribute.

IllustrationFrame

IllustrationFrame props
PropTypeDefaultDescription
children*RemixNode–One illustration; it names itself (role="img").
captionRemixNode–A sentence under it (figcaption).
footRemixNode–A control under the illustration.

A <figure>.

Kicker

Kicker props
PropTypeDefaultDescription
children*RemixNode–Who or what the section is for, sentence case.

Accessibility

  • DOM order is media then text; reverse only changes the visual order from 1000px, and the media is decorative or self-named.
  • IllustrationFrame takes its height from the SVG viewBox, so animation never shifts layout.

Guidance

Do

  • Alternate reverse between consecutive splits.
  • Keep one moving illustration in view at a time.

Don’t

  • Put a Kicker above every heading: only where it says who a section is for.