From e95f14e6ebf272af9620007345401ec99fc466bc Mon Sep 17 00:00:00 2001 From: corgifist Date: Tue, 29 Jul 2025 19:50:00 +0300 Subject: [PATCH] added separate route groups for dashboard and editor --- package-lock.json | 19 +++++++ package.json | 1 + src/app/(dashboard)/layout.tsx | 21 +++++++ src/app/{ => (dashboard)}/page.tsx | 9 ++- src/app/{ => (dashboard)}/settings/page.tsx | 0 .../settings/storage/page.tsx | 1 + src/app/(editor)/editor/[uuid]/layout.tsx | 57 +++++++++++++++++++ src/app/(editor)/editor/[uuid]/page.tsx | 7 +++ src/app/layout.tsx | 5 -- 9 files changed, 113 insertions(+), 7 deletions(-) create mode 100644 src/app/(dashboard)/layout.tsx rename src/app/{ => (dashboard)}/page.tsx (99%) rename src/app/{ => (dashboard)}/settings/page.tsx (100%) rename src/app/{ => (dashboard)}/settings/storage/page.tsx (98%) create mode 100644 src/app/(editor)/editor/[uuid]/layout.tsx create mode 100644 src/app/(editor)/editor/[uuid]/page.tsx diff --git a/package-lock.json b/package-lock.json index d6d9b12..fbd2b1a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -27,6 +27,7 @@ "clsx": "^2.1.1", "dexie": "^4.0.11", "dexie-react-hooks": "^1.1.7", + "dockview": "^4.5.0", "lucide-react": "^0.525.0", "next": "^15.4.3", "next-themes": "^0.4.6", @@ -3547,6 +3548,24 @@ "react": ">=16" } }, + "node_modules/dockview": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/dockview/-/dockview-4.5.0.tgz", + "integrity": "sha512-Qg504Vxj0Ivk57pvoXbzDUcUK5pXewFpKPQdH1WoznC+d5XbvuDISZlyMhJKEY+m75xtsiJLxOeE4HCxG1j0NQ==", + "license": "MIT", + "dependencies": { + "dockview-core": "^4.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/dockview-core": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/dockview-core/-/dockview-core-4.5.0.tgz", + "integrity": "sha512-onwWGSy5mUiVDQDjVMIMeTxFUkJGBLHxpfSefDd4R6/Qfkvp2I0qTczNNoEXgxQkrG8J/7hjPZ+p+R9M7ggkVw==", + "license": "MIT" + }, "node_modules/doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", diff --git a/package.json b/package.json index 2df1ac3..e32b1e2 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "clsx": "^2.1.1", "dexie": "^4.0.11", "dexie-react-hooks": "^1.1.7", + "dockview": "^4.5.0", "lucide-react": "^0.525.0", "next": "^15.4.3", "next-themes": "^0.4.6", diff --git a/src/app/(dashboard)/layout.tsx b/src/app/(dashboard)/layout.tsx new file mode 100644 index 0000000..231f4b5 --- /dev/null +++ b/src/app/(dashboard)/layout.tsx @@ -0,0 +1,21 @@ +import { ReactNode } from "react"; +import { SidebarProvider } from "@/components/ui/sidebar"; +import Dashboard from "@/components/dashboard"; +import PersistenceProvider from "../persistence-provider"; + +export default async function RootLayout({ + children, +}: Readonly<{ + children: ReactNode +}>) { + return ( + + +
+ + {children} + +
+
+ ); +} diff --git a/src/app/page.tsx b/src/app/(dashboard)/page.tsx similarity index 99% rename from src/app/page.tsx rename to src/app/(dashboard)/page.tsx index 7efdae9..53a3064 100644 --- a/src/app/page.tsx +++ b/src/app/(dashboard)/page.tsx @@ -32,6 +32,7 @@ import StaticSidebarTrigger from "@/components/static-sidebar-trigger"; import SidebarTriggerAdjustable from "@/components/sidebar-trigger-adjustable"; import ScrollFadingTitle from "@/components/scroll-fading-title"; import AscendingCard from "@/components/ascending-card"; +import Link from "next/link"; type SortingType = "byCreationDate" | "byEditDate" @@ -408,7 +409,7 @@ const ProjectContainer = ({ } }; - return ( + const projectComponent = (
@@ -430,7 +431,11 @@ const ProjectContainer = ({ )} - ) + ); + + return selecting + ? projectComponent + : ({projectComponent}); }; export default function Home(): ReactNode { diff --git a/src/app/settings/page.tsx b/src/app/(dashboard)/settings/page.tsx similarity index 100% rename from src/app/settings/page.tsx rename to src/app/(dashboard)/settings/page.tsx diff --git a/src/app/settings/storage/page.tsx b/src/app/(dashboard)/settings/storage/page.tsx similarity index 98% rename from src/app/settings/storage/page.tsx rename to src/app/(dashboard)/settings/storage/page.tsx index d86cab4..52bef26 100644 --- a/src/app/settings/storage/page.tsx +++ b/src/app/(dashboard)/settings/storage/page.tsx @@ -7,6 +7,7 @@ import SidebarTriggerAdjustable from "@/components/sidebar-trigger-adjustable"; import StaticSidebarTrigger from "@/components/static-sidebar-trigger"; import { Button } from "@/components/ui/button"; import { Label } from "@/components/ui/label"; +import { useSidebar } from "@/components/ui/sidebar"; import WideContainer from "@/components/wide-container"; import { useIsMobile } from "@/hooks/use-mobile"; import { ArrowLeftIcon } from "lucide-react"; diff --git a/src/app/(editor)/editor/[uuid]/layout.tsx b/src/app/(editor)/editor/[uuid]/layout.tsx new file mode 100644 index 0000000..b503443 --- /dev/null +++ b/src/app/(editor)/editor/[uuid]/layout.tsx @@ -0,0 +1,57 @@ +import type { Metadata, Viewport } from "next"; +import { Geist, Geist_Mono } from "next/font/google"; +import { ReactNode } from "react"; +import "@/app/globals.css"; +import ThemeProvider from "@/app/theme-provider"; +import Analytics from "@/app/analytics"; +import PersistenceProvider from "@/app/persistence-provider"; +import { Toaster } from "@/components/ui/sonner"; +import PWAHead from "@/app/pwa-head"; + +const geist = Geist({ + variable: "--font-geist", + subsets: ["latin"] +}); + +const geistMono = Geist_Mono({ + variable: "--font-geist-mono", + subsets: ["latin"] +}); + +export const metadata: Metadata = { + title: "ClipFusion", + description: "Desktop power right in your browser", +}; + +export const viewport: Viewport = { + width: 'device-width', + initialScale: 1, + maximumScale: 1, + userScalable: false, + viewportFit: "cover" +}; + +export default async function RootLayout({ + children, +}: Readonly<{ + children: ReactNode; +}>) { + return ( + + + + + + + +
+ + {children} + +
+ +
+ + + ); +} diff --git a/src/app/(editor)/editor/[uuid]/page.tsx b/src/app/(editor)/editor/[uuid]/page.tsx new file mode 100644 index 0000000..4452798 --- /dev/null +++ b/src/app/(editor)/editor/[uuid]/page.tsx @@ -0,0 +1,7 @@ +export default function Editor() { + return ( + <> + Hello, Editor Page! + + ); +} \ No newline at end of file diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 8eb7d40..ca14b5a 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,8 +1,6 @@ import type { Metadata, Viewport } from "next"; import { Geist, Geist_Mono } from "next/font/google"; import { ReactNode } from "react"; -import { SidebarProvider } from "@/components/ui/sidebar"; -import Dashboard from "@/components/dashboard"; import "./globals.css"; import ThemeProvider from "./theme-provider"; import Analytics from "./analytics"; @@ -46,14 +44,11 @@ export default async function RootLayout({ - -
{children}
-