3.1 KiB
Video Component Implementation Plan
For agentic workers: REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (
- [ ]) syntax for tracking.
Goal: Create a reusable <Video> MDX component with sensible defaults and an optional caption.
Architecture: A single React component in components/video.tsx registered in the MDXRemote components prop in app/posts/[slug]/page.tsx. No per-post imports needed.
Tech Stack: Next.js 15, React 19, Tailwind v4, next-mdx-remote
Task 1: Create Video component
Files:
-
Create:
components/video.tsx -
Step 1: Create the component
interface VideoProps {
src: string;
caption?: string;
}
export default function Video({ src, caption }: VideoProps) {
return (
<figure className="my-4">
<div className="rounded-lg border border-white/30 bg-white/10 backdrop-blur-sm overflow-hidden shadow-md">
<video
src={src}
width="100%"
controls
loop
muted
playsInline
/>
</div>
{caption && (
<figcaption className="mt-2 text-center text-sm text-gray-500 italic">
{caption}
</figcaption>
)}
</figure>
);
}
- Step 2: Commit
git add components/video.tsx
git commit -m "feat: add Video component"
Task 2: Register Video in MDXRemote
Files:
-
Modify:
app/posts/[slug]/page.tsx -
Step 1: Add import at top of file
After the existing imports, add:
import Video from "@/components/video";
- Step 2: Add components prop to MDXRemote
Find the <MDXRemote ... /> call (around line 64) and add a components prop:
<MDXRemote
source={postData.content}
components={{ Video }}
options={{
mdxOptions: {
remarkPlugins: [remarkGfm],
rehypePlugins: [
rehypeSlug,
[
rehypePrettyCode,
{
theme: "github-dark-dimmed",
keepBackground: false,
},
],
],
},
}}
/>
- Step 3: Verify dev server compiles without errors
bun dev
Expected: server starts, no TypeScript errors.
- Step 4: Commit
git add app/posts/[slug]/page.tsx
git commit -m "feat: register Video component in MDXRemote"
Task 3: Use component in a post
Files:
-
Modify:
posts/my-2024-and-2025-roadmap.mdx -
Step 1: Replace raw video tag with component
Find (around line 54):
<video width="100%" height="auto" controls loop muted playsInline>
<source src="/posts/rts.mp4" type="video/mp4" />
Your browser does not support the video tag.
</video>
Replace with:
<Video src="/posts/rts.mp4" caption="My failed RTS engine attempt" />
- Step 2: Verify in browser
Open the post in the dev server and confirm the video renders with styling and caption.
- Step 3: Commit
git add posts/my-2024-and-2025-roadmap.mdx
git commit -m "chore: use Video component in roadmap post"