Files
OpenFlare/frontend/app/(main)/proxy-routes/detail/components/section-shell.tsx
T
ryan 63cd906cfc refactor(repo): consolidate openflare-server to root and move subprojects to internal/apps
- Merge all files inside openflare-server to the repository root directory.
- Relocate agent, relay, and flared subprojects from internal/ to internal/apps/.
- Combine docker-compose files and update build context paths to root.
- Update GitHub workflows and Dockerfiles to refer to new directories and package names.
- Rewrite Go package imports across all files.
- Resolve database renew test race condition and clean up docs.
2026-06-19 14:23:29 +08:00

37 lines
1000 B
TypeScript

'use client';
import type {ReactNode} from 'react';
import {Button} from '@/components/ui/button';
import {Card, CardContent, CardDescription, CardHeader, CardTitle} from '@/components/ui/card';
interface SectionShellProps {
title: string;
description: string;
formId: string;
saving?: boolean;
children: ReactNode;
}
export function SectionShell({
title,
description,
formId,
saving = false,
children,
}: SectionShellProps) {
return (
<Card>
<CardHeader className="flex flex-row items-start justify-between gap-4 space-y-0">
<div className="space-y-1">
<CardTitle className="text-sm font-semibold">{title}</CardTitle>
<CardDescription>{description}</CardDescription>
</div>
<Button type="submit" form={formId} size="sm" className="h-8 shrink-0 text-xs" disabled={saving}>
{saving ? '保存中...' : '保存'}
</Button>
</CardHeader>
<CardContent>{children}</CardContent>
</Card>
);
}