Popover

Popover component system for displaying contextual interface elements that appear in response to user interaction. Popovers can open from triggers, support hover or click interactions, close locally or globally, and optionally auto-dismiss, allowing flexible use for menus, tooltips, notifications, and interactive panels while maintaining smooth transitions and predictable behavior.

Local

Interaction-based popover setup that relies on interactions to control the opening and closing behavior. The trigger and popover target exist within the same component structure, allowing lightweight contextual popovers without global attributes or custom targeting logic.
The local Popover interactions are found in the Interactions (X) panel under Popover - Open, Popover - Close, and Popover - Auto Close.

Popover - Open controls the opening sequence by adding is-open and on-enter to popover-navigation. Popover - Close controls the closing sequence by adding on-exit. Once the exit animation is complete, is-open, on-enter, and on-exit are all removed to return the Popover to its default state. Popover - Auto Close follows the same closing sequence after a timed delay.

These interactions manage the visibility and entrance or exit states applied to popover-navigation. Keep them connected to the documented classes and addon triggers so the Popover can complete each animation correctly.
Open/Close on Click
Target Basic
popover
|
|
popover-open
i-local
|
popover-navigation
is-open
on-enter
on-exit
|
|
popover-close
i-local
Popover
Popover text goes here
Target Fixed Top
popover
|
|
popover-open
i-local
|
popover-navigation
is-slide-from-top
is-open
on-enter
on-exit
|
|
popover-close
i-local
Popover
Popover text goes here
Target Fixed Bottom
popover
|
|
popover-open
i-local
|
popover-navigation
is-slide-from-bottom
is-open
on-enter
on-exit
|
|
popover-close
i-local
Popover
Popover text goes here
Open on Click & Auto Close
Uses interactions combined with a timed interaction delay to automatically close the popover after opening. This approach keeps the component fully controlled through interactions while maintaining the same structural behavior as the basic local popover.
Target Basic
popover
|
|
popover-open
i-local
i-auto-close
|
popover-navigation
is-open
on-enter
on-exit
Popover
Add text here...
Target Overlay
popover
|
|
popover-open
i-local
i-auto-close
|
position-absolute
|
|
popover-navigation
is-open
on-enter
on-exit
Target Fixed Top
popover
|
|
popover-open
i-local
i-auto-close
|
|
popover-navigation
is-slide-from-top
is-open
on-enter
on-exit
Popover
Popover text goes here
Target Fixed Bottom
popover
|
|
popover-open
i-local
i-auto-close
|
|
popover-navigation
is-slide-from-bottom
is-open
on-enter
on-exit
Popover
Popover text goes here

Global

Attribute-driven popover system that allows multiple triggers and targets to interact through shared values. Targets can open from multiple triggers, close with class or attributes, respond to hover interactions, and automatically close after a defined delay.
The b-popover-open attribute is added to the popover-open class, while b-popover-target is added to the popover-navigation class. Make sure both attributes use the same value so the trigger connects to the correct Popover. The popover-navigation element controls the opening and closing animation and should contain the Popover layout content.
Open/Close on Click
Target Basic
popover
|
|
popover-open
|
popover-navigation
is-open
on-enter
on-exit
Popover
Popover text goes here
Target Overlay
popover
|
|
popover-open
popover-navigation
is-overlay
is-open
on-enter
on-exit
Popover
Tooltip text goes here.
Target Fixed Top
popover
|
|
popover-open
|
popover-navigation
is-slide-from-top
is-open
on-enter
on-exit
Popover
Popover text goes here
Target Fixed Bottom
popover
|
|
popover-open
|
popover-navigation
is-slide-from-bottom
is-open
on-enter
on-exit
Popover
Popover text goes here
Open on Click & Auto Close
Allows popovers to automatically close after a specified delay. The delay is controlled using the b-popover-auto-close = # attribute on the trigger element. Replace the value "#" with the number of seconds after which the popover should close automatically.
Target Basic
popover
|
|
popover-open
|
popover-navigation
is-open
on-enter
on-exit
Popover
Add text here...
Target Fixed Top
popover
|
|
popover-open
|
|
popover-navigation
is-slide-from-top
is-open
on-enter
on-exit
Popover
Popover text goes here
Target Fixed Bottom
popover
|
|
popover-open
|
|
popover-navigation
is-slide-from-bottom
is-open
on-enter
on-exit
Popover
Popover text goes here
Open/Close on Hover
Hover popovers allow triggers to open targets when the pointer moves over them and close when the pointer leaves the popover system. Hover behavior is enabled using the b-popover-hover attribute on the trigger element, allowing the popover to open on hover, remain open while the pointer is over either the trigger or the popover target, and close once the pointer leaves both.
Target Basic
popover
|
|
popover-open
|
|
popover-navigation
is-open
on-enter
on-exit
Popover
Popover text goes here
Target Overlay
popover
|
|
popover-open
popover-navigation
is-overlay
is-open
on-enter
on-exit
Popover
Popover text goes here

Elements

Popover System Container
popover
Local Trigger via Interaction
Open on Click
popover-open
i-local
Open on Click & Auto Close
popover-open
i-local
i-auto-close
Global Trigger via Attribute
Open on Click
popover-open
b-popover-open = popover-name
Open on Hover
popover-open
b-popover-open = popover-name
b-popover-hover = true
Navigation
Local via Interaction
popover-navigation
Note: Element is hidden by default.
Global via Attribute
popover-navigation
b-popover-target = popover-name
Note: Element is hidden by default.
State: Display
Transition: Enter
Transition: Exit
Basic
popover-navigation
is-open
-
popover-navigation
is-open
on-enter
-
popover-navigation
is-open
on-enter
on-exit
Fixed Top
popover-navigation
is-slide-from-top
is-open
-
popover-navigation
is-slide-from-top
is-open
on-enter
-
popover-navigation
is-slide-from-top
is-open
on-enter
on-exit
Fixed Bottom
popover-navigation
is-slide-from-bottom
is-open
-
popover-navigation
is-slide-from-bottom
is-open
on-enter
-
popover-navigation
is-slide-from-bottom
is-open
on-exit
Overlay
popover-navigation
is-overlay
is-open
-
popover-navigation
is-overlay
is-open
on-enter
-
popover-navigation
is-overlay
is-open
on-enter
on-exit
Close Triggers
Local via Interaction
popover-close
i-local
Global via Class
popover-close
Global via Attribute
b-popover-close = popover-name
Close Button Positions
Desktop
Basic
close
Sticky
close
is-sticky
Float Left
close
is-float-left
Float Right
close
is-float-right
Absolute Top / Left
close
is-absolute-top-left
Absolute Top / Right
close
is-absolute-top-right
Absolute Bottom / Left
close
is-absolute-bottom-left
Absolute Bottom / Right
close
is-absolute-bottom-right
Fixed Top / Left
close
is-fixed-top-left
Note: Element is hidden to prevent overlay.
Fixed Top / Right
close
is-fixed-top-right
Note: Element is hidden to prevent overlay.
Fixed Bottom / Left
close
is-fixed-bottom-left
Note: Element is hidden to prevent overlay.
Fixed Bottom / Right
close
is-fixed-bottom-right
Note: Element is hidden to prevent overlay.
Responsive Close Button Fixed Positions
Tablet
Mobile
Mobile Portrait
Top / Left
close
is-tablet-fixed-top-left
-
close
is-mobile-fixed-top-left
-
close
is-mobile-portrait-fixed-top-left
Top / Right
close
is-tablet-fixed-top-right
-
close
is-mobile-fixed-top-right
-
close
is-mobile-portrait-fixed-top-right
Bottom / Left
close
is-tablet-fixed-bottom-left
-
close
is-mobile-fixed-bottom-left
-
close
is-mobile-portrait-fixed-bottom-left
Bottom / Right
close
is-tablet-fixed-bottom-right
-
close
is-mobile-fixed-bottom-right
-
close
is-mobile-portrait-fixed-bottom-right
Custom Behavior -
Popover

Popover System Overview

The popover system is built on an attribute-driven architecture where triggers and targets interact through shared values. This allows multiple elements to control and respond to the same popover state across different contexts.

‍

Core Concepts

Trigger b-popover-open
Defines the element that opens a popover. The value must match the corresponding target.

Target b-popover-target
The element that receives the open and close states. It reacts to triggers with matching values.

Close Mechanisms
Popovers can be closed using either:

State Classes
The system uses the following classes to control visibility and animation:

‍

Popover Structure

Each popover is defined using the attribute b-popover-target with a unique value.

Example: b-popover-target = pricing

The value acts as the popover identifier and must match the trigger that opens it.

When a popover opens, the script applies the following classes to the popover target: is-open and on-enter.

These classes control visibility and the entry transition.

‍

Trigger Elements

Any element can open a popover by adding the attribute b-popover-open with the same value used on the popover target.

Example: b-popover-open = pricing

When activated, the trigger finds all popover targets with the matching identifier and opens them.

Triggers can be placed anywhere on the page and multiple triggers can control the same popover group.

‍

Closing a Popover

There are two ways to close a popover.

Local close

Any element inside a popover can close it by adding the class popover-close.

When activated, the script finds the closest parent popover container and begins the exit transition.

Global close

A popover can also be closed from anywhere in the document using the attribute b-popover-close with the matching popover identifier.

Example: b-popover-close = pricing

All popover targets with the matching identifier will close simultaneously.

‍

Popover State Classes

The popover system uses three classes to control popover behavior and transitions.

After the exit transition finishes, all three classes are removed automatically.

‍

Transition Logic

Transitions are controlled through system classes rather than interactions.

This approach allows full control over animation behavior while keeping the interaction logic consistent across all popovers.

Typical setup:

When closing, the script adds the on-exit class while keeping the on-enter class applied so the transition begins from the exact position where the entry animation finished.

‍

Hover Popovers

Hover popovers are enabled by adding the attribute b-popover-hover = true on the trigger element.

When enabled, hovering the trigger opens the popover.

The popover remains open while the pointer is over either the trigger or the popover target.

Once the pointer leaves both the trigger and the popover target, the popover closes automatically.

This prevents accidental closing while moving the cursor between the trigger and the popover content.

‍

Auto Close Popovers

Auto-close behavior is enabled by adding the attribute b-popover-auto-close to the trigger element.

Example: b-popover-auto-close = 3

The value represents the number of seconds before the popover automatically closes.

The timer begins when the popover opens and resets each time the popover is triggered again.

If the popover is closed manually before the timer completes, the timer is cleared automatically.

‍

Multiple Popovers

The system supports multiple popovers on the same page.

Triggers open only the popovers that match their identifier.

Multiple popover targets can share the same identifier, allowing several popovers to open together from a single trigger.

This makes it possible to synchronize popover components across different parts of the interface.

‍

Popover Stacking Order

When a popover opens, it moves to the end of its parent container.

This ensures that multiple popovers appear in the order they were opened.

Because popovers remain in normal document flow, stacking is handled through DOM order.

This keeps the layout predictable and prevents layering conflicts.

‍

Keyboard Interaction

Pressing the Escape key closes the most recently opened popover.

This provides a consistent keyboard interaction pattern across the interface.

‍

Summary

To create a popover:

  1. Add a popover container with the attribute b-popover-target = popover-name.
  2. Add a trigger element with the attribute b-popover-open = popover-name.
  3. Optionally add a close element inside the popover using the class popover-close.
  4. Optionally add a global close control using b-popover-close = popover-name.
  5. Define CSS transitions using the classes is-open, on-enter, and on-exit.

Optional behavior:

Hover popovers can be enabled with b-popover-hover = true.

Auto-close can be enabled with b-popover-auto-close = #.