From dcc077184c33c634b48b51b4492dcc63568b8a3b Mon Sep 17 00:00:00 2001 From: Chneemann Date: Sun, 4 Oct 2026 19:30:41 +0200 Subject: [PATCH] feat: connect CV request modal to command palette --- src/components/CommandPalette.tsx | 5 ++++- src/components/Hero.tsx | 8 +++++++- src/lib/paletteCommands.ts | 8 ++------ 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/components/CommandPalette.tsx b/src/components/CommandPalette.tsx index 1a0d14d..f4a71ed 100644 --- a/src/components/CommandPalette.tsx +++ b/src/components/CommandPalette.tsx @@ -26,7 +26,7 @@ export default function CommandPalette() { cmd.category.toLowerCase().includes(search.toLowerCase()), ); - // Global hotkeys listener (Cmd/Ctrl + K to toggle, ESC to close) + // Global hotkeys listener (Cmd/Ctrl + K to toggle, ESC to close, close on CV modal) useEffect(() => { const handleKeyDown = (e: KeyboardEvent) => { if ((e.metaKey || e.ctrlKey) && e.key === "k") { @@ -38,13 +38,16 @@ export default function CommandPalette() { }; const handleCustomToggle = () => setIsOpen((prev) => !prev); + const handleCloseModal = () => setIsOpen(false); window.addEventListener("keydown", handleKeyDown); window.addEventListener("toggle-cmd-k", handleCustomToggle); + window.addEventListener("open-cv-modal", handleCloseModal); return () => { window.removeEventListener("keydown", handleKeyDown); window.removeEventListener("toggle-cmd-k", handleCustomToggle); + window.removeEventListener("open-cv-modal", handleCloseModal); }; }, []); diff --git a/src/components/Hero.tsx b/src/components/Hero.tsx index 511b825..6bb5317 100644 --- a/src/components/Hero.tsx +++ b/src/components/Hero.tsx @@ -2,7 +2,7 @@ import { useTranslations } from "next-intl"; import SocialLinks from "./Social"; -import { useState } from "react"; +import { useEffect, useState } from "react"; import CvRequestModal from "./CvRequestModal"; /** @@ -14,6 +14,12 @@ export default function Hero() { const [isCvModalOpen, setIsCvModalOpen] = useState(false); + useEffect(() => { + const handleOpenCvModal = () => setIsCvModalOpen(true); + window.addEventListener("open-cv-modal", handleOpenCvModal); + return () => window.removeEventListener("open-cv-modal", handleOpenCvModal); + }, []); + return (
diff --git a/src/lib/paletteCommands.ts b/src/lib/paletteCommands.ts index 06becba..1f4eb58 100644 --- a/src/lib/paletteCommands.ts +++ b/src/lib/paletteCommands.ts @@ -31,16 +31,12 @@ export const getCommands = ( }, }, { - id: "download-cv", + id: "request-cv", label: tCommands("downloadCV"), category: tCommands("catQuickActions"), icon: "📄", action: () => { - window.open( - "/assets/downloads/Andre_Kempf_Lebenslauf.pdf", - "_blank", - "noopener,noreferrer", - ); + window.dispatchEvent(new CustomEvent("open-cv-modal")); }, }, {