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}
}>
{accessDescription}
Select an access level
Read
Write
)
}
export const ScopesPanel = ({
scopes,
setScopes,
}: {
scopes: OAuthScope[]
setScopes: Dispatch>
}) => {
return (
)
}