IntegrationCard
v1.0.19Updated 20 Oct 2026Tile representing a third-party integration (connect / configure / disconnect actions). Used in settings > integrations grids.
Preview
Live · 11 stories▸Why this is recommendedintegrationcardsettingsconnect+1
The default, out-of-the-box IntegrationCard.
- ✓Settings → integrations gallery
- ✓Marketplace tiles
- Logo + name + description
- Connection status badge
- Connect / configure button
- Tag chips
- Loading skeleton is an announced status region: role=status + aria-busy + labels.loading as its accessible name, with data-state=loading as a theme/e2e hook
- i18n (FB-18): labels prop overrides every built-in string; LocaleProvider localizes the last-sync relative time and synced-item counts
- Pass-through props (data-* and the rest) land on the root of EVERY branch — the populated tile and the loading skeleton — so an id an e2e or audit tool reads never disappears while the component is busy or has nothing to show. They are spread first, so they cannot overwrite the wiring the component sets itself (data-slot, the state roles, className, style, ref)
- ✕Inline list rows (use a Table row)
Install
Ask your agent, or call the MCP tool directly. The resolved bundle is written into your project.
Usage
Tick variants in the left menu — each adds a tab with that variant’s real story source, the same code the preview above renders.
Props
nameIntegration name
yesdescriptionShort description
—statusConnection status
—loadingRender the loading skeleton instead of the tile. The skeleton is an announced status region (role=status, aria-busy, named by labels.loading) and keeps every pass-through prop
—labelsOverride any built-in UI string (i18n), including labels.loading which names the loading skeleton for assistive tech; merged over English defaults exported as DEFAULT_INTEGRATION_CARD_LABELS
—...propsEvery remaining standard div attribute (data-* hooks, id, style, title, aria-*, handlers) is spread onto the card root in BOTH branches — populated and loading skeleton. The spread goes FIRST, so data-slot and data-status can never be clobbered (fb_5c6ffd6a)
—