export let widget_radio = (b) => {
let w = attr_or(b, "width", 140)
let h = attr_or(b, "height", 24)
let label = attr_or(b, "label", "Radio")
let selected = attr_or(b, "selected", "false") == "true"
let signal = attr_or(b, "signal", "")
let value = attr_or(b, "value", label)
let disabled = attr_or(b, "disabled", "false") == "true"
let size = attr_or(b, "size", 16)
let y = (h - size) / 2
let field_fill = attr_or(b, "field_fill", attr_or(b, "surface_fill", "var(--color-code-bg)"))
let border_stroke = attr_or(b, "border_stroke", "var(--color-nav-border)")
let active_fill = attr_or(b, "active_fill", "var(--color-link)")
let label_fill = attr_or(b, "label_fill", "currentColor")
let border_width = attr_or(b, "border_width", 1.5)
let opacity = disabled ? attr_or(b, "disabled_opacity", 0.45) : attr_or(b, "opacity", 1)
[{
kind = "group",
id = to_string(b.id),
width = w,
height = h,
cursor = signal != "" && !disabled ? "pointer" : attr_or(b, "cursor", "default"),
pointer_events = signal != "" && !disabled ? "all" : attr_or(b, "pointer_events", "all"),
data_wdoc_radio = signal != "" ? "true" : "",
data_wdoc_radio_signal = signal,
data_wdoc_radio_value = value,
data_wdoc_radio_selected = selected ? "true" : "false",
data_wdoc_radio_disabled = disabled ? "true" : "false",
data_wdoc_radio_active_fill = active_fill,
data_wdoc_radio_field_fill = field_fill,
data_wdoc_radio_border_stroke = border_stroke,
children = [
{ kind = "circle", x = 0, y = y, r = size / 2, fill = field_fill,
stroke = selected ? active_fill : border_stroke, stroke_width = border_width,
opacity = opacity, data_wdoc_radio_outer = "true" },
{ kind = "circle", x = 4, y = y + 4, r = 4,
fill = active_fill, opacity = selected ? opacity : 0,
data_wdoc_radio_dot = "true" },
{ kind = "text", x = size + 8, y = 0, width = w - size - 8, height = h,
content = label, font_size = 12, anchor = "start", fill = label_fill, opacity = opacity }
]
}]
}