The Layout component is the root wrapper component that orchestrates all search UI components. It provides the overall structure and default placement for search input, facets, results, and pagination.
<twig:Mezcalito:UxSearch:Layout name="products" />| Variable | Type | Description |
|---|---|---|
search |
Search | The search configuration object with facets, sorts, etc. |
attributes |
ComponentAttributes | HTML attributes for the root container |
| Block Name | Description |
|---|---|
content |
Main block wrapping all search UI - override to completely restructure the search layout |
form |
Contains the search input field - override to customize or add additional search controls |
toolbar |
Contains refinements display, clear button, pagination controls, and sort options |
facets |
Contains all facet components - override to customize facet sidebar layout |
listing |
Wraps stats, hits, and pagination - the main results area |
stats |
Contains the total hits counter - override to add additional statistics |
hits |
Contains the search results display - override to change results positioning |
pagination |
Contains pagination controls - override to reposition or customize pagination |
<div {{ attributes.defaults({
'class': 'ux-search',
'data-controller': 'ux-search',
'data-loading': 'addClass(ux-search--is-loading)'
}) }}>
{% block content %}
<div class="ux-search__inner">
<div class="ux-search__form">
{% block form %}
<twig:Mezcalito:UxSearch:SearchInput />
{% endblock %}
</div>
<div class="ux-search__toolbar">
{% block toolbar %}
<twig:Mezcalito:UxSearch:CurrentRefinements/>
<twig:Mezcalito:UxSearch:ClearRefinements />
<twig:Mezcalito:UxSearch:HitsPerPage/>
<twig:Mezcalito:UxSearch:SortBy/>
{% endblock %}
</div>
<div class="ux-search__facets">
{% block facets %}
{% for facet in search.facets %}
<twig:Mezcalito:UxSearch:Facet :property="facet.property" />
{% endfor %}
{% endblock %}
</div>
<div class="ux-search__listing">
{% block listing %}
<div class="ux-search__stats">
{% block stats %}
<twig:Mezcalito:UxSearch:TotalHits/>
{% endblock %}
</div>
{% block hits %}
<twig:Mezcalito:UxSearch:Hits />
{% endblock %}
{% block pagination %}
<twig:Mezcalito:UxSearch:Pagination />
{% endblock %}
{% endblock %}
</div>
</div>
{% endblock %}
</div>The root element includes Stimulus controller attributes:
data-controller="ux-search"- Activates the search Stimulus controllerdata-loading="addClass(ux-search--is-loading)"- Adds loading class during search updates
Default classes:
.ux-search- Root container with Stimulus controller.ux-search__inner- Inner wrapper for layout structure.ux-search__form- Search input section.ux-search__toolbar- Toolbar with filters and controls.ux-search__facets- Facets sidebar/section.ux-search__listing- Main results area.ux-search__stats- Statistics section (total hits).ux-search--is-loading- Applied during search updates
All components are included within Layout:
- SearchInput - Search query input
- CurrentRefinements - Active filter badges
- ClearRefinements - Clear all filters button
- HitsPerPage - Results per page selector
- SortBy - Sort order dropdown
- Facet/RefinementList - Term facets
- Facet/RangeSlider - Range sliders
- Facet/RangeInput - Range inputs
- TotalHits - Result count display
- Hits - Search results list
- Pagination - Page navigation