diff --git a/packages/cms-admin/src/components/editor/rich-text-editor.tsx b/packages/cms-admin/src/components/editor/rich-text-editor.tsx
index aa14ca36..dcbe8165 100644
--- a/packages/cms-admin/src/components/editor/rich-text-editor.tsx
+++ b/packages/cms-admin/src/components/editor/rich-text-editor.tsx
@@ -35,7 +35,7 @@ import {
IconUnderline, IconSuperscript, IconSubscript, IconHighlight,
IconZoomIn, IconZoomOut, IconProofread,
} from "./editor-icons";
-import { Image as LucideImage, Zap, MessageSquareWarning, Code2, ChevronDown, Braces, Shapes } from "lucide-react";
+import { Image as LucideImage, Zap, MessageSquareWarning, Code2, ChevronDown, Braces, Shapes, RemoveFormatting } from "lucide-react";
import { toast } from "sonner";
import { AIMetadataPopover } from "@/components/media/ai-metadata-popover";
import { ProofreadPlugin, proofreadKey, textOffsetToPos } from "./proofread-plugin";
@@ -3163,7 +3163,7 @@ function RichTextEditorInner({ value, onChange, disabled, stickyOffset = 132, fe
{(has("bold") || has("italic") || has("strike") || has("code")) && editor.chain().focus().unsetAllMarks().clearNodes().run()}>
-
+
}
{(has("bold") || has("italic") || has("strike") || has("code")) && }
diff --git a/packages/cms-admin/src/lib/__tests__/webhook-dispatch.test.ts b/packages/cms-admin/src/lib/__tests__/webhook-dispatch.test.ts
index db46749d..ecf7e4aa 100644
--- a/packages/cms-admin/src/lib/__tests__/webhook-dispatch.test.ts
+++ b/packages/cms-admin/src/lib/__tests__/webhook-dispatch.test.ts
@@ -183,7 +183,7 @@ describe("Webhook Dispatch", () => {
});
it("returns empty array for empty webhooks list", async () => {
- const results = await dispatchWebhooks([], baseEvent, mockFetch);
+ const results = await dispatchWebhooks([], baseEvent, mockFetch as unknown as typeof fetch);
expect(results).toEqual([]);
expect(mockFetch).not.toHaveBeenCalled();
});
@@ -194,7 +194,7 @@ describe("Webhook Dispatch", () => {
{ id: "2", url: "https://hooks.slack.com/services/T/B/x" },
{ id: "3", url: "https://example.com/hook" },
];
- const results = await dispatchWebhooks(webhooks, baseEvent, mockFetch);
+ const results = await dispatchWebhooks(webhooks, baseEvent, mockFetch as unknown as typeof fetch);
expect(mockFetch).toHaveBeenCalledTimes(3);
expect(results).toHaveLength(3);
expect(results.every((r) => r.success)).toBe(true);
@@ -211,7 +211,7 @@ describe("Webhook Dispatch", () => {
{ id: "2", url: "https://example.com/b" },
{ id: "3", url: "https://example.com/c" },
];
- const results = await dispatchWebhooks(webhooks, baseEvent, mockFetch);
+ const results = await dispatchWebhooks(webhooks, baseEvent, mockFetch as unknown as typeof fetch);
expect(results[0].success).toBe(true);
expect(results[1].success).toBe(false);
expect(results[1].error).toContain("Connection refused");
@@ -221,7 +221,7 @@ describe("Webhook Dispatch", () => {
it("reports HTTP error status codes", async () => {
mockFetch.mockResolvedValue({ ok: false, status: 404 });
const webhooks: WebhookEntry[] = [{ id: "1", url: "https://example.com/hook" }];
- const results = await dispatchWebhooks(webhooks, baseEvent, mockFetch);
+ const results = await dispatchWebhooks(webhooks, baseEvent, mockFetch as unknown as typeof fetch);
expect(results[0].success).toBe(false);
expect(results[0].statusCode).toBe(404);
});
@@ -232,7 +232,7 @@ describe("Webhook Dispatch", () => {
{ id: "2", url: "https://hooks.slack.com/services/T/B/x" },
{ id: "3", url: "https://example.com/hook" },
];
- await dispatchWebhooks(webhooks, baseEvent, mockFetch);
+ await dispatchWebhooks(webhooks, baseEvent, mockFetch as unknown as typeof fetch);
// Discord
const discordBody = JSON.parse(mockFetch.mock.calls[0][1].body);