Initial iris repository structure
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>
This commit is contained in:
2026-01-08 19:23:49 +01:00
commit 00d98879d3
36 changed files with 4181 additions and 0 deletions

29
ui/app_router.go Normal file
View File

@@ -0,0 +1,29 @@
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)
}