@@ -18,7 +18,7 @@ import {
1818} from "@features/inbox/utils/filterReports" ;
1919import { INBOX_REFETCH_INTERVAL_MS } from "@features/inbox/utils/inboxConstants" ;
2020import { useDraftStore } from "@features/message-editor/stores/draftStore" ;
21- import { useSettingsDialogStore } from "@features/settings/stores/settingsDialogStore " ;
21+ import { SignalSourcesSettings } from "@features/settings/components/sections/SignalSourcesSettings " ;
2222import { useCreateTask } from "@features/tasks/hooks/useTasks" ;
2323import { useFeatureFlag } from "@hooks/useFeatureFlag" ;
2424import { useRepositoryIntegration } from "@hooks/useIntegrations" ;
@@ -35,10 +35,12 @@ import {
3535 Badge ,
3636 Box ,
3737 Button ,
38+ Dialog ,
3839 Flex ,
3940 ScrollArea ,
4041 Select ,
4142 Text ,
43+ Tooltip ,
4244} from "@radix-ui/themes" ;
4345import graphsHog from "@renderer/assets/images/graphs-hog.png" ;
4446import { getCloudUrlFromRegion } from "@shared/constants/oauth" ;
@@ -124,7 +126,7 @@ export function InboxSignalsTab() {
124126 const statusFilter = useInboxSignalsFilterStore ( ( s ) => s . statusFilter ) ;
125127 const { data : signalSourceConfigs } = useSignalSourceConfigs ( ) ;
126128 const hasSignalSources = signalSourceConfigs ?. some ( ( c ) => c . enabled ) ?? false ;
127- const openSettings = useSettingsDialogStore ( ( s ) => s . open ) ;
129+ const [ sourcesDialogOpen , setSourcesDialogOpen ] = useState ( false ) ;
128130
129131 const windowFocused = useRendererWindowFocusStore ( ( s ) => s . focused ) ;
130132 const isInboxView = useNavigationStore ( ( s ) => s . view . type === "inbox" ) ;
@@ -324,81 +326,126 @@ export function InboxSignalsTab() {
324326 ) ;
325327 }
326328
329+ const sourcesDialog = (
330+ < Dialog . Root open = { sourcesDialogOpen } onOpenChange = { setSourcesDialogOpen } >
331+ < Dialog . Content maxWidth = "520px" >
332+ < Flex align = "center" justify = "between" mb = "3" >
333+ < Dialog . Title size = "3" mb = "0" >
334+ Signal sources
335+ </ Dialog . Title >
336+ < Dialog . Close >
337+ < button
338+ type = "button"
339+ className = "rounded p-1 text-gray-11 hover:bg-gray-3 hover:text-gray-12"
340+ aria-label = "Close"
341+ >
342+ < XIcon size = { 16 } />
343+ </ button >
344+ </ Dialog . Close >
345+ </ Flex >
346+ < SignalSourcesSettings />
347+ < Flex justify = "end" mt = "4" >
348+ { hasSignalSources ? (
349+ < Dialog . Close >
350+ < Button size = "2" > Back to Inbox</ Button >
351+ </ Dialog . Close >
352+ ) : (
353+ < Tooltip content = "You haven't enabled any signal source yet!" >
354+ < Button size = "2" disabled >
355+ Back to Inbox
356+ </ Button >
357+ </ Tooltip >
358+ ) }
359+ </ Flex >
360+ </ Dialog . Content >
361+ </ Dialog . Root >
362+ ) ;
363+
327364 if ( allReports . length === 0 ) {
328365 if ( ! hasSignalSources ) {
329366 return (
330- < Flex
331- direction = "column"
332- align = "center"
333- justify = "center"
334- height = "100%"
335- px = "5"
336- style = { { margin : "0 auto" } }
337- >
338- < Flex direction = "column" align = "center" style = { { maxWidth : 420 } } >
339- < img
340- src = { graphsHog }
341- alt = ""
342- style = { { width : 128 , marginBottom : 20 } }
343- />
344-
345- < Text
346- size = "4"
347- weight = "bold"
348- align = "center"
349- style = { { color : "var(--gray-12)" } }
350- >
351- Welcome to your Inbox
352- </ Text >
367+ < >
368+ < Flex
369+ direction = "column"
370+ align = "center"
371+ justify = "center"
372+ height = "100%"
373+ px = "5"
374+ style = { { margin : "0 auto" } }
375+ >
376+ < Flex direction = "column" align = "center" style = { { maxWidth : 420 } } >
377+ < img
378+ src = { graphsHog }
379+ alt = ""
380+ style = { { width : 128 , marginBottom : 20 } }
381+ />
353382
354- < Flex
355- direction = "column"
356- align = "center"
357- gap = "3"
358- mt = "3"
359- style = { { maxWidth : 360 } }
360- >
361383 < Text
362- size = "1"
384+ size = "4"
385+ weight = "bold"
363386 align = "center"
364- style = { { color : "var(--gray-11)" , lineHeight : 1.35 } }
387+ style = { { color : "var(--gray-12)" } }
365388 >
366- < Text weight = "medium" style = { { color : "var(--gray-12)" } } >
367- Background analysis of your data — while you sleep.
368- </ Text >
369- < br />
370- Session recordings watched automatically. Issues, tickets, and
371- evals analyzed around the clock.
389+ Welcome to your Inbox
372390 </ Text >
373391
374- < ArrowDownIcon size = { 14 } style = { { color : "var(--gray-8)" } } />
375-
376- < Text
377- size = "1"
392+ < Flex
393+ direction = "column"
378394 align = "center"
379- style = { { color : "var(--gray-11)" , lineHeight : 1.35 } }
395+ gap = "3"
396+ mt = "3"
397+ style = { { maxWidth : 360 } }
380398 >
381- < Text weight = "medium" style = { { color : "var(--gray-12)" } } >
382- Ready-to-run fixes for real user problems.
399+ < Text
400+ size = "1"
401+ align = "center"
402+ style = { { color : "var(--gray-11)" , lineHeight : 1.35 } }
403+ >
404+ < Text weight = "medium" style = { { color : "var(--gray-12)" } } >
405+ Background analysis of your data — while you sleep.
406+ </ Text >
407+ < br />
408+ Session recordings watched automatically. Issues, tickets, and
409+ evals analyzed around the clock.
383410 </ Text >
384- < br />
385- Each report includes evidence and impact numbers — just execute
386- the prompt in your agent.
387- </ Text >
388- </ Flex >
389411
390- < Button
391- size = "2"
392- style = { { marginTop : 20 } }
393- onClick = { ( ) => openSettings ( "signals" ) }
394- >
395- Enable Inbox
396- </ Button >
412+ < ArrowDownIcon size = { 14 } style = { { color : "var(--gray-8)" } } />
413+
414+ < Text
415+ size = "1"
416+ align = "center"
417+ style = { { color : "var(--gray-11)" , lineHeight : 1.35 } }
418+ >
419+ < Text weight = "medium" style = { { color : "var(--gray-12)" } } >
420+ Ready-to-run fixes for real user problems.
421+ </ Text >
422+ < br />
423+ Each report includes evidence and impact numbers — just
424+ execute the prompt in your agent.
425+ </ Text >
426+ </ Flex >
427+
428+ < Button
429+ size = "2"
430+ style = { { marginTop : 20 } }
431+ onClick = { ( ) => setSourcesDialogOpen ( true ) }
432+ >
433+ Enable Inbox
434+ </ Button >
435+ </ Flex >
397436 </ Flex >
398- </ Flex >
437+ { sourcesDialog }
438+ </ >
399439 ) ;
400440 }
401- return < InboxWarmingUpState /> ;
441+ return (
442+ < >
443+ < InboxWarmingUpState
444+ onConfigureSources = { ( ) => setSourcesDialogOpen ( true ) }
445+ />
446+ { sourcesDialog }
447+ </ >
448+ ) ;
402449 }
403450
404451 return (
0 commit comments