[popover] Why does popover.root does not provide disabled props?
- Dominant language
- TypeScript
- Stars
- 10.9k
- Forks
- 543
- Avg merge
- 1d 20h
- Merged PRs (30d)
- 101
Description
# Feature request
## Summary
A request for clarification and enhancement regarding API consistency, specifically concerning the lack of a disabled prop on Popover.Root while it exists on Menu.Root.
## Examples in other libraries
## Motivation
Both Popover and Menu share a very similar UX pattern: a user clicks a "trigger" element to open a "content" panel.
However, the difference in their APIs for handling a disabled state feels inconsistent and confusing.
With a Menu component, passing a single disabled prop to the Root or Trigger declaratively disables the entire system (preventing clicks, keyboard navigation, etc.).
With a Popover, the absence of a disabled prop on Popover.Root forces the developer to pass the disabled state to the Popover.Trigger.
[Questions & Proposal]
Question on Design Intent: Is there a specific, intentional design reason for this API difference between Popover and Menu?
(Hypothesis) Is it because a Popover is considered a generic "container" primitive, while a Menu is a more specific "list of actions" primitive, thereby warranting different APIs?
Feature Proposal: If there is no strong design contraindication, I propose adding a disabled prop to Popover.Root. This prop would automatically propagate to the Popover.Trigger, bringing its API in line with Menu and improving overall consistency.
Contributor guide
Assessment
This issue has not been assessed yet.