Form controls
Declarative Plates form controls. Callers pass escaped props; components never read the request. Native semantics stay the source of truth. JavaScript only mirrors the current selection.
Current selection
Topics: none
Density: none
Sort: none
Composite filter group
kind maps through an internal allowlist. Callers cannot pass a template path.
Primitive controls
Native type=search. Not wired to this page query.
The select element is the only list. No listbox clone.
Insert examples
$this->insert('component::form/select', [
'id' => 'sort',
'name' => 'sort',
'label' => 'Sort',
'selected' => $sort,
'options' => [['value' => 'label', 'label' => 'Label']],
]);
$this->insert('component::form/filter-group', [
'action' => '/showcase/form-controls',
'fields' => [
['kind' => 'search', 'id' => 'q', 'name' => 'q', 'label' => 'Search'],
['kind' => 'select', 'id' => 'sort', 'name' => 'sort', 'label' => 'Sort', 'options' => $options],
],
]);