Embed the brokerage's agent roster ("Meet our agents") with custom elements. Like
sdk.Agents, these are portal-only: the brand
is resolved from the current domain.
<rechat-agents> owns the roster state; compose the sub-elements you need inside it:
<rechat-root>
<rechat-agents limit="12">
<rechat-agents-search placeholder="Find an agent…"></rechat-agents-search>
<rechat-agents-count></rechat-agents-count>
<rechat-agents-grid></rechat-agents-grid>
<rechat-agents-pagination></rechat-agents-pagination>
</rechat-agents>
</rechat-root>
| Element | Description |
|---|---|
<rechat-agents> |
Roster context. Owns the query state and API calls. |
<rechat-agents-grid> |
Card grid: photo (or initials), name, designation, contact links, social links |
<rechat-agents-search> |
Free-text roster filter (name, email, or MLS id) |
<rechat-agents-count> |
"Showing 1–12 of 45 agents" |
<rechat-agents-pagination> |
Page navigation |
Put a <template rechat-each="agents"> inside the grid to render your own markup.
See Custom Markup (Templates):
<rechat-agents-grid>
<template rechat-each="agents">
<a class="agent" href="/agents/{{ id }}">
<img src="{{ profile_image_url }}" alt="{{ display_name }}">
<h3>{{ display_name }}</h3>
<p data-if="designation">{{ designation }}</p>
<a href="tel:{{ phone_number }}" data-if="phone_number">{{ formatted.phone.text }}</a>
</a>
</template>
<template rechat-state="empty"><p>No agents found.</p></template>
</rechat-agents-grid>
Useful agent fields: id, display_name, first_name, last_name, email,
phone_number, profile_image_url, user_type, designation, website,
instagram, facebook, twitter, linkedin, youtube, plus the computed
formatted.phone.text (pretty-printed phone) and formatted.initials.text
(avatar fallback). Each item is also available under agent, e.g.
{{ agent.email }}.
<rechat-agent> renders one roster member by user id, e.g. "your agent" on a
landing page:
<rechat-agent id="3f9c8d2a-…"></rechat-agent>
It accepts an optional <template rechat-bind> child bound against the same agent
view-model (the agent is under agent, with its fields also at top level):
<rechat-agent id="3f9c8d2a-…">
<template rechat-bind>
<div class="hero-agent">
<h2>{{ agent.display_name }}</h2>
<a href="mailto:{{ agent.email }}">{{ agent.email }}</a>
</div>
</template>
</rechat-agent>
| Element | Attribute | Default | Description |
|---|---|---|---|
<rechat-agents> |
q |
- | Initial roster filter |
limit |
"20" |
Page size | |
agents |
- | JSON array of pre-hydrated agents | |
<rechat-agents-search> |
placeholder |
"Search agents…" |
Input placeholder |
<rechat-agent> |
id |
- | Roster member user id (required) |
Dispatched on window; access data via event.detail.
| Event | Detail | When |
|---|---|---|
rechat-agents:fetched |
IUser[] |
Roster page loaded |
rechat-agents-pagination:change |
{ page: number } |
Roster page changed |
rechat-agent-card:click |
{ agent: IUser } |
An agent card was clicked |
rechat-error |
{ source: 'agents', error } |
A fetch failed |