- Move the Tauri app (React frontend + Rust backend) into desktop/ via git mv — configs unchanged (relative paths: tauri.conf.json, vite.config.ts) - Root package.json becomes a private bun workspace container with orchestration scripts; desktop package renamed gridline-desktop - Scaffold www/ with Astro 7 + Tailwind v4 (hand-wired vite plugin, static output, ready for Dokploy) - Update release.yml for the new layout: projectPath: desktop, desktop/src-tauri resource paths, rust-cache workspace path - Update README + AGENTS.md structure trees and dev commands - Verified: vitest (1074), cargo test (354), desktop build, tauri dev (window launches), tauri build (dmg + app bundles), Astro build
55 lines
1.6 KiB
TypeScript
55 lines
1.6 KiB
TypeScript
import { ChevronLeft } from "lucide-react";
|
|
import { Button } from "../ui/Button";
|
|
import type { ReactNode } from "react";
|
|
|
|
interface ConnectionFormShellProps {
|
|
onBack: () => void;
|
|
onTest: () => void;
|
|
onSave: () => void;
|
|
testLoading?: boolean;
|
|
saveLoading?: boolean;
|
|
children: ReactNode;
|
|
}
|
|
|
|
export function ConnectionFormShell({
|
|
onBack,
|
|
onTest,
|
|
onSave,
|
|
testLoading,
|
|
saveLoading,
|
|
children,
|
|
}: ConnectionFormShellProps) {
|
|
return (
|
|
<div className="h-full overflow-y-auto bg-canvas">
|
|
<div className="max-w-lg mx-auto p-8">
|
|
<Button
|
|
variant="ghost"
|
|
onClick={onBack}
|
|
className="mb-4 -ml-3 justify-start gap-1 px-3"
|
|
>
|
|
<ChevronLeft size={16} /> Back
|
|
</Button>
|
|
|
|
<div className="space-y-4">{children}</div>
|
|
|
|
<div className="flex gap-3 mt-8">
|
|
<Button
|
|
variant="secondary"
|
|
onClick={onTest}
|
|
disabled={testLoading}
|
|
className="flex-1"
|
|
>
|
|
{testLoading ? "Testing..." : "Test Connection"}
|
|
</Button>
|
|
<Button
|
|
onClick={onSave}
|
|
disabled={saveLoading}
|
|
className="flex-1"
|
|
>
|
|
{saveLoading ? "Saving..." : "Save Connection"}
|
|
</Button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
);
|
|
} |