mirror of
https://github.com/supabase/supabase.git
synced 2026-10-06 18:05:11 +03:00
- add new [OrgSelector](https://github.com/supabase/supabase/pull/43238/changes#diff-214b339101a9c06864ea2755ac7246eb4c971ce74c5d3169b1385a28ee1d4227) and [ProjectBranchSelector](https://github.com/supabase/supabase/pull/43238/changes#diff-82d25c128c306b61bea7481026f58f670a229874f23ca3a1a1d78ddeabde21e0) components to the mobile navigation, replacing the previous which took up a lot of horizontal space - org/project/branch dropdowns now open up in the bottom MobileSheetNav for a better mobile ux - desktop nav remains unchanged
58 lines
1.6 KiB
TypeScript
58 lines
1.6 KiB
TypeScript
import type { OrgProject } from 'data/projects/org-projects-infinite-query'
|
|
import { Check } from 'lucide-react'
|
|
import { ReactNode } from 'react'
|
|
import { cn, CommandItem_Shadcn_ } from 'ui'
|
|
|
|
export interface ProjectCommandItemProps {
|
|
project: OrgProject
|
|
selectedRef: string | undefined
|
|
onSelect?: (project: OrgProject) => void
|
|
onClose: () => void
|
|
renderRow?: (project: OrgProject) => ReactNode
|
|
checkPosition?: 'right' | 'left'
|
|
isOptionDisabled?: (project: OrgProject) => boolean
|
|
}
|
|
|
|
export function ProjectCommandItem({
|
|
project,
|
|
selectedRef,
|
|
onSelect,
|
|
onClose,
|
|
renderRow,
|
|
checkPosition = 'right',
|
|
isOptionDisabled,
|
|
}: ProjectCommandItemProps) {
|
|
const handleSelect = () => {
|
|
onSelect?.(project)
|
|
onClose()
|
|
}
|
|
|
|
const disabled = isOptionDisabled?.(project) ?? false
|
|
|
|
return (
|
|
<CommandItem_Shadcn_
|
|
key={project.ref}
|
|
value={`${project.name.replaceAll('"', '')}-${project.ref}`}
|
|
className="cursor-pointer w-full"
|
|
onSelect={handleSelect}
|
|
disabled={disabled}
|
|
>
|
|
{renderRow ? (
|
|
renderRow(project)
|
|
) : (
|
|
<div
|
|
className={cn(
|
|
'w-full flex items-center',
|
|
checkPosition === 'left' ? 'gap-x-2' : 'justify-between',
|
|
project.ref !== selectedRef && checkPosition === 'left' && 'ml-6'
|
|
)}
|
|
>
|
|
{checkPosition === 'left' && project.ref === selectedRef && <Check size={16} />}
|
|
{project.name}
|
|
{checkPosition === 'right' && project.ref === selectedRef && <Check size={16} />}
|
|
</div>
|
|
)}
|
|
</CommandItem_Shadcn_>
|
|
)
|
|
}
|