feat(app): add always-visible Prompt tab with magazine brief style

Adds a 'Prompt' tab that is always present as the rightmost tab in the
content panel. Shows the user's original query as a single magazine-style
tile using the existing MagazineGrid component.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Dorian
2026-03-04 18:08:58 +00:00
co-authored by Claude Opus 4.6
parent dfce63de66
commit 2963bca7fe
5 changed files with 14 additions and 3 deletions
@@ -72,6 +72,13 @@
<NostrGrid
v-else-if="activeTab === 'nostr'"
/>
<MagazineGrid
v-else-if="activeTab === 'prompt'"
:sections="[{ title: panelQuery || 'Your Prompt', content: panelQuery }]"
:hero-image-url="null"
title="Prompt"
:query="panelQuery"
/>
</div>
</template>
@@ -348,6 +348,7 @@ const TAB_LABELS: Record<ContentTab, string> = {
nostr: 'Nostr',
favorites: 'Favorites',
discover: 'Discover',
prompt: 'Prompt',
}
function tabLabel(tab: ContentTab): string {
@@ -1,4 +1,4 @@
export type ContentTab = 'film' | 'song' | 'podcast' | 'book' | 'tvshow' | 'image' | 'place' | 'news' | 'websites' | 'magazine' | 'code' | 'design-system' | 'nostr' | 'app' | 'favorites' | 'discover'
export type ContentTab = 'film' | 'song' | 'podcast' | 'book' | 'tvshow' | 'image' | 'place' | 'news' | 'websites' | 'magazine' | 'code' | 'design-system' | 'nostr' | 'app' | 'favorites' | 'discover' | 'prompt'
export interface MagazineSection {
title: string
@@ -139,8 +139,10 @@ export function useContentPanel() {
}
const tabs = filterTabsByContext(userQuery, films.length > 0, songs.length > 0, podcasts.length > 0, books.length > 0, tvSeries.length > 0, images.length > 0, places.length > 0, hasNews, hasWebsites, hasMagazine, hasNostr, hasApps, hasCode)
availableTabs.value = tabs.length > 0 ? tabs : ['film']
activeTab.value = tabs[0] ?? 'film'
// Always append Prompt tab as the rightmost tab
const tabsWithPrompt = tabs.length > 0 ? [...tabs, 'prompt' as const] : ['prompt' as const]
availableTabs.value = tabsWithPrompt
activeTab.value = tabs[0] ?? 'prompt'
const showFilms = tabs.includes('film')
const showBooks = tabs.includes('book')
+1
View File
@@ -591,6 +591,7 @@ const TAB_LABELS: Record<ContentTab, string> = {
nostr: 'Nostr',
favorites: 'Favorites',
discover: 'Discover',
prompt: 'Prompt',
}
function tabLabel(tab: ContentTab): string {