"use client"
import type { Organization } from "better-auth/plugins/organization"
import { type ReactNode, useContext, useMemo } from "react"
import { useCurrentOrganization } from "../../hooks/use-current-organization"
import { AuthUIContext } from "../../lib/auth-ui-provider"
import { cn } from "../../lib/utils"
import type { SettingsCardProps } from "../settings/shared/settings-card"
import { SettingsCard } from "../settings/shared/settings-card"
import { CardContent } from "../ui/card"
import { InvitationCell } from "./invitation-cell"
export interface OrganizationInvitationsCardProps extends SettingsCardProps {
slug?: string
emptyState?: ReactNode
}
export function OrganizationInvitationsCard({
className,
classNames,
localization: localizationProp,
slug: slugProp,
emptyState,
...props
}: OrganizationInvitationsCardProps) {
const {
localization: contextLocalization,
organization: organizationOptions
} = useContext(AuthUIContext)
const localization = useMemo(
() => ({ ...contextLocalization, ...localizationProp }),
[contextLocalization, localizationProp]
)
const slug = slugProp || organizationOptions?.slug
const { data: organization } = useCurrentOrganization({ slug })
if (!organization) return null
return (
)
}
function OrganizationInvitationsContent({
className,
classNames,
localization: localizationProp,
organization,
emptyState,
...props
}: SettingsCardProps & { organization: Organization; emptyState?: ReactNode }) {
const {
hooks: { useListInvitations },
localization: contextLocalization
} = useContext(AuthUIContext)
const localization = useMemo(
() => ({ ...contextLocalization, ...localizationProp }),
[contextLocalization, localizationProp]
)
const { data: invitations } = useListInvitations({
query: { organizationId: organization.id }
})
const pendingInvitations = invitations?.filter(
(invitation) => invitation.status === "pending"
)
if (!pendingInvitations?.length) return <>{emptyState}>
return (
{pendingInvitations.map((invitation) => (
))}
)
}