diff --git a/src/components/MDX/A.astro b/src/components/MDX/A.astro
new file mode 100644
index 0000000..3f7c954
--- /dev/null
+++ b/src/components/MDX/A.astro
@@ -0,0 +1,11 @@
+---
+import type { HTMLAttributes } from "astro/types";
+
+interface Props extends HTMLAttributes<"a"> {}
+
+import Link from "@components/Link.astro";
+
+const { href, ...attrs } = Astro.props as Props;
+---
+
+
diff --git a/src/components/MDX/Blockquote.astro b/src/components/MDX/Blockquote.astro
new file mode 100644
index 0000000..256311e
--- /dev/null
+++ b/src/components/MDX/Blockquote.astro
@@ -0,0 +1,7 @@
+
diff --git a/src/components/MDX/CodeSnippet.astro b/src/components/MDX/CodeSnippet.astro
new file mode 100644
index 0000000..8c866bc
--- /dev/null
+++ b/src/components/MDX/CodeSnippet.astro
@@ -0,0 +1,112 @@
+---
+import { Icon } from "astro-icon/components";
+
+const meta: Record = {};
+const {
+ "data-meta": dataMeta,
+ "data-code": dataCode,
+ class: className,
+ ...props
+} = Astro.props;
+
+if (dataMeta) {
+ dataMeta.split(",").forEach((prop: string) => {
+ const tokens = prop.split("=");
+ meta[tokens[0].trim()] = tokens[1];
+ });
+}
+
+const languageIcons: Record = {
+ javascript: "mdi:language-javascript"
+};
+
+const languageIcon = languageIcons[props["data-language"]];
+
+const title = meta.title;
+---
+
+
+ {
+ title && (
+
+
+
+
+ {languageIcon &&
}
+
{title}
+
+
+
+
+
+ )
+ }
+
+
+
+
+
+
+
diff --git a/src/components/MDX/H1.astro b/src/components/MDX/H1.astro
new file mode 100644
index 0000000..920e14a
--- /dev/null
+++ b/src/components/MDX/H1.astro
@@ -0,0 +1 @@
+
diff --git a/src/components/MDX/H2.astro b/src/components/MDX/H2.astro
new file mode 100644
index 0000000..4f74d0f
--- /dev/null
+++ b/src/components/MDX/H2.astro
@@ -0,0 +1 @@
+
diff --git a/src/components/MDX/H3.astro b/src/components/MDX/H3.astro
new file mode 100644
index 0000000..be6a232
--- /dev/null
+++ b/src/components/MDX/H3.astro
@@ -0,0 +1 @@
+
diff --git a/src/components/MDX/H4.astro b/src/components/MDX/H4.astro
new file mode 100644
index 0000000..6c7b575
--- /dev/null
+++ b/src/components/MDX/H4.astro
@@ -0,0 +1 @@
+
diff --git a/src/components/MDX/H5.astro b/src/components/MDX/H5.astro
new file mode 100644
index 0000000..c4967b7
--- /dev/null
+++ b/src/components/MDX/H5.astro
@@ -0,0 +1 @@
+
diff --git a/src/components/MDX/H6.astro b/src/components/MDX/H6.astro
new file mode 100644
index 0000000..296d008
--- /dev/null
+++ b/src/components/MDX/H6.astro
@@ -0,0 +1 @@
+
diff --git a/src/components/MDX/P.astro b/src/components/MDX/P.astro
new file mode 100644
index 0000000..230cfd0
--- /dev/null
+++ b/src/components/MDX/P.astro
@@ -0,0 +1,10 @@
+---
+import type { HTMLAttributes } from "astro/types";
+import Paragraph from "../Paragraph.astro";
+
+interface Props extends HTMLAttributes<"p"> {}
+
+const { ...attrs } = Astro.props as Props;
+---
+
+
diff --git a/src/pages/projects/[slug].astro b/src/pages/projects/[slug].astro
index a687c72..f83c7be 100644
--- a/src/pages/projects/[slug].astro
+++ b/src/pages/projects/[slug].astro
@@ -1,6 +1,5 @@
---
import ImageCarousel from "@components/ImageCarousel.astro";
-import SectionTitle from "@components/SectionTitle.astro";
import MainLayout from "@layouts/MainLayout.astro";
import { getCollection, render } from "astro:content";
@@ -35,6 +34,17 @@ const seoImage: SiteImage = {
width: hero.width,
height: hero.height
};
+
+import A from "@components/MDX/A.astro";
+import Blockquote from "@components/MDX/Blockquote.astro";
+import CodeSnippet from "@components/MDX/CodeSnippet.astro";
+import H1 from "@components/MDX/H1.astro";
+import H2 from "@components/MDX/H2.astro";
+import H3 from "@components/MDX/H3.astro";
+import H4 from "@components/MDX/H4.astro";
+import H5 from "@components/MDX/H5.astro";
+import H6 from "@components/MDX/H6.astro";
+import P from "@components/MDX/P.astro";
---
-
-
{project.data.title}
-
-
+
+