Some checks failed
CI / build (push) Failing after 36s
WASM reactive UI framework for Go: - reactive/ - Signal[T], Effect, Runtime - ui/ - Button, Text, Input, View, Canvas, SVG components - navigation/ - Router, guards, history management - auth/ - OIDC client for WASM applications - host/ - Static file server Extracted from arcadia as open-source component. Co-Authored-By: Claude <noreply@anthropic.com>
29 lines
705 B
Go
29 lines
705 B
Go
package ui
|
|
|
|
import (
|
|
"git.flowmade.one/flowmade-one/iris/internal/element"
|
|
"git.flowmade.one/flowmade-one/iris/reactive"
|
|
)
|
|
|
|
// Router interface to avoid import cycle
|
|
type Router interface {
|
|
GetCurrentView() View
|
|
}
|
|
|
|
// NewAppWithRouter creates a new app with navigation support
|
|
func NewAppWithRouter(router Router) {
|
|
app := NewView()
|
|
app.e.Grid()
|
|
app.MinHeight("100vh")
|
|
|
|
// Create a reactive view that updates when routes change
|
|
reactive.NewEffect(func() {
|
|
currentView := router.GetCurrentView()
|
|
// Clear the app and add the current view
|
|
// Note: In a production implementation, we'd want better DOM diffing
|
|
app.e.Set("innerHTML", "")
|
|
app.Child(currentView)
|
|
})
|
|
|
|
element.Mount(app.e)
|
|
} |