From 69792d4faf589422e829d96c2faec2853dc3c48e Mon Sep 17 00:00:00 2001 From: Nathan Cummins Date: Wed, 13 Aug 2025 07:42:38 +0930 Subject: [PATCH] Begin styling projects page --- src/components/MDX/A.astro | 11 +++ src/components/MDX/Blockquote.astro | 7 ++ src/components/MDX/CodeSnippet.astro | 112 +++++++++++++++++++++++++++ src/components/MDX/H1.astro | 1 + src/components/MDX/H2.astro | 1 + src/components/MDX/H3.astro | 1 + src/components/MDX/H4.astro | 1 + src/components/MDX/H5.astro | 1 + src/components/MDX/H6.astro | 1 + src/components/MDX/P.astro | 10 +++ src/pages/projects/[slug].astro | 31 ++++++-- 11 files changed, 172 insertions(+), 5 deletions(-) create mode 100644 src/components/MDX/A.astro create mode 100644 src/components/MDX/Blockquote.astro create mode 100644 src/components/MDX/CodeSnippet.astro create mode 100644 src/components/MDX/H1.astro create mode 100644 src/components/MDX/H2.astro create mode 100644 src/components/MDX/H3.astro create mode 100644 src/components/MDX/H4.astro create mode 100644 src/components/MDX/H5.astro create mode 100644 src/components/MDX/H6.astro create mode 100644 src/components/MDX/P.astro 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} - - +
+