Skip to content

fix(web): render dropdowns above toasts - #6165

Merged
maria-rcks merged 1 commit into
pingdotgg:mainfrom
Brechard:fix/dropdowns-above-toasts
Aug 11, 2026
Merged

fix(web): render dropdowns above toasts#6165
maria-rcks merged 1 commit into
pingdotgg:mainfrom
Brechard:fix/dropdowns-above-toasts

Conversation

@Brechard

@Brechard Brechard commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Problem

A toast that arrives while a dropdown is open paints straight over it.

The toast viewport sits at z-index: 100 (apps/web/src/components/ui/toast.tsx:562), while the popup positioners sit well below it:

layer before
dialog / sheet / command palette 50
select / combobox / autocomplete 50
menu / popover 60
toast viewport 100

So every toast outranks every dropdown. The z-[calc(9999-var(--toast-index))] on the individual toasts only orders them against each other inside the viewport's stacking context — the viewport's z-100 is what beats the menu.

It isn't only cosmetic: the toast viewport also takes pointer events, so a click aimed at a covered menu item lands on the toast (or its dismiss button) and fires the wrong thing.

Fix

Move the five popup positioners to z-index: 130.

Toasts keep their place above every ordinary surface, dialogs and sheets included — a toast usually reports the result of something you did inside one. The single exception is now the dropdown the user is actively holding open: that is the focused interaction, while a toast is ambient and dismisses itself a few seconds later. The transient thing should yield to the interactive one.

130 also clears the theme inspector cluster (index.css:1203 spotlight 100, :1230 hover 101, ThemeEditorPanel.tsx:1036 panel 110, index.css:1213 its popovers 120), so dropdowns opened from the theme editor keep working.

Resulting order: dialog/sheet 50 → toast 100 → theme editor 110/120 → dropdowns 130.

Before / After

before after

The toast covers the editor list and swallows clicks meant for it; afterwards the menu sits on top and the toast tucks in behind.

Notes

  • select.tsx:146 and :166 keep their z-50. Those are the scroll-up/down arrows inside the popup, scoped to the popup's own stacking context.
  • Verified in the running dev app: [data-slot="menu-positioner"] computes to z-index: 130, and hit-testing a point inside the overlap now returns the menu item rather than the toast.

Note

Low Risk
CSS-only z-index tweaks on overlay positioners; no logic, auth, or data changes, with a small chance of unexpected overlap with other high z-index UI.

Overview
Raises popup stacking so open dropdowns stay above the toast layer (z-100) and remain clickable when a toast appears.

The positioner className on autocomplete, combobox, menu, popover, and select changes from z-50 / z-[60] to z-[130], putting active menus above toasts while still below nothing critical beyond the theme-editor cluster described in the PR. Scroll arrows inside select popups keep their local z-50.

Reviewed by Cursor Bugbot for commit 7649f65. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Render dropdowns above toasts by raising z-index to 130

Increases the z-index of positioner elements in autocomplete, combobox, menu, popover, and select components from z-50/z-[60] to z-[130], ensuring dropdowns render above toast notifications.

Macroscope summarized 7649f65.

Toast notifications sat at z-index 100 while menus, popovers, selects,
comboboxes and autocompletes sat at 50-60, so any toast painted over an
open dropdown. Because the toast viewport also captures pointer events,
a click aimed at a covered menu item hit the toast (or its dismiss
button) instead of the item.

Move the five popup positioners to z-index 130. Toasts stay above every
normal surface, including dialogs and sheets, but the menu the user is
actively holding open now wins -- it is the focused interaction, while a
toast is ambient and dismisses itself a few seconds later.

130 clears the theme inspector cluster (100-120) as well, so dropdowns
opened from the theme editor keep working.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 34a00c6b-1424-4840-bba4-aedef9f5f1db

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added vouch:unvouched PR author is not yet trusted in the VOUCHED list. size:S 10-29 changed lines (additions + deletions). labels Aug 11, 2026
@macroscopeapp

macroscopeapp Bot commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved 7649f65

A simple CSS z-index fix ensuring dropdown components render above toast notifications (z-100 → z-[130]). The change is purely visual with no logic impact.

You can customize Macroscope's approvability policy. Learn more.

@maria-rcks
maria-rcks merged commit 1e355a2 into pingdotgg:main Aug 11, 2026
17 checks passed
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Aug 11, 2026
## What's Changed
* feat(web): make environment artwork theme aware by @juliusmarminge in pingdotgg/t3code#6183
* fix(shared): normalize a bare Windows drive root the same as C:\ / C:/ by @arhxam in pingdotgg/t3code#6189
* fix(shared): detect Azure DevOps SSH remotes (ssh.dev.azure.com) by @arhxam in pingdotgg/t3code#6187
* feat(web): add back buttons for the pull requests and usage pages in the sidebar footer by @UtkarshUsername in pingdotgg/t3code#6031
* fix(web): render dropdowns above toasts by @Brechard in pingdotgg/t3code#6165
* fix(web): thread error banner dismiss survives reconnect and rerenders by @myacoub91 in pingdotgg/t3code#6123
* fix(web): use a clearer pull action icon by @extoci in pingdotgg/t3code#6194
* feat(web): use OKLCH for theme palettes by @StiensWout in pingdotgg/t3code#6036

## New Contributors
* @extoci made their first contribution in pingdotgg/t3code#6194

**Full Changelog**: pingdotgg/t3code@v0.0.34-nightly.20260811.1068...v0.0.34-nightly.20260811.1069

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.34-nightly.20260811.1069
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:S 10-29 changed lines (additions + deletions). vouch:unvouched PR author is not yet trusted in the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants