feat: implement Convex-synced canvas foundation

This commit is contained in:
Matthias
2026-03-25 14:21:19 +01:00
parent 66c4455033
commit 4d17936570
21 changed files with 2347 additions and 35 deletions

View File

@@ -0,0 +1,37 @@
"use client";
import type { ReactNode } from "react";
interface BaseNodeWrapperProps {
selected?: boolean;
status?: "idle" | "executing" | "done" | "error";
children: ReactNode;
className?: string;
}
const statusClassMap: Record<NonNullable<BaseNodeWrapperProps["status"]>, string> = {
idle: "",
executing: "animate-pulse border-yellow-400",
done: "border-green-500",
error: "border-red-500",
};
export default function BaseNodeWrapper({
selected,
status = "idle",
children,
className = "",
}: BaseNodeWrapperProps) {
return (
<div
className={[
"rounded-xl border bg-card shadow-sm transition-shadow",
selected ? "ring-2 ring-primary shadow-md" : "",
statusClassMap[status],
className,
].join(" ")}
>
{children}
</div>
);
}