From 12b450b7b96e85f1063a1be84b11324965b4144e Mon Sep 17 00:00:00 2001 From: Jannis Braun <151788261+TheZwiss@users.noreply.github.com> Date: Fri, 13 Mar 2026 04:47:18 +0100 Subject: [PATCH] =?UTF-8?q?feat:=20inline=20DM=20search=20bar=20=E2=80=94?= =?UTF-8?q?=20find=20or=20start=20conversations=20from=20sidebar=20header?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace the static placeholder button with a fully functional search bar that filters existing DM conversations instantly and searches for users via the API with debounce. Supports keyboard navigation, federation-aware DM creation, group DM display, and portal-based glass dropdown. --- .../src/components/layout/ChannelSidebar.tsx | 5 +- .../web/src/components/layout/DmSearchBar.tsx | 387 ++++++++++++++++++ 2 files changed, 389 insertions(+), 3 deletions(-) create mode 100644 packages/web/src/components/layout/DmSearchBar.tsx diff --git a/packages/web/src/components/layout/ChannelSidebar.tsx b/packages/web/src/components/layout/ChannelSidebar.tsx index ef9c4e45..379f5682 100644 --- a/packages/web/src/components/layout/ChannelSidebar.tsx +++ b/packages/web/src/components/layout/ChannelSidebar.tsx @@ -18,6 +18,7 @@ import { parseFederatedUsername, isSelf } from '../../utils/identity'; import { joinVoiceChannel, broadcastVoiceStatus, broadcastDeafenViaLiveKit } from '../../utils/voice'; import { ContextMenu } from '../ui/ContextMenu'; import { ConfirmDialog } from '../ui/ConfirmDialog'; +import { DmSearchBar } from './DmSearchBar'; export function ChannelSidebar() { const spaces = useSpaceStore((s) => s.spaces); @@ -399,9 +400,7 @@ export function ChannelSidebar() { <>