We can't find the internet
Attempting to reconnect
Something went wrong!
Hang in there while we get back on track
I found the idea of implementing components in Go to make it easier to use Tailwind CSS really neat. I always disliked that you needed Javascript (React for example) to do something like this, even though I'm a big fan of working component-based when creating a website.
I played with a similar idea in the past, but never got as far as I liked. Markus however got quite a bit further than I did. With the use of his gomponents
module, defining a component called NiceButton
becomes as easy as:
import (
g "github.com/maragudk/gomponents"
c "github.com/maragudk/gomponents/components"
. "github.com/maragudk/gomponents/html"
)
func NiceButton(text string, primary bool) g.Node {
return Button(g.Text(text), c.Classes{
"flex items-center justify-center px-4 py-3 rounded-md": true,
"text-white bg-indigo-600 hover:bg-indigo-700": primary,
"text-indigo-600 bg-gray-50 hover:bg-gray-200": !primary,
})
}
You can then use this button everywhere:
import (
g "github.com/maragudk/gomponents"
c "github.com/maragudk/gomponents/components"
. "github.com/maragudk/gomponents/html"
)
func Home() g.Node {
return Div(Class("max-w-lg flex space-x-8"),
NiceButton("I'm primary", true),
NiceButton("I'm just secondary", false),
)
}
You can find a more complete sample here. This is something I'll definitely try out in the futureβ¦
If this post was enjoyable or useful for you, please share it! If you have comments, questions, or feedback, you can email my personal email. To get new posts, subscribe use the RSS feed.