// Lucide-style stroke icons for doc landing cards. All icons share the // same visual language: 24×24 viewBox, 1.5px stroke, rounded caps, // `currentColor` for fill/stroke so they pick up `text-*` Tailwind // utilities + the theme tokens. // // Hand-rolled (vs depending on `lucide-react`) because we only need a // dozen icons here and a 200KB dep for that is silly. Add more shapes // to this file as the doc catalogue grows. import type { ReactNode } from 'react' interface DocIconProps { readonly className?: string /** Accessible label. When omitted the icon is `aria-hidden` and * should sit next to text. */ readonly title?: string } const Icon = ({ children, className, title, }: DocIconProps & { children: ReactNode }): ReactNode => ( {title ? {title} : null} {children} ) export const RocketIcon = (p: DocIconProps): ReactNode => ( ) export const CompassIcon = (p: DocIconProps): ReactNode => ( ) export const PackageIcon = (p: DocIconProps): ReactNode => ( ) export const FolderIcon = (p: DocIconProps): ReactNode => ( ) export const FileIcon = (p: DocIconProps): ReactNode => ( ) export const BroadcastIcon = (p: DocIconProps): ReactNode => ( ) export const PencilIcon = (p: DocIconProps): ReactNode => ( ) export const BellIcon = (p: DocIconProps): ReactNode => ( ) export const CogIcon = (p: DocIconProps): ReactNode => ( ) export const BuildingIcon = (p: DocIconProps): ReactNode => ( ) export const DatabaseIcon = (p: DocIconProps): ReactNode => ( ) export const LockIcon = (p: DocIconProps): ReactNode => ( ) export const BotIcon = (p: DocIconProps): ReactNode => ( ) export const TerminalIcon = (p: DocIconProps): ReactNode => ( ) export const LayersIcon = (p: DocIconProps): ReactNode => ( ) export const PuzzleIcon = (p: DocIconProps): ReactNode => ( ) export const HookIcon = (p: DocIconProps): ReactNode => ( ) export const GlobeIcon = (p: DocIconProps): ReactNode => ( ) export const CloudIcon = (p: DocIconProps): ReactNode => ( ) export const HomeIcon = (p: DocIconProps): ReactNode => ( ) export const ChevronLeftIcon = (p: DocIconProps): ReactNode => ( ) export const ChevronRightIcon = (p: DocIconProps): ReactNode => ( ) export const SearchIcon = (p: DocIconProps): ReactNode => ( ) export const ArrowReturnIcon = (p: DocIconProps): ReactNode => ( ) // ---- Social / brand icons ---- // // Filled (not stroked) — that's the convention for brand marks since // the official lockups are filled. Same 24×24 viewBox + currentColor // fill so they pick up text-* utilities and theme tokens. const FilledIcon = ({ children, className, title, }: DocIconProps & { children: ReactNode }): ReactNode => ( {title ? {title} : null} {children} ) export const GitHubIcon = (p: DocIconProps): ReactNode => ( ) export const XIcon = (p: DocIconProps): ReactNode => ( ) export const DiscordIcon = (p: DocIconProps): ReactNode => ( ) export const LinkedInIcon = (p: DocIconProps): ReactNode => ( ) export const RssIcon = (p: DocIconProps): ReactNode => ( ) export const ChartIcon = (p: DocIconProps): ReactNode => ( )