feat: introduce support for plugins

This commit is contained in:
Joao Goncalves
2025-11-07 02:45:58 -01:00
parent 798f024743
commit a46c06b467
7 changed files with 87 additions and 21 deletions

View File

@@ -0,0 +1,49 @@
package main
import (
_ "embed"
"net/http"
"github.com/go-via/via"
"github.com/go-via/via/h"
)
// In this example we create a Via application with a plugin that adds PicoCSS. The plugin
// is handed to Via in the app Configuration.
//go:embed pico.yellow.min.css
var picoCSSFile []byte
func main() {
v := via.New()
v.Config(via.Options{
DocumentTitle: "Via With PicoCSS Plugin",
Plugins: []via.Plugin{PicoCSSPlugin},
})
v.Page("/", func(c *via.Context) {
c.View(func() h.H {
return h.Section(h.Class("container"),
h.H1(h.Text("Hello from ⚡Via")),
h.Div(h.Class("grid"),
h.Button(h.Text("Primary")),
h.Button(h.Class("secondary"), h.Text("Secondary")),
),
)
})
})
v.Start(":3000")
}
func PicoCSSPlugin(v *via.V) {
v.HandleFunc("GET /_plugins/picocss/assets/style.css", func(w http.ResponseWriter, r *http.Request) {
w.Header().Set("Content-Type", "text/css")
_, _ = w.Write(picoCSSFile)
})
v.Config(via.Options{
DocumentHeadIncludes: []h.H{
h.Link(h.Rel("stylesheet"), h.Href("/_plugins/picocss/assets/style.css")),
},
})
}

File diff suppressed because one or more lines are too long