import { OAuthScope } from '@supabase/shared-types/out/constants' import { ChevronDown } from 'lucide-react' import { Dispatch, PropsWithChildren, SetStateAction } from 'react' import { Button, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuTrigger, } from 'ui' import { PERMISSIONS_DESCRIPTIONS } from '../OAuthApps.constants' const ScopeDropdownCheckboxItem = ({ children, scopeName, scopes, onChange, }: PropsWithChildren<{ scopeName: OAuthScope scopes: OAuthScope[] onChange: (v: OAuthScope[]) => void }>) => { return ( { if (checked) { onChange([...scopes, scopeName]) } else { onChange([...scopes.filter((s) => s !== scopeName)]) } }} > {children} ) } const Scope = ({ title, description, readScopeName, writeScopeName, scopes, setScopes, }: { title: string description: string readScopeName: OAuthScope writeScopeName: OAuthScope scopes: OAuthScope[] setScopes: Dispatch> }) => { let accessDescription = 'Access: No access' if (scopes.includes(readScopeName)) { accessDescription = 'Access: Read-only' } if (scopes.includes(writeScopeName)) { accessDescription = 'Access: Write-only' } if (scopes.includes(readScopeName) && scopes.includes(writeScopeName)) { accessDescription = 'Access: Read and write' } return (
{title} {description}
Select an access level Read Write
) } export const ScopesPanel = ({ scopes, setScopes, }: { scopes: OAuthScope[] setScopes: Dispatch> }) => { return (
) }