# BUG-7: Broken Editor Icons (SVG Files Not Found) **Priority:** P0 - Visual breakage **Status:** 🔴 Research completed - Ready to implement **Reported:** January 16, 2026 --- ## Issue Several editor icons are broken. The console shows errors like: ``` /assets/icons/editor/right_arrow_22.svg:1 Failed to load resource: net::ERR_FILE_NOT_FOUND /assets/icons/comment.svg:1 Failed to load resource: net::ERR_FILE_NOT_FOUND ``` These icons appear as broken images in: - Node Picker category collapse/expand arrows - Comment action button in Node Picker - Possibly other places throughout the editor --- ## Root Cause Found The icons are referenced using **absolute paths** that don't resolve correctly in Electron: ### NodePickerCategory.tsx (line 85): ```typescript ``` ### NodeLibrary.tsx (line 168): ```typescript {...}} icon={} // ❌ Broken /> ``` In Electron, absolute paths like `/assets/...` resolve to the file system root, not the app's asset directory. This is why the resources aren't found. --- ## Solution Replace absolute paths with: 1. **Webpack imports** (preferred for type safety) 2. **Relative paths** from the component location ### Option A: Use Icon Components (Recommended) Use the existing `Icon` component from `@noodl-core-ui`: ```typescript import { Icon, IconName, IconSize } from '@noodl-core-ui/components/common/Icon'; // Instead of: // Use: ``` ### Option B: Import SVG as Module ```typescript // Import the SVG import rightArrowIcon from '../../../../assets/icons/editor/right_arrow_22.svg'; // Use with img tag ; ``` ### Option C: Use Relative Path If the asset is in the public folder and properly configured: ```typescript // Relative to the Electron app root ``` --- ## Files to Fix ### 1. NodePickerCategory.tsx **Location:** `packages/noodl-editor/src/editor/src/views/NodePicker/components/NodePickerCategory/NodePickerCategory.tsx` **Line 85:** ```typescript // BEFORE: src="/assets/icons/editor/right_arrow_22.svg" // AFTER (Option A - preferred): import { Icon, IconName, IconSize } from '@noodl-core-ui/components/common/Icon'; // Replace with: ``` ### 2. NodeLibrary.tsx **Location:** `packages/noodl-editor/src/editor/src/views/NodePicker/tabs/NodeLibrary/NodeLibrary.tsx` **Line 168:** ```typescript // BEFORE: icon={} // AFTER: import { Icon, IconName } from '@noodl-core-ui/components/common/Icon'; // ... icon={} ``` --- ## Investigation: Find All Broken Icon Paths Run this to find all potentially broken icon references: ```bash grep -rn '"/assets/icons' packages/noodl-editor/src/editor/src/ grep -rn "'/assets/icons" packages/noodl-editor/src/editor/src/ ``` Expected files to check: - NodePickerCategory.tsx - NodeLibrary.tsx - Any other legacy components using old icon patterns --- ## Alternative: Asset Path Configuration If many places use this pattern, consider configuring Webpack to resolve `/assets/` to the correct directory. But individual fixes are cleaner for now. --- ## Testing Plan - [ ] Open the Node Picker (double-click on canvas or press space) - [ ] Verify category expand/collapse arrows are visible - [ ] Verify Comment action icon is visible in "Other" section - [ ] Check browser console for any remaining asset errors - [ ] Test in both dev mode and production build --- ## Success Criteria - [ ] No "ERR_FILE_NOT_FOUND" errors for icon assets in console - [ ] All Node Picker icons display correctly - [ ] Arrow icons animate correctly on expand/collapse - [ ] Comment icon visible and recognizable --- _Last Updated: January 16, 2026_