Host controls postMessage host → iframe
Every widget on this page listens for
plumeo:set-tenant,
plumeo:navigate, and plumeo:set-theme messages.
Click to broadcast to every embedded widget at once.
Tenant
Theme
Navigate
Plain URL iframe ?page=dashboard url
Host adds
<iframe src="/embed?page=…">. No SDK,
no build step. Filters + tenant + theme are query params.
Filtered list widgets &category=hvac,boiler url
JS SDK import { mount } from "/sdk/embed.js" sdk
Drop-in ES module. Returns a handle with
setTenant(), navigate(),
setTheme(), and on("ready"|"resize"|"navigate").
Call destroy() when done.
import { mount } from "https://your-host.example.com/sdk/embed.js";
const handle = mount(document.getElementById("dash"), {
baseUrl: "https://your-host.example.com",
page: "dashboard",
tenantId: "t-corp",
});
handle.on("navigate", (path) => console.log("→", path));
handle.setTenant("t-muni"); // live, no reload
handle.navigate("asset-detail", { id: "t-edu-a-1" });
handle.setTheme("dark");
handle.destroy();
SDK #B
Web Components <Plumeo-asset-detail> web-components
defineWebComponents() registers 17 custom elements
(Plumeo-widget + one per view). Attribute changes are
reactive — no re-render, the iframe updates via postMessage.
<script type="module">
import { defineWebComponents } from "/sdk/web-components.js";
defineWebComponents();
</script>
<Plumeo-asset-detail
base-url="https://your-host.example.com"
tenant-id="t-edu"
entity-id="t-edu-a-1"
theme="dark">
</Plumeo-asset-detail>
React wrapper @plumeo/embed/react react
Tiny wrapper component — prop changes propagate to the iframe live
via the same postMessage bridge. Use this from any React host app.
import { PlumeoWidget } from "@plumeo/embed/react";
function HostApp() {
const [tenant, setTenant] = useState("t-edu");
return (
<PlumeoWidget
baseUrl="https://your-host.example.com"
page="asset-detail"
tenantId={tenant}
id="t-edu-a-1"
theme="light"
onNavigate={(path) => console.log(path)}
onResize={(h) => console.log("height", h)}
/>
);
}
URL builder try it yourself
All page values
| page= | Renders | Extra params |
|---|---|---|
| dashboard | Portfolio overview | — |
| assets | Assets list | status, condition, category, q |
| asset-detail | Single asset | id |
| buildings | Buildings list | status, q |
| building-detail | Single building | id |
| spaces | Spaces list | category, status, q |
| space-detail | Single space | id |
| locations | Locations list | — |
| people | People list | role, q |
| person-detail | Single person | id |
| work-orders | Work-order queue | status, priority, type, q |
| work-order-detail | Single work order | id |
| requests | Requests queue | status, category, priority, q |
| request-detail | Single request | id |
| projects | Projects list | status, type, q |
| project-detail | Single project | id |
| documents | Documents list | kind, q |