# Popover > A floating content panel that appears next to a trigger element, commonly used for tooltips, dropdowns, and informational overlays. The Popover component is part of SummitUI, a Blazor component library focused on WCAG-compliant, fully customizable headless components. ## Features - Flexible positioning with collision detection - Optional overlay backdrop - Focus trapping support - Close button component - Controlled and uncontrolled modes - WCAG compliant with proper ARIA attributes ## Installation ```bash dotnet add package SummitUI ``` ## Anatomy Import the components and structure them as follows: ```razor Open

Popover content

Close
``` ## Sub-components ### PopoverRoot Root container managing popover state. ### PopoverTrigger Button that toggles the popover. ### PopoverPortal Renders content in fixed-position container. ### PopoverContent Floating content panel with positioning. ### PopoverOverlay Optional backdrop overlay. ### PopoverClose Close button within popover. ## API Reference ### PopoverRoot | Property | Type | Default | Description | |----------|------|---------|-------------| | Open | bool? | null | Controlled open state | | DefaultOpen | bool | false | Default open state (uncontrolled) | | OpenChanged | EventCallback | - | Open state change callback | | OnOpen | EventCallback | - | Callback when popover opens | | OnClose | EventCallback | - | Callback when popover closes | | Modal | bool | false | Whether to trap focus | ### PopoverContent | Property | Type | Default | Description | |----------|------|---------|-------------| | Side | Side | Bottom | Placement side | | SideOffset | int | 0 | Offset from trigger (px) | | Align | Align | Center | Alignment along side axis | | AvoidCollisions | bool | true | Avoid viewport boundaries | | TrapFocus | bool | false | Whether to trap focus | | EscapeKeyBehavior | EscapeKeyBehavior | Close | Escape key behavior | | OutsideClickBehavior | OutsideClickBehavior | Close | Outside click behavior | ## Examples ### Basic Popover ```razor Click me

Basic Popover

This is a simple popover with some content.

Close
``` ### With Overlay Add a backdrop overlay for modal-like behavior. ```razor Open with Overlay

Modal-like Popover

Click the overlay or press Escape to close.

Done
``` ### Different Positions Position the popover on different sides. ```razor @* Bottom (default) *@ Content appears below @* Top *@ Content appears above @* Left *@ Content appears to the left @* Right *@ Content appears to the right ``` ### Controlled Mode Control the open state externally. ```razor @code { private bool isOpen = false; } @(isOpen ? "Close" : "Open")

Controlled popover content

``` ## Styling ### Data Attributes | Attribute | Values | Description | |-----------|--------|-------------| | data-state | "open" \| "closed" | Popover open state | | data-side | "top" \| "right" \| "bottom" \| "left" | Current placement side | | data-align | "start" \| "center" \| "end" | Current alignment | ### CSS Example ```css /* Trigger */ .su-popover-trigger { display: inline-flex; align-items: center; padding: 8px 16px; background: rgb(var(--su-primary)); color: rgb(var(--su-primary-foreground)); border: none; border-radius: 4px; cursor: pointer; } .su-popover-trigger[data-state="open"] { opacity: 0.9; } /* Overlay */ .su-popover-overlay { position: fixed; inset: 0; background: rgb(var(--su-foreground) / 0.4); } /* Content */ .su-popover-content { background: rgb(var(--su-card)); border: 1px solid rgb(var(--su-border)); border-radius: 8px; box-shadow: 0 4px 20px rgb(var(--su-foreground) / 0.15); min-width: 280px; max-width: 400px; padding: 16px; } .su-popover-content[data-state="closed"] { display: none; } ``` ## Accessibility ### Keyboard Navigation | Key | Action | |-----|--------| | Enter / Space | Toggle popover (on trigger) | | Escape | Close popover | | Tab | Move focus within popover (when focus trapped) | ### ARIA Attributes - **Trigger:** Has `aria-haspopup="dialog"` and `aria-expanded` - **Content:** Linked to trigger via `aria-controls` - **Close:** Has `aria-label` for screen readers ### Focus Management - When opened, focus moves to the first focusable element in the content - When closed, focus returns to the trigger - Optional focus trapping keeps focus within the popover