Skip to content

Commit 82bc9de

Browse files
authored
Merge pull request #2 from Codestz/feat/blog-ai-convergence
feat: add AI Convergence blog post and StatBlock component
2 parents ab284aa + 9d5fd68 commit 82bc9de

File tree

9 files changed

+499
-2
lines changed

9 files changed

+499
-2
lines changed

mdx-components.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import {
99
ToolCall,
1010
Callout,
1111
ProcessFlow,
12+
StatBlock,
1213
} from '@/components/mdx';
1314
import { Mermaid } from '@/components/mdx/Mermaid';
1415

@@ -30,6 +31,7 @@ export const mdxComponents: MDXComponents = {
3031
ToolCall,
3132
Callout,
3233
ProcessFlow,
34+
StatBlock,
3335
// Headings
3436
h1: ({ children }) => (
3537
<h1 className="mb-4 sm:mb-6 mt-6 sm:mt-8 font-heading text-3xl sm:text-4xl font-bold uppercase text-foreground">
373 KB
Loading
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
'use client';
2+
3+
import { cn } from '@/lib/utils';
4+
import type { StatBlockProps } from './StatBlock.types';
5+
6+
/**
7+
* StatBlock Component - Horizontal Stat Row
8+
* Neo-Brutalist stat display for surfacing key metrics
9+
* Uses thick borders, secondary accents, and monospace typography
10+
*/
11+
export function StatBlock({ stats, title, className }: StatBlockProps) {
12+
return (
13+
<div
14+
className={cn(
15+
'my-8 overflow-hidden rounded-none border-[4px] border-foreground bg-bg-elevated shadow-[8px_8px_0px_0px] shadow-black',
16+
className
17+
)}
18+
>
19+
{/* Header */}
20+
{title && (
21+
<div className="border-b-[4px] border-foreground bg-secondary px-4 py-2">
22+
<span className="font-mono text-[10px] font-bold text-secondary-text uppercase tracking-widest">
23+
{title}
24+
</span>
25+
</div>
26+
)}
27+
28+
{/* Stats Grid */}
29+
<div
30+
className={cn(
31+
'grid divide-y-[3px] sm:divide-y-0 sm:divide-x-[3px] divide-foreground',
32+
stats.length <= 2 && 'sm:grid-cols-2',
33+
stats.length === 3 && 'sm:grid-cols-3',
34+
stats.length >= 4 && 'grid-cols-2 sm:grid-cols-4'
35+
)}
36+
>
37+
{stats.map((stat, index) => (
38+
<div key={index} className="flex flex-col items-center justify-center px-4 py-4 sm:py-6">
39+
{stat.icon && <span className="mb-1 text-lg">{stat.icon}</span>}
40+
<span className="font-mono text-2xl sm:text-3xl font-black text-foreground leading-none">
41+
{stat.value}
42+
</span>
43+
<span className="mt-1.5 font-mono text-[10px] sm:text-xs font-bold uppercase tracking-widest text-muted">
44+
{stat.label}
45+
</span>
46+
</div>
47+
))}
48+
</div>
49+
</div>
50+
);
51+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
export interface Stat {
2+
value: string;
3+
label: string;
4+
icon?: string;
5+
}
6+
7+
export interface StatBlockProps {
8+
stats: Stat[];
9+
title?: string;
10+
className?: string;
11+
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
export { StatBlock } from './StatBlock';
2+
export type { StatBlockProps, Stat } from './StatBlock.types';

src/components/mdx/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,5 @@ export { Callout } from './Callout';
1818
export type { CalloutProps } from './Callout';
1919
export { ProcessFlow } from './ProcessFlow';
2020
export type { ProcessFlowProps, ProcessStep } from './ProcessFlow';
21+
export { StatBlock } from './StatBlock';
22+
export type { StatBlockProps, Stat } from './StatBlock';

src/content/blog/sparc-methodology-ai-development.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ publishedAt: '2026-03-09'
55
category: 'ai'
66
tags:
77
['sparc', 'ai-development', 'methodology', 'agentic-engineering', 'tdd', 'software-architecture']
8-
featured: true
8+
featured: false
99
type: 'experiment'
1010
author: 'Esteban Estrada'
1111
---

src/content/blog/spec-driven-development-tessl.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ tags:
1212
'specifications',
1313
'methodology',
1414
]
15-
featured: true
15+
featured: false
1616
type: 'experiment'
1717
author: 'Esteban Estrada'
1818
---

src/content/blog/why-ai-defaults-to-typescript.mdx

Lines changed: 429 additions & 0 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)