A single candidate in a picker list.
Every picker source returns a list of %Item{} structs. The struct
carries both display data (label, description, icon color) and
identity (id) for selection callbacks.
Required fields
:id— unique identifier (file path, buffer index, command atom, etc.):label— display text shown in the picker, used for fuzzy matching
Optional fields
:description— secondary text, rendered below the label (file pickers) or right-aligned and dimmed (command pickers):icon_color— 24-bit RGB color for the first grapheme (the icon) of the label:annotation— right-aligned metadata (keybinding, status indicator), styled distinctly from the description (e.g., "SPC f s" for commands):search_text— hidden text included in fuzzy matching but not rendered:match_positions— 0-based character indices of matched characters in the label, computed during fuzzy filtering for rendering highlights:two_line— when true, renders description on a second line below the label instead of inline. Used by file/buffer pickers for path display.:active— when true, marks this item as the currently active selection (e.g. the current thinking level). The centered picker renderer draws a●indicator for active items and blank padding for inactive siblings.:meta— opaque source-private map carried alongside the item. Used by sources that defer display enrichment (e.g.FileSourcestashes the git status here so the bounded winners can be enriched without re-reading state). Never rendered directly.
Summary
Types
@type t() :: %MingaEditor.UI.Picker.Item{ active: boolean(), annotation: String.t() | nil, description: String.t(), icon_color: non_neg_integer() | nil, id: term(), label: String.t(), match_positions: [non_neg_integer()], meta: map(), search_text: String.t(), two_line: boolean() }