diff --git a/scripts/scope-css.mjs b/scripts/scope-css.mjs index cd073bd..ccc08e9 100644 --- a/scripts/scope-css.mjs +++ b/scripts/scope-css.mjs @@ -12,8 +12,9 @@ import { transform } from "lightningcss"; * order, while still reaching the view root itself and the portal layer, * both of which carry `.bcal-root`. * - * Theme variables move from `:root, :host` onto `.bcal-root` for the same - * reason: a later `:root{--spacing:…}` from someone else must not resize us. + * Tailwind's own theme variables stay on `:root, :host`: moved onto the view + * root they would sit above Obsidian's `body` values, and `--color-accent` + * is a name both sides use — the accent would turn into the hover grey. */ const ROOT = "bcal-root"; @@ -48,9 +49,7 @@ function mentions(selector, name) { } function scopeSelector(selector) { - if (isPseudo(selector, "root")) return [{ type: "class", name: ROOT }]; - // `:root, :host` is one rule; the root alone carries it, so :host goes. - if (isPseudo(selector, "host")) return []; + if (isPseudo(selector, "root") || isPseudo(selector, "host")) return selector; if (mentions(selector, ROOT)) return selector; // `*` has to open a compound, and :is() takes that place now. const rest = selector[0]?.type === "universal" ? selector.slice(1) : selector; diff --git a/tests/scope-css.test.ts b/tests/scope-css.test.ts index b7ed642..ba261a3 100644 --- a/tests/scope-css.test.ts +++ b/tests/scope-css.test.ts @@ -40,9 +40,9 @@ describe("scoping the built stylesheet", () => { expect(out).not.toContain("*)*"); }); - it("moves theme variables from :root onto the view root", () => { + it("leaves tailwind's theme variables on :root, under obsidian's body values", () => { expect(one(":root,:host{--spacing:.25rem}")).toBe( - ".bcal-root { --spacing: .25rem; }", + ":root, :host { --spacing: .25rem; }", ); });