personal-site/pkg/ui/pages/contact.go

46 lines
1.3 KiB
Go

package pages
import (
"github.com/labstack/echo/v4"
"github.com/camzawacki/personal-site/pkg/ui"
. "github.com/camzawacki/personal-site/pkg/ui/components"
"github.com/camzawacki/personal-site/pkg/ui/forms"
"github.com/camzawacki/personal-site/pkg/ui/layouts"
. "maragu.dev/gomponents"
. "maragu.dev/gomponents/html"
)
func ContactUs(ctx echo.Context, form *forms.Contact) error {
r := ui.NewRequest(ctx)
r.Title = "Contact us"
r.Metatags.Description = "Get in touch with us."
g := Group{
Iff(r.Htmx.Target != "contact", func() Node {
return Card(CardParams{
Title: "Card component",
Body: Group{
Span(Text("This is an example of a form with inline, server-side validation and HTMX-powered AJAX submissions without writing a single line of JavaScript.")),
Span(Text("Only the form below will update async upon submission.")),
},
Color: ColorWarning,
Size: SizeMedium,
})
}),
Iff(form.IsDone(), func() Node {
return Card(CardParams{
Title: "Thank you!",
Body: Group{
Span(Text("No email was actually sent but this entire operation was handled server-side and degrades without JavaScript enabled.")),
},
Color: ColorSuccess,
Size: SizeLarge,
})
}),
Iff(!form.IsDone(), func() Node {
return form.Render(r)
}),
}
return r.Render(layouts.Primary, g)
}