Files
3x-ui/docs/components/tools/tool-frame.tsx
T
MHSanaei 9b91f0f42e docs: vendor the documentation site into the monorepo
Fold the standalone 3x-ui-docs project (Next.js 16 + Fumadocs, deployed to
docs.sanaei.dev) into docs/ so the panel and its documentation share a single
source of truth, the way sing-box keeps its docs in-tree. The old repo becomes
redundant and can be retired.

- Import the full site under docs/ (app, components, content, lib, public,
  scripts, config). The self-contained pnpm project sits alongside the existing
  engineering notes with no filename collisions.
- Re-point "Edit on GitHub" links from MHSanaei/3x-ui-docs to this repo's
  docs/content/docs path (docs/lib/shared.ts, docs/app/.../page.tsx).
- Add docs-ci.yml and docs-deploy.yml under .github/workflows/, scoped to
  docs/** and run with working-directory: docs, since GitHub only runs
  workflows from the repo-root .github/. deploy-static.yml's GitHub Pages
  publish (CNAME docs.sanaei.dev) carries over unchanged.

Follow-up (outside this commit): attach the docs.sanaei.dev custom domain to
this repository's Pages (or set the Vercel project's root directory to docs),
confirm the site is live from the monorepo, then delete MHSanaei/3x-ui-docs.
2026-07-07 23:07:14 +02:00

45 lines
1.2 KiB
TypeScript

'use client';
import { RotateCcw } from 'lucide-react';
import type { ReactNode } from 'react';
export function ToolFrame({
title,
description,
onReset,
children,
}: {
title: string;
description?: string;
onReset?: () => void;
children: ReactNode;
}) {
return (
<section
role="group"
aria-label={title}
className="not-prose my-6 overflow-hidden rounded-2xl border bg-fd-card text-fd-foreground"
>
<header className="flex items-start justify-between gap-3 border-b px-4 py-3">
<div>
<h3 className="font-semibold">{title}</h3>
{description ? (
<p className="mt-0.5 text-sm text-fd-muted-foreground">{description}</p>
) : null}
</div>
{onReset ? (
<button
type="button"
onClick={onReset}
className="inline-flex shrink-0 items-center gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs font-medium transition-colors hover:bg-fd-accent hover:text-fd-accent-foreground"
>
<RotateCcw className="size-3.5" aria-hidden />
Reset
</button>
) : null}
</header>
<div className="p-4">{children}</div>
</section>
);
}