import type { Questionnaire } from 'fhir/r4'; import { ArrowDown, ArrowUp, Trash2 } from 'lucide-react'; import { Label } from '../../../../components/ui/label'; import { EmptyState } from '../../../../components/ui/empty-state'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '../../../../components/ui/select'; import { addableQuestionnaires, memberStanding, moveMember } from '../../../../utils/questionnairePacketDraft'; interface PacketMembersProps { members: string[]; questionnaires: Questionnaire[]; /** Titles the packet was saved with, for a member no longer in the library. */ savedTitles: Record; onChange: (members: string[]) => void; onPreview: (questionnaire: Questionnaire) => void; } const STANDING_NOTE = { draft: 'Draft questionnaire', retired: 'Retired questionnaire', missing: 'No longer in your library' } as const; // The ordered member list: every move is a button, so the order can be set from a keyboard or a phone. const PacketMembers = ({ members, questionnaires, savedTitles, onChange, onPreview }: PacketMembersProps) => { const addable = addableQuestionnaires(questionnaires, members); const find = (id: string) => questionnaires.find((questionnaire) => questionnaire.id === id); return (
{members.length === 0 ? ( ) : (
    {members.map((id, index) => { const standing = memberStanding(questionnaires, id); const inLibrary = find(id); const title = inLibrary?.title || savedTitles[id] || 'Untitled questionnaire'; return (
  1. {index + 1}. {title} {standing !== 'active' &&

    {STANDING_NOTE[standing]}

    }
    {inLibrary && ( )}
  2. ); })}
)} {addable.length > 0 ? ( ) : (

{questionnaires.length === 0 ? 'Create a clinical questionnaire first; packets are built from them.' : 'Every available clinical questionnaire is already in this packet.'}

)}
); }; export default PacketMembers;