OrgCommandItem.tsx 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import { Check } from 'lucide-react'
  2. import Link from 'next/link'
  3. import { cn, CommandItem } from 'ui'
  4. import PartnerIcon from '@/components/ui/PartnerIcon'
  5. import type { Organization } from '@/types'
  6. export interface OrgCommandItemProps {
  7. org: Organization
  8. selectedSlug: string | undefined
  9. routePathname: string
  10. hasRouteSlug: boolean
  11. onClose: () => void
  12. compactPadding?: boolean
  13. }
  14. export function OrgCommandItem({
  15. org,
  16. selectedSlug,
  17. routePathname,
  18. hasRouteSlug,
  19. onClose,
  20. compactPadding = false,
  21. }: OrgCommandItemProps) {
  22. const href = hasRouteSlug ? routePathname.replace('[slug]', org.slug) : `/org/${org.slug}`
  23. return (
  24. <CommandItem
  25. key={org.slug}
  26. value={`${org.name.replaceAll('"', '')} - ${org.slug}`}
  27. className="cursor-pointer w-full"
  28. onSelect={() => onClose()}
  29. >
  30. <Link
  31. href={href}
  32. className={cn(
  33. 'w-full flex items-center justify-between text-sm md:text-xs',
  34. !compactPadding && 'p-0.5'
  35. )}
  36. >
  37. <div className="flex items-center gap-2">
  38. <span>{org.name}</span>
  39. <PartnerIcon organization={org} />
  40. </div>
  41. {org.slug === selectedSlug && <Check size={16} />}
  42. </Link>
  43. </CommandItem>
  44. )
  45. }