From 9882177c590177f345ad8e7e93e8f6df05d25fca Mon Sep 17 00:00:00 2001 From: maaz519 Date: Wed, 22 Jul 2026 18:19:25 +0530 Subject: [PATCH] fix(messaging-ui): portal compose modal to so it renders above host chrome A host wrapper like .view{position:relative;z-index:1} creates a stacking context that traps the modal's fixed overlay below a sibling sticky header, no matter its z-index. Render the modal through a ModalPortal (createPortal to document.body) so it escapes the host stacking context + overflow entirely; the portal root copies the SDK theme tokens from the live surface (synchronously, no unstyled paint) and carries dark defaults as a fallback. Adds react-dom peer dep. 67 tests green. Co-Authored-By: Claude Opus 4.8 --- .../insignia-iios-messaging-ui-0.1.0.tgz | Bin 24996 -> 25341 bytes packages/iios-messaging-ui/package.json | 4 +- .../src/components/modal-portal.tsx | 35 ++++++++++++++++++ .../iios-messaging-ui/src/inbox/inbox.tsx | 7 +++- packages/iios-messaging-ui/src/styles.css | 16 +++++++- pnpm-lock.yaml | 3 ++ 6 files changed, 60 insertions(+), 5 deletions(-) create mode 100644 packages/iios-messaging-ui/src/components/modal-portal.tsx diff --git a/packages/iios-messaging-ui/insignia-iios-messaging-ui-0.1.0.tgz b/packages/iios-messaging-ui/insignia-iios-messaging-ui-0.1.0.tgz index 9d33aca9ab901dad590ff06448defd592ee4595f..c7622b028aeda06a22e2625cacc34bfb48367f08 100644 GIT binary patch literal 25341 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 literal 24996 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 diff --git a/packages/iios-messaging-ui/package.json b/packages/iios-messaging-ui/package.json index 802d21d..6a9d110 100644 --- a/packages/iios-messaging-ui/package.json +++ b/packages/iios-messaging-ui/package.json @@ -37,8 +37,9 @@ "test": "vitest run" }, "peerDependencies": { + "@insignia/iios-kernel-client": "*", "react": ">=18", - "@insignia/iios-kernel-client": "*" + "react-dom": ">=18" }, "peerDependenciesMeta": { "@insignia/iios-kernel-client": { @@ -50,6 +51,7 @@ "@testing-library/dom": "^10.4.0", "@testing-library/react": "^16.1.0", "@types/react": "^19.0.0", + "@types/react-dom": "^19.0.0", "jsdom": "^26.0.0", "react": "^19.0.0", "react-dom": "^19.0.0", diff --git a/packages/iios-messaging-ui/src/components/modal-portal.tsx b/packages/iios-messaging-ui/src/components/modal-portal.tsx new file mode 100644 index 0000000..9e79dbb --- /dev/null +++ b/packages/iios-messaging-ui/src/components/modal-portal.tsx @@ -0,0 +1,35 @@ +import { useState, type ReactNode, type CSSProperties } from 'react'; +import { createPortal } from 'react-dom'; + +// The SDK theme tokens. A body-portaled node is outside the `.miu-messenger`/`.miu-inbox` +// subtree that defines these, so we copy their resolved values onto the portal root. +const THEME_VARS = [ + '--miu-bg', '--miu-panel', '--miu-panel-2', '--miu-border', + '--miu-text', '--miu-muted', '--miu-accent', '--miu-accent-text', '--miu-radius', +] as const; + +function copyThemeVars(): Record { + if (typeof document === 'undefined') return {}; + const src = document.querySelector('.miu-messenger, .miu-inbox'); + if (!src) return {}; + const cs = getComputedStyle(src); + const out: Record = {}; + for (const v of THEME_VARS) { + const val = cs.getPropertyValue(v).trim(); + if (val) out[v] = val; + } + return out; +} + +/** + * Render an overlay into document.body so it escapes the host's stacking context and overflow. + * A host wrapper like `.view { position: relative; z-index: 1 }` traps a `position: fixed` overlay + * BELOW a sibling sticky header no matter how high its z-index — the only robust fix is to leave + * that stacking context entirely. Theme tokens are copied from the live surface (captured once on + * mount, synchronously, so there is no unstyled first paint) and re-applied on the portal root. + */ +export function ModalPortal({ children }: { children: ReactNode }) { + const [vars] = useState>(copyThemeVars); + if (typeof document === 'undefined') return null; + return createPortal(
{children}
, document.body); +} diff --git a/packages/iios-messaging-ui/src/inbox/inbox.tsx b/packages/iios-messaging-ui/src/inbox/inbox.tsx index 213e75f..4cf235a 100644 --- a/packages/iios-messaging-ui/src/inbox/inbox.tsx +++ b/packages/iios-messaging-ui/src/inbox/inbox.tsx @@ -1,4 +1,5 @@ import { useEffect, useRef, useState, type FormEvent } from 'react'; +import { ModalPortal } from '../components/modal-portal'; import { useCompose, useInbox, useMailThread } from './hooks'; import type { InboxItem, InboxState, MailAttachment, MailPerson } from './types'; @@ -254,7 +255,8 @@ function ComposeModal({ onClose, onSent }: { onClose: () => void; onSent: () => } return ( -
+ +
e.stopPropagation()}>
New message @@ -320,6 +322,7 @@ function ComposeModal({ onClose, onSent }: { onClose: () => void; onSent: () =>
-
+
+ ); } diff --git a/packages/iios-messaging-ui/src/styles.css b/packages/iios-messaging-ui/src/styles.css index 333cad7..0172ed0 100644 --- a/packages/iios-messaging-ui/src/styles.css +++ b/packages/iios-messaging-ui/src/styles.css @@ -802,11 +802,23 @@ word-break: break-word; } -/* compose modal */ +/* compose modal — portaled to , so carry SDK theme-token defaults here (the host's + own token mapping + a synchronous copy on the portal root override these). */ +.miu-portal { + --miu-bg: #0e0e13; + --miu-panel: #16161d; + --miu-panel-2: #1d1d26; + --miu-border: #262631; + --miu-text: #e9e9ef; + --miu-muted: #9a9aa7; + --miu-accent: #fda913; + --miu-accent-text: #1a1206; + --miu-radius: 12px; +} .miu-modal-overlay { position: fixed; inset: 0; - z-index: 100; + z-index: 2147483000; background: rgba(2, 2, 6, 0.6); display: grid; place-items: center; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index faeced5..4aac1a1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -340,6 +340,9 @@ importers: '@types/react': specifier: ^19.0.0 version: 19.2.17 + '@types/react-dom': + specifier: ^19.0.0 + version: 19.2.3(@types/react@19.2.17) jsdom: specifier: ^26.0.0 version: 26.1.0