import * as React from "react"; import type { Channel, SearchHit } from "@/shared/api/types"; const ChannelBrowserDialog = React.lazy(async () => { const module = await import("@/features/channels/ui/ChannelBrowserDialog"); return { default: module.ChannelBrowserDialog }; }); const ChannelManagementSheet = React.lazy(async () => { const module = await import("@/features/channels/ui/ChannelManagementSheet"); return { default: module.ChannelManagementSheet }; }); const SearchDialog = React.lazy(async () => { const module = await import("@/features/search/ui/SearchDialog"); return { default: module.SearchDialog }; }); export type BrowseDialogType = "stream" | "forum" | null; type AppShellOverlaysProps = { activeChannel: Channel | null; browseDialogType: BrowseDialogType; channels: Channel[]; currentPubkey?: string; isChannelManagementOpen: boolean; isSearchOpen: boolean; onBrowseChannelJoin: (channelId: string) => Promise; onBrowseDialogOpenChange: (open: boolean) => void; onChannelManagementOpenChange: (open: boolean) => void; onDeleteActiveChannel: () => void; onOpenSearchResult: (hit: SearchHit) => void; onSearchOpenChange: (open: boolean) => void; onSelectChannel: (channelId: string) => void; }; export function AppShellOverlays({ activeChannel, browseDialogType, channels, currentPubkey, isChannelManagementOpen, isSearchOpen, onBrowseChannelJoin, onBrowseDialogOpenChange, onChannelManagementOpenChange, onDeleteActiveChannel, onOpenSearchResult, onSearchOpenChange, onSelectChannel, }: AppShellOverlaysProps) { return ( <> {browseDialogType !== null ? ( ) : null} {isSearchOpen ? ( ) : null} {isChannelManagementOpen && activeChannel !== null ? ( ) : null} ); }