+ {title} +
++ {description} +
++ {children} ++); + +export const CodeBlock: React.FC<{ children: React.ReactNode; className?: string }> = ({ children, className = '' }) => ( +
+
+ {children}
+
+
+);
+
+export const InlineCode: React.FC<{ children: React.ReactNode; className?: string }> = ({ children, className = '' }) => (
+
+ {children}
+
+);
\ No newline at end of file
diff --git a/src/components/ArticleHeading.tsx b/src/components/ArticleHeading.tsx
new file mode 100644
index 0000000..e60891f
--- /dev/null
+++ b/src/components/ArticleHeading.tsx
@@ -0,0 +1,24 @@
+import React from 'react';
+
+interface HeadingProps {
+ children: React.ReactNode;
+ className?: string;
+}
+
+export const H1: React.FC+ {children} +
+); + +export const LeadParagraph: React.FC+ {children} +
+); \ No newline at end of file diff --git a/src/components/BlogPostCard.tsx b/src/components/BlogPostCard.tsx new file mode 100644 index 0000000..382a651 --- /dev/null +++ b/src/components/BlogPostCard.tsx @@ -0,0 +1,48 @@ +import React from 'react'; + +interface BlogPostCardProps { + title: string; + description: string; + date: string; + slug: string; + tags?: string[]; +} + +export const BlogPostCard: React.FC+ {description} +
+{aboutInfo.role}
++ {description} +
++ Understanding doesn't expire. Finished projects do. ++ +
+ I work on technical problems and build tools, scripts, and systems to solve them. + Sometimes that means code, sometimes automation, sometimes AI, sometimes something else. + The tool is secondary. The problem comes first. +
++ Topics: Vibe coding with AI • Debugging • Mac tools • Automation • Small scripts • Learning notes • FOSS +
+No posts yet. Check back soon!
+