Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions apps/web/src/app/[lang]/blog/components/course-embed.tsx
Original file line number Diff line number Diff line change
@@ -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
// <script> tag) is how this codebase loads third-party embed loaders.
export function CourseEmbed({
src,
title,
widthPx = 640,
heightPx = 600,
}: CourseEmbedProps) {
return (
<div className="border-hairline bg-ground-soft my-9 overflow-hidden rounded-[20px] border-2 p-2 shadow-[0_4px_0_0_var(--color-lip)]">
<iframe
src={src}
title={title}
data-scibly-embed
width={widthPx}
height={heightPx}
style={{ width: "100%", height: `${heightPx}px`, border: 0 }}
allow="autoplay"
referrerPolicy="strict-origin-when-cross-origin"
loading="lazy"
className="rounded-[14px]"
/>
<Script src={EMBED_SCRIPT_SRC} strategy="afterInteractive" />
</div>
);
}
10 changes: 10 additions & 0 deletions apps/web/src/app/[lang]/blog/kirkpatrick-modell/de.mdx
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { CourseEmbed } from "../components/course-embed";
import { PostLayout } from "../components/post-layout";

export const metadata = {
Expand Down Expand Up @@ -49,6 +50,15 @@ Nicht jede Schulung braucht alle vier Ebenen. Ein pragmatischer Ansatz:
- **Ebene 3 bei Prozess- und Verhaltensschulungen.** Wenn das Ziel eine Verhaltensänderung ist, etwa im Kundenkontakt oder bei Sicherheitsprozessen, lohnt sich eine Stichprobe nach einigen Wochen.
- **Ebene 4 nur bei Schulungen mit klarem Geschäftsbezug.** Nicht jede Schulung lässt sich sinnvoll auf eine Kennzahl zurückführen, bei Vertriebs- oder Sicherheitstrainings ist der Zusammenhang aber oft direkt greifbar.

## Das Kirkpatrick-Modell als Kurs erleben

Wie sieht das Ganze als echtes Trainingsmodul aus? Probiere den kurzen Kurs unten direkt aus.

<CourseEmbed
src="https://app.scibly.com/embed/courses/cmt1oqwha000804jllsg9t110"
title="The Kirkpatrick Model in 4 Levels"
/>

## Häufige Fragen

### Wer hat das Kirkpatrick-Modell entwickelt?
Expand Down
10 changes: 10 additions & 0 deletions apps/web/src/app/[lang]/blog/kirkpatrick-modell/en.mdx
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { CourseEmbed } from "../components/course-embed";
import { PostLayout } from "../components/post-layout";

export const metadata = {
Expand Down Expand Up @@ -49,6 +50,15 @@ Not every training program needs all four levels. A pragmatic approach:
- **Level 3 for process and behavior training.** If the goal is a behavior change, for example in customer interactions or safety processes, a spot check after a few weeks is worthwhile.
- **Level 4 only for training with a clear business tie-in.** Not every training program can be sensibly traced back to a metric, but for sales or safety training the connection is often directly tangible.

## See the Kirkpatrick Model in a course

Want to see how this looks as an actual training module? Try the short course below.

<CourseEmbed
src="https://app.scibly.com/embed/courses/cmt1oqwha000804jllsg9t110"
title="The Kirkpatrick Model in 4 Levels"
/>

## Frequently asked questions

### Who developed the Kirkpatrick Model?
Expand Down
2 changes: 2 additions & 0 deletions apps/web/src/mdx-components.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import * as React from "react";

import { Callout } from "@/app/[lang]/blog/components/callout";
import { CodeBlock } from "@/app/[lang]/blog/components/code-block";
import { CourseEmbed } from "@/app/[lang]/blog/components/course-embed";
import { lipShadow } from "@/app/[lang]/components/marketing-tokens";

function getHeadingText(node: React.ReactNode): string {
Expand Down Expand Up @@ -337,6 +338,7 @@ export function useMDXComponents(components: MDXComponents): MDXComponents {
return <input type={type} {...props} />;
},
Callout,
CourseEmbed,
...components,
};
}
Loading