You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
NavIcon ships only ~10 hardcoded icons; common module icons render as empty squares #92
@simple-module-py/ui/components/NavIcon.tsx ships a hardcoded Record<string, React.ReactNode> with about 10 SVG icons (home, package, users, user, settings, shield, activity, files, layers, shield-check, log-out). When a module's register_menu_items declares an icon outside this set, NavIcon falls through to <span className="w-5 h-5" /> and the sidebar shows an empty placeholder where the icon should be.
Repro
The framework's own modules already request icons that don't exist in the map:
feature_flags/constants.py:24 → MENU_ICON = "flag" → no glyph
bell (commonly used by notification modules) → no glyph
bar-chart-3 (commonly used by report modules) → no glyph
App-level modules can't add new icons without forking NavIcon.tsx.
Expected
Either:
The map covers a broader set of common lucide-react icon names, or
NavIcon defers to lucide-react when the name isn't in the local map (icons-by-name lookup), or
There's a documented host-level extension point for registering additional icons.
Workaround
In a downstream app I added a Vite resolve plugin that intercepts both the bare specifier @simple-module-py/ui/components/NavIcon and the relative ../components/NavIcon (the form SidebarLayout.tsx uses internally) to redirect to a local NavIcon.tsx with extra icons. `resolve.alias` on the bare specifier alone wasn't enough because SidebarLayout reaches for the relative path.
Acceptance
Built-in modules render with visible icons in the sidebar without app-level patching.
App-level modules can declare arbitrary lucide names without falling through to the empty placeholder.
Closing — addressed by commit ade3e24 (PR #98). NavIcon.tsx now uses tree-shaken lucide-react named imports (including flag, bell, bar-chart-3, etc.), so module-declared icons render without the empty-square fallback and without forking the component.
Activity
fix: address framework papercuts (#66, #68, #71, #73, #75, #76, #81, #90
antosubash commentedon May 1, 2026
Closing — addressed by commit ade3e24 (PR #98).
NavIcon.tsxnow uses tree-shakenlucide-reactnamed imports (includingflag,bell,bar-chart-3, etc.), so module-declared icons render without the empty-square fallback and without forking the component.Generated by Claude Code