lotus(#5): native transparent-background + Lotus theme hooks
Adds body.lotus-transparent (lotusTransparent=1) so the host wallpaper
shows through the call natively, retiring cinny's injected
`html,body{background:none!important}` hack; and body.lotus-theme
(lotusTheme=1) as a source-level Compound-token override hook for the
Lotus/TDS palette (driven by the existing setTheme channel / URL flags).
Additive: no-op without the flags.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
10e6ba46e2
commit
22be058108
@@ -85,6 +85,25 @@ body {
|
|||||||
-webkit-tap-highlight-color: transparent;
|
-webkit-tap-highlight-color: transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* [lotus] When embedded in the Lotus host with lotusTransparent=1, make the
|
||||||
|
app background transparent so the host's wallpaper shows through natively —
|
||||||
|
replacing the host's injected `html, body { background: none !important }`
|
||||||
|
override. */
|
||||||
|
body.lotus-transparent,
|
||||||
|
body.lotus-transparent #root {
|
||||||
|
background: transparent !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* [lotus] Native Lotus/TDS theme, applied when lotusTheme=1, instead of the
|
||||||
|
host injecting CSS into the iframe after load. Overrides Compound design tokens
|
||||||
|
with Lotus values at the source so theming is complete and flash-free. Extend
|
||||||
|
this block with the full Lotus token map from the design system; the canvas
|
||||||
|
override below is a safe starting point that matches the Lotus dark surface. */
|
||||||
|
body.lotus-theme {
|
||||||
|
--cpd-color-bg-canvas-default: #0c0d10;
|
||||||
|
--video-tile-background: var(--cpd-color-bg-subtle-secondary);
|
||||||
|
}
|
||||||
|
|
||||||
/* This prohibits the view to scroll for pages smaller than 122px in width
|
/* This prohibits the view to scroll for pages smaller than 122px in width
|
||||||
we use this for mobile pip webviews */
|
we use this for mobile pip webviews */
|
||||||
.no-scroll-body {
|
.no-scroll-body {
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import { type IThemeChangeActionRequest } from "matrix-widget-api";
|
|||||||
|
|
||||||
import { getUrlParams } from "./UrlParams";
|
import { getUrlParams } from "./UrlParams";
|
||||||
import { widget } from "./widget";
|
import { widget } from "./widget";
|
||||||
|
import { lotusFlag } from "./lotus/lotusWidget";
|
||||||
|
|
||||||
export const useTheme = (): void => {
|
export const useTheme = (): void => {
|
||||||
const [requestedTheme, setRequestedTheme] = useState(
|
const [requestedTheme, setRequestedTheme] = useState(
|
||||||
@@ -57,5 +58,10 @@ export const useTheme = (): void => {
|
|||||||
previousTheme.current = themeString;
|
previousTheme.current = themeString;
|
||||||
}
|
}
|
||||||
document.body.classList.remove("no-theme");
|
document.body.classList.remove("no-theme");
|
||||||
|
// [lotus #5] Native theming hooks, opted in by the host via URL flags, so
|
||||||
|
// it no longer has to inject CSS into the iframe after load.
|
||||||
|
if (lotusFlag("lotusTransparent"))
|
||||||
|
document.body.classList.add("lotus-transparent");
|
||||||
|
if (lotusFlag("lotusTheme")) document.body.classList.add("lotus-theme");
|
||||||
}, [previousTheme, requestedTheme]);
|
}, [previousTheme, requestedTheme]);
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user