From 3fc30c88f2c8ee1a5215d0cde95b6e78fcff3969 Mon Sep 17 00:00:00 2001 From: Jon Staab Date: Fri, 27 Feb 2026 15:02:36 -0800 Subject: [PATCH] Reuse modal --- frontend/src/components/AppShell.tsx | 149 ++++++++++++--------------- frontend/src/components/Modal.tsx | 58 +++++++++++ 2 files changed, 126 insertions(+), 81 deletions(-) create mode 100644 frontend/src/components/Modal.tsx diff --git a/frontend/src/components/AppShell.tsx b/frontend/src/components/AppShell.tsx index c9a8f77..26ec95f 100644 --- a/frontend/src/components/AppShell.tsx +++ b/frontend/src/components/AppShell.tsx @@ -4,6 +4,7 @@ import Fuse from "fuse.js" import { adminCheck as fetchAdminCheck, listTenantRelays, type Relay } from "../lib/api" import { eventStore, primeProfiles, useActiveAccount, useProfilePicture } from "../lib/nostr" import serverIcon from "../assets/server.svg" +import Modal from "./Modal" type Profile = { name?: string @@ -37,9 +38,7 @@ export default function AppShell(props: { children?: any }) { const [tenantRelays] = createResource(() => account()?.id, () => listTenantRelays()) const [profile, setProfile] = createSignal({}) const [searchOpen, setSearchOpen] = createSignal(false) - const [searchEntered, setSearchEntered] = createSignal(false) const [searchQuery, setSearchQuery] = createSignal("") - let searchTransitionTimer: number | undefined const isAdmin = createMemo(() => !!adminCheck()?.is_admin) const username = createMemo(() => profile().name || profile().display_name || shortenPubkey(account()?.pubkey)) @@ -96,25 +95,12 @@ export default function AppShell(props: { children?: any }) { : "block rounded-lg px-3 py-2 text-sm text-white/80 hover:bg-white/10 hover:text-white" } - const openSearchModal = () => { - if (searchTransitionTimer) window.clearTimeout(searchTransitionTimer) - setSearchOpen(true) - setSearchEntered(false) - searchTransitionTimer = window.setTimeout(() => setSearchEntered(true), 10) - } - + const openSearchModal = () => setSearchOpen(true) const closeSearchModal = () => { - setSearchEntered(false) - searchTransitionTimer = window.setTimeout(() => { - setSearchOpen(false) - setSearchQuery("") - }, 200) + setSearchOpen(false) + setSearchQuery("") } - onCleanup(() => { - if (searchTransitionTimer) window.clearTimeout(searchTransitionTimer) - }) - return (
-