From 79b1be171573d4fac8de25e7c45d7121ace4c359 Mon Sep 17 00:00:00 2001 From: Felix Kuennecke Date: Thu, 20 Aug 2026 18:58:23 +0200 Subject: [PATCH] feat(web): add course embed to Kirkpatrick model blog post Adds a CourseEmbed component (iframe + next/script loader) so the Kirkpatrick Model blog post can embed the matching Scibly course, mirroring the app's oEmbed snippet but as a JSX-safe component instead of pasted raw HTML. Co-Authored-By: Claude Sonnet 5 --- .../[lang]/blog/components/course-embed.tsx | 40 +++++++++++++++++++ .../app/[lang]/blog/kirkpatrick-modell/de.mdx | 10 +++++ .../app/[lang]/blog/kirkpatrick-modell/en.mdx | 10 +++++ apps/web/src/mdx-components.tsx | 2 + 4 files changed, 62 insertions(+) create mode 100644 apps/web/src/app/[lang]/blog/components/course-embed.tsx diff --git a/apps/web/src/app/[lang]/blog/components/course-embed.tsx b/apps/web/src/app/[lang]/blog/components/course-embed.tsx new file mode 100644 index 0000000..7e2a0d9 --- /dev/null +++ b/apps/web/src/app/[lang]/blog/components/course-embed.tsx @@ -0,0 +1,40 @@ +"use client"; + +import Script from "next/script"; + +const EMBED_SCRIPT_SRC = "https://app.scibly.com/embed/v1.js"; + +interface CourseEmbedProps { + src: string; + title: string; + widthPx?: number; + heightPx?: number; +} + +// Mirrors the snippet from apps/app/.../embed-course/snippet.ts as a JSX-safe +// component: `style` must be an object here, and next/script (not a raw +//