{% extends "base.html" %} {% block title %}Discover - Makenotwork{% endblock %} {% block body_attrs %} class="{{ crate::shell::measure(crate::shell::Measure::Wide) }}"{% endblock %} {% block content %} {% include "partials/site_header.html" %}

Discover

{% include "partials/discover_sidebar.html" %}
{# `tag-added` is fired by the typeahead once it appends a hidden input, so picking a suggestion refreshes results through the same path as every other filter control. `#q` beside `.discover-filter` in every include on this screen: the search box is a described Field now and carries the classes its renderer writes, not one this repo chose. Its id is the field's own name, which is the handle the description already had. Every control that re-reads the results needs the search value along, and a class on markup nobody here writes is not something to reach for. #}
{# Described (N8): the box, the list it owns, the route it asks for candidates, the two waits, the floor, the filters that ride with the results question and the page picking a row goes to all come out of crate::quasi. What stood here was a bare input and an empty list pointed at each other by id, with the rest in page-discover.js. The wrapper stays: it is the positioning context the list is drawn against, and the flex child the toolbar row sizes. #}
{{ crate::quasi::discover_search::search_box(mode, search_query)|safe }}
Searching... {{ count_label }}
{% if mode == "projects" %}
Name Category Items Added
{% else %}
Type Name Tag Price Added
{% endif %} {# The region is the partial's own root now, not a wrapper here: every control that re-reads it swaps the element whole (hx-swap="outerHTML"), which is what a described control emits and what stops the region losing its id on the first pick. #} {% include "partials/discover_results.html" %}
{% endblock %} {% block scripts %} {% endblock %}