import { Button } from "@/components/ui/button" import { Command, CommandInput, CommandList, CommandItem, CommandGroup } from "@/components/ui/command" import { Popover, PopoverTrigger, PopoverContent } from "@/components/ui/popover" import { ScrollArea } from "@/components/ui/scroll-area" import { CheckIcon } from "lucide-react" import { useFormContext } from "react-hook-form" import { cn } from "@/lib/utils" import { useAtom } from "jotai" import { linkTopicSelectorAtom } from "@/store/link" import { LinkFormValues } from "../schema" import { useCoState } from "@/lib/providers/jazz-provider" import { PublicGlobalGroup } from "@/lib/schema/master/public-group" import { ID } from "jazz-tools" import { LaIcon } from "@/components/custom/la-icon" import { Topic } from "@/lib/schema" interface TopicSelectorProps { onSelect?: (value: Topic) => void } export const TopicSelector: React.FC = ({ onSelect }) => { const globalGroup = useCoState( PublicGlobalGroup, process.env.NEXT_PUBLIC_JAZZ_GLOBAL_GROUP as ID, { root: { topics: [] } } ) const [isTopicSelectorOpen, setIsTopicSelectorOpen] = useAtom(linkTopicSelectorAtom) const form = useFormContext() const handleSelect = (value: string) => { const topic = globalGroup?.root.topics.find(topic => topic?.name === value) if (topic) { onSelect?.(topic) form?.setValue("topic", value) } setIsTopicSelectorOpen(false) } const selectedValue = form ? form.watch("topic") : null return ( e.preventDefault()} > {globalGroup?.root.topics.map( topic => topic?.id && ( {topic.prettyName} ) )} ) }