mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-07 07:42:13 +03:00
84 lines
2.8 KiB
TypeScript
84 lines
2.8 KiB
TypeScript
"use client";
|
|
|
|
import React from "react";
|
|
import { cn } from "@/shared/utils/cn";
|
|
|
|
interface APIReferenceProps {
|
|
name: string;
|
|
type: string;
|
|
description: string;
|
|
params?: { name: string; type: string; description: string }[];
|
|
returns?: { type: string; description: string };
|
|
className?: string;
|
|
}
|
|
|
|
export default function APIReference({
|
|
name,
|
|
type,
|
|
description,
|
|
params,
|
|
returns,
|
|
className,
|
|
}: APIReferenceProps) {
|
|
return (
|
|
<div
|
|
role="region"
|
|
aria-labelledby="api-ref-title"
|
|
className={cn("my-6 p-6 rounded-xl border border-border bg-bg-subtle", className)}
|
|
>
|
|
<div className="flex items-center gap-2 mb-4">
|
|
<code id="api-ref-title" className="text-lg font-mono font-bold text-primary">
|
|
{name}
|
|
</code>
|
|
<span className="text-xs font-medium px-2 py-1 rounded bg-border text-text-muted">
|
|
{type}
|
|
</span>
|
|
</div>
|
|
<p className="text-text-main mb-6 leading-relaxed">{description}</p>
|
|
|
|
{params && params.length > 0 && (
|
|
<div className="mb-6">
|
|
<h4 className="text-sm font-semibold text-text-primary mb-3">Parameters</h4>
|
|
<div className="overflow-x-auto">
|
|
<table className="w-full text-sm text-left border-collapse">
|
|
<thead className="text-xs text-text-muted uppercase bg-border/50">
|
|
<tr>
|
|
<th className="px-4 py-2 border-b border-border" scope="col">
|
|
Name
|
|
</th>
|
|
<th className="px-4 py-2 border-b border-border" scope="col">
|
|
Type
|
|
</th>
|
|
<th className="px-4 py-2 border-b border-border" scope="col">
|
|
Description
|
|
</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
{params.map((param, i) => (
|
|
<tr key={i} className="border-b border-border/50 last:border-0">
|
|
<td className="px-4 py-3 font-mono text-text-main">{param.name}</td>
|
|
<td className="px-4 py-3 font-mono text-xs text-text-muted">{param.type}</td>
|
|
<td className="px-4 py-3 text-text-muted">{param.description}</td>
|
|
</tr>
|
|
))}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
)}
|
|
|
|
{returns && (
|
|
<div>
|
|
<h4 className="text-sm font-semibold text-text-primary mb-3">Returns</h4>
|
|
<div className="p-3 rounded bg-bg border border-border font-mono text-sm">
|
|
<span className="text-text-muted">Type: </span>
|
|
<span className="text-text-main">{returns.type}</span>
|
|
<div className="text-xs text-text-muted mt-1">{returns.description}</div>
|
|
</div>
|
|
</div>
|
|
)}
|
|
</div>
|
|
);
|
|
}
|