@@ -30,11 +30,13 @@ import TeamService from "@/services/TeamService";
3030
3131const PlanPanelLeft : React . FC < PlanPanelLefProps > = ( {
3232 reloadTasks,
33+ onNewTaskButton,
3334 restReload,
3435 onTeamSelect,
3536 onTeamUpload,
3637 isHomePage,
37- selectedTeam : parentSelectedTeam
38+ selectedTeam : parentSelectedTeam ,
39+ onNavigationWithAlert
3840} ) => {
3941 const { dispatchToast } = useToastController ( "toast" ) ;
4042 const navigate = useNavigate ( ) ;
@@ -116,16 +118,36 @@ const PlanPanelLeft: React.FC<PlanPanelLefProps> = ({
116118
117119 const handleTaskSelect = useCallback (
118120 ( taskId : string ) => {
119- const selectedPlan = plans ?. find (
120- ( plan : Plan ) => plan . session_id === taskId
121- ) ;
122- if ( selectedPlan ) {
123- navigate ( `/plan/${ selectedPlan . id } ` ) ;
121+ const performNavigation = ( ) => {
122+ const selectedPlan = plans ?. find (
123+ ( plan : Plan ) => plan . session_id === taskId
124+ ) ;
125+ if ( selectedPlan ) {
126+ navigate ( `/plan/${ selectedPlan . id } ` ) ;
127+ }
128+ } ;
129+
130+ if ( onNavigationWithAlert ) {
131+ onNavigationWithAlert ( performNavigation ) ;
132+ } else {
133+ performNavigation ( ) ;
124134 }
125135 } ,
126- [ plans , navigate ]
136+ [ plans , navigate , onNavigationWithAlert ]
127137 ) ;
128138
139+ const handleLogoClick = useCallback ( ( ) => {
140+ const performNavigation = ( ) => {
141+ navigate ( "/" ) ;
142+ } ;
143+
144+ if ( onNavigationWithAlert ) {
145+ onNavigationWithAlert ( performNavigation ) ;
146+ } else {
147+ performNavigation ( ) ;
148+ }
149+ } , [ navigate , onNavigationWithAlert ] ) ;
150+
129151 const handleTeamSelect = useCallback (
130152 ( team : TeamConfig | null ) => {
131153 // Use parent's team select handler if provided, otherwise use local state
@@ -163,10 +185,11 @@ const PlanPanelLeft: React.FC<PlanPanelLefProps> = ({
163185 ) ;
164186
165187 return (
166- < div style = { { flexShrink : 0 , display : "flex" , overflow : "hidden" } } >
188+ < div className = "panel-left-container" >
167189 < PanelLeft panelWidth = { 280 } panelResize = { true } >
168190 < PanelLeftToolbar
169- linkTo = "/"
191+ linkTo = { onNavigationWithAlert ? undefined : "/" }
192+ onTitleClick = { onNavigationWithAlert ? handleLogoClick : undefined }
170193 panelTitle = "Contoso"
171194 panelIcon = { < ContosoLogo /> }
172195 >
@@ -175,7 +198,7 @@ const PlanPanelLeft: React.FC<PlanPanelLefProps> = ({
175198
176199 { /* Team Selector right under the toolbar */ }
177200
178- < div style = { { marginTop : '8px' , marginBottom : '8px' } } >
201+ < div className = "team-selector-container" >
179202 { isHomePage && (
180203 < TeamSelector
181204 onTeamSelect = { handleTeamSelect }
@@ -194,13 +217,13 @@ const PlanPanelLeft: React.FC<PlanPanelLefProps> = ({
194217 </ div >
195218 < div
196219 className = "tab tab-new-task"
197- onClick = { ( ) => navigate ( "/" , { state : { focusInput : true } } ) }
220+ onClick = { onNewTaskButton }
198221 tabIndex = { 0 } // ✅ allows tab focus
199222 role = "button" // ✅ announces as button
200223 onKeyDown = { ( e ) => {
201224 if ( e . key === "Enter" || e . key === " " ) {
202225 e . preventDefault ( ) ;
203- navigate ( "/" , { state : { focusInput : true } } ) ;
226+ onNewTaskButton ( ) ;
204227 }
205228 } }
206229 >
@@ -219,7 +242,7 @@ const PlanPanelLeft: React.FC<PlanPanelLefProps> = ({
219242 />
220243
221244 < PanelFooter >
222- < div style = { { display : 'flex' , flexDirection : 'column' , gap : '12px' , width : '100%' } } >
245+ < div className = "panel-footer-content" >
223246 { /* User Card */ }
224247 < PanelUserCard
225248 name = { userInfo ?. user_first_last_name || "Guest" }
0 commit comments