Ship-It Designv0.0.21

GitHub

NotifRow

Single row in the mobile Inbox / notification list. Tone-colored unread dot on the left, title + body block in the middle, relative time on the right. Pair with isFirst / isLast so the row group rounds its outer corners like an iOS grouped list.

NotifRow is mobile-only — desktop notifications live inside the CommandPalette flyout. There is no desktop sibling.

Default#

Three rows in a single group: an error monitor, an ownership warning, and a successful deploy.

Loading…

Tones#

The unread dot color is driven by tone:

ToneUse for
errFiring monitors, failed deploys
warnOwnership gaps, drift, missing data
okSuccessful deploys, syncs, completions
neutral (default)Mentions, replies, generic activity

When unread is false the dot fades to border-strong so the read state is glanceable.

Linkable rows#

Pass href to render the row as an <a> instead of a <div> — the entire row becomes the tap target. Keyboard focus + a 3px focus ring are wired in.

Props#

Props for NotifRow
PropTypeDefaultDescription
title *ReactNode—Bold first-line summary.
bodyReactNode—One-line body underneath. Truncates to a single line for now.
timeReactNode—Right-aligned relative time string (e.g. `9:32`, `Mon`).
dateTimestring | Date | undefined—Machine-readable ISO 8601 string or `Date` for the notification's timestamp. When set, the visible `time` is wrapped in `<time dateTime="…">` so the row is crawlable / AI-readable.
toneenumneutralColoring of the unread dot.
unreadboolean | undefined—When true, render the unread dot.
isFirstboolean | undefined—Round the top corners — set when this is the first row in a group.
isLastboolean | undefined—Round the bottom corners — set when this is the last row in a group.
hrefstring | undefined—Navigate when the row is tapped. Renders the row as an `<a>` and wins over `onClick` for the render shape — but any `onClick` you pass is still forwarded onto the anchor, which is the right place for analytics callbacks (the link still navigates).