From 114eac353bba0003a72906531009fe7fa6e733a4 Mon Sep 17 00:00:00 2001 From: "Builder.io" Date: Wed, 5 Nov 2025 21:42:27 +0000 Subject: [PATCH] Extract LearningResources as reusable component cgen-bbc861f85a114d588f2ed8ba31a61bd2 --- .../components/docs/LearningResourcesGrid.tsx | 103 ++++++++++++++++++ 1 file changed, 103 insertions(+) create mode 100644 client/components/docs/LearningResourcesGrid.tsx diff --git a/client/components/docs/LearningResourcesGrid.tsx b/client/components/docs/LearningResourcesGrid.tsx new file mode 100644 index 00000000..1f095056 --- /dev/null +++ b/client/components/docs/LearningResourcesGrid.tsx @@ -0,0 +1,103 @@ +import { + Card, + CardContent, + CardDescription, + CardHeader, + CardTitle, +} from "@/components/ui/card"; +import { Badge } from "@/components/ui/badge"; +import { Button } from "@/components/ui/button"; +import { Link } from "react-router-dom"; +import { Video, Headphones, Github, Download, LucideIcon } from "lucide-react"; + +export interface LearningResource { + title: string; + description: string; + icon: LucideIcon; + count: string; + link: string; + color: string; +} + +const defaultResources: LearningResource[] = [ + { + title: "Video tutorials", + description: "Visual learning with step-by-step walkthroughs", + icon: Video, + count: "50+ videos", + link: "/tutorials", + color: "from-red-500 to-pink-600", + }, + { + title: "Podcast series", + description: "Deep dives into AeThex technology and strategy", + icon: Headphones, + count: "20+ episodes", + link: "/blog", + color: "from-purple-500 to-indigo-600", + }, + { + title: "Code examples", + description: "Production-ready snippets maintained by the platform team", + icon: Github, + count: "100+ repos", + link: "/docs/examples", + color: "from-green-500 to-emerald-600", + }, + { + title: "Downloads", + description: "SDKs, design kits, and tooling for every platform", + icon: Download, + count: "Latest releases", + link: "/docs/getting-started#setup-workflow", + color: "from-blue-500 to-cyan-600", + }, +]; + +interface LearningResourcesGridProps { + resources?: LearningResource[]; +} + +export default function LearningResourcesGrid({ + resources = defaultResources, +}: LearningResourcesGridProps) { + return ( +
+

Learning resources

+
+ {resources.map((resource, index) => { + const Icon = resource.icon; + return ( + + +
+ +
+ + {resource.title} + + + {resource.description} + +
+ + + {resource.count} + + + +
+ ); + })} +
+
+ ); +}