import type { AccessCode } from '@seamapi/types/connect'
import { CopyIcon } from 'lib/icons/Copy.js'
import { useDeleteAccessCode } from 'lib/seam/access-codes/use-delete-access-code.js'
import { Button } from 'lib/ui/Button.js'
import { copyToClipboard } from 'lib/ui/clipboard.js'
import { MenuItem } from 'lib/ui/Menu/MenuItem.js'
import { MoreActionsMenu } from 'lib/ui/Menu/MoreActionsMenu.js'
import { useToggle } from 'lib/ui/use-toggle.js'
export interface AccessCodeMenuProps {
accessCode: AccessCode
onEdit: () => void
onDeleteSuccess: () => void
onViewDetails: () => void
disableEditAccessCode: boolean
disableDeleteAccessCode: boolean
}
export function AccessCodeMenu(props: AccessCodeMenuProps): JSX.Element {
const [deleteConfirmationVisible, toggleDeleteConfirmation] = useToggle()
return (
{
if (deleteConfirmationVisible) {
toggleDeleteConfirmation()
}
},
}}
>
)
}
interface ContentProps extends AccessCodeMenuProps {
deleteConfirmationVisible: boolean
toggleDeleteConfirmation: () => void
}
function Content({
accessCode,
onViewDetails,
disableEditAccessCode,
disableDeleteAccessCode,
onEdit,
onDeleteSuccess,
deleteConfirmationVisible,
toggleDeleteConfirmation,
}: ContentProps): JSX.Element {
const deleteAccessCode = useDeleteAccessCode()
const isAccessCodeBeingRemoved = accessCode.status === 'removing'
if (deleteConfirmationVisible) {
return (
{t.deleteCodeConfirmation}
)
}
return (
<>
{!disableEditAccessCode && !isAccessCodeBeingRemoved && (
)}
{!disableDeleteAccessCode && !isAccessCodeBeingRemoved && (
<>
>
)}
>
)
}
const t = {
copyCode: 'Copy code',
codeIssue: 'code issue',
codeIssues: 'code issues',
editCode: 'Edit code',
viewCodeDetails: 'View code details',
deleteCode: 'Delete code',
deleteCodeConfirmation: 'Delete this code and data?',
cancelDelete: 'Cancel',
confirmDelete: 'Delete',
}