diff --git a/src/components/Header.tsx b/src/components/Header.tsx
index 1299c44..ad53b64 100644
--- a/src/components/Header.tsx
+++ b/src/components/Header.tsx
@@ -1,97 +1,98 @@
// @ts-nocheck
import { Button } from "@/components/ui/button"
import { useTheme } from "@/context/ThemeProvider"
-import { MoonStar } from "lucide-react"
+import { MoonStar, MenuIcon } from "lucide-react"
import { Link } from "react-router"
import {
- NavigationMenu,
- NavigationMenuContent,
- NavigationMenuItem,
- NavigationMenuLink,
- NavigationMenuList,
- NavigationMenuTrigger,
- navigationMenuTriggerStyle,
- NavigationMenuViewport,
+ NavigationMenu,
+ NavigationMenuContent,
+ NavigationMenuItem,
+ NavigationMenuLink,
+ NavigationMenuList,
+ NavigationMenuTrigger,
+ navigationMenuTriggerStyle,
+ NavigationMenuViewport,
} from "@/components/ui/navigation-menu"
import { Toggle } from "@/components/ui/toggle"
const Menu = () => {
- return (
-
-
- {/* Desktop menu - hidden on mobile, visible on md+ */}
-
-
-
- Posts
-
-
-
-
- About
-
-
-
+ return (
+
+
+ {/* Desktop menu - hidden on mobile, visible on md+ */}
+
+
+
+ Posts
+
+
+
+
+ About
+
+
+
- {/* Mobile dropdown - visible only on small screens */}
-
- Menu
+ {/* Mobile dropdown - visible only on small screens */}
+
+
+
+
-
-
-
- Posts
-
-
-
-
- About
-
-
-
-
-
-
-
- )
+
+
+
+ Posts
+
+
+
+
+ About
+
+
+
+
+
+
+
+ )
}
const Header = () => {
- const { theme, setTheme } = useTheme()
- return (
-
+ )
}
export { Header }
diff --git a/src/components/ui/navigation-menu.tsx b/src/components/ui/navigation-menu.tsx
index 1199945..7825877 100644
--- a/src/components/ui/navigation-menu.tsx
+++ b/src/components/ui/navigation-menu.tsx
@@ -6,163 +6,168 @@ import { ChevronDownIcon } from "lucide-react"
import { cn } from "@/lib/utils"
function NavigationMenu({
- className,
- children,
- viewport = true,
- ...props
+ className,
+ children,
+ viewport = true,
+ ...props
}: React.ComponentProps & {
- viewport?: boolean
+ viewport?: boolean
}) {
- return (
-
- {children}
- {viewport && }
-
- )
+ return (
+
+ {children}
+ {viewport && }
+
+ )
}
function NavigationMenuList({
- className,
- ...props
+ className,
+ ...props
}: React.ComponentProps) {
- return (
-
- )
+ return (
+
+ )
}
function NavigationMenuItem({
- className,
- ...props
+ className,
+ ...props
}: React.ComponentProps) {
- return (
-
- )
+ return (
+
+ )
}
const navigationMenuTriggerStyle = cva(
- "group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=open]:hover:bg-accent data-[state=open]:text-accent-foreground data-[state=open]:focus:bg-accent data-[state=open]:bg-accent/50 focus-visible:ring-ring/50 outline-none transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1"
+ "group inline-flex h-9 w-max items-center justify-center rounded-md bg-background px-4 py-2 text-sm font-medium hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground disabled:pointer-events-none disabled:opacity-50 data-[state=open]:hover:bg-accent data-[state=open]:text-accent-foreground data-[state=open]:focus:bg-accent data-[state=open]:bg-accent/50 focus-visible:ring-ring/50 outline-none transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1"
)
function NavigationMenuTrigger({
- className,
- children,
- ...props
+ className,
+ children,
+ ...props
}: React.ComponentProps) {
- return (
-
- {children}{" "}
-
+ {children}{" "}
+ {/*
+
+
-
- )
+
+
+ */}
+
+ )
}
function NavigationMenuContent({
- className,
- ...props
+ className,
+ ...props
}: React.ComponentProps) {
- return (
-
- )
+ return (
+
+ )
}
function NavigationMenuViewport({
- className,
- ...props
+ className,
+ ...props
}: React.ComponentProps) {
- return (
-
-
-
- )
+ return (
+
+
+
+ )
}
function NavigationMenuLink({
- className,
- ...props
+ className,
+ ...props
}: React.ComponentProps) {
- return (
-
- )
+ return (
+
+ )
}
function NavigationMenuIndicator({
- className,
- ...props
+ className,
+ ...props
}: React.ComponentProps) {
- return (
-
-
-
- )
+ return (
+
+
+
+ )
}
export {
- NavigationMenu,
- NavigationMenuList,
- NavigationMenuItem,
- NavigationMenuContent,
- NavigationMenuTrigger,
- NavigationMenuLink,
- NavigationMenuIndicator,
- NavigationMenuViewport,
- navigationMenuTriggerStyle,
+ NavigationMenu,
+ NavigationMenuList,
+ NavigationMenuItem,
+ NavigationMenuContent,
+ NavigationMenuTrigger,
+ NavigationMenuLink,
+ NavigationMenuIndicator,
+ NavigationMenuViewport,
+ navigationMenuTriggerStyle,
}
diff --git a/src/containers/PostListing.tsx b/src/containers/PostListing.tsx
index 2c0e0df..8e820c5 100644
--- a/src/containers/PostListing.tsx
+++ b/src/containers/PostListing.tsx
@@ -44,7 +44,11 @@ const PostListing = ({ posts, title, showAllButton }) => {
))}
{showAllButton && (
-
+
View all
)}
diff --git a/src/pages/about.tsx b/src/pages/about.tsx
index 91d7a63..b6d7b11 100644
--- a/src/pages/about.tsx
+++ b/src/pages/about.tsx
@@ -2,109 +2,109 @@ import MainTemplate from "@/templates/MainTemplate"
import portrait from "../images/portrait-compressed.jpg"
const AboutPage = () => {
- return (
-
-
-
- About
-
-
+ return (
+
+
+
+ About
+
+
-
-
-
- Pictured with the WITCH computer at the{" "}
-
- National Museum of Computing
-
- , Bletchley Park.
-
-
-
- I'm a self-taught software engineer based on the south coast of England.
- This blog is my technical scrapbook. I document the details of my
- technical life so I can have a record of progress when I look back.{" "}
-
+
+
+
+ Pictured with the WITCH computer at the{" "}
+
+ National Museum of Computing
+
+ , Bletchley Park.
+
+
+
+ I'm a self-taught software engineer based on the south coast of England.
+ This blog is my technical scrapbook. I document the details of my
+ technical life so I can have a record of progress when I look back.{" "}
+
-
- I completed a degree in Philosophy at the University of Warwick (2009)
- and hold a Postgraduate Certificate of Education (2011).
-
-
- Currently I work for{" "}
-
- ITV
- {" "}
- {""}
- as a backend software engineer. Before that, I worked as a full-stack
- engineer at the{" "}
-
- BBC
- {" "}
- and as a frontend engineer at{" "}
-
- Arria NLG
- {" "}
- and in several web developer roles. Before software I was a
- teacher.{" "}
-
+
+ I completed a degree in Philosophy at the University of Warwick (2009)
+ and hold a Postgraduate Certificate of Education (2011).
+
+
+ Currently I work for{" "}
+
+ ITV
+ {" "}
+ {""}
+ as a backend software engineer. Before that, I worked as a full-stack
+ engineer at the{" "}
+
+ BBC
+ {" "}
+ and as a frontend engineer at{" "}
+
+ Arria NLG
+ {" "}
+ and in several web developer roles. Before software I was a
+ teacher.{" "}
+
-
- Some things I like:
-
- 🐶 Staffies and other bull-breeds
- 🎼 Classical music (Haydn, Mozart, JSB)
- 🛸 Science fiction
-
-
+
+ Some things I like:
+
+ 🐶 Staffies and other bull-breeds
+ 🎼 Classical music (Haydn, Mozart, JSB)
+ 🛸 Science fiction
+
+
-
- Some things I'm interested in:
-
+
-
- I self-host my own Git forge at{" "}
-
- forgejo.systemsobscure.net
- {" "}
- rather than use Microsoft GitHub. You can view my personal projects
- there.
-
-
- )
+
+ I self-host my own Git forge at{" "}
+
+ forgejo.systemsobscure.net
+ {" "}
+ rather than use Microsoft GitHub. You can view my personal projects
+ there.
+
+
+ )
}
export { AboutPage }
diff --git a/src/pages/home.tsx b/src/pages/home.tsx
index a823da2..93aeec2 100644
--- a/src/pages/home.tsx
+++ b/src/pages/home.tsx
@@ -2,51 +2,40 @@ import MainTemplate from "@/templates/MainTemplate"
import PostListing from "@/containers/PostListing"
import { usePosts } from "@/hooks/usePosts"
import roundedPortrait from "../images/round-portrait.png"
-import { Card, CardHeader, CardContent, CardFooter } from "@/components/ui/card"
-import { Button } from "@/components/ui/button"
-import { Link } from "react-router"
const HomePage = () => {
- const { posts } = usePosts()
- return (
-
-
-
- {/* Image - centers on mobile, left-aligned on desktop */}
-
-
-
+ const { posts } = usePosts()
+ return (
+
+
+
+
+
+
- {/* Text content */}
-
-
- Another software engineer with a blog
-
-
- I'm a self-taught software engineer currently working at ITV,
- previously at the BBC. This blog is a technical scrapbook and
- digital garden.
-
-
-
-
- {/*
-
+
+
+ Another software engineer with a blog
+
+
+ I'm a self-taught software engineer from London. This blog is a
+ technical scrapbook and digital garden.
+
+
+
+
-
- */}
-
-
-
- )
+
+
+ )
}
export { HomePage }
diff --git a/src/styles/syntax-highlighting.css b/src/styles/syntax-highlighting.css
index 50574aa..b65dd25 100644
--- a/src/styles/syntax-highlighting.css
+++ b/src/styles/syntax-highlighting.css
@@ -12,7 +12,7 @@ p code {
.shiki {
padding: 1rem 1.2rem;
- border-radius: var(--radius);
+ border-radius: 0;
overflow-x: auto;
margin: 1.5rem 0;
line-height: 1.3;
diff --git a/src/templates/BlogTemplate.tsx b/src/templates/BlogTemplate.tsx
index 8f6122b..b58c5d0 100644
--- a/src/templates/BlogTemplate.tsx
+++ b/src/templates/BlogTemplate.tsx
@@ -60,7 +60,7 @@ const BlogTemplate = () => {
[&>li]:leading-[1.6]
[&_li_code]:relative [&_li_code]:rounded [&_li_code]:bg-muted [&_li_code]:px-[0.3rem] [&_li_code]:py-[0.2rem] [&_li_code]:font-mono [&_li_code]:text-sm [&_li_code]:font-normal
[&>p]:mt-6 [&>p]:leading-[1.6]
- [&_a]:underline [&_a]:underline-offset-4 [&_a]:hover:text-muted-foreground [&_a]:font-medium
+ [&_a]:underline [&_a]:underline-offset-4 [&_a]:hover:text-muted-foreground
[&>figure]:w-full [&>figure]:flex [&>figure]:flex-col [&>figure]:items-center [&>figure]:justify-center [&>figure]:mb-6 [&>figure]:mx-auto
[&>figure>img]:w-full
[&>figure>figcaption]:text-sm [&>figure>figcaption]:text-muted-foreground [&>figure>figcaption]:mt-3 [&>figure>figcaption]:text-center