{"version":3,"sources":["../../../src/lib/revoke-invite-dialog.tsx"],"sourcesContent":["\"use client\";\n\nimport { Callout, Flex, Text, VisuallyHidden } from \"@radix-ui/themes\";\nimport { type ReactNode, useRef } from \"react\";\nimport { useRevokeUserInvite } from \"./api/user.js\";\nimport { AlertDialog, Button } from \"./elements.js\";\nimport { Member } from \"../api/endpoint.js\";\nimport { Translation } from \"./i18n/translation.js\";\n\ninterface RevokeInviteDialogProps extends AlertDialog.RootProps {\n  user: Member;\n  children?: ReactNode;\n}\n\nexport function RevokeInviteDialog({\n  children,\n  user,\n  ...props\n}: RevokeInviteDialogProps) {\n  const revokeInvite = useRevokeUserInvite();\n  const cancelButtonRef = useRef<HTMLButtonElement>(null);\n\n  const onSubmitForm = () => {\n    revokeInvite.mutate(\n      { userId: user.id },\n      {\n        onSuccess: () => {\n          props.onOpenChange?.(false);\n        },\n      },\n    );\n  };\n\n  return (\n    <AlertDialog.Root {...props}>\n      {children && <AlertDialog.Trigger>{children}</AlertDialog.Trigger>}\n\n      <AlertDialog.Content\n        maxWidth=\"480px\"\n        onOpenAutoFocus={() => {\n          requestAnimationFrame(() => {\n            cancelButtonRef.current?.focus();\n          });\n        }}\n      >\n        <AlertDialog.Title>\n          <Translation\n            defaultMessage=\"Revoke invite?\"\n            id=\"/fEPAD\"\n            description=\"Dialog title asking to confirm revoking an invitation\"\n          />\n        </AlertDialog.Title>\n        <Flex mb=\"4\" direction=\"column\" gap=\"3\">\n          <AlertDialog.Description>\n            <Translation\n              defaultMessage=\"Are you sure you want to revoke the invite to {email}? This action is immediate and cannot be undone.\"\n              id=\"wt2qe9\"\n              description=\"Warning message about revoking invite to specific email\"\n              values={{ email: <Text weight=\"bold\">{user.email}</Text> }}\n            />\n          </AlertDialog.Description>\n        </Flex>\n\n        {revokeInvite.error ? (\n          <Callout.Root color=\"red\" mt=\"4\" mb=\"-2\">\n            <Callout.Text>\n              {getMutationErrorMessage(revokeInvite.error)}\n            </Callout.Text>\n          </Callout.Root>\n        ) : null}\n\n        <Flex gap=\"3\" justify=\"end\" mt=\"5\" asChild>\n          <form\n            onSubmit={(event) => {\n              event.preventDefault();\n              onSubmitForm();\n            }}\n          >\n            <AlertDialog.Cancel>\n              <Button\n                variant=\"secondary\"\n                ref={cancelButtonRef}\n                disabled={revokeInvite.isPending}\n              >\n                <Translation\n                  defaultMessage=\"Cancel\"\n                  id=\"+p4qwy\"\n                  description=\"Button to cancel revoking invite\"\n                />\n              </Button>\n            </AlertDialog.Cancel>\n\n            <Button\n              variant=\"destructive\"\n              type=\"submit\"\n              loading={revokeInvite.isPending}\n            >\n              <Translation\n                defaultMessage=\"Revoke\"\n                id=\"Nkz6Xi\"\n                description=\"Button to confirm revoking the invitation\"\n              />\n            </Button>\n          </form>\n        </Flex>\n      </AlertDialog.Content>\n\n      {/* mirror errors in a live region */}\n      <VisuallyHidden asChild>\n        <section aria-live=\"polite\">\n          {getMutationErrorMessage(revokeInvite.error)}\n        </section>\n      </VisuallyHidden>\n    </AlertDialog.Root>\n  );\n}\n\nfunction getMutationErrorMessage(error: unknown) {\n  if (!error) {\n    return null;\n  }\n  // TODO Handle server errors\n  return (\n    <Translation\n      defaultMessage=\"There was an error revoking the invite. Please try again.\"\n      id=\"zG7XDc\"\n      description=\"Error message shown when revoking invite fails\"\n    />\n  );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAmCmB;AAjCnB,oBAAoD;AACpD,mBAAuC;AACvC,kBAAoC;AACpC,sBAAoC;AAEpC,yBAA4B;AAOrB,SAAS,mBAAmB;AAAA,EACjC;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA4B;AAC1B,QAAM,mBAAe,iCAAoB;AACzC,QAAM,sBAAkB,qBAA0B,IAAI;AAEtD,QAAM,eAAe,MAAM;AACzB,iBAAa;AAAA,MACX,EAAE,QAAQ,KAAK,GAAG;AAAA,MAClB;AAAA,QACE,WAAW,MAAM;AACf,gBAAM,eAAe,KAAK;AAAA,QAC5B;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAEA,SACE,6CAAC,4BAAY,MAAZ,EAAkB,GAAG,OACnB;AAAA,gBAAY,4CAAC,4BAAY,SAAZ,EAAqB,UAAS;AAAA,IAE5C;AAAA,MAAC,4BAAY;AAAA,MAAZ;AAAA,QACC,UAAS;AAAA,QACT,iBAAiB,MAAM;AACrB,gCAAsB,MAAM;AAC1B,4BAAgB,SAAS,MAAM;AAAA,UACjC,CAAC;AAAA,QACH;AAAA,QAEA;AAAA,sDAAC,4BAAY,OAAZ,EACC;AAAA,YAAC;AAAA;AAAA,cACC,gBAAe;AAAA,cACf,IAAG;AAAA,cACH,aAAY;AAAA;AAAA,UACd,GACF;AAAA,UACA,4CAAC,sBAAK,IAAG,KAAI,WAAU,UAAS,KAAI,KAClC,sDAAC,4BAAY,aAAZ,EACC;AAAA,YAAC;AAAA;AAAA,cACC,gBAAe;AAAA,cACf,IAAG;AAAA,cACH,aAAY;AAAA,cACZ,QAAQ,EAAE,OAAO,4CAAC,sBAAK,QAAO,QAAQ,eAAK,OAAM,EAAQ;AAAA;AAAA,UAC3D,GACF,GACF;AAAA,UAEC,aAAa,QACZ,4CAAC,sBAAQ,MAAR,EAAa,OAAM,OAAM,IAAG,KAAI,IAAG,MAClC,sDAAC,sBAAQ,MAAR,EACE,kCAAwB,aAAa,KAAK,GAC7C,GACF,IACE;AAAA,UAEJ,4CAAC,sBAAK,KAAI,KAAI,SAAQ,OAAM,IAAG,KAAI,SAAO,MACxC;AAAA,YAAC;AAAA;AAAA,cACC,UAAU,CAAC,UAAU;AACnB,sBAAM,eAAe;AACrB,6BAAa;AAAA,cACf;AAAA,cAEA;AAAA,4DAAC,4BAAY,QAAZ,EACC;AAAA,kBAAC;AAAA;AAAA,oBACC,SAAQ;AAAA,oBACR,KAAK;AAAA,oBACL,UAAU,aAAa;AAAA,oBAEvB;AAAA,sBAAC;AAAA;AAAA,wBACC,gBAAe;AAAA,wBACf,IAAG;AAAA,wBACH,aAAY;AAAA;AAAA,oBACd;AAAA;AAAA,gBACF,GACF;AAAA,gBAEA;AAAA,kBAAC;AAAA;AAAA,oBACC,SAAQ;AAAA,oBACR,MAAK;AAAA,oBACL,SAAS,aAAa;AAAA,oBAEtB;AAAA,sBAAC;AAAA;AAAA,wBACC,gBAAe;AAAA,wBACf,IAAG;AAAA,wBACH,aAAY;AAAA;AAAA,oBACd;AAAA;AAAA,gBACF;AAAA;AAAA;AAAA,UACF,GACF;AAAA;AAAA;AAAA,IACF;AAAA,IAGA,4CAAC,gCAAe,SAAO,MACrB,sDAAC,aAAQ,aAAU,UAChB,kCAAwB,aAAa,KAAK,GAC7C,GACF;AAAA,KACF;AAEJ;AAEA,SAAS,wBAAwB,OAAgB;AAC/C,MAAI,CAAC,OAAO;AACV,WAAO;AAAA,EACT;AAEA,SACE;AAAA,IAAC;AAAA;AAAA,MACC,gBAAe;AAAA,MACf,IAAG;AAAA,MACH,aAAY;AAAA;AAAA,EACd;AAEJ;","names":[]}