diff --git a/web/app/components/base/ui/dialog/index.tsx b/web/app/components/base/ui/dialog/index.tsx index 61b9309138..b4b5f728b6 100644 --- a/web/app/components/base/ui/dialog/index.tsx +++ b/web/app/components/base/ui/dialog/index.tsx @@ -1,8 +1,10 @@ 'use client' // z-index strategy (relies on root `isolation: isolate` in layout.tsx): -// Tooltip / Popover / Dropdown — no z-index, DOM order is sufficient -// Dialog backdrop + popup — z-50, ensures modal covers non-modal portals +// All overlay primitives (Tooltip / Popover / Dropdown / Select / Dialog) — z-50 +// Overlays share the same z-index; DOM order handles stacking when multiple are open. +// This ensures overlays inside a Dialog (e.g. a Tooltip on a dialog button) render +// above the dialog backdrop instead of being clipped by it. // Toast — z-[99], always on top (defined in toast component) import { Dialog as BaseDialog } from '@base-ui/react/dialog' @@ -31,14 +33,14 @@ export function DialogContent({ diff --git a/web/app/components/base/ui/dropdown-menu/index.tsx b/web/app/components/base/ui/dropdown-menu/index.tsx index 85a81968d4..3eac03f7db 100644 --- a/web/app/components/base/ui/dropdown-menu/index.tsx +++ b/web/app/components/base/ui/dropdown-menu/index.tsx @@ -1,6 +1,6 @@ 'use client' -import type { Placement } from '@floating-ui/react' +import type { Placement } from '@/app/components/base/ui/placement' import { Menu } from '@base-ui/react/menu' import * as React from 'react' import { parsePlacement } from '@/app/components/base/ui/placement' @@ -64,13 +64,13 @@ function renderDropdownMenuPopup({ align={align} sideOffset={sideOffset} alignOffset={alignOffset} - className={cn('outline-none', className)} + className={cn('z-50 outline-none', className)} {...positionerProps} >