{
  "name": "drawer-2fa-totp",
  "kind": "block",
  "primary": "drawer-ui",
  "page": "/apps/saas/app/profile-security/profile-security.contents.html",
  "slots": [],
  "nested": [],
  "attrs": {
    "side": "right",
    "size": "md"
  },
  "html": "<drawer-ui id=\"drawer-2fa-totp\" side=\"right\" size=\"md\">\n  <header>\n    <span slot=\"icon\">\n      <avatar-ui icon=\"device-mobile\"></avatar-ui>\n    </span>\n    <span slot=\"heading\">\n      <text-ui strong>Authenticator app</text-ui>\n      <badge-ui text=\"Enabled\" variant=\"success\"></badge-ui>\n    </span>\n    <span slot=\"action\"></span>\n  </header>\n  <section>\n    <text-ui color=\"subtle\" size=\"sm\">Enrolled with 1Password · Aug 14, 2025</text-ui>\n  </section>\n  <section>\n    <col-ui gap=\"4\">\n      <alert-ui\n        variant=\"info\"\n        icon=\"info\"\n        text=\"If you lose access to your authenticator app, use a recovery code to sign in. Generate new codes whenever you suspect old ones were exposed.\"\n      ></alert-ui>\n      <divider-ui></divider-ui>\n      <col-ui gap=\"3\">\n        <text-ui strong>Recovery codes</text-ui>\n        <text-ui color=\"subtle\" size=\"sm\">Store these somewhere only you can access. Each code works once.</text-ui>\n        <card-ui>\n          <section>\n            <grid-ui columns=\"1 2@sm\" gap=\"2\">\n              <code-ui text=\"4F9K-2P1L\"></code-ui>\n              <code-ui text=\"XHMN-88RD\"></code-ui>\n              <code-ui text=\"PT7Q-VG4C\"></code-ui>\n              <code-ui text=\"9B2A-WKE0\"></code-ui>\n              <code-ui text=\"Z3YT-HNFR\"></code-ui>\n              <code-ui text=\"Q18V-MPCD\"></code-ui>\n            </grid-ui>\n          </section>\n        </card-ui>\n        <row-ui gap=\"2\">\n          <button-ui text=\"Copy all\" variant=\"outline\" size=\"sm\" icon=\"copy\"></button-ui>\n          <button-ui text=\"Download .txt\" variant=\"outline\" size=\"sm\" icon=\"download-simple\"></button-ui>\n          <button-ui text=\"Regenerate\" variant=\"ghost\" size=\"sm\" icon=\"arrows-clockwise\"></button-ui>\n        </row-ui>\n      </col-ui>\n      <divider-ui></divider-ui>\n      <col-ui gap=\"3\">\n        <text-ui strong>Change authenticator</text-ui>\n        <text-ui color=\"subtle\" size=\"sm\">Scan this QR in a new app, then enter a fresh code to swap devices.</text-ui>\n        <row-ui gap=\"3\" align=\"center\">\n          <avatar-ui icon=\"qr-code\" size=\"xl\"></avatar-ui>\n          <col-ui gap=\"1\" grow>\n            <text-ui strong>Setup key</text-ui>\n            <code-ui text=\"JBSWY3DPEHPK3PXP\"></code-ui>\n            <text-ui color=\"subtle\" size=\"sm\">Use if your app can't scan QR codes.</text-ui>\n          </col-ui>\n        </row-ui>\n        <field-ui label=\"Confirmation code\" hint=\"Enter the current 6-digit code from your new app.\">\n          <input-ui placeholder=\"123 456\"></input-ui>\n        </field-ui>\n      </col-ui>\n    </col-ui>\n  </section>\n  <footer slot=\"footer\">\n    <grid-ui>\n      <button-ui text=\"Remove 2FA\" icon=\"trash\" color=\"danger\"></button-ui>\n      <button-ui text=\"Cancel\" variant=\"ghost\" onclick=\"this.closest('drawer-ui').open = false\"></button-ui>\n      <button-ui text=\"Save\" variant=\"primary\" onclick=\"this.closest('drawer-ui').open = false\"></button-ui>\n    </grid-ui>\n  </footer>\n</drawer-ui>",
  "source": "apps/saas/app/profile-security/profile-security.contents.html",
  "metadata": {
    "domain": "settings",
    "description": "Authenticator app TOTP setup drawer — QR code scan + backup codes for 2FA.",
    "keywords": [
      "drawer",
      "2fa",
      "totp",
      "authenticator",
      "qr",
      "code",
      "backup",
      "setup",
      "security"
    ]
  },
  "captured_at": "2026-06-07T19:28:13.657Z",
  "template": [
    {
      "id": "avatar",
      "component": "Avatar",
      "icon": "device-mobile"
    },
    {
      "id": "text",
      "component": "Text",
      "variant": "body",
      "slot": "icon",
      "children": [
        "avatar"
      ]
    },
    {
      "id": "text-3",
      "component": "Text",
      "strong": true,
      "textContent": "Authenticator app"
    },
    {
      "id": "badge",
      "component": "Badge",
      "text": "Enabled",
      "variant": "success"
    },
    {
      "id": "text-2",
      "component": "Text",
      "variant": "body",
      "slot": "heading",
      "children": [
        "text-3",
        "badge"
      ]
    },
    {
      "id": "text-4",
      "component": "Text",
      "variant": "body",
      "slot": "action"
    },
    {
      "id": "header",
      "component": "Header",
      "children": [
        "text",
        "text-2",
        "text-4"
      ]
    },
    {
      "id": "text-5",
      "component": "Text",
      "color": "subtle",
      "size": "sm",
      "textContent": "Enrolled with 1Password · Aug 14, 2025"
    },
    {
      "id": "section",
      "component": "Section",
      "children": [
        "text-5"
      ]
    },
    {
      "id": "alert",
      "component": "Alert",
      "icon": "info",
      "text": "If you lose access to your authenticator app, use a recovery code to sign in. Generate new codes whenever you suspect old ones were exposed.",
      "variant": "info"
    },
    {
      "id": "divider",
      "component": "Divider"
    },
    {
      "id": "text-6",
      "component": "Text",
      "strong": true,
      "textContent": "Recovery codes"
    },
    {
      "id": "text-7",
      "component": "Text",
      "color": "subtle",
      "size": "sm",
      "textContent": "Store these somewhere only you can access. Each code works once."
    },
    {
      "id": "code",
      "component": "Code",
      "text": "4F9K-2P1L"
    },
    {
      "id": "code-2",
      "component": "Code",
      "text": "XHMN-88RD"
    },
    {
      "id": "code-3",
      "component": "Code",
      "text": "PT7Q-VG4C"
    },
    {
      "id": "code-4",
      "component": "Code",
      "text": "9B2A-WKE0"
    },
    {
      "id": "code-5",
      "component": "Code",
      "text": "Z3YT-HNFR"
    },
    {
      "id": "code-6",
      "component": "Code",
      "text": "Q18V-MPCD"
    },
    {
      "id": "grid",
      "component": "Grid",
      "columns": "1 2@sm",
      "gap": "2",
      "children": [
        "code",
        "code-2",
        "code-3",
        "code-4",
        "code-5",
        "code-6"
      ]
    },
    {
      "id": "section-3",
      "component": "Section",
      "children": [
        "column-3"
      ]
    },
    {
      "id": "column-3",
      "component": "Column",
      "children": [
        "grid"
      ]
    },
    {
      "id": "card",
      "component": "Card",
      "children": [
        "section-3"
      ]
    },
    {
      "id": "button",
      "component": "Button",
      "icon": "copy",
      "size": "sm",
      "text": "Copy all",
      "variant": "outline"
    },
    {
      "id": "button-2",
      "component": "Button",
      "icon": "download-simple",
      "size": "sm",
      "text": "Download .txt",
      "variant": "outline"
    },
    {
      "id": "button-3",
      "component": "Button",
      "icon": "arrows-clockwise",
      "size": "sm",
      "text": "Regenerate",
      "variant": "ghost"
    },
    {
      "id": "row",
      "component": "Row",
      "gap": "2",
      "children": [
        "button",
        "button-2",
        "button-3"
      ]
    },
    {
      "id": "column-2",
      "component": "Column",
      "gap": "3",
      "children": [
        "text-6",
        "text-7",
        "card",
        "row"
      ]
    },
    {
      "id": "divider-2",
      "component": "Divider"
    },
    {
      "id": "text-8",
      "component": "Text",
      "strong": true,
      "textContent": "Change authenticator"
    },
    {
      "id": "text-9",
      "component": "Text",
      "color": "subtle",
      "size": "sm",
      "textContent": "Scan this QR in a new app, then enter a fresh code to swap devices."
    },
    {
      "id": "avatar-2",
      "component": "Avatar",
      "icon": "qr-code",
      "size": "xl"
    },
    {
      "id": "text-10",
      "component": "Text",
      "strong": true,
      "textContent": "Setup key"
    },
    {
      "id": "code-7",
      "component": "Code",
      "text": "JBSWY3DPEHPK3PXP"
    },
    {
      "id": "text-11",
      "component": "Text",
      "color": "subtle",
      "size": "sm",
      "textContent": "Use if your app can't scan QR codes."
    },
    {
      "id": "column-5",
      "component": "Column",
      "gap": "1",
      "grow": true,
      "children": [
        "text-10",
        "code-7",
        "text-11"
      ]
    },
    {
      "id": "row-2",
      "component": "Row",
      "align": "center",
      "gap": "3",
      "children": [
        "avatar-2",
        "column-5"
      ]
    },
    {
      "id": "input",
      "component": "Input",
      "placeholder": "123 456"
    },
    {
      "id": "field",
      "component": "Field",
      "hint": "Enter the current 6-digit code from your new app.",
      "label": "Confirmation code",
      "children": [
        "input"
      ]
    },
    {
      "id": "column-4",
      "component": "Column",
      "gap": "3",
      "children": [
        "text-8",
        "text-9",
        "row-2",
        "field"
      ]
    },
    {
      "id": "column",
      "component": "Column",
      "gap": "4",
      "children": [
        "alert",
        "divider",
        "column-2",
        "divider-2",
        "column-4"
      ]
    },
    {
      "id": "section-2",
      "component": "Section",
      "children": [
        "column"
      ]
    },
    {
      "id": "button-4",
      "component": "Button",
      "color": "danger",
      "icon": "trash",
      "text": "Remove 2FA"
    },
    {
      "id": "button-5",
      "component": "Button",
      "text": "Cancel",
      "variant": "ghost"
    },
    {
      "id": "button-6",
      "component": "Button",
      "text": "Save",
      "variant": "primary"
    },
    {
      "id": "grid-2",
      "component": "Grid",
      "children": [
        "button-4",
        "button-5",
        "button-6"
      ]
    },
    {
      "id": "footer",
      "component": "Footer",
      "slot": "footer",
      "children": [
        "grid-2"
      ]
    },
    {
      "id": "root",
      "component": "Drawer",
      "side": "right",
      "size": "md",
      "children": [
        "header",
        "section",
        "section-2",
        "footer"
      ]
    }
  ]
}
