import React, { memo, useCallback } from "react"; import { NoteStatus } from "@/types/noteStatus"; import { SelectableListItem } from "./SelectableListItem"; import { getStatusTooltip, isStatusSelected } from "@/utils/statusUtils"; interface StatusOptionProps { status: NoteStatus; isSelected: boolean; isFocused: boolean; onSelect: () => void; } export const StatusModalOption: React.FC = memo( ({ status, isSelected, isFocused, onSelect }) => { const displayName = status.templateId ? `${status.name} (${status.templateId})` : status.name; return ( {displayName} ); }, ); export interface Props { currentStatuses: NoteStatus[]; availableStatuses: NoteStatus[]; focusedIndex?: number; onToggleStatus: (status: NoteStatus, selected: boolean) => void; } export const StatusSelector: React.FC = ({ currentStatuses, availableStatuses, focusedIndex = -1, onToggleStatus, }) => { const handleSelectStatus = useCallback( async (status: NoteStatus) => { const selected = isStatusSelected(status, currentStatuses); onToggleStatus(status, !selected); }, [currentStatuses, onToggleStatus], ); return (
{availableStatuses.map((status, index) => ( handleSelectStatus(status)} /> ))}
); };