Files
upstream-twenty/packages/twenty-docs/snippets/ui/generated/surfaces/popover.mdx
upstream-mirror e7da97194a
Some checks failed
App Prod-Parity E2E Dispatch / dispatch (push) Failing after 10s
CD Storybook UI / build (push) Failing after 3m25s
CD Storybook UI / dispatch (push) Has been skipped
CD deploy main / website-changed-files (push) Successful in 18m8s
CI Agent Skills / changed-files-check (push) Successful in 18m9s
CI Create App E2E minimal / changed-files-check (push) Successful in 24s
CI Create App / changed-files-check (push) Successful in 26s
CI Docs / changed-files-check (push) Successful in 26s
CI Emails / changed-files-check (push) Successful in 28s
CI Example App Hello World / changed-files-check (push) Successful in 23s
CI Front / changed-files-check (push) Has been skipped
CI Example App Postcard / changed-files-check (push) Successful in 27s
CI UI / changed-files-check (push) Has been skipped
CI Utils Test / changed-files-check (push) Successful in 45s
CI Twenty Apps / discover (push) Successful in 1m3s
CD deploy main / deploy-main (push) Failing after 3s
CI Agent Skills / agent-skills-validate (push) Has been skipped
CI Create App / create-app-test (lint) (push) Has been skipped
CI Emails / emails-test (push) Has been skipped
CI Front / front-task (lingui:compile) (push) Has been skipped
CI Front / front-task (lint) (push) Has been skipped
CI Example App Postcard / example-app-postcard (push) Has been skipped
CI UI / ui-task (lint) (push) Has been skipped
CI UI / ui-task (pack-size) (push) Has been skipped
CI UI / ui-task (size) (push) Has been skipped
CI UI / ui-task (test) (push) Has been skipped
CI UI / ui-task (typecheck) (push) Has been skipped
CI Utils Test / utils-test (push) Has been skipped
CI Twenty Apps / ${{ matrix.app.name }} (push) Has been skipped
CI Emails / ci-emails-status-check (push) Successful in 2s
CI Example App Hello World / ci-example-app-hello-world-status-check (push) Successful in 2s
CI Example App Postcard / ci-example-app-postcard-status-check (push) Successful in 3s
CI UI / ui-sb-test (push) Has been skipped
CI Utils Test / ci-utils-test-status-check (push) Successful in 2s
CI Twenty Apps / ci-twenty-apps-status-check (push) Successful in 2s
CI UI / ci-ui-status-check (push) Successful in 2s
CI Desktop / desktop (push) Failing after 1m8s
Push docs to Crowdin / Push documentation to Crowdin (push) Failing after 55s
Push translations to Crowdin / Extract and upload translations (push) Failing after 5s
Push website translations to Crowdin / Extract and upload website translations (push) Failing after 5s
CI Create App / create-app-test (test) (push) Has been skipped
CI Create App / create-app-test (typecheck) (push) Has been skipped
CI Docs / docs-lint (push) Has been skipped
CI Example App Hello World / example-app-hello-world (push) Has been skipped
CI Front / front-task (lingui:extract) (push) Has been skipped
CI Front / front-task (test) (push) Has been skipped
CI Front / front-task (typecheck) (push) Has been skipped
CI UI / ui-sb-build (push) Failing after 1m32s
CI Twenty Apps / ${{ matrix.app.name }} (${{ matrix.server-source }}) (push) Has been skipped
CI Agent Skills / agent-skills-publish (push) Has been skipped
CI Create App / ci-create-app-status-check (push) Successful in 2s
CI Agent Skills / agent-skills-remote-source (push) Has been skipped
CI Create App E2E minimal / create-app-e2e-minimal (push) Has been cancelled
CI E2E Main / e2e-test (push) Has been cancelled
CI Front / front-sb-build (push) Has been cancelled
CI Front / front-build (push) Has been cancelled
CI Create App E2E minimal / ci-create-app-e2e-minimal-status-check (push) Has been cancelled
CI E2E Main / ci-e2e-main-status-check (push) Has been cancelled
CI E2E Main / notify-main-ci-failure (push) Has been cancelled
CI E2E Main / qa-scout-comment (push) Has been cancelled
CI Front / front-sb-test (push) Has been cancelled
CI Front / front-sb-screenshots (push) Has been cancelled
CI Front / ci-front-status-check (push) Has been cancelled
DPA Sub-Processor Sync / sync-subprocessors (push) Failing after 3s
AI Catalog Sync / sync-catalog (push) Failing after 2s
snapshot of https://github.com/twentyhq/twenty.git (main, 2026-09-17; blobs > 131072B omitted)
2026-09-17 23:28:13 +05:00

269 lines
12 KiB
Plaintext

{/*
* _____ _
*|_ _|_ _____ _ __ | |_ _ _
* | | \ \ /\ / / _ \ '_ \| __| | | | Auto-generated file
* | | \ V V / __/ | | | |_| |_| | DO NOT EDIT - changes will be overwritten
* |_| \_/\_/ \___|_| |_|\__|\__, | Generated by: npx nx generate:ui twenty-docs
* |___/
*
* This file is generated from the documentation data in packages/twenty-ui/generated.
* To update it, edit the component prop types or design tokens in twenty-ui and run:
* npx nx generate:ui twenty-docs
*/}
### Popover.Root
<ParamField body="Root.actionsRef" type="RefObject&lt;PopoverRootActions | null&gt;">
A ref to imperative actions.
- `unmount`: Manually unmounts the popover.
Call this after any externally controlled closing animation finishes.
- `close`: Closes the popover imperatively when called.
</ParamField>
<ParamField body="Root.children" type="ReactNode | PayloadChildRenderFunction&lt;Payload&gt;">
The content of the popover.
This can be a regular React node or a render function that receives the `payload` of the active trigger.
</ParamField>
<ParamField body="Root.defaultOpen" type="boolean" default="false">
Whether the popover is initially open.
To render a controlled popover, use the `open` prop instead.
</ParamField>
<ParamField body="Root.defaultTriggerId" type="string | null">
ID of the trigger that the popover is associated with.
This is useful in conjunction with the `defaultOpen` prop to create an initially open popover.
</ParamField>
<ParamField body="Root.handle" type="PopoverHandle&lt;Payload&gt;">
A handle to associate the popover with a trigger.
If specified, allows external triggers to control the popover's open state.
</ParamField>
<ParamField body="Root.modal" type="boolean | &quot;trap-focus&quot;" default="false">
Determines if the popover enters a modal state when open.
- `true`: user interaction is limited to the popover: document page scroll is locked, and pointer interactions on outside elements are disabled.
- `false`: user interaction with the rest of the document is allowed.
- `'trap-focus'`: focus is trapped inside the popover, but document page scroll is not locked and pointer interactions outside of it remain enabled.
On touch devices, a `true` modal blocks outside taps but leaves the page scrollable unless the popup spans nearly the full viewport width, matching native iOS behavior.
When `modal` is `true`, focus trapping is enabled only if `<Popover.Close>` is rendered
inside `<Popover.Popup>`. It can be visually hidden with your own CSS if needed, such as
Tailwind's `sr-only` utility.
When `modal` is `'trap-focus'`, render `<Popover.Close>` inside `<Popover.Popup>` so touch
screen readers can escape the popup.
</ParamField>
<ParamField body="Root.onOpenChange" type="((open: boolean, eventDetails: PopoverRootChangeEventDetails) =&gt; void)">
Event handler called when the popover is opened or closed.
</ParamField>
<ParamField body="Root.onOpenChangeComplete" type="((open: boolean) =&gt; void)">
Event handler called after any animations complete when the popover is opened or closed.
</ParamField>
<ParamField body="Root.open" type="boolean">
Whether the popover is currently open.
</ParamField>
<ParamField body="Root.triggerId" type="string | null">
ID of the trigger that the popover is associated with.
This is useful in conjunction with the `open` prop to create a controlled popover.
There's no need to specify this prop when the popover is uncontrolled (that is, when the `open` prop is not set).
</ParamField>
### Popover.Trigger
<ParamField body="Trigger.className" type="string | ((state: PopoverTriggerState) =&gt; string | undefined)">
CSS class applied to the element, or a function that
returns a class based on the component's state.
</ParamField>
<ParamField body="Trigger.closeDelay" type="number" default="0">
How long to wait before closing the popover that was opened on hover.
Specified in milliseconds.
Requires the `openOnHover` prop.
</ParamField>
<ParamField body="Trigger.delay" type="number" default="300">
How long to wait before the popover may be opened on hover. Specified in milliseconds.
Requires the `openOnHover` prop.
</ParamField>
<ParamField body="Trigger.handle" type="PopoverHandle&lt;Payload&gt;">
A handle to associate the trigger with a popover.
</ParamField>
<ParamField body="Trigger.id" type="string">
ID of the trigger. In addition to being forwarded to the rendered element,
it is also used to specify the active trigger for the popover in controlled mode (with the PopoverRoot `triggerId` prop).
</ParamField>
<ParamField body="Trigger.nativeButton" type="boolean" default="true">
Whether the component renders a native `<button>` element when replacing it
via the `render` prop.
Set to `false` if the rendered element is not a button (e.g. `<div>`).
</ParamField>
<ParamField body="Trigger.openOnHover" type="boolean" default="false">
Whether the popover should also open when the trigger is hovered.
</ParamField>
<ParamField body="Trigger.payload" type="Payload">
A payload to pass to the popover when it is opened.
</ParamField>
<ParamField body="Trigger.render" type="ReactElement&lt;unknown, string | JSXElementConstructor&lt;any&gt;&gt; | ComponentRenderFn&lt;HTMLProps, PopoverTriggerState&gt;">
Allows you to replace the component's HTML element
with a different tag, or compose it with another component.
Accepts a `ReactElement` or a function that returns the element to render.
</ParamField>
<ParamField body="Trigger.style" type="CSSProperties | ((state: PopoverTriggerState) =&gt; CSSProperties | undefined)">
Style applied to the element, or a function that
returns a style object based on the component's state.
</ParamField>
### Popover.Popup
<ParamField body="Popup.align" type="&quot;center&quot; | &quot;start&quot; | &quot;end&quot;" default="center">
Alignment of the popup along the anchor.
</ParamField>
<ParamField body="Popup.alignOffset" type="number">
Offset in pixels along the alignment axis.
</ParamField>
<ParamField body="Popup.anchor" type="Element | VirtualElement | RefObject&lt;Element | null&gt; | (() =&gt; Element | VirtualElement | null) | null">
Element or position the popup is anchored to. Defaults to the trigger.
</ParamField>
<ParamField body="Popup.arrow" type="boolean" default="false">
Shows an arrow pointing at the anchor.
</ParamField>
<ParamField body="Popup.className" type="string | ((state: PopoverPopupState) =&gt; string | undefined)">
CSS class applied to the element, or a function that
returns a class based on the component's state.
</ParamField>
<ParamField body="Popup.container" type="HTMLElement | ShadowRoot | RefObject&lt;HTMLElement | ShadowRoot | null&gt; | null">
Element the popup is portaled into. Defaults to the theme's portal
container.
</ParamField>
<ParamField body="Popup.finalFocus" type="boolean | RefObject&lt;HTMLElement | null&gt; | ((closeType: InteractionType) =&gt; boolean | void | HTMLElement | null)">
Determines the element to focus when the popover is closed.
- `false`: Do not move focus.
- `true`: Move focus based on the default behavior (trigger or previously focused element).
- `RefObject`: Move focus to the ref element.
- `function`: Called with the interaction type (`mouse`, `touch`, `pen`, or `keyboard`).
Return an element to focus, `true` to use the default behavior, `null` to fall back to the default behavior, or `false`/`undefined` to do nothing.
</ParamField>
<ParamField body="Popup.initialFocus" type="boolean | RefObject&lt;HTMLElement | null&gt; | ((openType: InteractionType) =&gt; boolean | void | HTMLElement | null)">
Determines the element to focus when the popover is opened.
By default, focus moves to the first tabbable element inside the popup, except when the popover
is opened by touch — then the popup itself is focused to avoid opening the virtual keyboard.
- `false`: Do not move focus.
- `true`: Move focus based on the default behavior (first tabbable element or popup).
- `RefObject`: Move focus to the ref element.
- `function`: Called with the interaction type (`mouse`, `touch`, `pen`, or `keyboard`).
Return an element to focus, `true` to use the default behavior, `null` to fall back to the default behavior, or `false`/`undefined` to do nothing.
</ParamField>
<ParamField body="Popup.keepMounted" type="boolean">
Keeps the popup mounted in the DOM while the popover is closed.
</ParamField>
<ParamField body="Popup.render" type="ReactElement&lt;unknown, string | JSXElementConstructor&lt;any&gt;&gt; | ComponentRenderFn&lt;HTMLProps, PopoverPopupState&gt;">
Allows you to replace the component's HTML element
with a different tag, or compose it with another component.
Accepts a `ReactElement` or a function that returns the element to render.
</ParamField>
<ParamField body="Popup.side" type="&quot;top&quot; | &quot;right&quot; | &quot;bottom&quot; | &quot;left&quot; | &quot;inline-end&quot; | &quot;inline-start&quot;" default="bottom">
Side of the anchor the popup is placed on.
</ParamField>
<ParamField body="Popup.sideOffset" type="number" default="8">
Distance in pixels between the anchor and the popup.
</ParamField>
<ParamField body="Popup.style" type="CSSProperties | ((state: PopoverPopupState) =&gt; CSSProperties | undefined)">
Style applied to the element, or a function that
returns a style object based on the component's state.
</ParamField>
### Popover.Title
<ParamField body="Title.className" type="string | ((state: PopoverTitleState) =&gt; string | undefined)">
CSS class applied to the element, or a function that
returns a class based on the component's state.
</ParamField>
<ParamField body="Title.render" type="ReactElement&lt;unknown, string | JSXElementConstructor&lt;any&gt;&gt; | ComponentRenderFn&lt;HTMLProps, PopoverTitleState&gt;">
Allows you to replace the component's HTML element
with a different tag, or compose it with another component.
Accepts a `ReactElement` or a function that returns the element to render.
</ParamField>
<ParamField body="Title.style" type="CSSProperties | ((state: PopoverTitleState) =&gt; CSSProperties | undefined)">
Style applied to the element, or a function that
returns a style object based on the component's state.
</ParamField>
### Popover.Description
<ParamField body="Description.className" type="string | ((state: PopoverDescriptionState) =&gt; string | undefined)">
CSS class applied to the element, or a function that
returns a class based on the component's state.
</ParamField>
<ParamField body="Description.render" type="ReactElement&lt;unknown, string | JSXElementConstructor&lt;any&gt;&gt; | ComponentRenderFn&lt;HTMLProps, PopoverDescriptionState&gt;">
Allows you to replace the component's HTML element
with a different tag, or compose it with another component.
Accepts a `ReactElement` or a function that returns the element to render.
</ParamField>
<ParamField body="Description.style" type="CSSProperties | ((state: PopoverDescriptionState) =&gt; CSSProperties | undefined)">
Style applied to the element, or a function that
returns a style object based on the component's state.
</ParamField>
### Popover.Close
<ParamField body="Close.className" type="string | ((state: PopoverCloseState) =&gt; string | undefined)">
CSS class applied to the element, or a function that
returns a class based on the component's state.
</ParamField>
<ParamField body="Close.nativeButton" type="boolean" default="true">
Whether the component renders a native `<button>` element when replacing it
via the `render` prop.
Set to `false` if the rendered element is not a button (for example, `<div>`).
</ParamField>
<ParamField body="Close.render" type="ReactElement&lt;unknown, string | JSXElementConstructor&lt;any&gt;&gt; | ComponentRenderFn&lt;HTMLProps, PopoverCloseState&gt;">
Allows you to replace the component's HTML element
with a different tag, or compose it with another component.
Accepts a `ReactElement` or a function that returns the element to render.
</ParamField>
<ParamField body="Close.style" type="CSSProperties | ((state: PopoverCloseState) =&gt; CSSProperties | undefined)">
Style applied to the element, or a function that
returns a style object based on the component's state.
</ParamField>