diff --git a/frontend/src/component/personalDashboard/PersonalDashboard.tsx b/frontend/src/component/personalDashboard/PersonalDashboard.tsx index d572d6ae40..f5eacd6176 100644 --- a/frontend/src/component/personalDashboard/PersonalDashboard.tsx +++ b/frontend/src/component/personalDashboard/PersonalDashboard.tsx @@ -106,6 +106,158 @@ const AccordionSummarySubtitle = styled(Typography)(({ theme }) => ({ fontWeight: theme.typography.body2.fontWeight, })); +const EventTimelinePanel = () => { + const { toggleSectionState, expandTimeline } = useDashboardState([], []); + const { trackEvent } = usePlausibleTracker(); + + const signalsLink = '/integrations/signals'; + return ( + toggleSectionState('timeline')} + > + + } + id='timeline-panel-header' + aria-controls='timeline-panel-content' + > + + + Event timeline + + + Overview of recent activities across all projects in + Unleash. Make debugging easier and{' '} + { + trackEvent('event-timeline', { + props: { + eventType: 'signals clicked', + }, + }); + }} + > + include external signals + {' '} + to get a fuller overview. + + + + + + + + + + ); +}; + +const FlagPanel = () => { + const { personalDashboard, refetch: refetchDashboard } = + usePersonalDashboard(); + + const projects = personalDashboard?.projects || []; + + const { activeFlag, setActiveFlag, toggleSectionState, expandFlags } = + useDashboardState(projects, personalDashboard?.flags ?? []); + + return ( + toggleSectionState('flags')} + > + } + id='flags-panel-header' + aria-controls='flags-panel-content' + > + + + My feature flags + + + Feature flags you have created or favorited + + + + + 0} + flagData={ + personalDashboard?.flags.length + ? { + state: 'flags' as const, + activeFlag, + flags: personalDashboard.flags, + } + : { state: 'no flags' as const } + } + setActiveFlag={setActiveFlag} + refetchDashboard={refetchDashboard} + /> + + + ); +}; + +const ProjectPanel = () => { + const { personalDashboard } = usePersonalDashboard(); + + const projects = personalDashboard?.projects || []; + + const { + activeProject, + setActiveProject, + toggleSectionState, + expandProjects, + } = useDashboardState(projects, personalDashboard?.flags ?? []); + + const personalDashboardProjectDetails = + fromPersonalDashboardProjectDetailsOutput( + usePersonalDashboardProjectDetails(activeProject), + ); + + return ( + toggleSectionState('projects')} + > + + } + id='projects-panel-header' + aria-controls='projects-panel-content' + > + + My projects + + Favorite projects, projects you own, and projects you + are a member of + + + + + + + + ); +}; + export const PersonalDashboard = () => { const { user } = useAuthUser(); const { trackEvent } = usePlausibleTracker(); @@ -117,24 +269,6 @@ export const PersonalDashboard = () => { usePageTitle(name ? `Dashboard: ${name}` : 'Dashboard'); - const { personalDashboard, refetch: refetchDashboard } = - usePersonalDashboard(); - - const projects = personalDashboard?.projects || []; - - const { - activeProject, - setActiveProject, - activeFlag, - setActiveFlag, - toggleSectionState, - expandFlags, - expandProjects, - expandTimeline, - } = useDashboardState(projects, personalDashboard?.flags ?? []); - - const signalsLink = '/integrations/signals'; - const [welcomeDialog, setWelcomeDialog] = useLocalStorageState< 'open' | 'closed' >( @@ -142,11 +276,6 @@ export const PersonalDashboard = () => { splash?.personalDashboardKeyConcepts ? 'closed' : 'open', ); - const personalDashboardProjectDetails = - fromPersonalDashboardProjectDetailsOutput( - usePersonalDashboardProjectDetails(activeProject), - ); - useEffect(() => { trackEvent('personal-dashboard', { props: { @@ -183,122 +312,12 @@ export const PersonalDashboard = () => { - {showTimelinePanel && ( - toggleSectionState('timeline')} - > - - } - id='timeline-panel-header' - aria-controls='timeline-panel-content' - > - - - Event timeline - - - Overview of recent activities across all - projects in Unleash. Make debugging easier and{' '} - { - trackEvent('event-timeline', { - props: { - eventType: 'signals clicked', - }, - }); - }} - > - include external signals - {' '} - to get a fuller overview. - - - - - - - - - - )} - toggleSectionState('projects')} - > - - } - id='projects-panel-header' - aria-controls='projects-panel-content' - > - - - My projects - - - Favorite projects, projects you own, and projects - you are a member of - - - - - - - + {showTimelinePanel && } + + + + - toggleSectionState('flags')} - > - - } - id='flags-panel-header' - aria-controls='flags-panel-content' - > - - - My feature flags - - - Feature flags you have created or favorited - - - - - 0} - flagData={ - personalDashboard?.flags.length - ? { - state: 'flags' as const, - activeFlag, - flags: personalDashboard.flags, - } - : { state: 'no flags' as const } - } - setActiveFlag={setActiveFlag} - refetchDashboard={refetchDashboard} - /> - - {