import {
ActionIcon,
Group,
Menu,
Modal,
Text,
Tooltip,
UnstyledButton,
} from "@mantine/core";
import { useDisclosure } from "@mantine/hooks";
import {
IconRosetteDiscountCheckFilled,
IconShieldCheck,
} from "@tabler/icons-react";
import { useTranslation } from "react-i18next";
import i18n from "@/i18n.ts";
import { useParams } from "react-router-dom";
import { extractPageSlugId } from "@/lib";
import { usePageQuery } from "@/features/page/queries/page-query";
import { usePageVerificationInfoQuery } from "@/ee/page-verification/queries/page-verification-query";
import { useHasFeature } from "@/ee/hooks/use-feature";
import { useUpgradeLabel } from "@/ee/hooks/use-upgrade-label";
import { Feature } from "@/ee/features";
import { SetupVerificationForm } from "./setup-verification-form";
import { ManageVerificationForm } from "./manage-verification-form";
import { getStatusColor, getStatusLabel } from "./verification-status";
type PageVerificationModalProps = {
pageId: string;
opened: boolean;
onClose: () => void;
};
export function PageVerificationModal({
pageId,
opened,
onClose,
}: PageVerificationModalProps) {
const { t } = useTranslation();
const { data: verificationInfo } = usePageVerificationInfoQuery(
opened ? pageId : undefined,
);
const status = verificationInfo?.status ?? "none";
return (
{status === "none" ? t("Set up verification") : t("Verify page")}
}
size={520}
>
{status === "none" ? (
) : (
)}
);
}
type PageVerificationBadgeProps = {
readOnly?: boolean;
};
export function PageVerificationBadge({
readOnly,
}: PageVerificationBadgeProps) {
const { t } = useTranslation();
const { pageSlug } = useParams();
const pageSlugId = extractPageSlugId(pageSlug);
const hasVerificationFeature = useHasFeature(Feature.PAGE_VERIFICATION);
const [opened, { open, close }] = useDisclosure(false);
const { data: page } = usePageQuery({ pageId: pageSlugId });
const pageId = page?.id;
const { data: verificationInfo, isLoading } = usePageVerificationInfoQuery(
hasVerificationFeature ? pageId : undefined,
);
const upgradeLabel = useUpgradeLabel();
if (!pageId) return null;
if (!hasVerificationFeature) {
if (readOnly) return null;
const lockedLabel = `${t("Add verification")} — ${upgradeLabel}`;
// Use ActionIcon (a real