Feature
One landing claim cell.
Six probe regions
Every check runs from three continents at once, so a regional blip never pages you.
Alerts that agree
An incident opens only when two regions see the outage, then routes to whoever is on call.
Latency, not just status
Track response time per region and publish it on your status page.
View code
<Feature.Grid columns={3}>
<Feature>
<Feature.Icon>
<GlobeIcon />
</Feature.Icon>
<Feature.Title>Six probe regions</Feature.Title>
<Feature.Description>
<p>Every check runs from <strong>three continents at once</strong>, so a regional blip never pages you.</p>
</Feature.Description>
</Feature>
<Feature>
<Feature.Icon>
<BellRingIcon />
</Feature.Icon>
<Feature.Title>Alerts that agree</Feature.Title>
<Feature.Description>
<p>An incident opens only when <strong>two regions see the outage</strong>, then routes to whoever is on call.</p>
</Feature.Description>
</Feature>
<Feature>
<Feature.Icon>
<GaugeIcon />
</Feature.Icon>
<Feature.Title>Latency, not just status</Feature.Title>
<Feature.Description>
<p>Track <strong>response time per region</strong> and publish it on your status page.</p>
</Feature.Description>
</Feature>
</Feature.Grid>Demo landings
Whole pages built only from @sdxc/ui, each for an invented product with its own palette and type. They open in a new tab.
- RooftreeRooftree keeps a household's groceries, chores, calendar and meals on one encrypted list that syncs across iPhone, Android, Mac and Windows./demo/app
- The MeasureA book and video course on web typography for designers and engineers: measure, rhythm, scale and fonts, with CSS for every chapter./demo/book
- KeelKeel meters every event your product emits, prices it on any plan and sends the invoice on the first of the month./demo/saas
Every demo, landings and docs sites alike, is listed in the demo gallery.
Installation
An ordinary dependency: install it, import the theme once, and import the component where it is used.
npm add @sdxc/ui remiximport "@sdxc/ui/theme.css";Usage
import { Feature } from "@sdxc/ui/landing";Renders one claim cell. Compose Feature.Media, Feature.Icon, Feature.Title, Feature.Description, and Feature.Action inside it.
Composition
The parts the component publishes, each a static property of the host.
FeatureFeature.IconGlyph tile that leads the claim, quiet by default.Feature.MediaIllustration at the top of the cell, bleeding past the cell padding and fading into the fill; hidden below themdcontainer.Feature.TitleClaim title at the ambient heading depth, sized for a feature cell.Feature.DescriptionSupporting copy under the claim title, with emphasis fragments in the heading ink.Feature.ActionTrailing action slot for a link or button under the claim body, pinned to the foot of the cell so the actions of cells sharing a grid row line up however long each claim's copy runs.Feature.LinkQuiet brand-coloured link with a trailing arrow, for a Feature.Action.Feature.GridGrid of Feature cells, as separate cards by default.
Examples
Icon list and mixed spans
View code
<Feature.Grid variant="list" columns={3}>
<Feature>
<Feature.Icon><GaugeIcon aria-hidden="true" /></Feature.Icon>
<Feature.Title>Probes from 12 regions</Feature.Title>
<Feature.Description>A failure pages only once two regions agree.</Feature.Description>
</Feature>
…
</Feature.Grid>
<Feature.Grid columns={3}>
<Feature span={2}>…</Feature>
<Feature>…</Feature>
<Feature>…</Feature>
<Feature span={2}>…</Feature>
</Feature.Grid>Props
Read from the component's own types, so every prop, every default and every allowed value is listed.
| Prop | Type | Required | Description |
|---|---|---|---|
span | 2 | 3 | No | Tracks the cell spans from the grid's widest step, for a grid of mixed spans; it spans the whole row where the grid has fewer tracks. Name the grid's outer corners with data-corner on the cells that hold them. |
variant | "plain" | "panel" | No | Cell chrome. Defaults to DEFAULT_VARIANT. |
href | string | No | Destination for the claim, exposed as data-href; the navigation itself is a Feature.Link inside Feature.Action, which makes the cell its hit target. |
children | RemixNode | Yes | Compound parts: Feature.Media, Feature.Icon, Feature.Title, Feature.Description, Feature.Action, or other content. |
Also accepts everything in TagProps<"div">.
Feature.Icon
| Prop | Type | Required | Description |
|---|---|---|---|
tone | "quiet" | "brand" | No | Tile chrome. Defaults to DEFAULT_ICON_TONE. |
children | RemixNode | Yes | Glyph rendered inside the tile. |
Also accepts everything in TagProps<"span">.
Feature.Media
| Prop | Type | Required | Description |
|---|---|---|---|
children | RemixNode | Yes | Illustration or screenshot drawn edge to edge at the top of the cell. |
Also accepts everything in TagProps<"div">.
Feature.Title
| Prop | Type | Required | Description |
|---|---|---|---|
children | RemixNode | Yes | Title copy for the claim. |
Also accepts everything in TagProps<"h1">.
Feature.Description
| Prop | Type | Required | Description |
|---|---|---|---|
children | RemixNode | Yes | Supporting copy for the claim; <strong> fragments render in the heading ink. |
Also accepts everything in TagProps<"div">.
Feature.Action
| Prop | Type | Required | Description |
|---|---|---|---|
children | RemixNode | Yes | Trailing link or button chrome for the claim. |
Also accepts everything in TagProps<"div">.
Feature.Link
Feature.Grid
| Prop | Type | Required | Description |
|---|---|---|---|
columns | Columns | No | Columns at the lg container. Defaults to DEFAULT_COLUMNS. |
variant | "cards" | "mosaic" | "list" | No | Grid chrome. Defaults to DEFAULT_GRID_VARIANT. |
children | RemixNode | Yes | Feature cells to lay out. |
Also accepts everything in TagProps<"div">.
Types
| Name | Values | What it decides |
|---|---|---|
Variant | "plain" | "panel" | Cell chrome: a light claim with no fill, or a panel when the cell itself is the interaction surface. |
GridVariant | "cards" | "mosaic" | "list" | Grid chrome: separate raised cards with larger outer corners, one mosaic box whose 1px gaps draw hairlines between flush cells, or an un-carded list whose cells set the icon beside the title and copy. |
IconTone | "quiet" | "brand" | Glyph tile: a quiet hairline ring in the heading ink, or a brand tinted and bordered badge. |