package ui

// ButtonProps is the input to the Button templ component.
//
// Type defaults to "button" when empty. Attrs is a pass-through for arbitrary
// attributes (notably hx-* HTMX attributes). Icon is a named icon key that
// will be rendered via UIIcon when Plan 04 wires up icon_button.templ.
type ButtonProps struct {
	Label   string
	Variant ButtonVariant
	Tone    ButtonTone
	Size    Size
	Type    string
	Icon    string
	Attrs   templ.Attributes
}

templ Button(props ButtonProps) {
	<button type={ buttonType(props.Type) } class={ ButtonClass(props.Variant, props.Tone, props.Size) } { props.Attrs... }>
		if props.Icon != "" {
			<span class="ui-button-icon">@UIIcon(props.Icon)</span>
		}
		{ props.Label }
	</button>
}
