import "./member_chip.css"; import type * as React from "react"; import { useRender } from "@base-ui/react/use-render"; import { type StyleProps } from "./style_props"; /** One answer shared by every person surface; the fallback word is a parameter so it is testable without a * provider and usable where no hook runs. */ export declare function memberDisplayName(name: string | null | undefined, identity: string | null | undefined, unknown: string): string; export interface CellMember { /** Never the name, which colleagues share. */ id: string; /** Pass a missing one as missing. */ name?: string | null; /** Names and keys the person where `name` is missing (see `Avatar`). */ identity?: string | null; /** Absent → initials. */ image?: string | null; /** They left, so a row still naming them reads as history. */ inactive?: boolean; } interface MemberChipBase extends StyleProps { /** E.g. email, role, department; a register column stands two lines for it (`TableColumn.lines`). */ secondary?: string | null; testID?: string; ref?: React.Ref; render?: useRender.RenderProp; } interface InlineChrome { chrome?: undefined; /** Pass a missing one as missing. */ name?: string | null; /** What they sign in as; names and keys the chip where `name` is missing (see `Avatar`). */ identity?: string | null; /** Absent → initials. */ image?: string | null; /** On a line of words — a row's supporting line, a folded reading, running text: the face at the line's * own height (`identityRung("line")`, 16) and the name at `xs`, so the line never grows for a person. * Otherwise the face is the text block's rung: `md`, `lg` with `secondary`. */ dense?: boolean; /** Mutes the name as history; a colour change, never an extra line. */ inactive?: boolean; members?: never; } interface CellChrome { /** `cell`: a person as a VALUE — a register row's column, a field's, a picker's option — the name at every * value's rung and weight, wrapping once before ellipsising, the face at the column's rung so every row * gets the two-line face. Budgeted as `identityLead("person", lines === 2)`. */ chrome: "cell"; /** In value order; none draws nothing, like an empty select cell. Several draw inside the one budgeted * face — the first's face and name, then `+N` naming the rest — since a face stack would shift this * row's name. */ members: readonly CellMember[]; } type MemberChipProps = MemberChipBase & (InlineChrome | CellChrome); /** The canonical way to show a person — an assignee beside what they are on, and at `chrome="cell"` a person as * a value: a register row's, a `select_member` field's, a member picker's option. {@link Avatar} falls back * to initials. Pure. */ export declare function MemberChip(props: MemberChipProps): React.JSX.Element; export {};