These are real, currently-true rules. Nothing in code stops a builder from violating them today — each is a placeholder for a guardrail Titan hasn’t built, not a decision still being made.
ID
Constraint
Would be enforced by
TITAN-DESTROY-02
The confirmation dialog’s title names the specific object.
A required objectName prop that must be interpolated into the title.
TITAN-DESTROY-04
The confirm button restates the action; never “Yes”, “OK”, or “Confirm”.
A lint rule/required prop banning those literal strings as the confirm button’s label.
TITAN-DESTROY-05
The destructive action is outlined; Cancel is text and comes first.
A shared ConfirmDialog component that hard-codes variant/order rather than leaving it to free composition.
TITAN-DESTROY-06
Initial focus is on Cancel.
A default initialFocusRef in the shared dialog component, plus an accessibility/interaction test.
TITAN-DESTROY-08
Never stack a second confirmation on top of a confirmation.
A runtime guard in the shared ConfirmDialog that warns/throws on a nested open, or a lint rule.
TITAN-DESTROY-09
On failure, the dialog stays open and shows the error inline.
The ConfirmDialog’s own state machine never auto-closing on a rejected promise, covered by a component test.
Last modified on September 2, 2026
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Invoca","colors":{"primary":"#00A87F","light":"#00A87F","dark":"#0EEEB7"},"logo":{"light":"https://mintcdn.com/invoca-5bd45748/9Md68DqArcq3WD3L/logo/light.svg?fit=max\u0026auto=format\u0026n=9Md68DqArcq3WD3L\u0026q=85\u0026s=3ed629c5be28d08bd1a6580e72b6dbfa","dark":"https://mintcdn.com/invoca-5bd45748/9Md68DqArcq3WD3L/logo/dark.svg?fit=max\u0026auto=format\u0026n=9Md68DqArcq3WD3L\u0026q=85\u0026s=b64ce8e5cfa4f8c7893b2738e8131f45","href":"https://www.invoca.com/"},"favicon":"https://mintcdn.com/invoca-5bd45748/9Md68DqArcq3WD3L/favicon.png?fit=max\u0026auto=format\u0026n=9Md68DqArcq3WD3L\u0026q=85\u0026s=c846713bb1afdf274154a01d7e9abb8d","appearance":{"default":"light"},"background":{"decoration":"gradient"},"navbar":{"primary":{"type":"button","label":"Invoca Academy","href":"https://academy.invoca.com/"}},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/invoca-com","youtube":"https://www.youtube.com/channel/UCLQwNQFnN1OV1ACnlXICPKw"}},"fonts":{"body":{"family":"Gt America","source":"https://cdn.prod.website-files.com/5d82e225060d003d65ddae98/677d87009656fca63c0c7d8f_GT-America-Standard-Regular.woff2","format":"woff2"}},"contextual":{"options":["copy","download-pdf","view","assistant","chatgpt","claude","perplexity"],"display":"header"},"metadata":{"timestamp":true},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"invoca-5bd45748","hasAudioNarration":false,"actualSubdomain":"invoca-5bd45748","customDomains":["docs.invoca.com"],"gitSource":{"type":"github","owner":"invoca","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae8bdbaca78e468455a6b97","collectionId":"54b26950-9181-41ce-985a-32d474ce8dd0","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae8bdbaca78e468455a6b97"},"feedback":{"thumbs":true,"agentFeedback":true,"contextualFeedback":{"allowEmail":false}},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED","enabled":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae8bdbaca78e468455a6b97","clientVersion":"0.0.4045","searchFilterCounts":[{"language":"default","tag":"Invoca Docs","count":666},{"language":"default","tag":"Guide","count":665},{"language":"default","tag":"Developer","count":191},{"language":"default","tag":"Integrations","count":184},{"language":"default","tag":"Invoca Design System","count":163},{"language":"default","tag":"API Documentation","count":151},{"language":"default","tag":"Campaign \u0026 Call Handling","count":127},{"language":"default","tag":"Insights \u0026 Analytics","count":101},{"language":"default","tag":"Network Integration","count":99},{"language":"default","tag":"Components","count":75}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":true,"enableContextualStarterQuestions":true,"enableAskAiSearchBar":true,"deflection":{"enabled":true,"type":"link","url":"https://support.invoca.com/s/contactsupport"}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":".custom-card .card img{width:60%;padding:1rem;margin:0 auto}a[href=\"https://academy.invoca.com/\"] span.absolute{background-color:#004030}#assistant-entry,#assistant-entry-mobile{background-color:#00a87f;border-color:#00a87f}#assistant-entry-mobile:hover,#assistant-entry:hover{background-color:#009973}#assistant-entry span,#assistant-entry svg,#assistant-entry-mobile span,#assistant-entry-mobile svg{color:#fff}.ivk-home{--ivk-forest:#0A231E;--ivk-footer-bg:#004030;--ivk-accent:#00A87F;--ivk-ink:#1F2121;--ivk-muted:#626464;--ivk-line:#E7E9E4;--ivk-bg:#FFFFFF;--ivk-sand:#F8FAF1;--ivk-banner:#D1FFD1;--ivk-card:#FFFFFF;--ivk-radius-btn:6px;--ivk-radius-card:16px;color:var(--ivk-ink);width:100%;max-width:1600px;margin:0 auto;padding:2rem clamp(1.25rem,4vw,4rem) 4rem}.dark .ivk-home,:root[data-theme=dark] .ivk-home{--ivk-bg:#10201B;--ivk-card:#16261F;--ivk-ink:#EAF1EC;--ivk-muted:#9BAAA1;--ivk-line:#223229;--ivk-sand:#16261F;--ivk-banner:#1C3A2C}.ivk-home a{color:inherit;text-decoration:none}.ivk-home footer a[href*=mintlify]{color:#9ea3a2}.dark .ivk-home footer a[href*=mintlify]{color:#6f7573}.ivk-home footer a[href*=mintlify]:hover{color:#4f5553}.dark .ivk-home footer a[href*=mintlify]:hover{color:#ced3d1}.ivk-home img,.ivk-home svg{display:block}.ivk-home-announce,.ivk-home-hero{border-radius:var(--ivk-radius-card)}.ivk-home-announce{background:var(--ivk-banner);color:var(--ivk-ink);font-size:13.5px;font-weight:500;text-align:center;padding:9px 16px;margin-bottom:20px}.ivk-home-announce a{color:var(--ivk-footer-bg);font-weight:600;text-decoration:underline;margin-left:6px}.ivk-home-hero{position:relative;overflow:hidden;background:var(--ivk-forest);color:#fff;padding:56px 32px}.ivk-home-hero-eyebrow{display:inline-flex;align-items:center;gap:8px;color:#fff;font-size:13px;font-weight:500;border:1px solid rgba(255,255,255,.28);border-radius:999px;padding:6px 14px;margin:0 0 22px}.ivk-home-hero h1{font-size:clamp(28px,4.2vw,44px);font-weight:700;line-height:1.1;letter-spacing:-.01em;max-width:17ch;margin:0 0 16px;color:#fff}.ivk-home-hero h1 .ivk-home-hl{color:#00b388}.ivk-home-hero-lede{font-size:16.5px;color:rgba(255,255,255,.78);max-width:48ch;margin:0 0 30px;line-height:1.55}.ivk-home-search-field{display:flex;align-items:center;gap:10px;background:#fff;border-radius:var(--ivk-radius-btn);padding:13px 16px;max-width:560px;box-shadow:0 14px 34px rgba(0,0,0,.28);cursor:pointer;border:0;width:100%;text-align:left;font-family:inherit}.ivk-home-search-field input{border:0;outline:0;flex:1;font-size:15px;font-family:inherit;color:#1f2121;background:0 0;pointer-events:none}.ivk-home-search-field input::placeholder{color:#626464}.ivk-home-search-field .ivk-home-icon{color:#626464;flex:none}.ivk-home-search-field kbd{font-size:11.5px;color:#626464;border:1px solid #e7e9e4;border-radius:5px;padding:2px 6px}.ivk-home-popular{margin-top:26px;display:flex;flex-wrap:wrap;gap:8px;align-items:center}.ivk-home-popular .ivk-home-label{color:rgba(255,255,255,.62);font-size:13px;margin-right:4px}.ivk-home-chip{display:inline-flex;align-items:center;gap:6px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.2);color:#fff;font-size:13px;padding:7px 12px;border-radius:999px}.ivk-home-chip:hover{background:rgba(255,255,255,.16)}.ivk-home-note-banner{background:var(--ivk-sand);border:1px solid var(--ivk-line);border-radius:var(--ivk-radius-card);padding:16px 20px;font-size:13.5px;color:var(--ivk-muted);line-height:1.55;margin-top:24px}.ivk-home-note-banner strong{color:var(--ivk-ink)}.ivk-home-band{padding:60px 0}.ivk-home-band-alt{background:var(--ivk-sand);border-radius:var(--ivk-radius-card)}.ivk-home-section-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin-bottom:26px;flex-wrap:wrap}.ivk-home-section-head h2,.ivk-home-topic-tile h3{font-size:23px;font-weight:700;letter-spacing:-.01em;margin:0;color:var(--ivk-ink)}.ivk-home-section-head .ivk-home-meta,.ivk-home-section-sub{color:var(--ivk-muted);font-size:13.5px}.ivk-home-section-sub{font-size:14.5px;max-width:62ch;margin:-14px 0 26px;line-height:1.55}.ivk-home-topic-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;align-items:start}@media (min-width:1400px){.ivk-home-topic-grid{grid-template-columns:repeat(4,1fr)}}@media (max-width:860px){.ivk-home-topic-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:600px){.ivk-home-topic-grid{grid-template-columns:1fr}}.ivk-home-topic-tile{background:var(--ivk-card);border:1px solid var(--ivk-line);border-radius:var(--ivk-radius-card);transition:border-color .15s ease}.ivk-home-topic-tile:hover{border-color:color-mix(in srgb,var(--ivk-accent) 40%,var(--ivk-line))}.ivk-home-t-head{display:block;width:100%;padding:22px 22px 18px;cursor:pointer;background:0 0;border:0;text-align:left;font-family:inherit;color:inherit}.ivk-home-row-top{display:flex;align-items:center;justify-content:space-between;gap:10px}.ivk-home-icon-wrap{width:36px;height:36px;border-radius:10px;background:rgba(0,168,127,.12);color:var(--ivk-accent);display:flex;align-items:center;justify-content:center}.ivk-home-count{font-size:12px;color:var(--ivk-muted);white-space:nowrap}.ivk-home-title-row{display:flex;align-items:flex-start;gap:6px;margin:12px 0 4px}.ivk-home-topic-tile h3{font-size:16.5px;font-weight:600;letter-spacing:-.005em;line-height:1.3;min-height:2.6em;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.ivk-home-tag-pill{flex:none;margin-top:2px;padding:2px 4px;border-radius:6px;font-size:.65rem;font-weight:700;line-height:13px;color:var(--ivk-accent);background:rgba(0,168,127,.1)}.dark .ivk-home-tag-pill,:root[data-theme=dark] .ivk-home-tag-pill{color:#1dc79a;background:rgba(29,199,154,.15)}.ivk-home-desc{font-size:13.5px;color:var(--ivk-muted);margin:0;line-height:1.5;min-height:3em;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.ivk-home-expand-cue{display:flex;align-items:center;gap:6px;margin-top:14px;font-size:12.5px;color:var(--ivk-accent);font-weight:600}.ivk-home-expand-cue svg{transition:transform .18s ease}.ivk-home-topic-tile.ivk-home-open .ivk-home-expand-cue svg{transform:rotate(180deg)}.ivk-home-t-panel{border-top:1px solid var(--ivk-line);margin-top:2px;padding:16px 22px 22px}.ivk-home-t-panel ul{list-style:none;margin:0 0 12px;padding:0;display:flex;flex-direction:column;gap:9px}.ivk-home-t-panel li a{font-size:13px;color:var(--ivk-ink);display:flex;align-items:center;gap:7px}.ivk-home-dev-card h3 a:hover,.ivk-home-t-panel li a:hover,.ivk-home-viewall{color:var(--ivk-accent)}.ivk-home-t-panel li a svg{flex:none;opacity:.5}.ivk-home-viewall{font-size:12.5px;font-weight:600}.ivk-home-dev-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}@media (max-width:700px){.ivk-home-dev-grid{grid-template-columns:1fr}}.ivk-home-dev-card{background:var(--ivk-card);border:1px solid var(--ivk-line);border-radius:var(--ivk-radius-card);padding:18px;display:flex;gap:12px;align-items:flex-start}.ivk-home-dev-card .ivk-home-icon-wrap{background:var(--ivk-forest);color:#fff;width:32px;height:32px;border-radius:9px}.ivk-home-dev-card h3{font-size:14.5px;font-weight:600;margin:0 0 3px;color:var(--ivk-ink)}.ivk-home-dev-card p{font-size:13px;color:var(--ivk-muted);margin:0;line-height:1.45}"}],"page":{"pagePath":"invoca-design-system/patterns/destructive-confirmation/open-issues","slug":"/invoca-design-system/patterns/destructive-confirmation/open-issues","pageMetadata":{"title":"Destructive confirmation","description":"Constraints Titan should enforce for Destructive confirmation.","icon":"trash-2","href":"/invoca-design-system/patterns/destructive-confirmation/open-issues"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Constraints Titan should enforce for Destructive confirmation.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,..._provideComponents(),...props.components},{Heading,Table}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`See `,_jsx(_components.a,{href:`/invoca-design-system/patterns/destructive-confirmation`,children:`Destructive confirmation`}),` for the decided part of this page.`]}),`\n`,_jsx(Heading,{level:`2`,id:`constraints-titan-should-enforce`,children:`Constraints Titan should enforce`}),`\n`,_jsx(_components.p,{children:`These are real, currently-true rules. Nothing in code stops a builder from violating them today — each is a placeholder for a guardrail Titan hasn’t built, not a decision still being made.`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`ID`}),_jsx(_components.th,{children:`Constraint`}),_jsx(_components.th,{children:`Would be enforced by`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`TITAN-DESTROY-02`})}),_jsx(_components.td,{children:`The confirmation dialog’s title names the specific object.`}),_jsxs(_components.td,{children:[`A required `,_jsx(_components.code,{children:`objectName`}),` prop that must be interpolated into the title.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`TITAN-DESTROY-04`})}),_jsx(_components.td,{children:`The confirm button restates the action; never “Yes”, “OK”, or “Confirm”.`}),_jsx(_components.td,{children:`A lint rule/required prop banning those literal strings as the confirm button’s label.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`TITAN-DESTROY-05`})}),_jsxs(_components.td,{children:[`The destructive action is `,_jsx(_components.code,{children:`outlined`}),`; Cancel is `,_jsx(_components.code,{children:`text`}),` and comes first.`]}),_jsxs(_components.td,{children:[`A shared `,_jsx(_components.code,{children:`ConfirmDialog`}),` component that hard-codes variant/order rather than leaving it to free composition.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`TITAN-DESTROY-06`})}),_jsx(_components.td,{children:`Initial focus is on Cancel.`}),_jsxs(_components.td,{children:[`A default `,_jsx(_components.code,{children:`initialFocusRef`}),` in the shared dialog component, plus an accessibility/interaction test.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`TITAN-DESTROY-08`})}),_jsx(_components.td,{children:`Never stack a second confirmation on top of a confirmation.`}),_jsx(_components.td,{children:`A runtime guard in the shared ConfirmDialog that warns/throws on a nested open, or a lint rule.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`TITAN-DESTROY-09`})}),_jsx(_components.td,{children:`On failure, the dialog stays open and shows the error inline.`}),_jsx(_components.td,{children:`The ConfirmDialog’s own state machine never auto-closing on a rejected promise, covered by a component test.`})]})]})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Destructive confirmation","description":"Constraints Titan should enforce for Destructive confirmation.","icon":"trash-2","href":"/invoca-design-system/patterns/destructive-confirmation/open-issues"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Constraints Titan should enforce","slug":"constraints-titan-should-enforce","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"invoca-5bd45748","siteName":"Invoca","title":"Destructive confirmation - Invoca","relatedPagesConfig":{"enabled":true,"limit":5,"mode":"automatic"},"contextualStarterQuestions":[{"_id":"6ab71c03fc74c9b83ba92ce8","deploymentId":"6a10d9fbb2a094386ec2a44e","questionText":"What focus behavior is required?","status":"active","generatedBy":"contextual","path":"invoca-design-system/patterns/destructive-confirmation/open-issues","createdAt":"2026-09-26T01:12:35.218Z","updatedAt":"2026-09-26T01:12:35.218Z","__v":0},{"_id":"6ab71c03fc74c9b83ba92ce7","deploymentId":"6a10d9fbb2a094386ec2a44e","questionText":"How should I label confirm buttons?","status":"active","generatedBy":"contextual","path":"invoca-design-system/patterns/destructive-confirmation/open-issues","createdAt":"2026-09-26T01:12:35.218Z","updatedAt":"2026-09-26T01:12:35.218Z","__v":0},{"_id":"6ab71c03fc74c9b83ba92ce6","deploymentId":"6a10d9fbb2a094386ec2a44e","questionText":"What constraints does Titan enforce?","status":"active","generatedBy":"contextual","path":"invoca-design-system/patterns/destructive-confirmation/open-issues","createdAt":"2026-09-26T01:12:35.218Z","updatedAt":"2026-09-26T01:12:35.218Z","__v":0}],"navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-09-02T18:00:12.954Z","gitLastModified":"2026-09-02T17:58:34.000Z","originalFileLocation":"invoca-design-system/patterns/destructive-confirmation/open-issues.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Constraints Titan should enforce for Destructive confirmation.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Invoca\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/invoca-5bd45748/Q9AjSeskElHvFPzD/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/invoca-5bd45748/Q9AjSeskElHvFPzD/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/invoca-5bd45748/Q9AjSeskElHvFPzD/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/invoca-5bd45748/Q9AjSeskElHvFPzD/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/invoca-5bd45748/Q9AjSeskElHvFPzD/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/invoca-5bd45748/Q9AjSeskElHvFPzD/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/invoca-5bd45748/Q9AjSeskElHvFPzD/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/invoca-5bd45748/Q9AjSeskElHvFPzD/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/invoca-5bd45748/Q9AjSeskElHvFPzD/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Destructive confirmation - Invoca\">\u003cmeta data-mint-head property=\"og:description\" content=\"Constraints Titan should enforce for Destructive confirmation.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Invoca\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.invoca.com/invoca-design-system/patterns/destructive-confirmation/open-issues\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://invoca-5bd45748.mintlify.app/_mintlify/api/og/v2?division=Patterns\u0026amp;title=Destructive+confirmation\u0026amp;description=Constraints+Titan+should+enforce+for+Destructive+confirmation.\u0026amp;theme=1c2016f9c5ca3323f39e5905\u0026amp;signature=a1d2334d9b6a5c409fd7bff1c7bba3ed060c484de42fbad2088c1bfa3ee1f0b5\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Destructive confirmation - Invoca\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Constraints Titan should enforce for Destructive confirmation.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://invoca-5bd45748.mintlify.app/_mintlify/api/og/v2?division=Patterns\u0026amp;title=Destructive+confirmation\u0026amp;description=Constraints+Titan+should+enforce+for+Destructive+confirmation.\u0026amp;theme=1c2016f9c5ca3323f39e5905\u0026amp;signature=a1d2334d9b6a5c409fd7bff1c7bba3ed060c484de42fbad2088c1bfa3ee1f0b5\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/invoca-5bd45748/Q9AjSeskElHvFPzD/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Invoca\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#00A87F\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.invoca.com/invoca-design-system/patterns/destructive-confirmation/open-issues\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/invoca-design-system/patterns/destructive-confirmation/open-issues.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.invoca.com/#organization\",\"name\":\"Invoca\",\"url\":\"https://docs.invoca.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/invoca-5bd45748/9Md68DqArcq3WD3L/logo/light.svg?fit=max\u0026auto=format\u0026n=9Md68DqArcq3WD3L\u0026q=85\u0026s=3ed629c5be28d08bd1a6580e72b6dbfa\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.invoca.com#website\",\"name\":\"Invoca\",\"url\":\"https://docs.invoca.com\",\"publisher\":{\"@id\":\"https://docs.invoca.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.invoca.com/invoca-design-system/patterns/destructive-confirmation/open-issues#webpage\",\"url\":\"https://docs.invoca.com/invoca-design-system/patterns/destructive-confirmation/open-issues\",\"name\":\"Destructive confirmation\",\"description\":\"Constraints Titan should enforce for Destructive confirmation.\",\"dateModified\":\"2026-09-02T17:58:34.000Z\",\"isPartOf\":{\"@id\":\"https://docs.invoca.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.invoca.com/invoca-design-system/patterns/destructive-confirmation/open-issues#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.invoca.com/invoca-design-system/patterns/destructive-confirmation/open-issues#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Invoca\",\"item\":\"https://docs.invoca.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Destructive confirmation\",\"item\":\"https://docs.invoca.com/invoca-design-system/patterns/destructive-confirmation/open-issues\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.invoca.com/invoca-design-system/patterns/destructive-confirmation/open-issues#article\",\"headline\":\"Destructive confirmation\",\"name\":\"Destructive confirmation\",\"description\":\"Constraints Titan should enforce for Destructive confirmation.\",\"url\":\"https://docs.invoca.com/invoca-design-system/patterns/destructive-confirmation/open-issues\",\"mainEntityOfPage\":{\"@id\":\"https://docs.invoca.com/invoca-design-system/patterns/destructive-confirmation/open-issues#webpage\"},\"dateModified\":\"2026-09-02T17:58:34.000Z\",\"publisher\":{\"@id\":\"https://docs.invoca.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.invoca.com#website\"}}]}\u003c/script>","siteName":"Invoca","nav":{"global":null,"products":[{"product":"Invoca Docs","pages":[{"title":"Invoca Docs","href":""}]},{"product":"Developer","pages":[{"title":"Developer","href":"/en/latest"}]},{"product":"Invoca Design System","icon":"palette","color":{"light":"#00b388","dark":"#00b388"},"description":"","tabs":[{"tab":"Get started","icon":"rocket","pages":[{"title":"Get started","href":"/invoca-design-system"}]},{"tab":"Foundations","icon":"palette","pages":[{"title":"Foundations","href":"/invoca-design-system/foundations/overview"}]},{"tab":"Content","icon":"font","pages":[{"title":"Content","href":"/invoca-design-system/content/voice-and-tone"}]},{"tab":"Components","icon":"shapes","pages":[{"title":"Components","href":"/invoca-design-system/components/overview"}]},{"tab":"Patterns","icon":"clipboard-list","pages":[{"title":"Patterns","href":"/invoca-design-system/patterns/overview"}]},{"tab":"Views","icon":"table-columns","pages":[{"title":"Views","href":"/invoca-design-system/views/overview"}]},{"tab":"AI Experience","icon":"robot","pages":[{"title":"AI Experience","href":"/invoca-design-system/ai-experience/overview"}]},{"tab":"Contribute","icon":"code-pull-request","pages":[{"title":"Contribute","href":"/invoca-design-system/contribute/governance"}]},{"tab":"Open Issues","icon":"triangle-exclamation","groups":[{"group":"Registries","pages":[{"title":"Divergences","icon":"git-compare-arrows","href":"/invoca-design-system/foundations/divergences"},{"title":"Open decisions","icon":"circle-help","href":"/invoca-design-system/foundations/open-decisions"}]},{"group":"Foundations","pages":[{"title":"Foundations overview","icon":"compass","href":"/invoca-design-system/foundations/overview/open-issues"},{"title":"Color","icon":"palette","href":"/invoca-design-system/foundations/color/open-issues"},{"title":"Typography","icon":"type","href":"/invoca-design-system/foundations/typography/open-issues"},{"title":"Space","icon":"ruler","href":"/invoca-design-system/foundations/space-and-density/open-issues"},{"title":"Elevation","icon":"layers","href":"/invoca-design-system/foundations/elevation/open-issues"},{"title":"Radius","icon":"square","href":"/invoca-design-system/foundations/radius/open-issues"},{"title":"Motion","icon":"activity","href":"/invoca-design-system/foundations/motion/open-issues"},{"title":"Iconography","icon":"shapes","href":"/invoca-design-system/foundations/iconography/open-issues"},{"title":"Layout \u0026 grid","icon":"grid-3x3","href":"/invoca-design-system/foundations/layout-and-grid/open-issues"},{"title":"Accessibility","icon":"accessibility","href":"/invoca-design-system/foundations/accessibility/open-issues"}]},{"group":"Components","pages":[{"title":"Button","icon":"square-mouse-pointer","href":"/invoca-design-system/components/actions/button/open-issues"},{"title":"Link","icon":"link","href":"/invoca-design-system/components/actions/link/open-issues"},{"title":"ButtonGroup","icon":"component","href":"/invoca-design-system/components/actions/button-group/open-issues"},{"title":"Menu","icon":"menu","href":"/invoca-design-system/components/actions/menu/open-issues"},{"title":"Input","icon":"text-cursor-input","href":"/invoca-design-system/components/forms/input/open-issues"},{"title":"Select","icon":"chevron-down","href":"/invoca-design-system/components/forms/select/open-issues"},{"title":"Checkbox","icon":"square-check","href":"/invoca-design-system/components/forms/checkbox/open-issues"},{"title":"Radio","icon":"circle-dot","href":"/invoca-design-system/components/forms/radio/open-issues"},{"title":"Switch","icon":"toggle-right","href":"/invoca-design-system/components/forms/switch/open-issues"},{"title":"DatePicker","icon":"calendar","href":"/invoca-design-system/components/forms/date-picker/open-issues"},{"title":"FieldLabel","icon":"type","href":"/invoca-design-system/components/forms/field-label/open-issues"},{"title":"Form","icon":"component","href":"/invoca-design-system/components/forms/form/open-issues"},{"title":"FileUpload","icon":"upload","href":"/invoca-design-system/components/forms/file-upload/open-issues"},{"title":"Table","icon":"table","href":"/invoca-design-system/components/data-display/table/open-issues"},{"title":"EmptyState","icon":"component","href":"/invoca-design-system/components/data-display/empty-state/open-issues"},{"title":"Avatar","icon":"circle-user","href":"/invoca-design-system/components/data-display/avatar/open-issues"},{"title":"Badge","icon":"circle-dot","href":"/invoca-design-system/components/data-display/badge/open-issues"},{"title":"Card","icon":"credit-card","href":"/invoca-design-system/components/data-display/card/open-issues"},{"title":"List","icon":"list","href":"/invoca-design-system/components/data-display/list/open-issues"},{"title":"Tag","icon":"tag","href":"/invoca-design-system/components/data-display/tag/open-issues"},{"title":"Tabs","icon":"component","href":"/invoca-design-system/components/navigation/tabs/open-issues"},{"title":"Breadcrumb","icon":"component","href":"/invoca-design-system/components/navigation/breadcrumb/open-issues"},{"title":"Pagination","icon":"component","href":"/invoca-design-system/components/navigation/pagination/open-issues"},{"title":"SideNav","icon":"component","href":"/invoca-design-system/components/navigation/side-nav/open-issues"},{"title":"TopNav","icon":"component","href":"/invoca-design-system/components/navigation/top-nav/open-issues"},{"title":"Alert","icon":"component","href":"/invoca-design-system/components/feedback/alert/open-issues"},{"title":"Skeleton","icon":"component","href":"/invoca-design-system/components/feedback/skeleton/open-issues"},{"title":"Banner","icon":"bullhorn","href":"/invoca-design-system/components/feedback/banner/open-issues"},{"title":"ProgressBar","icon":"bars-progress","href":"/invoca-design-system/components/feedback/progress-bar/open-issues"},{"title":"Spinner","icon":"spinner","href":"/invoca-design-system/components/feedback/spinner/open-issues"},{"title":"Toast","icon":"bell","href":"/invoca-design-system/components/feedback/toast/open-issues"},{"title":"Accordion","icon":"layer-group","href":"/invoca-design-system/components/containment/accordion/open-issues"},{"title":"Dialog","icon":"window-maximize","href":"/invoca-design-system/components/containment/dialog/open-issues"},{"title":"Drawer","icon":"table-columns","href":"/invoca-design-system/components/containment/drawer/open-issues"},{"title":"Panel","icon":"table-cells-large","href":"/invoca-design-system/components/containment/panel/open-issues"},{"title":"Popover","icon":"note-sticky","href":"/invoca-design-system/components/containment/popover/open-issues"},{"title":"Tooltip","description":"Divergences, open decisions, and undocumented gaps for Tooltip.","icon":"message","href":"/invoca-design-system/components/containment/tooltip/open-issues"}]},{"group":"Patterns","pages":[{"title":"Destructive confirmation","icon":"trash-2","href":"/invoca-design-system/patterns/destructive-confirmation/open-issues"}]},{"group":"Views","pages":[{"title":"Views overview","description":"Divergences, open decisions, and undocumented gaps for Views overview.","icon":"layers","href":"/invoca-design-system/views/overview/open-issues"},{"title":"List view","icon":"table","href":"/invoca-design-system/views/list-view/open-issues"}]},{"group":"Content","pages":[{"title":"Voice and tone","icon":"message-circle","href":"/invoca-design-system/content/voice-and-tone/open-issues"},{"title":"UI labels","icon":"tag","href":"/invoca-design-system/content/ui-labels/open-issues"},{"title":"Error messages","icon":"circle-alert","href":"/invoca-design-system/content/error-messages/open-issues"},{"title":"Empty state copy","icon":"inbox","href":"/invoca-design-system/content/empty-state-copy/open-issues"},{"title":"Capitalization and punctuation","icon":"case-sensitive","href":"/invoca-design-system/content/capitalization-and-punctuation/open-issues"},{"title":"Numbers","icon":"hash","href":"/invoca-design-system/content/numbers/open-issues"},{"title":"Dates and times","icon":"calendar","href":"/invoca-design-system/content/dates-and-times/open-issues"}]},{"group":"Contribute","pages":[{"title":"Token workflow","icon":"git-pull-request","href":"/invoca-design-system/contribute/token-workflow/open-issues"},{"title":"Versioning \u0026 deprecation","icon":"history","href":"/invoca-design-system/contribute/versioning-and-deprecation/open-issues"}]}]}]}]},"basePath":"","title":"Destructive confirmation - Invoca","buildId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","deploymentId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","dynamics":[],"chunks":[]}