@@ -321,6 +321,14 @@ const SidebarNavItem = memo(function SidebarNavItem({
321321/** Event name for sidebar scroll operations - centralized for consistency */
322322export const SIDEBAR_SCROLL_EVENT = 'sidebar-scroll-to-item'
323323
324+ const HIDDEN_STYLE = { display : 'none' } as const
325+
326+ const WORKFLOW_ICON_STYLE : React . CSSProperties = {
327+ backgroundColor : 'var(--text-icon)' ,
328+ borderColor : 'color-mix(in srgb, var(--text-icon) 60%, transparent)' ,
329+ backgroundClip : 'padding-box' ,
330+ }
331+
324332/**
325333 * Sidebar component with resizable width that persists across page refreshes.
326334 *
@@ -368,7 +376,7 @@ export const Sidebar = memo(function Sidebar() {
368376 isCollapsedRef . current = isCollapsed
369377 } , [ isCollapsed ] )
370378
371- const isMac = useMemo ( ( ) => isMacPlatform ( ) , [ ] )
379+ const isMac = isMacPlatform ( )
372380
373381 const [ showCollapsedTooltips , setShowCollapsedTooltips ] = useState ( isCollapsed )
374382
@@ -775,11 +783,11 @@ export const Sidebar = memo(function Sidebar() {
775783 [ navigateToSettings , getSettingsHref , setSidebarWidth ]
776784 )
777785
778- const handleStartTour = useCallback ( ( ) => {
786+ const handleStartTour = ( ) => {
779787 window . dispatchEvent (
780788 new CustomEvent ( isOnWorkflowPage ? START_WORKFLOW_TOUR_EVENT : START_NAV_TOUR_EVENT )
781789 )
782- } , [ isOnWorkflowPage ] )
790+ }
783791
784792 const {
785793 data : fetchedTasks = [ ] ,
@@ -879,7 +887,7 @@ export const Sidebar = memo(function Sidebar() {
879887 [ setSidebarWidth , router ]
880888 )
881889
882- const handleConfirmDeleteTasks = useCallback ( ( ) => {
890+ const handleConfirmDeleteTasks = ( ) => {
883891 const { taskIds : taskIdsToDelete } = contextMenuSelectionRef . current
884892 if ( taskIdsToDelete . length === 0 ) return
885893
@@ -901,7 +909,7 @@ export const Sidebar = memo(function Sidebar() {
901909 deleteTasksMutation . mutate ( taskIdsToDelete , { onSuccess : onDeleteSuccess } )
902910 }
903911 setIsTaskDeleteModalOpen ( false )
904- } , [ pathname , workspaceId , navigateToPage ] )
912+ }
905913
906914 const [ visibleTaskCount , setVisibleTaskCount ] = useState ( 5 )
907915 const taskFlyoutRename = useFlyoutInlineRename ( {
@@ -1038,9 +1046,9 @@ export const Sidebar = memo(function Sidebar() {
10381046 }
10391047 } , [ createFolder ] )
10401048
1041- const handleImportWorkflow = useCallback ( ( ) => {
1049+ const handleImportWorkflow = ( ) => {
10421050 fileInputRef . current ?. click ( )
1043- } , [ ] )
1051+ }
10441052
10451053 const handleWorkspaceSwitch = useCallback (
10461054 async ( workspace : Workspace ) => {
@@ -1054,17 +1062,14 @@ export const Sidebar = memo(function Sidebar() {
10541062 [ workspaceId , switchWorkspace ]
10551063 )
10561064
1057- const handleSidebarClick = useCallback (
1058- ( e : React . MouseEvent < HTMLElement > ) => {
1059- const target = e . target as HTMLElement
1060- if ( target . tagName === 'BUTTON' || target . closest ( 'button, [role="button"], a' ) ) {
1061- return
1062- }
1063- const { selectOnly, clearAllSelection } = useFolderStore . getState ( )
1064- workflowId ? selectOnly ( workflowId ) : clearAllSelection ( )
1065- } ,
1066- [ workflowId ]
1067- )
1065+ const handleSidebarClick = ( e : React . MouseEvent < HTMLElement > ) => {
1066+ const target = e . target as HTMLElement
1067+ if ( target . tagName === 'BUTTON' || target . closest ( 'button, [role="button"], a' ) ) {
1068+ return
1069+ }
1070+ const { selectOnly, clearAllSelection } = useFolderStore . getState ( )
1071+ workflowId ? selectOnly ( workflowId ) : clearAllSelection ( )
1072+ }
10681073
10691074 const handleRenameWorkspace = useCallback (
10701075 async ( workspaceIdToRename : string , newName : string ) => {
@@ -1127,43 +1132,31 @@ export const Sidebar = memo(function Sidebar() {
11271132 workspaceFileInputRef . current ?. click ( )
11281133 } , [ ] )
11291134
1130- const handleWorkspaceFileChange = useCallback (
1131- async ( event : React . ChangeEvent < HTMLInputElement > ) => {
1132- const files = event . target . files
1133- if ( ! files || files . length === 0 ) return
1135+ const handleWorkspaceFileChange = async ( event : React . ChangeEvent < HTMLInputElement > ) => {
1136+ const files = event . target . files
1137+ if ( ! files || files . length === 0 ) return
11341138
1135- const zipFile = files [ 0 ]
1136- await importWorkspace ( zipFile )
1139+ const zipFile = files [ 0 ]
1140+ await importWorkspace ( zipFile )
11371141
1138- if ( event . target ) {
1139- event . target . value = ''
1140- }
1141- } ,
1142- [ importWorkspace ]
1143- )
1142+ if ( event . target ) {
1143+ event . target . value = ''
1144+ }
1145+ }
11441146
11451147 const tasksCollapsedIcon = useMemo (
11461148 ( ) => < Blimp className = 'h-[16px] w-[16px] flex-shrink-0 text-[var(--text-icon)]' /> ,
11471149 [ ]
11481150 )
11491151
1150- const workflowIconStyle = useMemo < React . CSSProperties > (
1151- ( ) => ( {
1152- backgroundColor : 'var(--text-icon)' ,
1153- borderColor : 'color-mix(in srgb, var(--text-icon) 60%, transparent)' ,
1154- backgroundClip : 'padding-box' ,
1155- } ) ,
1156- [ ]
1157- )
1158-
11591152 const workflowsCollapsedIcon = useMemo (
11601153 ( ) => (
11611154 < div
11621155 className = 'h-[16px] w-[16px] flex-shrink-0 rounded-sm border-[2.5px]'
1163- style = { workflowIconStyle }
1156+ style = { WORKFLOW_ICON_STYLE }
11641157 />
11651158 ) ,
1166- [ workflowIconStyle ]
1159+ [ ]
11671160 )
11681161
11691162 const tasksPrimaryAction = useMemo (
@@ -1182,53 +1175,36 @@ export const Sidebar = memo(function Sidebar() {
11821175 [ handleCreateWorkflow ]
11831176 )
11841177
1185- const handleExpandSidebar = useCallback (
1186- ( e : React . MouseEvent ) => {
1187- e . preventDefault ( )
1188- toggleCollapsed ( )
1189- } ,
1190- [ toggleCollapsed ]
1191- )
1178+ const handleExpandSidebar = ( e : React . MouseEvent ) => {
1179+ e . preventDefault ( )
1180+ toggleCollapsed ( )
1181+ }
11921182
1193- const handleNewTask = useCallback (
1194- ( ) => navigateToPage ( `/workspace/${ workspaceId } /home` ) ,
1195- [ navigateToPage , workspaceId ]
1196- )
1183+ const handleNewTask = ( ) => navigateToPage ( `/workspace/${ workspaceId } /home` )
11971184
1198- const handleSeeMoreTasks = useCallback ( ( ) => setVisibleTaskCount ( ( prev ) => prev + 5 ) , [ ] )
1185+ const handleSeeMoreTasks = ( ) => setVisibleTaskCount ( ( prev ) => prev + 5 )
11991186
1200- const handleCloseTaskDeleteModal = useCallback ( ( ) => setIsTaskDeleteModalOpen ( false ) , [ ] )
1187+ const handleCloseTaskDeleteModal = ( ) => setIsTaskDeleteModalOpen ( false )
12011188
1202- const handleEdgeKeyDown = useCallback (
1203- ( e : React . KeyboardEvent ) => {
1204- if ( isCollapsed && ( e . key === 'Enter' || e . key === ' ' ) ) {
1205- e . preventDefault ( )
1206- toggleCollapsed ( )
1207- }
1208- } ,
1209- [ isCollapsed , toggleCollapsed ]
1210- )
1189+ const handleEdgeKeyDown = ( e : React . KeyboardEvent ) => {
1190+ if ( isCollapsed && ( e . key === 'Enter' || e . key === ' ' ) ) {
1191+ e . preventDefault ( )
1192+ toggleCollapsed ( )
1193+ }
1194+ }
12111195
1212- const handleOpenHelpFromMenu = useCallback ( ( ) => setIsHelpModalOpen ( true ) , [ ] )
1196+ const handleOpenHelpFromMenu = ( ) => setIsHelpModalOpen ( true )
12131197
1214- const handleOpenDocs = useCallback ( ( ) => {
1198+ const handleOpenDocs = ( ) => {
12151199 window . open ( 'https://docs.sim.ai' , '_blank' , 'noopener,noreferrer' )
12161200 captureEvent ( posthog , 'docs_opened' , { source : 'help_menu' } )
1217- } , [ posthog ] )
1218-
1219- const handleTaskRenameBlur = useCallback (
1220- ( ) => void taskFlyoutRename . saveRename ( ) ,
1221- [ taskFlyoutRename . saveRename ]
1222- )
1201+ }
12231202
1224- const handleWorkflowRenameBlur = useCallback (
1225- ( ) => void workflowFlyoutRename . saveRename ( ) ,
1226- [ workflowFlyoutRename . saveRename ]
1227- )
1203+ const handleTaskRenameBlur = ( ) => void taskFlyoutRename . saveRename ( )
12281204
1229- const hiddenStyle = useMemo ( ( ) => ( { display : 'none' } ) as const , [ ] )
1205+ const handleWorkflowRenameBlur = ( ) => void workflowFlyoutRename . saveRename ( )
12301206
1231- const resolveWorkspaceIdFromPath = useCallback ( ( ) : string | undefined => {
1207+ const resolveWorkspaceIdFromPath = ( ) : string | undefined => {
12321208 if ( workspaceId ) return workspaceId
12331209 if ( typeof window === 'undefined' ) return undefined
12341210
@@ -1237,7 +1213,7 @@ export const Sidebar = memo(function Sidebar() {
12371213 if ( idx === - 1 ) return undefined
12381214
12391215 return parts [ idx + 1 ]
1240- } , [ workspaceId ] )
1216+ }
12411217
12421218 useRegisterGlobalCommands ( ( ) =>
12431219 createCommands ( [
@@ -1893,7 +1869,7 @@ export const Sidebar = memo(function Sidebar() {
18931869 ref = { workspaceFileInputRef }
18941870 type = 'file'
18951871 accept = '.zip'
1896- style = { hiddenStyle }
1872+ style = { HIDDEN_STYLE }
18971873 onChange = { handleWorkspaceFileChange }
18981874 />
18991875 </ >
0 commit comments