From 9955a50add7b2ab288f9f00835578681a62d9d80 Mon Sep 17 00:00:00 2001 From: Jon Staab Date: Wed, 24 Jun 2026 13:10:06 -0700 Subject: [PATCH] Clean up search --- src/app.css | 4 + src/app/components/Content.svelte | 2 +- src/app/components/ContentMinimal.svelte | 2 +- src/app/components/ContentQuote.svelte | 1 - src/app/components/NoteCard.svelte | 8 +- src/app/components/PeopleItem.svelte | 2 +- src/app/components/PrimaryNavItemSpace.svelte | 5 +- src/app/components/PrimaryNavSpaces.svelte | 35 ++- .../PrimaryNavSpacesOverflow.svelte | 16 ++ src/app/components/RoomItemContent.svelte | 2 +- src/app/components/RoomSearch.svelte | 174 +++++++++++++ src/app/components/SpaceMenu.svelte | 6 + src/app/components/SpaceSearch.svelte | 229 ++++++++---------- src/lib/components/Button.svelte | 1 + src/lib/components/ContentSearch.svelte | 4 +- src/lib/components/Spinner.svelte | 5 +- src/routes/people/+page.svelte | 45 ++-- src/routes/spaces/+page.svelte | 206 +++++++--------- src/routes/spaces/[relay]/[h]/+page.svelte | 12 +- src/routes/spaces/[relay]/chat/+page.svelte | 11 +- src/routes/spaces/[relay]/recent/+page.svelte | 169 +------------ 21 files changed, 482 insertions(+), 457 deletions(-) create mode 100644 src/app/components/PrimaryNavSpacesOverflow.svelte create mode 100644 src/app/components/RoomSearch.svelte diff --git a/src/app.css b/src/app.css index 369c82a1..99bb3dc4 100644 --- a/src/app.css +++ b/src/app.css @@ -88,6 +88,10 @@ @apply rounded-box text-base-content border-base-content/20 bg-base-100 border border-solid p-4 shadow-xl/5 sm:p-6; } +@utility card2-interactive { + @apply cursor-pointer hover:scale-101 transition-all; +} + @utility column { @apply flex flex-col; } diff --git a/src/app/components/Content.svelte b/src/app/components/Content.svelte index 19c59eeb..b80258a3 100644 --- a/src/app/components/Content.svelte +++ b/src/app/components/Content.svelte @@ -144,7 +144,7 @@
{#if warning} -
+

This note has been flagged by the author as "{warning}".
diff --git a/src/app/components/ContentMinimal.svelte b/src/app/components/ContentMinimal.svelte index 904ffe7b..7951100b 100644 --- a/src/app/components/ContentMinimal.svelte +++ b/src/app/components/ContentMinimal.svelte @@ -98,7 +98,7 @@

{#if warning} -
+

This note has been flagged by the author as "{warning}".
diff --git a/src/app/components/ContentQuote.svelte b/src/app/components/ContentQuote.svelte index 5f1c69b6..13fced1a 100644 --- a/src/app/components/ContentQuote.svelte +++ b/src/app/components/ContentQuote.svelte @@ -54,7 +54,6 @@

{:else} diff --git a/src/app/components/NoteCard.svelte b/src/app/components/NoteCard.svelte index 6104b56c..5ce7d009 100644 --- a/src/app/components/NoteCard.svelte +++ b/src/app/components/NoteCard.svelte @@ -16,15 +16,13 @@ children, minimal = false, hideProfile = false, - noShadow = false, url, ...restProps }: { event: TrustedEvent - children: Snippet + children?: Snippet minimal?: boolean hideProfile?: boolean - noShadow?: boolean url?: string class?: string } = $props() @@ -36,7 +34,7 @@ let muted = $state($isEventMuted(event)) -
+
{#if muted}
@@ -60,6 +58,6 @@ {formatTimestamp(event.created_at)}
- {@render children()} + {@render children?.()} {/if}
diff --git a/src/app/components/PeopleItem.svelte b/src/app/components/PeopleItem.svelte index af4c0057..5c6ab3a6 100644 --- a/src/app/components/PeopleItem.svelte +++ b/src/app/components/PeopleItem.svelte @@ -18,7 +18,7 @@ const openProfile = () => pushModal(ProfileDetail, {pubkey, url}) -
+
diff --git a/src/app/components/PrimaryNavSpacesOverflow.svelte b/src/app/components/PrimaryNavSpacesOverflow.svelte new file mode 100644 index 00000000..ae318b7c --- /dev/null +++ b/src/app/components/PrimaryNavSpacesOverflow.svelte @@ -0,0 +1,16 @@ + + +
+ {#each urls as url (url)} + + {/each} +
diff --git a/src/app/components/RoomItemContent.svelte b/src/app/components/RoomItemContent.svelte index 7bfb2f42..01df6444 100644 --- a/src/app/components/RoomItemContent.svelte +++ b/src/app/components/RoomItemContent.svelte @@ -13,7 +13,7 @@ const maxLength = 5500 -
+
{#if path && !isMobile} diff --git a/src/app/components/RoomSearch.svelte b/src/app/components/RoomSearch.svelte new file mode 100644 index 00000000..5dc9ed13 --- /dev/null +++ b/src/app/components/RoomSearch.svelte @@ -0,0 +1,174 @@ + + + + + Search Content + + on {displayRelayUrl(url)} + + + + + {#if loading} + Searching... + {:else if eventsByAge.size === 0 && term} + No results found. + {:else} + {#each eventsByAge as [key, events] (key)} +

+ {#if key === "day"} + Last 24 Hours + {:else if key === "week"} + Last 7 Days + {:else} + Older + {/if} +

+ {#each events as event (event.id)} + + {/each} + {/each} + {/if} +
+
diff --git a/src/app/components/SpaceMenu.svelte b/src/app/components/SpaceMenu.svelte index 278b427d..35640ca0 100644 --- a/src/app/components/SpaceMenu.svelte +++ b/src/app/components/SpaceMenu.svelte @@ -34,6 +34,7 @@ import SpaceJoin from "@app/components/SpaceJoin.svelte" import RelayName from "@app/components/RelayName.svelte" import SpaceActionItems from "@app/components/SpaceActionItems.svelte" + import SpaceSearch from "@app/components/SpaceSearch.svelte" import RoomCreate from "@app/components/RoomCreate.svelte" import SpaceMenuRoomItem from "@app/components/SpaceMenuRoomItem.svelte" import VoiceWidget from "@app/components/VoiceWidget.svelte" @@ -96,6 +97,8 @@ const showActionItems = () => pushModal(SpaceActionItems, {url}) + const openSearch = () => pushModal(SpaceSearch, {url}) + const canCreateRoom = deriveUserCanCreateRoom(url) const createInvite = () => pushModal(SpaceInvite, {url}) @@ -248,6 +251,9 @@ {/if} {#if hasNip29($relay)} + + Search + {#if $userRooms.length > 0}
Your Rooms diff --git a/src/app/components/SpaceSearch.svelte b/src/app/components/SpaceSearch.svelte index e701abe8..03271229 100644 --- a/src/app/components/SpaceSearch.svelte +++ b/src/app/components/SpaceSearch.svelte @@ -1,94 +1,66 @@ - -{#if show} - -
-
-
- Search - -
- -
-

{relayStatus}

- {#if !term} -

- {h ? "Search for content in this room." : "Search for content in this space."} -

- {:else if loading} -

Searching...

- {:else if eventsByAge.size === 0} -

No results found.

- {:else} -
- {#each eventsByAge as [key, events] (key)} -
-

- {#if key === "day"} - Last 24 Hours - {:else if key === "week"} - Last 7 Days - {:else} - Older - {/if} -

-
- {#each events as event (event.id)} - - {/each} -
+ + + Search Content + + on {displayRelayUrl(url)} + + + + + {#if loading} + Searching... + {:else if eventsByAge.size === 0 && term} + No results found. + {:else} + {#each eventsByAge as [key, events] (key)} +

+ {#if key === "day"} + Last 24 Hours + {:else if key === "week"} + Last 7 Days + {:else} + Older + {/if} +

+ {#each events as event (event.id)} + {@const h = getTagValue("h", event.tags)} +
-
-
-{/if} + {#if h} +
+ +
+ {/if} +
+ + {/each} + {/each} + {/if} + + diff --git a/src/lib/components/Button.svelte b/src/lib/components/Button.svelte index 53c7203d..7c5dbd00 100644 --- a/src/lib/components/Button.svelte +++ b/src/lib/components/Button.svelte @@ -14,6 +14,7 @@ style?: string disabled?: boolean "data-tip"?: string + "aria-label"?: string "aria-pressed"?: boolean } = $props() diff --git a/src/lib/components/ContentSearch.svelte b/src/lib/components/ContentSearch.svelte index c07f3e44..95af1e80 100644 --- a/src/lib/components/ContentSearch.svelte +++ b/src/lib/components/ContentSearch.svelte @@ -8,13 +8,13 @@ const {...props}: Props = $props() -
+
{@render props.input?.()}
-
+
{@render props.content?.()}
diff --git a/src/lib/components/Spinner.svelte b/src/lib/components/Spinner.svelte index 39d1b9d9..88d09332 100644 --- a/src/lib/components/Spinner.svelte +++ b/src/lib/components/Spinner.svelte @@ -4,12 +4,13 @@ interface Props { loading?: boolean children?: import("svelte").Snippet + class?: string } - const {loading = false, children}: Props = $props() + const {loading = false, children, ...props}: Props = $props() - + {#if loading} diff --git a/src/routes/people/+page.svelte b/src/routes/people/+page.svelte index 4722b5ab..0e07e327 100644 --- a/src/routes/people/+page.svelte +++ b/src/routes/people/+page.svelte @@ -6,6 +6,7 @@ import Magnifier from "@assets/icons/magnifier.svg?dataurl" import Icon from "@lib/components/Icon.svelte" import Page from "@lib/components/Page.svelte" + import PageContent from "@lib/components/PageContent.svelte" import ContentSearch from "@lib/components/ContentSearch.svelte" import PeopleItem from "@app/components/PeopleItem.svelte" import {bootstrapPubkeys} from "@app/social" @@ -38,25 +39,27 @@ - - {#snippet input()} - - {/snippet} - {#snippet content()} -
- {#each pubkeys.slice(0, limit) as pubkey (pubkey)} - - {/each} -
- {/snippet} -
+ + + {#snippet input()} + + {/snippet} + {#snippet content()} +
+ {#each pubkeys.slice(0, limit) as pubkey (pubkey)} + + {/each} +
+ {/snippet} +
+
diff --git a/src/routes/spaces/+page.svelte b/src/routes/spaces/+page.svelte index 4c96b2c2..0677b97a 100644 --- a/src/routes/spaces/+page.svelte +++ b/src/routes/spaces/+page.svelte @@ -1,5 +1,5 @@