From 669df1f08264e63c0892e7d4fdd2ee7dbcb96b2e Mon Sep 17 00:00:00 2001 From: MAZE Date: Tue, 23 Apr 2024 17:24:32 +0330 Subject: [PATCH] feat: add keyboard shortcuts --- package-lock.json | 18 ++++++++++++++++++ package.json | 1 + src/components/menu/menu.tsx | 7 +++++++ 3 files changed, 26 insertions(+) diff --git a/package-lock.json b/package-lock.json index d5512d3..fae8329 100644 --- a/package-lock.json +++ b/package-lock.json @@ -22,6 +22,7 @@ "howler": "2.2.4", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-hotkeys-hook": "3.2.1", "react-icons": "4.11.0", "react-wrap-balancer": "1.1.0", "zustand": "4.4.3" @@ -9734,6 +9735,11 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, + "node_modules/hotkeys-js": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/hotkeys-js/-/hotkeys-js-3.8.2.tgz", + "integrity": "sha512-HZZ9RVNr3nBbs2nW968o4rp3xXSdPjJ4B7GTXE375WwboltDJMsP9mcHfAAv+igsTeVxetr10mEbnoac/1U+oQ==" + }, "node_modules/howler": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/howler/-/howler-2.2.4.tgz", @@ -13575,6 +13581,18 @@ "react": "^18.2.0" } }, + "node_modules/react-hotkeys-hook": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/react-hotkeys-hook/-/react-hotkeys-hook-3.2.1.tgz", + "integrity": "sha512-l5Y4Dr109Fz10hHq40hkJmppXUqdv7tNVFldPq7lDsgWBpPLWCtkkSkrzTySje4GK+t5VLzPA01cCyUsZutOmQ==", + "dependencies": { + "hotkeys-js": "3.8.2" + }, + "peerDependencies": { + "react": ">=16.8.1", + "react-dom": ">=16.8.1" + } + }, "node_modules/react-icons": { "version": "4.11.0", "resolved": "https://registry.npmjs.org/react-icons/-/react-icons-4.11.0.tgz", diff --git a/package.json b/package.json index a5a0b57..9706d3d 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "howler": "2.2.4", "react": "^18.2.0", "react-dom": "^18.2.0", + "react-hotkeys-hook": "3.2.1", "react-icons": "4.11.0", "react-wrap-balancer": "1.1.0", "zustand": "4.4.3" diff --git a/src/components/menu/menu.tsx b/src/components/menu/menu.tsx index 494a674..85a6249 100644 --- a/src/components/menu/menu.tsx +++ b/src/components/menu/menu.tsx @@ -1,6 +1,7 @@ import { useState } from 'react'; import { IoMenu, IoClose } from 'react-icons/io5/index'; import * as DropdownMenu from '@radix-ui/react-dropdown-menu'; +import { useHotkeys } from 'react-hotkeys-hook'; import { ShuffleItem, @@ -30,6 +31,12 @@ export function Menu() { const variants = mix(fade(), slideY()); + useHotkeys('alt+m', () => setIsOpen(prev => !prev)); + useHotkeys('alt+n', () => setShowNotepad(prev => !prev)); + useHotkeys('alt+p', () => setShowPomodoro(prev => !prev)); + useHotkeys('shift+alt+p', () => setShowPresets(prev => !prev)); + useHotkeys('alt+s', () => setShowShareLink(prev => !prev)); + return ( <>