{
  "name": "PosShell",
  "package": "@magicblocksai/ui",
  "file": "packages/ui/src/components/PosShell.tsx",
  "chapterTag": "26 Embed Extras",
  "chapter": "26-embed-extras.html",
  "sectionId": "pos-shell",
  "elName": "PosShell",
  "demoUrl": "https://brand.magicblocks.ai/components/26-embed-extras#pos-shell",
  "hasLiveDemo": false,
  "description": "",
  "useClient": true,
  "interactivity": "interactive",
  "namedExports": [
    {
      "name": "PosShell",
      "isPrincipal": true,
      "isType": false
    },
    {
      "name": "PosShellProps",
      "isPrincipal": false,
      "isType": true
    }
  ],
  "importStatement": "import { PosShell } from \"@magicblocksai/ui\";",
  "props": [
    {
      "name": "progress",
      "optional": false,
      "type": "number",
      "doc": "0–100."
    },
    {
      "name": "sectionLabel",
      "optional": true,
      "type": "ReactNode",
      "doc": "\"Loan\" / \"Review\" / \"Done\" — the section the current question belongs to."
    },
    {
      "name": "onSave",
      "optional": true,
      "type": "() => void",
      "doc": ""
    },
    {
      "name": "children",
      "optional": true,
      "type": "ReactNode",
      "doc": "Transcript content — messages, ask cards."
    },
    {
      "name": "side",
      "optional": true,
      "type": "ReactNode",
      "doc": "Desktop side column — typically `<PosApplicationCard>`."
    },
    {
      "name": "mobileBar",
      "optional": true,
      "type": "ReactNode",
      "doc": "Fixed bottom bar for mobile — `<PosMobileBar>`."
    },
    {
      "name": "overlays",
      "optional": true,
      "type": "ReactNode",
      "doc": "Overlays — `<PosSheet>`, `<PosSaveDialog>`."
    },
    {
      "name": "embedded",
      "optional": true,
      "type": "boolean",
      "doc": "Render inside a container rather than filling the viewport (chapter demos)."
    },
    {
      "name": "hideSide",
      "optional": true,
      "type": "boolean",
      "doc": "Hide the side column (mobile). Defaults to the provider's `mobile`."
    },
    {
      "name": "mark",
      "optional": true,
      "type": "ReactNode",
      "doc": "The operator's own mark for the header tile. Defaults to the kit's bars glyph. ⚠ THIS IS THE OPERATOR'S PAGE, NOT OURS (NG-004). An applicant is applying to *them*; the shell already carries their business name, their colours, their font and their favicon, and the one thing it could not carry was the mark — so a lender whose chat widget shows their logo got our waveform at the top left of the surface their customers actually apply through. Their workaround reached into `.pos-header-mark` from outside, which is a kit internal and a reasonable thing to want to stop doing. The tile is a ~28px square, so pass the SQUARE version of a brand where one exists — a wide lock-up shrinks into it until it is unreadable."
    }
  ],
  "classesUsed": [
    "pos",
    "pos-grid",
    "pos-header",
    "pos-header-actions",
    "pos-header-mark",
    "pos-header-meta",
    "pos-header-text",
    "pos-header-title",
    "pos-progress",
    "pos-progress-fill",
    "pos-progress-label",
    "pos-save-btn",
    "pos-secure",
    "pos-side",
    "pos-stream",
    "pos-thread"
  ],
  "examples": {
    "react": null,
    "html": "<div class=\"pos-theme-scope\" style=\"--p-side-width:380px\"><div class=\"pos is-embedded\"><header class=\"pos-header\"><span class=\"pos-header-mark\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><rect x=\"3\" y=\"10\" width=\"2\" height=\"4\" rx=\"1\" fill=\"currentColor\" opacity=\"0.55\"></rect><rect x=\"6\" y=\"8\" width=\"2\" height=\"8\" rx=\"1\" fill=\"currentColor\" opacity=\"0.7\"></rect><rect x=\"9\" y=\"5\" width=\"2\" height=\"14\" rx=\"1\" fill=\"currentColor\"></rect><rect x=\"12\" y=\"3\" width=\"2\" height=\"18\" rx=\"1\" fill=\"currentColor\"></rect><rect x=\"15\" y=\"6\" width=\"2\" height=\"12\" rx=\"1\" fill=\"currentColor\"></rect><rect x=\"18\" y=\"9\" width=\"2\" height=\"6\" rx=\"1\" fill=\"currentColor\" opacity=\"0.7\"></rect><rect x=\"21\" y=\"11\" width=\"2\" height=\"2\" rx=\"1\" fill=\"currentColor\" opacity=\"0.45\"></rect></svg></span><div class=\"pos-header-text\"><div class=\"pos-header-title\">Northgate Mortgage</div><div class=\"pos-header-meta\">Apply with Ava · 4 min</div></div><div class=\"pos-header-actions\"><button type=\"button\" class=\"pos-save-btn\">Save &amp; finish later</button><span class=\"pos-progress-label\">Property · 32% complete</span><span class=\"pos-progress\" role=\"progressbar\" aria-valuenow=\"32\" aria-valuemin=\"0\" aria-valuemax=\"100\"><span class=\"pos-progress-fill\" style=\"width:32%\"></span></span></div></header><div class=\"pos-grid\"><div class=\"pos-stream\"><div class=\"pos-thread\"><div class=\"pos-secure\">Secure application · nothing shared until you submit</div><div class=\"pos-msg is-agent\"><div class=\"pos-msg-bubble\">What property are we talking about?</div></div><div style=\"height:8px\"></div></div></div><aside class=\"pos-side\"><div class=\"pos-application\"><div class=\"pos-side-head\"><span class=\"pos-side-title\">Your application</span><span class=\"pos-eyebrow is-count\">32% complete</span></div><p class=\"pos-side-hint\">Fills in as you answer. Click any value to change it.</p><div class=\"pos-group\"><div class=\"pos-group-title\">Loan</div><div class=\"pos-row\"><span class=\"pos-row-label\">Goal</span><button type=\"button\" class=\"pos-row-edit\" title=\"Edit\"><span class=\"pos-row-value\">Buying a home</span><svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4 20 H8 L19 9 A2.1 2.1 0 0 0 16 6 L5 17 Z\" fill=\"currentColor\" opacity=\"0.3\"></path><path d=\"M4 20 H8 L19 9 A2.1 2.1 0 0 0 16 6 L5 17 Z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linejoin=\"round\"></path></svg></button></div><div class=\"pos-row\"><span class=\"pos-row-label\">Purchase price</span><button type=\"button\" class=\"pos-row-edit\" title=\"Edit\"><span class=\"pos-row-value\">$600,000</span><svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4 20 H8 L19 9 A2.1 2.1 0 0 0 16 6 L5 17 Z\" fill=\"currentColor\" opacity=\"0.3\"></path><path d=\"M4 20 H8 L19 9 A2.1 2.1 0 0 0 16 6 L5 17 Z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linejoin=\"round\"></path></svg></button></div><div class=\"pos-row\"><span class=\"pos-row-label\">Down payment</span><span class=\"pos-row-empty\">—</span></div><div class=\"pos-row\"><span class=\"pos-row-label\">Product</span><span class=\"pos-row-empty\">—</span></div></div><div class=\"pos-group\"><div class=\"pos-group-title\">Property</div><div class=\"pos-row\"><span class=\"pos-row-label\">Address</span><button type=\"button\" class=\"pos-row-edit\" title=\"Edit\"><span class=\"pos-row-value\">1420 Fillmore St, San Francisco, CA 94115</span><svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4 20 H8 L19 9 A2.1 2.1 0 0 0 16 6 L5 17 Z\" fill=\"currentColor\" opacity=\"0.3\"></path><path d=\"M4 20 H8 L19 9 A2.1 2.1 0 0 0 16 6 L5 17 Z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linejoin=\"round\"></path></svg></button></div><div class=\"pos-row\"><span class=\"pos-row-label\">Type</span><button type=\"button\" class=\"pos-row-edit\" title=\"Edit\"><span class=\"pos-row-value\">Condo</span><svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4 20 H8 L19 9 A2.1 2.1 0 0 0 16 6 L5 17 Z\" fill=\"currentColor\" opacity=\"0.3\"></path><path d=\"M4 20 H8 L19 9 A2.1 2.1 0 0 0 16 6 L5 17 Z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linejoin=\"round\"></path></svg></button></div></div><div class=\"pos-group\"><div class=\"pos-group-title\">Contact</div><div class=\"pos-row\"><span class=\"pos-row-label\">Contact</span><button type=\"button\" class=\"pos-row-edit\" title=\"Edit\"><span class=\"pos-row-value\">Maria Alvarez</span><svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4 20 H8 L19 9 A2.1 2.1 0 0 0 16 6 L5 17 Z\" fill=\"currentColor\" opacity=\"0.3\"></path><path d=\"M4 20 H8 L19 9 A2.1 2.1 0 0 0 16 6 L5 17 Z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linejoin=\"round\"></path></svg></button></div><div class=\"pos-row\"><span class=\"pos-row-label\">Phone</span><span class=\"pos-row-fixed\">(415) 555-0134 · verified</span></div></div><div class=\"pos-pending\"><svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><rect x=\"4\" y=\"10\" width=\"16\" height=\"11\" rx=\"2\" fill=\"currentColor\" opacity=\"0.35\"></rect><path d=\"M7 10 V7 A5 5 0 0 1 17 7 V10\" stroke=\"currentColor\" stroke-width=\"2\" fill=\"none\"></path><circle cx=\"12\" cy=\"15.5\" r=\"1.6\" fill=\"currentColor\"></circle></svg>Nothing is submitted until you press the button.</div><div class=\"pos-nmls\"><svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M12 3 L21 10 H19 V20 H5 V10 H3 Z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linejoin=\"round\"></path><path d=\"M12 8.5 L16 11.5 V17 H8 V11.5 Z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\" stroke-linejoin=\"round\"></path><path d=\"M10.5 17 V13.5 H13.5 V17\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.4\"></path></svg>NMLS #1824561 · Equal Housing Lender</div></div></aside></div></div></div>",
    "css": ".pos { height: 100dvh; background: var(--p-page); color: var(--p-fg); font-family: var(--p-font); display: flex; flex-direction: column; overflow: hidden; }\n\n.pos-grid { flex: 1; min-height: 0; display: grid; grid-template-columns: minmax(0, 1fr) var(--p-side-width, 380px); }\n\n.pos-header { flex-shrink: 0; display: flex; align-items: center; gap: 14px; padding: 14px clamp(16px, 3vw, 28px); background: var(--p-card); border-bottom: 1px solid var(--p-hair-soft); }\n\n.pos-header-actions { display: flex; align-items: center; gap: 10px; flex-shrink: 0; }\n\n.pos-header-mark { width: 34px; height: 34px; border-radius: 10px; background: var(--p-accent-soft); color: var(--p-accent); display: flex; align-items: center; justify-content: center; flex-shrink: 0; }\n\n.pos-header-meta { font: 400 10px/1.4 var(--f-mono); text-transform: uppercase; letter-spacing: .08em; color: var(--p-dim); margin-top: 2px; }\n\n.pos-header-text { flex: 1; min-width: 0; }\n\n.pos-header-title { font: 600 15px/1.2 var(--p-font-display, var(--f-display)); letter-spacing: -.01em; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n\n.pos-progress { width: 120px; height: 6px; border-radius: var(--r-pill); background: var(--p-hair); overflow: hidden; display: block; }\n\n.pos-progress-fill { display: block; height: 100%; background: var(--p-accent); border-radius: var(--r-pill); transition: width var(--dur-4) var(--ease); }\n\n.pos-progress-label { font: 400 10.5px/1 var(--f-mono); text-transform: uppercase; letter-spacing: .06em; color: var(--p-dim); white-space: nowrap; }\n\n.pos-save-btn { padding: 8px 13px; min-height: 36px; border-radius: var(--r-pill); border: 1px solid var(--p-hair); background: transparent; cursor: pointer; font: 500 12.5px/1.2 var(--p-font); color: var(--p-dim); white-space: nowrap; transition: all var(--dur-2) var(--ease); }\n\n.pos-secure { align-self: center; font: 400 9.5px/1.4 var(--f-mono); letter-spacing: .08em; text-transform: uppercase; color: var(--p-faint); padding: 3px 11px; border-radius: var(--r-pill); background: var(--p-bubble); }\n\n.pos-side { min-width: 0; border-left: 1px solid var(--p-hair-soft); background: var(--p-card); overflow-y: auto; padding: 22px 20px 28px; }\n\n.pos-stream { min-width: 0; overflow-y: auto; padding: clamp(18px, 3vw, 30px) clamp(16px, 3vw, 28px) 30px; }\n\n.pos-thread { max-width: 680px; margin: 0 auto; display: flex; flex-direction: column; gap: 14px; }"
  }
}
