fix: display notebook icons correctly instead of icon names
Fixes issue where notebook dropdown showed icon name (e.g., "folder")
instead of the actual icon component.
Problem:
- note-card.tsx was displaying {notebook.icon} as text
- Users saw "folder", "book", etc. instead of icons
Solution:
- Import Lucide icon components (Folder, Book, Briefcase, etc.)
- Add ICON_MAP matching icon names to components
- Use getNotebookIcon() function to resolve icon name to component
- Render component as <NotebookIcon className="h-4 w-4 mr-2" />
Changes:
- components/note-card.tsx:
- Add LucideIcon and icon imports
- Add ICON_MAP and getNotebookIcon() helper
- Update notebook dropdown to render icon components
Result:
✓ Notebook icons now display correctly in dropdown menu
✓ Consistent with notebooks-list.tsx implementation
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
c95b0d5650
commit
4fa418438f
@ -55,7 +55,8 @@
|
|||||||
"mcp__web-search-prime__webSearchPrime",
|
"mcp__web-search-prime__webSearchPrime",
|
||||||
"mcp__context7__query-docs",
|
"mcp__context7__query-docs",
|
||||||
"Bash(docker logs:*)",
|
"Bash(docker logs:*)",
|
||||||
"Bash(docker run:*)"
|
"Bash(docker run:*)",
|
||||||
|
"Bash(docker exec:*)"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,7 +10,7 @@ import {
|
|||||||
DropdownMenuItem,
|
DropdownMenuItem,
|
||||||
DropdownMenuTrigger,
|
DropdownMenuTrigger,
|
||||||
} from '@/components/ui/dropdown-menu'
|
} from '@/components/ui/dropdown-menu'
|
||||||
import { Pin, Bell, GripVertical, X, Link2, FolderOpen, StickyNote } from 'lucide-react'
|
import { Pin, Bell, GripVertical, X, Link2, FolderOpen, StickyNote, LucideIcon, Folder, Briefcase, FileText, Zap, BarChart3, Globe, Sparkles, Book, Heart, Crown, Music, Building2 } from 'lucide-react'
|
||||||
import { useState, useEffect, useTransition, useOptimistic } from 'react'
|
import { useState, useEffect, useTransition, useOptimistic } from 'react'
|
||||||
import { useSession } from 'next-auth/react'
|
import { useSession } from 'next-auth/react'
|
||||||
import { useRouter, useSearchParams } from 'next/navigation'
|
import { useRouter, useSearchParams } from 'next/navigation'
|
||||||
@ -56,6 +56,28 @@ function getDateLocale(language: string): Locale {
|
|||||||
return localeMap[language] || dateFnsLocales.enUS
|
return localeMap[language] || dateFnsLocales.enUS
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Map icon names to lucide-react components
|
||||||
|
const ICON_MAP: Record<string, LucideIcon> = {
|
||||||
|
'folder': Folder,
|
||||||
|
'briefcase': Briefcase,
|
||||||
|
'document': FileText,
|
||||||
|
'lightning': Zap,
|
||||||
|
'chart': BarChart3,
|
||||||
|
'globe': Globe,
|
||||||
|
'sparkle': Sparkles,
|
||||||
|
'book': Book,
|
||||||
|
'heart': Heart,
|
||||||
|
'crown': Crown,
|
||||||
|
'music': Music,
|
||||||
|
'building': Building2,
|
||||||
|
}
|
||||||
|
|
||||||
|
// Function to get icon component by name
|
||||||
|
function getNotebookIcon(iconName: string): LucideIcon {
|
||||||
|
const IconComponent = ICON_MAP[iconName] || Folder
|
||||||
|
return IconComponent
|
||||||
|
}
|
||||||
|
|
||||||
interface NoteCardProps {
|
interface NoteCardProps {
|
||||||
note: Note
|
note: Note
|
||||||
onEdit?: (note: Note, readOnly?: boolean) => void
|
onEdit?: (note: Note, readOnly?: boolean) => void
|
||||||
@ -278,15 +300,18 @@ export function NoteCard({ note, onEdit, isDragging, isDragOver, onDragStart, on
|
|||||||
<StickyNote className="h-4 w-4 mr-2" />
|
<StickyNote className="h-4 w-4 mr-2" />
|
||||||
{t('notebookSuggestion.generalNotes')}
|
{t('notebookSuggestion.generalNotes')}
|
||||||
</DropdownMenuItem>
|
</DropdownMenuItem>
|
||||||
{notebooks.map((notebook: any) => (
|
{notebooks.map((notebook: any) => {
|
||||||
<DropdownMenuItem
|
const NotebookIcon = getNotebookIcon(notebook.icon || 'folder')
|
||||||
key={notebook.id}
|
return (
|
||||||
onClick={() => handleMoveToNotebook(notebook.id)}
|
<DropdownMenuItem
|
||||||
>
|
key={notebook.id}
|
||||||
<span className="text-lg mr-2">{notebook.icon || '📁'}</span>
|
onClick={() => handleMoveToNotebook(notebook.id)}
|
||||||
{notebook.name}
|
>
|
||||||
</DropdownMenuItem>
|
<NotebookIcon className="h-4 w-4 mr-2" />
|
||||||
))}
|
{notebook.name}
|
||||||
|
</DropdownMenuItem>
|
||||||
|
)
|
||||||
|
})}
|
||||||
</DropdownMenuContent>
|
</DropdownMenuContent>
|
||||||
</DropdownMenu>
|
</DropdownMenu>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user