import React from 'react' /** * Shared layout used by every per-type `MessageAttachment` story — * three columns (Composer / Sent / Received) on a tinted page so the * dark sender bubbles read against a softer surface and the light * received bubbles still pop. Mirrors the layout the existing * `LinkAttachment` and `MediaMessage` stories use. */ export const StoryPage: React.FC<{ children: React.ReactNode }> = ({ children, }) =>
{children}
export const StoryHeading: React.FC<{ title: string description?: string }> = ({ title, description }) => (

{title}

{description ? (

{description}

) : null}
) const ColumnHeader: React.FC<{ children: React.ReactNode }> = ({ children, }) => (

{children}

) export interface StoryRowProps { label: string /** Omit `composer` to leave the column blank — used by stacked * Image/Video rows since the composer surface only ever shows a * single attachment (no stacked previews in the composer). */ composer?: React.ReactNode sent: React.ReactNode received: React.ReactNode } export const StoryRow: React.FC = ({ label, composer, sent, received, }) => (

{label}

{composer ?? null}
{sent}
{received}
) export const StoryGrid: React.FC<{ children: React.ReactNode }> = ({ children, }) => (
Composer Sent Received
{children}
)