import { Check, ChevronsUpDown } from 'lucide-react' import { useState } from 'react' import { useSelectedOrganizationQuery } from 'hooks/misc/useSelectedOrganization' import { useRouter } from 'next/router' import { Badge, Button, CommandGroup_Shadcn_, CommandItem_Shadcn_, CommandList_Shadcn_, Command_Shadcn_, PopoverContent_Shadcn_, PopoverTrigger_Shadcn_, Popover_Shadcn_, TooltipContent, TooltipTrigger, Tooltip, } from 'ui' import { useCheckEntitlements } from '@/hooks/misc/useCheckEntitlements' interface ModelSelectorProps { selectedModel: 'gpt-5' | 'gpt-5-mini' onSelectModel: (model: 'gpt-5' | 'gpt-5-mini') => void } export const ModelSelector = ({ selectedModel, onSelectModel }: ModelSelectorProps) => { const router = useRouter() const { data: organization } = useSelectedOrganizationQuery() const { hasAccess: hasAccessToAdvanceModel, isLoading: isLoadingEntitlements } = useCheckEntitlements('assistant.advance_model') const [open, setOpen] = useState(false) const slug = organization?.slug ?? '_' const upgradeHref = `/org/${slug ?? '_'}/billing?panel=subscriptionPlan&source=ai-assistant-model` const handleSelectModel = (model: 'gpt-5' | 'gpt-5-mini') => { if (model === 'gpt-5' && !hasAccessToAdvanceModel) { setOpen(false) void router.push(upgradeHref) return } onSelectModel(model) setOpen(false) } return ( handleSelectModel('gpt-5-mini')} className="flex justify-between" > gpt-5-mini {selectedModel === 'gpt-5-mini' && } handleSelectModel('gpt-5')} className="flex justify-between" > gpt-5 {hasAccessToAdvanceModel ? ( selectedModel === 'gpt-5' ? ( ) : null ) : (
Upgrade
gpt-5 is available on Pro plans and above
)}
) }