From e68d1d1b5fe819b96b3db1452bfe74f107881d36 Mon Sep 17 00:00:00 2001 From: Valere Date: Wed, 2 Sep 2026 19:28:14 +0200 Subject: [PATCH] Say what the root element seam cannot do yet RootElementContext's documentation promised that Element Call confines its decoration to the given element, but several selectors still name body directly and the initializer writes data-platform onto it. A non-body root is decorated correctly and styled incorrectly, with no error to show for it, so the documentation should say so until the stylesheets are scoped. --- src/RootElementContext.ts | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/RootElementContext.ts b/src/RootElementContext.ts index b97b17796..b46573d38 100644 --- a/src/RootElementContext.ts +++ b/src/RootElementContext.ts @@ -12,9 +12,17 @@ import { createContext, use } from "react"; * * Element Call decorates this element with the theme, layout and background * attributes its stylesheets key off, and portals its modals into it. When - * Element Call owns the page this is simply the document body; when it is - * embedded in a host application it is the container the host mounted it into, - * so that Element Call does not reach outside its own subtree. + * Element Call owns the page this is simply the document body; the intent is + * that when embedded in a host application it becomes the container the host + * mounted it into, so that Element Call does not reach outside its own subtree. + * + * That intent is not yet achievable: several selectors still name `body` + * directly — `body[data-background="gradient"]` and `body[data-platform=…]` in + * `index.css`, and `body[data-platform="ios"]` in `AppBar.module.css` and + * `Modal.module.css` — and `Initializer.initBeforeReact` writes + * `data-platform` straight onto the body. So anything other than the body will + * be decorated correctly and styled incorrectly, silently. Until those are + * scoped, treat this as preparation rather than a working seam. */ const RootElementContext = createContext(null);