Documentation
¶
Index ¶
- Constants
- func BlankLayout(ctx *PageContext, content g.Node) g.Node
- func DashboardLayout(ctx *PageContext, content g.Node) g.Node
- func DefaultLayout(ctx *PageContext, content g.Node) g.Node
- func Error403(message string) error
- func Error404(message string) error
- func Error500(message string, err error) error
- type ErrorHandler
- type Group
- func (g *Group) Delete(pattern string, handler PageHandler) *Route
- func (g *Group) Get(pattern string, handler PageHandler) *Route
- func (g *Group) Group(prefix string, opts ...GroupOption) *Group
- func (g *Group) Head(pattern string, handler PageHandler) *Route
- func (g *Group) Layout(layout string) *Group
- func (g *Group) Middleware(middleware ...Middleware) *Group
- func (g *Group) Options(pattern string, handler PageHandler) *Route
- func (g *Group) Page(pattern string) *GroupPageBuilder
- func (g *Group) Patch(pattern string, handler PageHandler) *Route
- func (g *Group) Post(pattern string, handler PageHandler) *Route
- func (g *Group) Put(pattern string, handler PageHandler) *Route
- type GroupOption
- type GroupPageBuilder
- func (gpb *GroupPageBuilder) DELETE() *GroupPageBuilder
- func (gpb *GroupPageBuilder) GET() *GroupPageBuilder
- func (gpb *GroupPageBuilder) Handler(handler PageHandler) *GroupPageBuilder
- func (gpb *GroupPageBuilder) Layout(layout string) *GroupPageBuilder
- func (gpb *GroupPageBuilder) Loader(loader LoaderFunc) *GroupPageBuilder
- func (gpb *GroupPageBuilder) Meta(title, description string) *GroupPageBuilder
- func (gpb *GroupPageBuilder) MetaFull(meta *RouteMeta) *GroupPageBuilder
- func (gpb *GroupPageBuilder) Method(method string) *GroupPageBuilder
- func (gpb *GroupPageBuilder) Middleware(middleware ...Middleware) *GroupPageBuilder
- func (gpb *GroupPageBuilder) Name(name string) *GroupPageBuilder
- func (gpb *GroupPageBuilder) NoLayout() *GroupPageBuilder
- func (gpb *GroupPageBuilder) PATCH() *GroupPageBuilder
- func (gpb *GroupPageBuilder) POST() *GroupPageBuilder
- func (gpb *GroupPageBuilder) PUT() *GroupPageBuilder
- func (gpb *GroupPageBuilder) Register() *Route
- type LayoutConfig
- type LayoutFunc
- type LayoutOption
- type LoaderError
- type LoaderFunc
- type Middleware
- func BasicAuth(username, password string) Middleware
- func CORS(allowOrigin string) Middleware
- func Chain(middleware ...Middleware) Middleware
- func Logger() Middleware
- func Recovery() Middleware
- func RequestID() Middleware
- func RequireMethod(methods ...string) Middleware
- func SetHeader(key, value string) Middleware
- func Timeout(duration time.Duration) Middleware
- type PageContext
- func (c *PageContext) App() any
- func (c *PageContext) ClientIP() string
- func (c *PageContext) Context() context.Context
- func (c *PageContext) Cookie(name string) (*http.Cookie, error)
- func (c *PageContext) Get(key string) (any, bool)
- func (c *PageContext) GetInt(key string) int
- func (c *PageContext) GetMeta() *RouteMeta
- func (c *PageContext) GetString(key string) string
- func (c *PageContext) Header(key string) string
- func (c *PageContext) Host() string
- func (c *PageContext) IsSecure() bool
- func (c *PageContext) LoaderData() any
- func (c *PageContext) Method() string
- func (c *PageContext) Param(key string) string
- func (c *PageContext) ParamInt(key string) (int, error)
- func (c *PageContext) ParamInt64(key string) (int64, error)
- func (c *PageContext) Path() string
- func (c *PageContext) Query(key string) string
- func (c *PageContext) QueryBool(key string) bool
- func (c *PageContext) QueryDefault(key, defaultVal string) string
- func (c *PageContext) QueryInt(key string) (int, error)
- func (c *PageContext) QueryInt64(key string) (int64, error)
- func (c *PageContext) Set(key string, value any)
- func (c *PageContext) SetCookie(cookie *http.Cookie)
- func (c *PageContext) SetHeader(key, value string)
- func (c *PageContext) WithContext(ctx context.Context) *PageContext
- type PageHandler
- type ParamKey
- type Params
- type Route
- func (r *Route) Description(desc string) *Route
- func (r *Route) Keywords(keywords ...string) *Route
- func (r *Route) Loader(fn LoaderFunc) *Route
- func (r *Route) Match(path string) (params Params, ok bool)
- func (r *Route) Meta(meta RouteMeta) *Route
- func (r *Route) NoIndex() *Route
- func (r *Route) NoLayout() *Route
- func (r *Route) OGImage(url string) *Route
- func (r *Route) SetLayout(name string) *Route
- func (r *Route) Title(title string) *Route
- func (r *Route) URL(params ...any) string
- func (r *Route) URLMap(params map[string]any) string
- func (r *Route) WithLoader(loader LoaderFunc) *Route
- func (r *Route) WithMeta(meta *RouteMeta) *Route
- func (r *Route) WithMiddleware(middleware ...Middleware) *Route
- func (r *Route) WithName(name string) *Route
- type RouteBuilder
- type RouteGroup
- type RouteMeta
- type Router
- func (r *Router) Delete(pattern string, handler PageHandler) *Route
- func (r *Router) Get(pattern string, handler PageHandler) *Route
- func (r *Router) GetLayout(name string) (LayoutFunc, bool)
- func (r *Router) Group(prefix string, opts ...GroupOption) *Group
- func (r *Router) Handle(method, pattern string, handler PageHandler) *Route
- func (r *Router) Head(pattern string, handler PageHandler) *Route
- func (r *Router) Match(methods []string, pattern string, handler PageHandler) []*Route
- func (r *Router) Name(name string, route *Route)
- func (r *Router) Options(pattern string, handler PageHandler) *Route
- func (r *Router) Patch(pattern string, handler PageHandler) *Route
- func (r *Router) Post(pattern string, handler PageHandler) *Route
- func (r *Router) Put(pattern string, handler PageHandler) *Route
- func (r *Router) RegisterLayout(name string, fn LayoutFunc, opts ...LayoutOption)
- func (r *Router) ServeHTTP(w http.ResponseWriter, req *http.Request)
- func (r *Router) SetApp(app any)
- func (r *Router) SetDefaultLayout(name string)
- func (r *Router) SetErrorPage(status int, handler PageHandler)
- func (r *Router) URL(name string, params ...any) string
- func (r *Router) Use(middleware ...Middleware) *Router
- type RouterOption
Constants ¶
const ( MethodGet = http.MethodGet MethodPost = http.MethodPost MethodPut = http.MethodPut MethodPatch = http.MethodPatch MethodDelete = http.MethodDelete MethodOptions = http.MethodOptions MethodHead = http.MethodHead )
HTTP method constants
const LoaderTimeout = 30 * time.Second
LoaderTimeout is the default timeout for data loaders
Variables ¶
This section is empty.
Functions ¶
func BlankLayout ¶
func BlankLayout(ctx *PageContext, content g.Node) g.Node
BlankLayout provides minimal layout (just wraps content in HTML structure)
func DashboardLayout ¶
func DashboardLayout(ctx *PageContext, content g.Node) g.Node
DashboardLayout provides a typical dashboard layout structure
func DefaultLayout ¶
func DefaultLayout(ctx *PageContext, content g.Node) g.Node
DefaultLayout provides a basic HTML5 layout
Types ¶
type ErrorHandler ¶
type ErrorHandler func(*PageContext, error) g.Node
ErrorHandler handles errors that occur during request processing
type Group ¶
type Group struct {
// contains filtered or unexported fields
}
Group represents a group of routes with shared configuration Renamed from RouteGroup for cleaner API
func (*Group) Delete ¶
func (g *Group) Delete(pattern string, handler PageHandler) *Route
Delete registers a DELETE route in the group
func (*Group) Get ¶
func (g *Group) Get(pattern string, handler PageHandler) *Route
Get registers a GET route in the group
func (*Group) Group ¶
func (g *Group) Group(prefix string, opts ...GroupOption) *Group
Group creates a nested route group
func (*Group) Head ¶
func (g *Group) Head(pattern string, handler PageHandler) *Route
Head registers a HEAD route in the group
func (*Group) Middleware ¶
func (g *Group) Middleware(middleware ...Middleware) *Group
Middleware adds middleware to this group (fluent API)
func (*Group) Options ¶
func (g *Group) Options(pattern string, handler PageHandler) *Route
Options registers an OPTIONS route in the group
func (*Group) Page ¶ added in v0.0.3
func (g *Group) Page(pattern string) *GroupPageBuilder
Page creates a new page builder for this group with fluent API
func (*Group) Patch ¶
func (g *Group) Patch(pattern string, handler PageHandler) *Route
Patch registers a PATCH route in the group
type GroupOption ¶
type GroupOption func(*Group)
GroupOption configures a Group
func GroupLayout ¶
func GroupLayout(layout string) GroupOption
GroupLayout sets the default layout for all routes in the group
func GroupMiddleware ¶
func GroupMiddleware(middleware ...Middleware) GroupOption
GroupMiddleware adds middleware to all routes in the group
type GroupPageBuilder ¶ added in v0.0.3
type GroupPageBuilder struct {
// contains filtered or unexported fields
}
GroupPageBuilder provides a fluent API for building and registering pages within a group
func (*GroupPageBuilder) DELETE ¶ added in v0.0.3
func (gpb *GroupPageBuilder) DELETE() *GroupPageBuilder
DELETE is a convenience method to set method to DELETE
func (*GroupPageBuilder) GET ¶ added in v0.0.3
func (gpb *GroupPageBuilder) GET() *GroupPageBuilder
GET is a convenience method to set method to GET
func (*GroupPageBuilder) Handler ¶ added in v0.0.3
func (gpb *GroupPageBuilder) Handler(handler PageHandler) *GroupPageBuilder
Handler sets the page handler function
func (*GroupPageBuilder) Layout ¶ added in v0.0.3
func (gpb *GroupPageBuilder) Layout(layout string) *GroupPageBuilder
Layout sets the layout name for this page
func (*GroupPageBuilder) Loader ¶ added in v0.0.3
func (gpb *GroupPageBuilder) Loader(loader LoaderFunc) *GroupPageBuilder
Loader sets the data loader function
func (*GroupPageBuilder) Meta ¶ added in v0.0.3
func (gpb *GroupPageBuilder) Meta(title, description string) *GroupPageBuilder
Meta sets the page metadata (title and description)
func (*GroupPageBuilder) MetaFull ¶ added in v0.0.3
func (gpb *GroupPageBuilder) MetaFull(meta *RouteMeta) *GroupPageBuilder
MetaFull sets complete page metadata
func (*GroupPageBuilder) Method ¶ added in v0.0.3
func (gpb *GroupPageBuilder) Method(method string) *GroupPageBuilder
Method sets the HTTP method for this page
func (*GroupPageBuilder) Middleware ¶ added in v0.0.3
func (gpb *GroupPageBuilder) Middleware(middleware ...Middleware) *GroupPageBuilder
Middleware adds middleware to this page
func (*GroupPageBuilder) Name ¶ added in v0.0.3
func (gpb *GroupPageBuilder) Name(name string) *GroupPageBuilder
Name sets a name for this route (for URL generation)
func (*GroupPageBuilder) NoLayout ¶ added in v0.0.3
func (gpb *GroupPageBuilder) NoLayout() *GroupPageBuilder
NoLayout disables layout for this page
func (*GroupPageBuilder) PATCH ¶ added in v0.0.3
func (gpb *GroupPageBuilder) PATCH() *GroupPageBuilder
PATCH is a convenience method to set method to PATCH
func (*GroupPageBuilder) POST ¶ added in v0.0.3
func (gpb *GroupPageBuilder) POST() *GroupPageBuilder
POST is a convenience method to set method to POST
func (*GroupPageBuilder) PUT ¶ added in v0.0.3
func (gpb *GroupPageBuilder) PUT() *GroupPageBuilder
PUT is a convenience method to set method to PUT
func (*GroupPageBuilder) Register ¶ added in v0.0.3
func (gpb *GroupPageBuilder) Register() *Route
Register registers the page with the router through the group
type LayoutConfig ¶
type LayoutConfig struct {
Fn LayoutFunc
Parent string
}
LayoutConfig holds layout configuration including parent relationship
type LayoutFunc ¶
type LayoutFunc func(ctx *PageContext, content g.Node) g.Node
LayoutFunc wraps page content with a layout
type LayoutOption ¶
type LayoutOption func(*LayoutConfig)
LayoutOption configures a layout
func WithParentLayout ¶
func WithParentLayout(parent string) LayoutOption
WithParentLayout sets the parent layout for composition
type LoaderError ¶
LoaderError represents an error that occurred during data loading
func (*LoaderError) Error ¶
func (e *LoaderError) Error() string
Error implements the error interface
func (*LoaderError) Unwrap ¶
func (e *LoaderError) Unwrap() error
Unwrap returns the underlying error
type LoaderFunc ¶
LoaderFunc loads data before rendering a page
type Middleware ¶
type Middleware func(PageHandler) PageHandler
Middleware is a function that wraps a PageHandler
func BasicAuth ¶
func BasicAuth(username, password string) Middleware
BasicAuth returns middleware that requires HTTP basic authentication
func Chain ¶
func Chain(middleware ...Middleware) Middleware
Chain chains multiple middleware into one
func RequestID ¶
func RequestID() Middleware
RequestID returns middleware that adds a unique request ID
func RequireMethod ¶
func RequireMethod(methods ...string) Middleware
RequireMethod returns middleware that only allows specific HTTP methods
func SetHeader ¶
func SetHeader(key, value string) Middleware
SetHeader returns middleware that sets a response header
func Timeout ¶
func Timeout(duration time.Duration) Middleware
Timeout returns middleware that enforces a timeout on requests
type PageContext ¶
type PageContext struct {
ResponseWriter http.ResponseWriter
Request *http.Request
Params Params
LoadedData any
Meta *RouteMeta
// contains filtered or unexported fields
}
PageContext wraps the HTTP request and response with additional utilities
func (*PageContext) App ¶
func (c *PageContext) App() any
App returns the application instance Returns interface{} to avoid circular dependency - cast to *forgeui.App in usage
func (*PageContext) ClientIP ¶
func (c *PageContext) ClientIP() string
ClientIP returns the client's IP address (best effort)
func (*PageContext) Context ¶
func (c *PageContext) Context() context.Context
Context returns the request's context
func (*PageContext) Cookie ¶
func (c *PageContext) Cookie(name string) (*http.Cookie, error)
Cookie retrieves a cookie by name
func (*PageContext) Get ¶
func (c *PageContext) Get(key string) (any, bool)
Get retrieves a value from the context
func (*PageContext) GetInt ¶
func (c *PageContext) GetInt(key string) int
GetInt retrieves an integer value from the context
func (*PageContext) GetMeta ¶
func (c *PageContext) GetMeta() *RouteMeta
GetMeta returns the route's metadata
func (*PageContext) GetString ¶
func (c *PageContext) GetString(key string) string
GetString retrieves a string value from the context
func (*PageContext) Header ¶
func (c *PageContext) Header(key string) string
Header retrieves a request header by key
func (*PageContext) IsSecure ¶
func (c *PageContext) IsSecure() bool
IsSecure returns true if the request is over HTTPS
func (*PageContext) LoaderData ¶
func (c *PageContext) LoaderData() any
LoaderData returns the data loaded by the route's loader
func (*PageContext) Method ¶
func (c *PageContext) Method() string
Method returns the HTTP method of the request
func (*PageContext) Param ¶
func (c *PageContext) Param(key string) string
Param retrieves a path parameter by key
func (*PageContext) ParamInt ¶
func (c *PageContext) ParamInt(key string) (int, error)
ParamInt retrieves a path parameter as an integer
func (*PageContext) ParamInt64 ¶
func (c *PageContext) ParamInt64(key string) (int64, error)
ParamInt64 retrieves a path parameter as an int64
func (*PageContext) Path ¶
func (c *PageContext) Path() string
Path returns the URL path of the request
func (*PageContext) Query ¶
func (c *PageContext) Query(key string) string
Query retrieves a query parameter by key
func (*PageContext) QueryBool ¶
func (c *PageContext) QueryBool(key string) bool
QueryBool retrieves a query parameter as a boolean
func (*PageContext) QueryDefault ¶
func (c *PageContext) QueryDefault(key, defaultVal string) string
QueryDefault retrieves a query parameter with a default value
func (*PageContext) QueryInt ¶
func (c *PageContext) QueryInt(key string) (int, error)
QueryInt retrieves a query parameter as an integer
func (*PageContext) QueryInt64 ¶
func (c *PageContext) QueryInt64(key string) (int64, error)
QueryInt64 retrieves a query parameter as an int64
func (*PageContext) Set ¶
func (c *PageContext) Set(key string, value any)
Set stores a value in the context for the duration of the request
func (*PageContext) SetCookie ¶
func (c *PageContext) SetCookie(cookie *http.Cookie)
SetCookie sets a cookie in the response
func (*PageContext) SetHeader ¶
func (c *PageContext) SetHeader(key, value string)
SetHeader sets a response header
func (*PageContext) WithContext ¶
func (c *PageContext) WithContext(ctx context.Context) *PageContext
WithContext returns a shallow copy of PageContext with a new context
type PageHandler ¶
type PageHandler func(*PageContext) (g.Node, error)
PageHandler is a function that handles a page request and returns a Node for rendering
func DefaultErrorPage ¶
func DefaultErrorPage(status int) PageHandler
DefaultErrorPage returns a default error page for the given status code
func HandlerFunc ¶
func HandlerFunc(fn http.HandlerFunc) PageHandler
HandlerFunc converts a standard http.HandlerFunc to a PageHandler This is useful for integrating with existing HTTP handlers that don't return nodes
type Route ¶
type Route struct {
Pattern string
Method string
Handler PageHandler
Middleware []Middleware
Name string
Layout string
LoaderFn LoaderFunc
Metadata *RouteMeta
// contains filtered or unexported fields
}
Route represents a single route in the router
func (*Route) Description ¶
Description sets just the description metadata
func (*Route) Loader ¶
func (r *Route) Loader(fn LoaderFunc) *Route
Loader sets the data loader for a route
func (*Route) URLMap ¶
URLMap generates a URL from this route's pattern with named parameters Example: route.URLMap(map[string]interface{}{"id": 123, "action": "edit"})
func (*Route) WithLoader ¶
func (r *Route) WithLoader(loader LoaderFunc) *Route
WithLoader sets the loader function for this route
func (*Route) WithMiddleware ¶
func (r *Route) WithMiddleware(middleware ...Middleware) *Route
WithMiddleware adds middleware to this route
type RouteBuilder ¶
type RouteBuilder struct {
// contains filtered or unexported fields
}
RouteBuilder provides a fluent API for building routes
func (*RouteBuilder) Build ¶
func (b *RouteBuilder) Build() *Route
Build finalizes the route (no-op, for API consistency)
func (*RouteBuilder) Handler ¶
func (b *RouteBuilder) Handler(handler PageHandler) *RouteBuilder
Handler sets the handler function (optional, used if handler not set during registration)
func (*RouteBuilder) Middleware ¶
func (b *RouteBuilder) Middleware(middleware ...Middleware) *RouteBuilder
Middleware adds middleware to this specific route
func (*RouteBuilder) Name ¶
func (b *RouteBuilder) Name(name string) *RouteBuilder
Name sets the name of the route for URL generation
type RouteMeta ¶
type RouteMeta struct {
Title string
Description string
Keywords []string
OGImage string
OGType string
CanonicalURL string
NoIndex bool
}
RouteMeta contains SEO and page metadata
type Router ¶
type Router struct {
// contains filtered or unexported fields
}
Router handles HTTP routing for ForgeUI applications
func New ¶
func New(opts ...RouterOption) *Router
New creates a new router with optional configuration
func (*Router) Delete ¶
func (r *Router) Delete(pattern string, handler PageHandler) *Route
Delete registers a DELETE route
func (*Router) Get ¶
func (r *Router) Get(pattern string, handler PageHandler) *Route
Get registers a GET route
func (*Router) GetLayout ¶
func (r *Router) GetLayout(name string) (LayoutFunc, bool)
GetLayout retrieves a layout by name
func (*Router) Group ¶
func (r *Router) Group(prefix string, opts ...GroupOption) *Group
Group creates a new route group with a common prefix and options
func (*Router) Handle ¶
func (r *Router) Handle(method, pattern string, handler PageHandler) *Route
Handle registers a route with the given method, pattern, and handler
func (*Router) Head ¶
func (r *Router) Head(pattern string, handler PageHandler) *Route
Head registers a HEAD route
func (*Router) Match ¶
func (r *Router) Match(methods []string, pattern string, handler PageHandler) []*Route
Match registers a route that matches multiple HTTP methods
func (*Router) Options ¶
func (r *Router) Options(pattern string, handler PageHandler) *Route
Options registers an OPTIONS route
func (*Router) Patch ¶
func (r *Router) Patch(pattern string, handler PageHandler) *Route
Patch registers a PATCH route
func (*Router) Post ¶
func (r *Router) Post(pattern string, handler PageHandler) *Route
Post registers a POST route
func (*Router) Put ¶
func (r *Router) Put(pattern string, handler PageHandler) *Route
Put registers a PUT route
func (*Router) RegisterLayout ¶
func (r *Router) RegisterLayout(name string, fn LayoutFunc, opts ...LayoutOption)
RegisterLayout registers a named layout with optional parent
func (*Router) ServeHTTP ¶
func (r *Router) ServeHTTP(w http.ResponseWriter, req *http.Request)
ServeHTTP implements http.Handler interface
func (*Router) SetDefaultLayout ¶
SetDefaultLayout sets the default layout for all routes
func (*Router) SetErrorPage ¶
func (r *Router) SetErrorPage(status int, handler PageHandler)
SetErrorPage registers a custom error page for a specific status code
func (*Router) URL ¶
URL generates a URL for a named route with the given parameters Example: router.URL("user", 123) -> "/users/123"
func (*Router) Use ¶
func (r *Router) Use(middleware ...Middleware) *Router
Use adds global middleware to the router
type RouterOption ¶
type RouterOption func(*Router)
RouterOption is a functional option for configuring the Router
func WithBasePath ¶
func WithBasePath(path string) RouterOption
WithBasePath sets a base path for all routes
func WithErrorHandler ¶
func WithErrorHandler(handler ErrorHandler) RouterOption
WithErrorHandler sets a custom error handler
func WithNotFound ¶
func WithNotFound(handler PageHandler) RouterOption
WithNotFound sets a custom 404 handler