"use client"; import * as React from "react"; import { CheckIcon, ChevronsUpDownIcon, PlusIcon } from "lucide-react"; import { cn } from "@/lib/utils"; import { Button } from "@/components/ui/button"; import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList, } from "@/components/ui/command"; import { Popover, PopoverContent, PopoverTrigger, } from "@/components/ui/popover"; import { Board } from "@/lib/stores/boards"; import clsx from "clsx"; import { useAuth } from "@/lib/hooks/useAuth"; export function BoardsPicker({ boards, onCreateBoard, onSelected: setValue, selected: value, }: { selected: string; onSelected: (value: string) => unknown; boards: Record< string, Record< string, { name: string; description: string; } > >; onCreateBoard: (name: string) => void; // New prop }) { const [open, setOpen] = React.useState(false); const [search, setSearch] = React.useState(""); const { agent } = useAuth(); if (!agent) return
Not logged in :(
; const entries = Array.from(Object.entries(boards[agent?.assertDid])).filter( ([_, board]) => board.name.toLowerCase().includes(search.toLowerCase()) ); const selectedBoard = boards[agent?.assertDid]?.[value]; return ( setSearch(val)} /> {entries.length > 0 ? ( entries.map(([key, it]) => ( { setValue(key === value ? "" : key); setOpen(false); }} > {it.name} )) ) : ( { onCreateBoard(search.trim()); setSearch(""); setOpen(false); }} > Create board: {search.trim()} )} ); }