/** One row of sign-in device history rendered by SignInActivityTable. */ export type SignInDevice = { /** Falls back to "—" when falsy; device and activity below don't — a blank one renders as an empty cell, not a dash. */ browser: string; /** Free text such as "MacBook Pro"; a blank value renders an empty cell. */ device: string; /** Shown verbatim, e.g. "2 hours ago"; the component never formats dates. */ activity: string; }; /** * All user-facing strings. Provide translated values from the host app; every * key has a sensible English default so the component works standalone. */ export type SignInActivityLabels = { /** Card heading, also the accessible name of the scroll area while it overflows; defaults to "Recent Sign-in Devices". */ title?: string; /** First column header; defaults to "Browser". */ browser?: string; /** Second column header; defaults to "Device". */ device?: string; /** Third column header; defaults to "Recent Activity". */ recentActivity?: string; /** Empty-state title shown when `devices` is empty. */ noActivity?: string; }; /** Read-only 3-column device list (browser, device, activity) on raw Chakra table parts, not the library Table — no row actions, closed props, no ref/...rest passthrough. */ export interface SignInActivityTableProps { /** Rendered in array order and keyed by index; an empty array shows the empty state. */ devices: SignInDevice[]; /** Replaces the table with four skeleton bars; the heading stays. */ isLoading?: boolean; /** Partial overrides merged over the English defaults, per key. */ labels?: SignInActivityLabels; }