diff --git a/src/actions/posts.js b/src/actions/posts.js
index c3233771302b52b769290377a681e96566c1d454..8bfbf4ca0e042018084ee89760019cd8cfb83c1b 100644
--- a/src/actions/posts.js
+++ b/src/actions/posts.js
@@ -253,16 +253,16 @@ export const acceptProposal = createAsyncAction(
   /**
    * @param {CF2021.ProposalPost} proposal
    */
-  (proposal) => {
-    return updateProposalState(proposal, "accepted");
+  ({ proposal, archive }) => {
+    return updateProposalState(proposal, "accepted", { is_archived: archive });
   },
   {
     shortCircuitHook: ({ args }) => {
-      if (args.type !== "procedure-proposal") {
+      if (args.proposal.type !== "procedure-proposal") {
         return errorResult();
       }
 
-      if (args.state !== "announced") {
+      if (args.proposal.state !== "announced") {
         return errorResult();
       }
 
diff --git a/src/containers/PostsContainer.jsx b/src/containers/PostsContainer.jsx
index 01b902e28855d5ab8f75c08e9744f5bf10071331..6995acd773864195fb1b463aa2485fd5177ae480 100644
--- a/src/containers/PostsContainer.jsx
+++ b/src/containers/PostsContainer.jsx
@@ -65,8 +65,10 @@ const PostsContainer = ({ className, showAddPostCta }) => {
     setPostToAccept,
     onAcceptConfirm,
     onAcceptCancel,
-    acceptState,
-  ] = useItemActionConfirm(acceptProposal);
+  ] = useItemActionConfirm(acceptProposal, (item, archive) => ({
+    proposal: item,
+    archive,
+  }));
   const [
     postToEdit,
     setPostToEdit,
@@ -104,6 +106,20 @@ const PostsContainer = ({ className, showAddPostCta }) => {
     (state) => state.filters.flags === "archived"
   );
 
+  const [acceptingProposal, acceptingProposalError] = useActionState(
+    acceptProposal,
+    {
+      proposal: postToAccept,
+      archive: false,
+    }
+  );
+  const [
+    acceptingAndArchivingProposal,
+    acceptingAndArchivingProposalError,
+  ] = useActionState(acceptProposal, {
+    proposal: postToAccept,
+    archive: true,
+  });
   const [rejectingProposal, rejectingProposalError] = useActionState(
     rejectProposal,
     {
@@ -237,17 +253,45 @@ const PostsContainer = ({ className, showAddPostCta }) => {
       >
         Procedurální návrh bude <strong>vyhlášen</strong>. Opravdu to chcete?
       </ModalConfirm>
-      <ModalConfirm
+      <ModalWithActions
         isOpen={!!postToAccept}
-        onConfirm={onAcceptConfirm}
         onCancel={onAcceptCancel}
-        confirming={acceptState.loading}
-        error={acceptState.error}
+        error={acceptingProposalError || acceptingAndArchivingProposalError}
         title="Schválit procedurální návrh?"
-        yesActionLabel="Schválit návrh"
+        containerClassName="max-w-lg"
+        actions={
+          <>
+            <Button
+              hoverActive
+              color="blue-300"
+              className="text-sm"
+              onClick={() => onAcceptConfirm(false)}
+              loading={acceptingProposal}
+            >
+              Schválit
+            </Button>
+            <Button
+              hoverActive
+              color="blue-300"
+              className="text-sm"
+              onClick={() => onAcceptConfirm(true)}
+              loading={acceptingAndArchivingProposal}
+            >
+              Schválit a archivovat
+            </Button>
+            <Button
+              hoverActive
+              color="grey-125"
+              className="text-sm"
+              onClick={onAcceptCancel}
+            >
+              Zrušit
+            </Button>
+          </>
+        }
       >
         Procedurální návrh bude <strong>schválen</strong>. Opravdu to chcete?
-      </ModalConfirm>
+      </ModalWithActions>
       <ModalWithActions
         isOpen={!!postToReject}
         onCancel={onRejectCancel}