Horizontal card-strip engine that serves as a single source of truth for marquee/chevron/seam/measure behavior across all strip surfaces. Supports two input modes: render-prop (`items` + `renderCard`) for full control, and children (organic JSX) for zero-registration card composition. ## Key Components - **`CardsStrip`** — Primary export. Generic component accepting either render-prop mode (Mode A) or children mode (Mode B). - **`ManagedCell`** — Internal cell wrapper for children mode; handles fixed widths, hover/keyboard activation, and clone a11y (`aria-hidden` + focus suppression via `useSuppressCloneFocus`). - **`CardStripRenderCtx`** — Context interface passed to `renderCard`; exposes activation callbacks, clone flag, touch/mobile state, and a shared near-viewport mount gate. - **`CardsStripProps`** — XOR-discriminated union of `CardsStripEngineProps & (RenderCardMode | ChildrenMode)`. - **`STRIP_CELL_MAX_WIDTH`** — Exported constant (`'90vw'`) shared with card components for consistent sizing. ## Usage Example **Mode A — render-prop:** ```typescript item.id} renderCard={(item, ctx) => ( )} title="Video Bites" autoScrollSpeed={60} /> ``` **Mode B — children (organic):** ```typescript {tools.map((tool) => ( ))} ``` > **Children mode warning:** Pass an array of elements — a single `` wrapping all cards becomes one giant cell. Effects and DOM IDs in children must be clone-safe when `autoScroll` is enabled. ## Source [`cards-strip.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/cards-strip.tsx)