{
  "name": "DialogueContrast",
  "package": "@magicblocksai/ui",
  "file": "packages/ui/src/components/DialogueContrast.tsx",
  "chapterTag": "11 Narrative Systems",
  "chapter": "12-narrative-systems.html",
  "sectionId": "dialogue-contrast",
  "elName": "Reliability Gap &mdash; OnePrompt vs MagicBlocks",
  "demoUrl": "https://brand.magicblocks.ai/components/12-narrative-systems#dialogue-contrast",
  "hasLiveDemo": false,
  "description": "Two-column conversation comparison container. Designed for product /\nbehaviour / before-after comparison content — e.g. \"how does our agent\nhandle this prompt vs theirs\", \"support response, old script vs new\".\nWraps two `<DialogueColumn>` children side-by-side; collapses to a\nsingle column below 720px.",
  "useClient": false,
  "interactivity": "display",
  "namedExports": [
    {
      "name": "DialogueContrast",
      "isPrincipal": true,
      "isType": false
    },
    {
      "name": "DialogueContrastProps",
      "isPrincipal": false,
      "isType": true
    },
    {
      "name": "DialogueColumn",
      "isPrincipal": false,
      "isType": true
    },
    {
      "name": "DialogueColumnProps",
      "isPrincipal": false,
      "isType": true
    },
    {
      "name": "DialogueTone",
      "isPrincipal": false,
      "isType": true
    },
    {
      "name": "DialogueOutcome",
      "isPrincipal": false,
      "isType": false
    },
    {
      "name": "DialogueMessage",
      "isPrincipal": false,
      "isType": true
    },
    {
      "name": "DialogueMessageProps",
      "isPrincipal": false,
      "isType": true
    },
    {
      "name": "DialogueEllip",
      "isPrincipal": false,
      "isType": false
    },
    {
      "name": "DialogueEllipProps",
      "isPrincipal": false,
      "isType": true
    }
  ],
  "importStatement": "import { DialogueContrast } from \"@magicblocksai/ui\";",
  "props": [
    {
      "name": "children",
      "optional": false,
      "type": "ReactNode",
      "doc": "Two `<DialogueColumn>` children (left + right)."
    }
  ],
  "classesUsed": [
    "dialogue-avatar",
    "dialogue-bubble",
    "dialogue-bubble-ellip",
    "dialogue-column",
    "dialogue-contrast",
    "dialogue-head",
    "dialogue-msg",
    "dialogue-msgs",
    "dialogue-outcome",
    "dialogue-outcome-label",
    "dialogue-status",
    "dialogue-tag",
    "dialogue-who"
  ],
  "examples": {
    "react": "<DialogueContrast>\n  <DialogueColumn tone=\"loss\" who=\"OnePrompt\" tag=\"run #400\" status={<Badge tone=\"error\">Failed</Badge>}\n    outcome={{ tone: \"bad\", label: \"Outcome\", text: \"Agent forgot the phone number.\" }}>\n    <DialogueMessage from=\"us\" avatar=\"AI\">What is your phone number?</DialogueMessage>\n    <DialogueMessage from=\"them\" avatar=\"C\">Why do you need that?</DialogueMessage>\n  </DialogueColumn>\n  <DialogueColumn tone=\"win\" who=\"MagicBlocks\" tag=\"run #400\" status={<Badge tone=\"success\">Completed</Badge>}\n    outcome={{ tone: \"good\", label: \"Outcome\", text: \"Refused to progress past Contact without phone.\" }}>\n    <DialogueMessage from=\"us\" avatar=\"AI\">What is your phone number?</DialogueMessage>\n    <DialogueMessage from=\"them\" avatar=\"C\">Why do you need that?</DialogueMessage>\n  </DialogueColumn>\n</DialogueContrast>",
    "html": "<div class=\"dialogue-contrast\">\n                <article class=\"dialogue-column\" data-tone=\"loss\">\n                  <header class=\"dialogue-head\">\n                    <span class=\"dialogue-who\">OnePrompt</span>\n                    <span class=\"dialogue-tag\">· run #400</span>\n                    <span class=\"dialogue-status\"><span class=\"badge badge-danger\">Failed</span></span>\n                  </header>\n                  <div class=\"dialogue-msgs\">\n                    <div class=\"dialogue-msg is-us\">\n                      <span class=\"dialogue-avatar\">AI</span>\n                      <span class=\"dialogue-bubble\">What is your phone number?</span>\n                    </div>\n                    <div class=\"dialogue-msg is-them\">\n                      <span class=\"dialogue-avatar\">C</span>\n                      <span class=\"dialogue-bubble\">Why do you need that?</span>\n                    </div>\n                    <div class=\"dialogue-msg is-us\">\n                      <span class=\"dialogue-avatar\">AI</span>\n                      <span class=\"dialogue-bubble\"><span class=\"dialogue-bubble-ellip\">[explains privacy policy for 3 long paragraphs]</span></span>\n                    </div>\n                    <div class=\"dialogue-msg is-them\">\n                      <span class=\"dialogue-avatar\">C</span>\n                      <span class=\"dialogue-bubble\">Okay. Are rates going up next week?</span>\n                    </div>\n                  </div>\n                  <div class=\"dialogue-outcome\" data-tone=\"bad\">\n                    <span class=\"dialogue-outcome-label\">Outcome</span>\n                    <span>The agent <strong>forgot it never got the phone number</strong> and moved on.</span>\n                  </div>\n                </article>\n                <article class=\"dialogue-column\" data-tone=\"win\">\n                  <header class=\"dialogue-head\">\n                    <span class=\"dialogue-who\">MagicBlocks</span>\n                    <span class=\"dialogue-tag\">· run #400</span>\n                    <span class=\"dialogue-status\"><span class=\"badge badge-success\">Completed</span></span>\n                  </header>\n                  <div class=\"dialogue-msgs\">\n                    <div class=\"dialogue-msg is-us\">\n                      <span class=\"dialogue-avatar\">AI</span>\n                      <span class=\"dialogue-bubble\">What is your phone number?</span>\n                    </div>\n                    <div class=\"dialogue-msg is-them\">\n                      <span class=\"dialogue-avatar\">C</span>\n                      <span class=\"dialogue-bubble\">Why do you need that?</span>\n                    </div>\n                    <div class=\"dialogue-msg is-us\">\n                      <span class=\"dialogue-avatar\">AI</span>\n                      <span class=\"dialogue-bubble\">I still need your phone number to continue your application.</span>\n                    </div>\n                  </div>\n                  <div class=\"dialogue-outcome\" data-tone=\"good\">\n                    <span class=\"dialogue-outcome-label\">Outcome</span>\n                    <span>The agent <strong>refused to progress past Contact</strong> until <code class=\"mono\">phone_number</code> was collected.</span>\n                  </div>\n                </article>\n              </div>",
    "css": ".dialogue-avatar {\n  width: 28px;\n  height: 28px;\n  border-radius: 999px;\n  flex-shrink: 0;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  font: 700 12px/1 var(--f-display);\n  background: var(--bg-warm);\n  color: var(--fg);\n}\n\n.dialogue-bubble {\n  padding: 10px 14px;\n  border-radius: 14px;\n  font-size: 14px;\n  line-height: 1.5;\n  background: var(--bg-warm);\n  color: var(--fg);\n}\n\n.dialogue-bubble-ellip {\n  color: color-mix(in oklab, currentColor 60%, transparent);\n  font-style: italic;\n  font-size: 12.5px;\n}\n\n.dialogue-column {\n  background: var(--bg-paper);\n  border: 1px solid var(--hair);\n  border-radius: var(--r-lg);\n  padding: var(--s-5);\n  box-shadow: var(--sh-1);\n  display: flex;\n  flex-direction: column;\n  position: relative;\n  overflow: hidden;\n}\n\n.dialogue-contrast {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: var(--s-5);\n  margin-top: var(--s-5);\n}\n\n.dialogue-head {\n  display: flex;\n  align-items: center;\n  gap: var(--s-3);\n  padding-bottom: var(--s-3);\n  border-bottom: 1px solid var(--hair-soft);\n}\n\n.dialogue-msg {\n  display: flex;\n  gap: 10px;\n  max-width: 92%;\n}\n\n.dialogue-msgs {\n  display: flex;\n  flex-direction: column;\n  gap: var(--s-3);\n  margin-top: var(--s-3);\n  flex: 1;\n}\n\n.dialogue-outcome {\n  margin-top: var(--s-4);\n  padding: var(--s-3) var(--s-4);\n  border-radius: var(--r-md);\n  font-size: 13.5px;\n  line-height: 1.5;\n  display: flex;\n  gap: 10px;\n  align-items: flex-start;\n  background: var(--bg-warm);\n}\n\n.dialogue-outcome-label {\n  font: 600 10.5px/1 var(--f-mono);\n  text-transform: uppercase;\n  letter-spacing: 0.08em;\n  flex-shrink: 0;\n  padding-top: 2px;\n  opacity: 0.85;\n}\n\n.dialogue-status { margin-left: auto; }\n\n.dialogue-tag {\n  font: 500 10.5px/1 var(--f-mono);\n  text-transform: uppercase;\n  letter-spacing: 0.08em;\n  color: var(--fg-dim);\n}\n\n.dialogue-who {\n  font: 700 18px/1.2 var(--f-display);\n  letter-spacing: -0.01em;\n}"
  }
}
