# ChangelogStrip

> A "what's new" strip: recent releases as dated entries on one continuous hairline, each marked by a dot on the rule.

```ts
import { ChangelogStrip } from "@sdxc/ui/landing";
```

Renders recent releases as an ordered list on one hairline. The column count comes from
the entry count (see changelogColumns); below the first grid step the list is a
snapping sideways row of ~80% wide entries that scrolls inside its own box.

## Examples

```tsx
<ChangelogStrip title={t("changelog.title")} action={<a href="/changelog">{t("changelog.all")}</a>}>
	<ChangelogStrip.Entry dateTime="2026-10-28" date="Oct 28" title={t("cl.status")} href="/changelog/status">
		{t("cl.status.body")}
	</ChangelogStrip.Entry>
</ChangelogStrip>
```

## Props

| Prop | Type | Description |
| --- | --- | --- |
| `title?` | `RemixNode` | Optional heading over the row, at the level of the surrounding heading scope. |
| `action?` | `RemixNode` | Optional link beside the title, such as "View all →". |
| `"aria-label"?` | `string` | Accessible name for the list when there is no visible title. |
| `children` | `RemixNode` | Two or more ChangelogStrip.Entry children, newest first. |

Also accepts everything in `Omit<TagProps<"div">, "title">`.


### ChangelogStrip.Entry

One release: a dot on the rule, the date in mono, the title, and a two-line summary.

| Prop | Type | Description |
| --- | --- | --- |
| `dateTime` | `string` | Machine-readable release date (`YYYY-MM-DD`), written to `<time dateTime>`. |
| `date` | `RemixNode` | Date as the reader sees it, such as "Oct 28, 2026". |
| `title` | `RemixNode` | Release title. |
| `href?` | `string` | Release page; when set, the whole entry is one link. |
| `children?` | `RemixNode` | Summary, clamped to two lines. |

Also accepts everything in `Omit<TagProps<"li">, "title">`.

