Button
Button triggers an action on click.
github.com/fastygo/templ/ui
Summary
Button triggers an action on click.Button navigates when Href is set.
Use Cases
Submit a form action
Open a page from a primary action
Show a destructive confirm action
Show a low-emphasis ghost action
Semantics
Root element is button when Href is empty
Root element is a when Href is set
Disabled sets native disabled on button
Disabled link sets aria-disabled true
Example variant.default
import "github.com/fastygo/templ/ui"
templ Example() {
@ui.Button(ui.ButtonProps{Variant: "default"}) {
Primary
}
}
import "github.com/fastygo/templ/ui"
templ Example() {
@ui.Button(ui.ButtonProps{Variant: "default"}) {
Primary
}
}
Example variant.secondary
import "github.com/fastygo/templ/ui"
templ Example() {
@ui.Button(ui.ButtonProps{Variant: "secondary"}) {
Secondary
}
}
import "github.com/fastygo/templ/ui"
templ Example() {
@ui.Button(ui.ButtonProps{Variant: "secondary"}) {
Secondary
}
}
Example variant.destructive
import "github.com/fastygo/templ/ui"
templ Example() {
@ui.Button(ui.ButtonProps{Variant: "destructive"}) {
Delete
}
}
import "github.com/fastygo/templ/ui"
templ Example() {
@ui.Button(ui.ButtonProps{Variant: "destructive"}) {
Delete
}
}
Example variant.outline
import "github.com/fastygo/templ/ui"
templ Example() {
@ui.Button(ui.ButtonProps{Variant: "outline", Size: "sm"}) {
Outline
}
}
import "github.com/fastygo/templ/ui"
templ Example() {
@ui.Button(ui.ButtonProps{Variant: "outline", Size: "sm"}) {
Outline
}
}
Example variant.ghost
import "github.com/fastygo/templ/ui"
templ Example() {
@ui.Button(ui.ButtonProps{Variant: "ghost", Size: "sm"}) {
Ghost
}
}
import "github.com/fastygo/templ/ui"
templ Example() {
@ui.Button(ui.ButtonProps{Variant: "ghost", Size: "sm"}) {
Ghost
}
}
Example variant.link
import "github.com/fastygo/templ/ui"
templ Example() {
@ui.Button(ui.ButtonProps{Variant: "link", Href: "/docs"}) {
Learn more
}
}
import "github.com/fastygo/templ/ui"
templ Example() {
@ui.Button(ui.ButtonProps{Variant: "link", Href: "/docs"}) {
Learn more
}
}
Example variant.unstyled
import "github.com/fastygo/templ/ui"
templ Example() {
@ui.Button(ui.ButtonProps{Variant: "unstyled", Class: "underline"}) {
Custom
}
}
import "github.com/fastygo/templ/ui"
templ Example() {
@ui.Button(ui.ButtonProps{Variant: "unstyled", Class: "underline"}) {
Custom
}
}
Example size.sm
import "github.com/fastygo/templ/ui"
templ Example() {
@ui.Button(ui.ButtonProps{Size: "sm"}) {
Small
}
}
import "github.com/fastygo/templ/ui"
templ Example() {
@ui.Button(ui.ButtonProps{Size: "sm"}) {
Small
}
}
Example size.lg
import "github.com/fastygo/templ/ui"
templ Example() {
@ui.Button(ui.ButtonProps{Size: "lg"}) {
Large
}
}
import "github.com/fastygo/templ/ui"
templ Example() {
@ui.Button(ui.ButtonProps{Size: "lg"}) {
Large
}
}
Example size.icon
import "github.com/fastygo/templ/ui"
templ Example() {
@ui.Button(ui.ButtonProps{Size: "icon", AriaLabel: "Settings"}) {
+
}
}
import "github.com/fastygo/templ/ui"
templ Example() {
@ui.Button(ui.ButtonProps{Size: "icon", AriaLabel: "Settings"}) {
+
}
}
Example state.disabled
import "github.com/fastygo/templ/ui"
templ Example() {
@ui.Button(ui.ButtonProps{Disabled: true}) {
Disabled
}
}
import "github.com/fastygo/templ/ui"
templ Example() {
@ui.Button(ui.ButtonProps{Disabled: true}) {
Disabled
}
}
Example state.submit
import "github.com/fastygo/templ/ui"
templ Example() {
@ui.Button(ui.ButtonProps{Type: "submit"}) {
Submit
}
}
import "github.com/fastygo/templ/ui"
templ Example() {
@ui.Button(ui.ButtonProps{Type: "submit"}) {
Submit
}
}
Example state.disabled-link
import "github.com/fastygo/templ/ui"
templ Example() {
@ui.Button(ui.ButtonProps{Variant: "link", Href: "/locked", Disabled: true}) {
Disabled link
}
}
import "github.com/fastygo/templ/ui"
templ Example() {
@ui.Button(ui.ButtonProps{Variant: "link", Href: "/locked", Disabled: true}) {
Disabled link
}
}
Example state.reset
import "github.com/fastygo/templ/ui"
templ Example() {
@ui.Button(ui.ButtonProps{Variant: "outline", Type: "reset"}) {
Reset
}
}
import "github.com/fastygo/templ/ui"
templ Example() {
@ui.Button(ui.ButtonProps{Variant: "outline", Type: "reset"}) {
Reset
}
}
API
AriaLabel · string — role: accessible-name
Attrs · templ.Attributes — role: html-attrs
Class · string — role: style-extension
Disabled · bool — role: state
Form · string — role: association
Href · string — role: navigation
ID · string — role: identity
Size · string — role: density; enum: default|sm|lg|icon; default: default; source: ui.button.ButtonVariants
Type · string — role: control-type; enum: button|submit|reset; default: button
Variant · string — role: appearance; enum: default|secondary|destructive|outline|ghost|link|unstyled; default: default; source: ui.button.ButtonVariants