From 11d802f86cc6c5b2e4bb19a9dd38247bbb1b3672 Mon Sep 17 00:00:00 2001 From: Jannis Braun <151788261+TheZwiss@users.noreply.github.com> Date: Sun, 22 Mar 2026 20:42:48 +0100 Subject: [PATCH] feat(keybinds): add KeybindsPanel settings UI with recorder and conflict detection --- .../src/components/modals/UserSettings.tsx | 8 +- .../modals/settingsPanels/KeybindsPanel.tsx | 372 ++++++++++++++++++ 2 files changed, 378 insertions(+), 2 deletions(-) create mode 100644 packages/web/src/components/modals/settingsPanels/KeybindsPanel.tsx diff --git a/packages/web/src/components/modals/UserSettings.tsx b/packages/web/src/components/modals/UserSettings.tsx index 71525edc..9682a109 100644 --- a/packages/web/src/components/modals/UserSettings.tsx +++ b/packages/web/src/components/modals/UserSettings.tsx @@ -9,10 +9,11 @@ import { PrivacyPanel } from './settingsPanels/PrivacyPanel'; import { ConnectionsPanel } from './settingsPanels/ConnectionsPanel'; import { DesktopPanel } from './settingsPanels/DesktopPanel'; import { InstancePanel } from './settingsPanels/InstancePanel'; +import { KeybindsPanel } from './settingsPanels/KeybindsPanel'; import { isElectron } from '../../platform/platform'; import { SettingsSectionsProvider, useSettingsSectionsContext } from './SettingsSectionsContext'; -type SettingsTab = 'account' | 'voice' | 'privacy' | 'connections' | 'desktop' | 'instance'; +type SettingsTab = 'account' | 'voice' | 'privacy' | 'connections' | 'keybinds' | 'desktop' | 'instance'; function SidebarSubLinks() { const ctx = useSettingsSectionsContext(); @@ -65,7 +66,7 @@ export function UserSettingsModal() { useEffect(() => { if (isOpen) { const requested = modalData.tab as SettingsTab | undefined; - if (requested && ['account', 'voice', 'privacy', 'connections', 'instance'].includes(requested)) { + if (requested && ['account', 'voice', 'privacy', 'connections', 'keybinds', 'instance'].includes(requested)) { // Only allow instance tab for admins if (requested === 'instance' && !isAdmin) { setTab('account'); @@ -125,6 +126,7 @@ export function UserSettingsModal() {
input group.
+