| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- import { ChevronDown } from 'lucide-react'
- import Image from 'next/image'
- import {
- Button,
- cn,
- DropdownMenu,
- DropdownMenuContent,
- DropdownMenuItem,
- DropdownMenuLabel,
- DropdownMenuSeparator,
- DropdownMenuTrigger,
- } from 'ui'
- import {
- getIntegrationTypeIcon,
- getIntegrationTypeLabel,
- INTEGRATION_TYPES,
- } from './ThirdPartyAuthForm.utils'
- interface AddIntegrationDropdownProps {
- buttonText?: string
- align?: 'end' | 'center'
- type?: 'primary' | 'default'
- open?: boolean
- onOpenChange?: (open: boolean) => void
- onSelectIntegrationType: (type: INTEGRATION_TYPES) => void
- }
- const ProviderDropdownItem = ({
- disabled,
- type,
- onSelectIntegrationType,
- }: {
- disabled?: boolean
- type: INTEGRATION_TYPES
- onSelectIntegrationType: (type: INTEGRATION_TYPES) => void
- }) => {
- return (
- <DropdownMenuItem
- key={type}
- onClick={() => onSelectIntegrationType(type)}
- className={cn('flex items-center gap-x-2 p-2', disabled && 'cursor-not-allowed')}
- disabled={disabled}
- >
- <Image src={getIntegrationTypeIcon(type)} width={16} height={16} alt={`${type} icon`} />
- <span>{getIntegrationTypeLabel(type)}</span>
- </DropdownMenuItem>
- )
- }
- export const AddIntegrationDropdown = ({
- type = 'primary',
- align = 'end',
- open,
- onOpenChange,
- onSelectIntegrationType,
- }: AddIntegrationDropdownProps) => {
- return (
- <DropdownMenu open={open} onOpenChange={onOpenChange}>
- <DropdownMenuTrigger asChild>
- <Button type={type} iconRight={<ChevronDown />}>
- Add provider
- </Button>
- </DropdownMenuTrigger>
- <DropdownMenuContent align={align} className="w-56">
- <DropdownMenuLabel>Select provider</DropdownMenuLabel>
- <DropdownMenuSeparator />
- <ProviderDropdownItem type="firebase" onSelectIntegrationType={onSelectIntegrationType} />
- <ProviderDropdownItem type="clerk" onSelectIntegrationType={onSelectIntegrationType} />
- <ProviderDropdownItem type="workos" onSelectIntegrationType={onSelectIntegrationType} />
- <ProviderDropdownItem type="auth0" onSelectIntegrationType={onSelectIntegrationType} />
- <ProviderDropdownItem type="awsCognito" onSelectIntegrationType={onSelectIntegrationType} />
- </DropdownMenuContent>
- </DropdownMenu>
- )
- }
|