{# Dropdown Component ================== Custom styled dropdown/select with dark/light theme support. Usage: {% from "components/dropdown.html" import dropdown %} {# Basic dropdown #} {{ dropdown( name="status", options=[ {"value": "active", "label": "Active"}, {"value": "inactive", "label": "Inactive"} ], selected="active" ) }} {# With placeholder #} {{ dropdown( name="category", options=categories, placeholder="Select category..." ) }} {# Inline mode for compact filters #} {{ dropdown( name="filter", options=filter_options, selected="all", inline=True ) }} {# With label #} {{ dropdown( name="priority", label="Priority", options=priorities, required=True ) }} Events: The dropdown dispatches a 'dropdown:change' event on value change: document.querySelector('[data-dropdown="status"]').addEventListener('dropdown:change', (e) => { console.log('New value:', e.detail.value, 'Label:', e.detail.label); }); Dynamic Content: Call initDropdowns() after dynamically adding dropdowns to the DOM. #} {% macro dropdown(name, options, selected=None, placeholder=None, label=None, inline=False, required=False, class="") %} {% set id = name ~ "-dropdown" %}