diff --git a/packages/astro/src/default/components/OpenInStackblitzLink.astro b/packages/astro/src/default/components/OpenInStackblitzLink.astro
deleted file mode 100644
index 1dd06becd..000000000
--- a/packages/astro/src/default/components/OpenInStackblitzLink.astro
+++ /dev/null
@@ -1,41 +0,0 @@
-
-
-
diff --git a/packages/astro/src/default/components/OpenInStackblitzLink.tsx b/packages/astro/src/default/components/OpenInStackblitzLink.tsx
new file mode 100644
index 000000000..dfbee937d
--- /dev/null
+++ b/packages/astro/src/default/components/OpenInStackblitzLink.tsx
@@ -0,0 +1,37 @@
+import StackBlitzSDK from '@stackblitz/sdk';
+import { tutorialStore } from './webcontainer.js';
+
+export function OpenInStackblitzLink() {
+ return (
+
+ );
+}
+
+function onClick() {
+ const lesson = tutorialStore.lesson;
+
+ if (!lesson) {
+ throw new Error('Missing lesson');
+ }
+
+ const snapshot = tutorialStore.takeSnapshot();
+ const options = typeof lesson.data.openInStackBlitz === 'object' ? lesson.data.openInStackBlitz : {};
+
+ StackBlitzSDK.openProject({
+ title: options.projectTitle || 'Project generated by TutorialKit',
+ description: options.projectDescription,
+ template: options.projectTemplate || 'node',
+ files: snapshot.files,
+ });
+}
diff --git a/packages/astro/src/default/components/TopBarWrapper.astro b/packages/astro/src/default/components/TopBarWrapper.astro
index 6ea8b0cc7..1d3b89101 100644
--- a/packages/astro/src/default/components/TopBarWrapper.astro
+++ b/packages/astro/src/default/components/TopBarWrapper.astro
@@ -3,7 +3,7 @@ import { TopBar } from 'tutorialkit:override-components';
import type { Lesson } from '@tutorialkit/types';
import { ThemeSwitch } from './ThemeSwitch';
import { LoginButton } from './LoginButton';
-import OpenInStackblitzLink from './OpenInStackblitzLink.astro';
+import { OpenInStackblitzLink } from './OpenInStackblitzLink';
import Logo from './Logo.astro';
import { useAuth } from './setup';
@@ -18,7 +18,7 @@ const { logoLink, openInStackBlitz } = Astro.props;
- {openInStackBlitz && }
+ {openInStackBlitz && }
diff --git a/packages/cli/tests/__snapshots__/create-tutorial.test.ts.snap b/packages/cli/tests/__snapshots__/create-tutorial.test.ts.snap
index 381191655..67e94228b 100644
--- a/packages/cli/tests/__snapshots__/create-tutorial.test.ts.snap
+++ b/packages/cli/tests/__snapshots__/create-tutorial.test.ts.snap
@@ -209,7 +209,7 @@ exports[`create and eject a project 1`] = `
"src/components/MobileContentToggle.astro",
"src/components/NavCard.astro",
"src/components/NavWrapper.tsx",
- "src/components/OpenInStackblitzLink.astro",
+ "src/components/OpenInStackblitzLink.tsx",
"src/components/PageLoadingIndicator.astro",
"src/components/ResizablePanel.astro",
"src/components/ThemeSwitch.tsx",