diff options
| author | Maze Winther <mazewinther@gmail.com> | 2025-08-27 00:52:39 +0200 |
|---|---|---|
| committer | Maze Winther <mazewinther@gmail.com> | 2025-08-27 00:52:39 +0200 |
| commit | adc8cb37fcec21afac848b1e5dd724394c344050 (patch) | |
| tree | 9157bc1973840b00a96912d42f6741352abedbc4 /apps/web/src/components/editor-header.tsx | |
| parent | b459b46802a760a4a81ce91fdf24390e07375fb0 (diff) | |
| download | opencut-adc8cb37fcec21afac848b1e5dd724394c344050.tar.gz | |
another huge refactor
Diffstat (limited to 'apps/web/src/components/editor-header.tsx')
| -rw-r--r-- | apps/web/src/components/editor-header.tsx | 139 |
1 files changed, 0 insertions, 139 deletions
diff --git a/apps/web/src/components/editor-header.tsx b/apps/web/src/components/editor-header.tsx deleted file mode 100644 index ee5dfc17..00000000 --- a/apps/web/src/components/editor-header.tsx +++ /dev/null @@ -1,139 +0,0 @@ -"use client"; - -import { Button } from "./ui/button"; -import { ChevronDown, ArrowLeft, SquarePen, Trash, Sun } from "lucide-react"; -import { HeaderBase } from "./header-base"; -import { useProjectStore } from "@/stores/project-store"; -import { KeyboardShortcutsHelp } from "./keyboard-shortcuts-help"; -import { useState } from "react"; -import { - DropdownMenu, - DropdownMenuContent, - DropdownMenuItem, - DropdownMenuSeparator, - DropdownMenuTrigger, -} from "./ui/dropdown-menu"; -import Link from "next/link"; -import { RenameProjectDialog } from "./rename-project-dialog"; -import { DeleteProjectDialog } from "./delete-project-dialog"; -import { useRouter } from "next/navigation"; -import { FaDiscord } from "react-icons/fa6"; -import { useTheme } from "next-themes"; -import { PanelPresetSelector } from "./panel-preset-selector"; -import { ExportButton } from "./export-button"; - -export function EditorHeader() { - const { activeProject, renameProject, deleteProject } = useProjectStore(); - const [isDeleteDialogOpen, setIsDeleteDialogOpen] = useState(false); - const [isRenameDialogOpen, setIsRenameDialogOpen] = useState(false); - const router = useRouter(); - const { theme, setTheme } = useTheme(); - - const handleNameSave = async (newName: string) => { - console.log("handleNameSave", newName); - if (activeProject && newName.trim() && newName !== activeProject.name) { - try { - await renameProject(activeProject.id, newName.trim()); - setIsRenameDialogOpen(false); - } catch (error) { - console.error("Failed to rename project:", error); - } - } - }; - - const handleDelete = () => { - if (activeProject) { - deleteProject(activeProject.id); - setIsDeleteDialogOpen(false); - router.push("/projects"); - } - }; - - const leftContent = ( - <div className="flex items-center gap-2"> - <DropdownMenu> - <DropdownMenuTrigger asChild> - <Button - variant="secondary" - className="h-auto py-1.5 px-2.5 flex items-center justify-center" - > - <ChevronDown className="text-muted-foreground" /> - <span className="text-[0.85rem] mr-2">{activeProject?.name}</span> - </Button> - </DropdownMenuTrigger> - <DropdownMenuContent align="start" className="w-40 z-100"> - <Link href="/projects"> - <DropdownMenuItem className="flex items-center gap-1.5"> - <ArrowLeft className="h-4 w-4" /> - Projects - </DropdownMenuItem> - </Link> - <DropdownMenuItem - className="flex items-center gap-1.5" - onClick={() => setIsRenameDialogOpen(true)} - > - <SquarePen className="h-4 w-4" /> - Rename project - </DropdownMenuItem> - <DropdownMenuItem - variant="destructive" - className="flex items-center gap-1.5" - onClick={() => setIsDeleteDialogOpen(true)} - > - <Trash className="h-4 w-4" /> - Delete Project - </DropdownMenuItem> - <DropdownMenuSeparator /> - <DropdownMenuItem asChild> - <Link - href="https://discord.gg/zmR9N35cjK" - target="_blank" - rel="noopener noreferrer" - className="flex items-center gap-1.5" - > - <FaDiscord className="h-4 w-4" /> - Discord - </Link> - </DropdownMenuItem> - </DropdownMenuContent> - </DropdownMenu> - <RenameProjectDialog - isOpen={isRenameDialogOpen} - onOpenChange={setIsRenameDialogOpen} - onConfirm={handleNameSave} - projectName={activeProject?.name || ""} - /> - <DeleteProjectDialog - isOpen={isDeleteDialogOpen} - onOpenChange={setIsDeleteDialogOpen} - onConfirm={handleDelete} - projectName={activeProject?.name || ""} - /> - </div> - ); - - const rightContent = ( - <nav className="flex items-center gap-2"> - <PanelPresetSelector /> - <KeyboardShortcutsHelp /> - <ExportButton /> - <Button - size="icon" - variant="text" - className="h-7" - onClick={() => setTheme(theme === "dark" ? "light" : "dark")} - > - <Sun className="!size-[1.1rem]" /> - <span className="sr-only">{theme === "dark" ? "Light" : "Dark"}</span> - </Button> - </nav> - ); - - return ( - <HeaderBase - leftContent={leftContent} - rightContent={rightContent} - className="bg-background h-[3.2rem] px-3 items-center mt-0.5" - /> - ); -} |
