diff --git a/bun.lock b/bun.lock
index a1d6251a..d968aff3 100644
--- a/bun.lock
+++ b/bun.lock
@@ -439,7 +439,7 @@
},
"packages/email-renderer": {
"name": "@wrnexus/email-renderer",
- "version": "0.1.50",
+ "version": "0.1.51",
"dependencies": {
"@wrnexus/blocks": "workspace:*",
"amphtml-validator": "1.0.38",
diff --git a/packages/email-renderer/package.json b/packages/email-renderer/package.json
index 7a031c1a..d12c68da 100644
--- a/packages/email-renderer/package.json
+++ b/packages/email-renderer/package.json
@@ -1,6 +1,6 @@
{
"name": "@wrnexus/email-renderer",
- "version": "0.1.50",
+ "version": "0.1.51",
"type": "module",
"description": "WRNexus block email renderers with HTML, text, AMP Email, and MJML interoperability.",
"exports": {
diff --git a/packages/email-renderer/src/blocks.ts b/packages/email-renderer/src/blocks.ts
index 3b85a5f7..d8697455 100644
--- a/packages/email-renderer/src/blocks.ts
+++ b/packages/email-renderer/src/blocks.ts
@@ -340,7 +340,7 @@ export const headingBlock = leaf(
{
emailHtml: ({ node }) =>
emailCell(
- `${renderRichText(attrs(node))}`,
+ `${renderRichText(attrs(node))}`,
node,
),
ampEmail: ({ node }) =>
diff --git a/packages/email-renderer/test/heading-size.test.ts b/packages/email-renderer/test/heading-size.test.ts
new file mode 100644
index 00000000..0e44bad0
--- /dev/null
+++ b/packages/email-renderer/test/heading-size.test.ts
@@ -0,0 +1,13 @@
+import { expect, test } from "bun:test";
+import { renderEmail } from "../src/index.ts";
+
+test("explicit heading sizes are not multiplied by browser heading defaults", async () => {
+ for (const size of [undefined, "36px", "expression(1)"]) {
+ const result = await renderEmail({schemaVersion:1,kind:"email",meta:{subject:"Typography",lang:"en"},theme:{tokens:{}},root:{id:"root",type:"layout.email-document",version:1,props:{width:"600"},styles:{},slots:{content:[{id:"heading",type:"content.heading",version:1,props:{text:"Design that works",level:"1"},styles:size?{fontSize:{base:size}}:{},slots:{}}]}}}, {amp:false,mjml:false});
+ expect(result.ok).toBe(true);
+ if (!result.ok) continue;
+ const html=result.value.parts.html.content;
+ expect(html.includes("font-size:inherit;line-height:1.2;")).toBe(size === "36px");
+ expect(html).not.toContain("expression(");
+ }
+});