From fafb0bb6338f65ac6b7902f63ab201ea164fbda3 Mon Sep 17 00:00:00 2001 From: Oliver Bryan <04oliverbryan@gmail.com> Date: Tue, 6 Jan 2026 22:51:52 +0000 Subject: [PATCH] UserSelect component --- .../frontend/src/components/user-select.tsx | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 packages/frontend/src/components/user-select.tsx diff --git a/packages/frontend/src/components/user-select.tsx b/packages/frontend/src/components/user-select.tsx new file mode 100644 index 0000000..26c9832 --- /dev/null +++ b/packages/frontend/src/components/user-select.tsx @@ -0,0 +1,59 @@ +import type { UserRecord } from "@issue/shared"; +import { useState } from "react"; +import SmallUserDisplay from "@/components/small-user-display"; +import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; + +export function UserSelect({ + users, + value, + onChange, + fallbackUser, + placeholder = "Select user", +}: { + users: UserRecord[]; + value: string; + onChange: (value: string) => void; + fallbackUser?: UserRecord | null; + placeholder?: string; +}) { + const [isOpen, setIsOpen] = useState(false); + + const renderSelectedValue = () => { + if (value === "unassigned") { + return "Unassigned"; + } + + const user = users.find((u) => u.id.toString() === value); + const className = "p-0 py-2 text-sm"; + + if (user) { + return ; + } + + if (fallbackUser) { + return ; + } + + return null; + }; + + return ( + + ); +}