Show full detail for one item as a focused overlay above the page.
overflow: hidden) and restored on close. The two-pane variant splits the
dialog into a primary content pane (scrollable, e.g. documentation text) and a
secondary "aside" pane with a distinct background (e.g. an embedded preview iframe);
the single-pane variant drops the aside entirely for content with nothing to preview.
Marked up as role="dialog" with aria-modal="true" and an
aria-label naming the item shown.
| Name | Type | Default | Description |
|---|---|---|---|
variant | string | two-pane | two-pane | single-pane (adds og-lightbox-body--single, omits the aside pane) |
title | string | — | Dialog heading text |
meta | string | — | Optional parenthetical next to the title (e.g. an internal name/id) |
badge | string | — | Optional small uppercase kind/category label in the header |
onClose | function | — | Called on close-button click, backdrop click, or Escape |
| Variant | Proven in | Live at | Date |
|---|---|---|---|
two-pane | OS-009-Mission-Dashboard (AIOS Skill Centre portal) | skill-centres portal (Tailscale-only) | 2026-07-04 |
single-pane | OS-009-Mission-Dashboard (related-skills & playbook detail views) | skill-centres portal (Tailscale-only) | 2026-07-04 |
OS-009-Mission-Dashboard/app/portal.js + portal.css), not a public URL.
packages/og-lightbox.css
▾
<div class="og-lightbox-backdrop">
<div class="og-lightbox" role="dialog" aria-modal="true" aria-label="…">
<header class="og-lightbox-header">
<span class="og-lightbox-badge">skill</span>
<h3 class="og-lightbox-title">Title <span class="og-lightbox-meta">(name)</span></h3>
<button class="og-lightbox-close" aria-label="Close">×</button>
</header>
<div class="og-lightbox-body">
<section class="og-lightbox-pane">…</section>
<section class="og-lightbox-pane og-lightbox-pane--aside">…</section>
</div>
</div>
</div>