# `Flicker.Messages.English`
[🔗](https://github.com/team-alembic/flicker/blob/v0.1.0/lib/flicker/messages/english.ex#L1)

The complete default `Flicker.Messages` implementation, and the canonical
list of every message key the select component uses.

Every key documented here is user-facing — either visible text or a
screen-reader announcement. Override modules only need to implement the
keys they want to change (see `Flicker.Messages` for how).

# `message`

```elixir
@spec message(atom(), map()) :: String.t()
```

Resolves `key` (with `bindings`) to English text.

## Keys

  * `:search_placeholder` — placeholder text for the search input.
  * `:loading` — shown in the listbox while a search is in flight.
  * `:no_results` — shown when a search returns no results.
  * `:error` — shown when the provider returns an error.
  * `:keep_typing` — shown when more results exist than are displayed
    (`limit`+1 came back) — "keep typing to narrow" rather than paginate.
  * `:min_chars_hint` — %{min_chars: n} — shown while the typed text is
    shorter than the configured `min_chars`.
  * `:invalid_<reason>` — one per validation reason a facet value can fail
    with (Spec 018, ADR-012): `:invalid_integer`, `:invalid_float`,
    `:invalid_boolean`, `:invalid_date`, `:invalid_datetime`,
    `:invalid_duration`, `:invalid_range`, `:invalid_incomplete_range`,
    `:invalid_reversed_range`, `:invalid_incomplete_list`,
    `:invalid_not_in_values` (%{values: [...]}), `:invalid_out_of_bounds`
    (%{min:, max:}), `:invalid_constraint_violation` (%{message:}),
    `:invalid_custom` (%{message:}), and `:invalid_value` as the catch-all
    for a reason this module doesn't know. Rendered against the invalid
    facet pill; the parser itself never produces English.
  * `:dispatch_blocked` — shown, and announced, when `on_invalid: :require`
    is withholding the query because a facet value is invalid (Spec 023).
  * `:did_you_mean` — %{label: name} — the top correction suggestion.
  * `:apply_fix` — the accept affordance for a mechanical fix (a reversed
    range's swap, an out-of-bounds clamp).
  * `:invalid_facet` — %{key: key} — the accessible name for an invalid
    facet pill.
  * `:edit_facet` — %{label: name} — `aria-label` for the control that
    reopens a committed facet's editor (Spec 019).
  * `:facet_editor_opened` — %{label: name} — the live-region announcement
    when a facet editor's pop-out opens (Spec 019), naming the facet and the
    fact that it is a dialog, since entering a modal sub-context must be
    audible and not merely visible.
  * `:close_facet_editor`, `:preset_group_suggested`, `:previous_month`,
    `:next_month`, `:range_from`, `:range_to`, `:facet_values`,
    `:facet_editor_done`, `:pick_an_end_date` — every visible string inside a
    Spec 019 facet editor. Routed through here rather than hardcoded so the
    key list stays the complete, auditable inventory of user-facing text
    (ADR-009, and Spec 007's "a grep for literals in templates finds none").
  * `:active_filters` — `aria-label` for the committed-facet pill row in
    `Flicker.select/1` (Spec 015), naming it as filters rather than as the
    selection chips beside it.
  * `:press_enter_to_search` — shown, and referenced by the input's
    `aria-describedby`, while `dispatch: :enter` holds typed text that
    hasn't been searched yet (Spec 020). A search box that has silently
    stopped searching is a broken search box, so this state is always
    both visible and announced.
  * `:results_count` — %{count: n} — the live-region announcement after
    results update.
  * `:item_selected` — %{label: name} — the live-region announcement after
    a single-select selection is made, naming the selected item.
  * `:clear_selection` — visible text and `aria-label` for the button that
    clears the current selection.
  * `:selected_items` — `aria-label` for the multi-select chip list.
  * `:remove_chip` — %{label: name} — `aria-label` for a chip's remove
    button, naming the chip it removes.
  * `:remove_icon` — the visible glyph on a chip's remove button.
  * `:clear_all` — visible text and `aria-label` for the multi-select
    "clear all" button.
  * `:selected_count` — %{count: n} — the live-region announcement after
    the multi-select selection changes.
  * `:max_selections_reached` — %{max: n} — shown in the listbox once
    `max_selections` is reached.
  * `:keyboard_shortcut_hint` — %{chord: text} — `title` on the
    `activate_with_keyboard` kbd hint (Spec 006), naming the chord that
    focuses and opens the search from anywhere on the page.
  * `:facet_key_context` — the live-region announcement (Spec 003) when
    the cursor moves into facet-key position (`stat|` before any `:`) —
    key suggestions are now driving the dropdown.
  * `:facet_value_context` — %{facet: label} — the live-region
    announcement when the cursor moves into a known facet's value
    position (`status:|`) — that facet's picklist/nested search is now
    driving the dropdown.
  * `:free_text_context` — the live-region announcement when the cursor
    is in plain free-text position — no facet is driving the dropdown.
  * `:facet_key_suggestions_count` — %{count: n} — the live-region
    announcement after facet-key suggestions update.
  * `:facet_value_suggestions_count` — %{count: n} — the live-region
    announcement after facet-value suggestions (enum picklist or nested
    search) update.
  * `:facet_trigger_hint` — %{triggers: ["@", "#"]} — the discoverability
    affordance shown when `facet_trigger` is set (Spec 024). With a trigger
    configured, a bare word no longer volunteers facet keys, so this is the
    only thing telling the user the facets exist — it is both visible text and
    the input's `aria-describedby`.
  * `:facet_search_placeholder` — placeholder text for `Flicker.search/1`'s
    input. Given `%{trigger: "@", example: "status"}` when a Spec 024 trigger
    is configured, where `example` is a facet that trigger actually reaches —
    the no-bindings clause teaches the `status:active` form instead.
  * `:palette_label` — `aria-label` for `Flicker.palette/1`'s dialog
    (`role="dialog"`).
  * `:close_palette` — visible text and `aria-label` for the palette's
    close button.
  * `:footer_navigate_hint` — the palette footer's "navigate" kbd hint
    label (next to the ↑↓ keys).
  * `:footer_select_hint` — the palette footer's "select" kbd hint label
    (next to the ↵ key).
  * `:footer_close_hint` — the palette footer's "close" kbd hint label
    (next to the esc key).
  * `:loading_more` — `paginate`-d select only (Spec 010): shown in the
    themed tail row while the next window loads.
  * `:more_results_appended` — %{count: n, total: total} — `paginate`-d
    select only: the live-region announcement after a window appends
    (Spec 010), naming how many were just added and the new running
    total.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
