@inherits DComponentBase @* daisyUI Theme controller: https://daisyui.com/components/theme-controller/ . While checked, the page uses the theme named in Value (daisyUI's :root:has(.theme-controller:checked) rule). The app itself sets data-theme from C#, so this exists for completeness. Style it with class="toggle", "checkbox", "radio", "btn" and so on. For a radio group, pass the same name attribute to each and set Checked from one shared value: a radio raises no change event when another one unchecks it. *@ @code { /// A daisyUI theme name, e.g. "neo-dark". [Parameter] public string Value { get; set; } [Parameter] public bool Checked { get; set; } [Parameter] public EventCallback CheckedChanged { get; set; } /// Render a radio instead of a checkbox. [Parameter] public bool Radio { get; set; } string CssClass => Cx("theme-controller", Class); async Task OnChange(ChangeEventArgs e) { // A checkbox reports its checked state; a radio only reports its value when it becomes checked. Checked = Radio || e.Value is true; await CheckedChanged.InvokeAsync(Checked); } }