import { ExternalLink } from 'lucide-react'
import Image from 'next/image'
import Link from 'next/link'
import { Section } from '@/components/layout/section'
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'
import { getRoute } from '@/lib/routes'
interface ToolCardData {
title: string
description: string
href: string
image: string
imageAlt: string
}
const TOOLS: ToolCardData[] = [
{
title: 'LLMs.txt Checker Chrome Extension',
description: 'Check if websites implement llms.txt and llms-full.txt files',
href: 'https://chromewebstore.google.com/detail/llmstxt-checker/klcihkijejcgnaiinaehcjbggamippej',
image: '/tools/llmstxt-checker.png',
imageAlt: 'LLMs.txt Checker Screenshot'
},
{
title: 'LLMS.txt VSCode Extension',
description: 'Search and explore llms.txt files directly in VS Code',
href: 'https://marketplace.visualstudio.com/items?itemName=TheDavidDias.vscode-llms-txt',
image: '/tools/vscode-extension.png',
imageAlt: 'VS Code Extension Screenshot'
},
{
title: 'MCP LLMS.txt Explorer',
description: 'Explore and analyze llms.txt files using MCP',
href: 'https://github.com/thedaviddias/mcp-llms-txt-explorer',
image: '/tools/mcp-llms-txt-explorer.png',
imageAlt: 'MCP LLMS.txt Explorer Screenshot'
},
{
title: 'LLMs Txt Raycast Extension',
description: 'Search and explore llms.txt files directly in Raycast',
href: 'https://www.raycast.com/thedaviddias/llms-txt',
image: '/tools/llms-txt-raycast-extension.png',
imageAlt: 'Raycast Extension Screenshot'
},
{
title: 'llmstxt CLI',
description: 'Install llms.txt documentation directly into your AI coding agents',
href: 'https://www.npmjs.com/package/llmstxt-cli',
image: '/tools/llmstxt-cli.png',
imageAlt: 'llmstxt CLI Screenshot'
}
]
interface ToolsSectionProps {
layout?: 'default' | 'compact'
showImages?: boolean
}
/**
* Section component displaying popular development tools.
* When showImages=false (e.g. on website detail pages), renders a single card
* with a compact list of tools to match the page layout.
*/
export function ToolsSection({ layout = 'default', showImages = true }: ToolsSectionProps) {
if (!showImages) {
return (
{TOOLS.map((tool, index) => (
-
{tool.title}
{tool.description}
))}
)
}
return (
{TOOLS.map(tool => (
{tool.title}
{tool.description}
{layout === 'default' && (
)}
))}
)
}