feat: enhance canvas and layout components with new features and improvements
- Added remote image patterns to the Next.js configuration for enhanced image handling. - Updated TypeScript configuration to exclude the 'implement' directory. - Refactored layout component to fetch initial authentication token and pass it to Providers. - Replaced CanvasToolbar with CanvasSidebar for improved UI layout and functionality. - Enhanced Canvas component with new drag-and-drop file upload capabilities and batch node movement. - Updated various node components to support new status handling and improved user interactions. - Added debounced saving for note and prompt nodes to optimize performance.
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import { notFound, redirect } from "next/navigation";
|
||||
|
||||
import Canvas from "@/components/canvas/canvas";
|
||||
import CanvasToolbar from "@/components/canvas/canvas-toolbar";
|
||||
import CanvasSidebar from "@/components/canvas/canvas-sidebar";
|
||||
import { api } from "@/convex/_generated/api";
|
||||
import type { Id } from "@/convex/_generated/dataModel";
|
||||
import { fetchAuthQuery, isAuthenticated } from "@/lib/auth-server";
|
||||
@@ -48,9 +48,11 @@ export default async function CanvasPage({
|
||||
}
|
||||
|
||||
return (
|
||||
<div className="relative h-screen w-screen overflow-hidden">
|
||||
<CanvasToolbar canvasId={typedCanvasId} />
|
||||
<Canvas canvasId={typedCanvasId} />
|
||||
<div className="flex h-screen w-screen overflow-hidden">
|
||||
<CanvasSidebar />
|
||||
<div className="flex-1">
|
||||
<Canvas canvasId={typedCanvasId} />
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
@@ -340,7 +340,7 @@ export default function DashboardPage() {
|
||||
<Button
|
||||
variant="ghost"
|
||||
size="sm"
|
||||
className="text-muted-foreground"
|
||||
className="cursor-pointer text-muted-foreground"
|
||||
type="button"
|
||||
onClick={handleCreateWorkspace}
|
||||
disabled={isCreatingWorkspace || isSessionPending || !session?.user}
|
||||
@@ -366,7 +366,7 @@ export default function DashboardPage() {
|
||||
type="button"
|
||||
onClick={() => router.push(`/canvas/${canvas._id}`)}
|
||||
className={cn(
|
||||
"group flex items-center gap-4 rounded-xl border bg-card p-4 text-left shadow-sm shadow-foreground/3 transition-all",
|
||||
"group flex cursor-pointer items-center gap-4 rounded-xl border bg-card p-4 text-left shadow-sm shadow-foreground/3 transition-all",
|
||||
"hover:bg-muted/60 hover:shadow-md hover:shadow-foreground/4",
|
||||
)}
|
||||
>
|
||||
|
||||
@@ -5,6 +5,7 @@ import { cn } from "@/lib/utils";
|
||||
import { Providers } from "@/components/providers";
|
||||
import { Toaster } from "@/components/ui/sonner";
|
||||
import { InitUser } from "@/components/init-user";
|
||||
import { getToken } from "@/lib/auth-server";
|
||||
|
||||
const manrope = Manrope({ subsets: ["latin"], variable: "--font-sans" });
|
||||
|
||||
@@ -13,11 +14,13 @@ export const metadata: Metadata = {
|
||||
description: "Generated by create next app",
|
||||
};
|
||||
|
||||
export default function RootLayout({
|
||||
export default async function RootLayout({
|
||||
children,
|
||||
}: Readonly<{
|
||||
children: React.ReactNode;
|
||||
}>) {
|
||||
const initialToken = await getToken();
|
||||
|
||||
return (
|
||||
<html
|
||||
lang="de"
|
||||
@@ -25,7 +28,7 @@ export default function RootLayout({
|
||||
className={cn("h-full", "antialiased", "font-sans", manrope.variable)}
|
||||
>
|
||||
<body className="min-h-full flex flex-col">
|
||||
<Providers>
|
||||
<Providers initialToken={initialToken}>
|
||||
<InitUser />
|
||||
{children}
|
||||
<Toaster />
|
||||
|
||||
Reference in New Issue
Block a user