import "./member_chip.css"; import type * as React from "react"; import { useRender } from "@base-ui/react/use-render"; import { type AvatarSize } from "./avatar"; import { type StyleProps } from "./style_props"; /** * What a member is CALLED — one answer, shared by every surface that renders a * person. It takes the fallback word as a PARAMETER rather than out of a hook, * so the rule can be tested without a provider and reused where no hook may run. */ export declare function memberDisplayName(name: string | null | undefined, identity: string | null | undefined, unknown: string): string; interface MemberChipProps extends StyleProps { /** Display name, as you were given it. Pass a missing one as missing. */ name?: string | null; /** What they sign in as — their email for a self-managed member. Names and * keys the chip where there is no `name`; see `Avatar`'s own prop. */ identity?: string | null; /** Avatar image URL (a member's `image` from `useMembers`). Absent → initials. */ image?: string | null; /** Optional secondary line under the name — e.g. email, role, department. */ secondary?: string | null; /** A rung on the shared avatar scale. Default `md`, which is sized to seat in a * 40px control band; drop to `sm` for a dense cell. See `AVATAR_PX`. */ size?: AvatarSize; /** * Drop the face and render the person as TEXT. * * Pass it wherever the member is ONE FIELD AMONG COLUMNS rather than the row's * subject — an owner column, an assignee cell, a "last edited by"; the reasons * are `composition.md` §"Marks and character". Keep the face where the member * IS the subject — a roster, a picker option, a profile, a directory row. */ showAvatar?: boolean; /** This person is no longer active. Mutes the name so a record that still * names them reads as history. The chip keeps its height: this is a colour * change, never an extra line. */ inactive?: boolean; testID?: string; ref?: React.Ref; render?: useRender.RenderProp; } /** * Render a member/person as an avatar + name (+ optional secondary line) — the * one canonical way to show a person inline: a member-picker option, an assignee, * a `select_member` cell in a register or detail. The {@link Avatar} falls back * to initials when there's no image. * * Pure: pass the member's fields in; this fetches nothing and carries no domain * types. * * A chip's usual home is a 40px CONTROL BAND, and the default `md` is sized to * seat in one (`CONTROL_CONTENT_HEIGHT`). */ export declare function MemberChip({ name, identity, image, secondary, size, showAvatar, inactive, testID, render, ref, ...props }: MemberChipProps): React.ReactElement>; export {};