"use client"; import { Dropdown } from "flowbite-react"; import { numberDeclension } from "#/api/utils"; interface Voiceover { id: number; name: string; icon: string; episodes_count: number; view_count: number; pinned: boolean; } const DropdownTrigger = ({ icon, name, pinned }: Voiceover) => { return ( <div className="flex items-center gap-2 cursor-pointer"> {icon && <img className="w-6 h-6 rounded-full" src={icon}></img>} <p>{name}</p> {pinned && ( <span className="h-6 bg-gray-700 dark:bg-gray-300 iconify material-symbols--push-pin"></span> )} <span className="w-6 h-6 -ml-2 iconify material-symbols--arrow-drop-down"></span> </div> ); }; const DropdownItem = ({ icon, name, pinned, episodes_count, view_count, }: Voiceover) => { return ( <div className="flex flex-col gap-2 cursor-pointer"> <div className="flex items-center gap-2"> {icon && <img className="w-6 h-6 rounded-full" src={icon}></img>} <p>{name}</p> {pinned && ( <span className="h-6 iconify material-symbols--push-pin"></span> )} </div> <div className="flex items-center gap-2"> <p> {episodes_count}{" "} {numberDeclension(episodes_count, "серия", "серии", "серий")} </p> <p> {view_count}{" "} {numberDeclension(view_count, "просмотр", "просмотра", "просмотров")} </p> </div> </div> ); }; export const VoiceoverSelector = (props: { availableVoiceover: Voiceover[]; voiceover: Voiceover; setVoiceover: any; }) => { return ( <Dropdown label="" dismissOnClick={true} renderTrigger={() => ( <span> <DropdownTrigger {...props.voiceover} /> </span> )} > {props.availableVoiceover.map((voiceover: Voiceover) => ( <Dropdown.Item key={`voiceover_${voiceover.id}`} onClick={() => props.setVoiceover({ selected: voiceover, available: props.availableVoiceover, }) } > <DropdownItem {...voiceover} /> </Dropdown.Item> ))} </Dropdown> ); };