"use client"; import Link from "next/link"; import type { ReactNode } from "react"; import { useDocsLocale } from "@/components/locale-link"; import { prefixLocale } from "@/lib/locale-link"; /** * Byline — editorial metadata strip with ruled top + bottom borders. * * Sits below DocsHero on showpiece pages (welcome). Carries the small * uppercase metadata: section · updated · read time. Mirrors the v2 * editorial pattern of a "by-line" between title and body, separating * the heading hero from the article proper. */ export function Byline({ items }: { items: string[] }) { return (
{items.map((item, i) => ( {i > 0 ? ( ) : null} {item} ))}
); } /** * NumberedCards — three-column ruled-divider grid with No.01/02/03 serif * numbers. Showpiece component; replaces fumadocs's on the welcome * page. Top + bottom heavy rules frame the row. */ export function NumberedCards({ children }: { children: ReactNode }) { return (
{children}
); } /** * NumberedCard — child of NumberedCards. Internally numbered by CSS counter, * but we also accept an explicit `number` prop in case the consumer wants * to override (e.g. start at "03"). */ export function NumberedCard({ number, title, href, tag, children, }: { number?: string; title: string; href: string; tag?: string; children: ReactNode; }) { const lang = useDocsLocale(); return (
{number ? `No. ${number}` : null}
{title}
{children}
{tag ? (
{tag}
) : null} ); } /** * NumberedSteps — large serif step numbers, ruled-row separators. * Use for sequential walkthroughs (install → login → start → assign). */ export function NumberedSteps({ children }: { children: ReactNode }) { return
{children}
; } export function Step({ number, title, children, }: { number: string; title: string; children: ReactNode; }) { return (
{number}
{title}
{children}
); }