ferro-json-ui 0.2.0

JSON-based server-driven UI schema types for Ferro
Documentation

ferro-json-ui

JSON-based server-driven UI schema types for the Ferro web framework.

Define UI components, layouts, and data bindings as structured JSON. Ferro renders them to HTML on the server — no frontend build step required.

Features

  • 30+ built-in components — tables, forms, cards, alerts, badges, buttons, tabs, charts, and more
  • Layout system — stack, grid, sidebar, and dashboard layout primitives
  • Action system — navigate, submit form, call API, open modal, trigger events
  • Data binding — field-level value extraction with validation error resolution
  • Plugin system — register custom components with associated CSS/JS assets
  • Compile-time validation — component schema is checked at compile time via schemars

Usage

use ferro_json_ui::{JsonUiView, Component, LayoutComponent};

let view = JsonUiView {
    layout: LayoutComponent::Stack {
        gap: Some("md".into()),
        children: vec![
            Component::Heading {
                text: "Users".into(),
                level: 1,
            },
            Component::Table {
                columns: vec!["Name".into(), "Email".into(), "Role".into()],
                rows: users
                    .iter()
                    .map(|u| vec![u.name.clone(), u.email.clone(), u.role.clone()])
                    .collect(),
                actions: vec![],
            },
        ],
    },
};

// In a Ferro handler, return the view directly
Ok(view.into_response())

Documentation

Full documentation at docs.ferro-rs.dev.

License

MIT