The main popover component that manages state and positioning.
:id - Required unique identifier for the popover.:open - Whether the popover is initially open. Defaults to false.:use-portal - Whether to move content outside its root while open. Defaults to false.:portal-container - CSS selector for portal target. Used only when :use-portal is true.:on-open - Handler for popover open event.:on-close - Handler for popover close event.:class - Additional CSS classes.:on-open - Fired when the popover opens.:on-close - Fired when the popover closes.<.popover id="popover-single-default"> <.popover_trigger as={&button/1} variant="outline"> Open popover </.popover_trigger> <.popover_content side="top" align="center" side-offset={8} class="w-96 border-0 bg-transparent p-0 shadow-none"> <.card> <.card_header class="p-4 pb-3"> <.card_title class="text-base">Dimensions</.card_title> <.card_description> Set the dimensions for the layer. </.card_description> </.card_header> <.card_content class="p-4 pt-0"> <div class="space-y-3"> <div class="flex items-center gap-3"> <.label for="width" class="w-20 shrink-0"> Width </.label> <.input id="width" default-value="100%" class="h-8 min-w-0 flex-1"></.input> </div> <div class="flex items-center gap-3"> <.label for="maxWidth" class="w-20 shrink-0"> Max. width </.label> <.input id="maxWidth" default-value="300px" class="h-8 min-w-0 flex-1"></.input> </div> <div class="flex items-center gap-3"> <.label for="height" class="w-20 shrink-0"> Height </.label> <.input id="height" default-value="25px" class="h-8 min-w-0 flex-1"></.input> </div> <div class="flex items-center gap-3"> <.label for="maxHeight" class="w-20 shrink-0"> Max. height </.label> <.input id="maxHeight" default-value="none" class="h-8 min-w-0 flex-1"></.input> </div> </div> </.card_content> </.card> </.popover_content> </.popover>
<.popover id="popover-placement-examples-top"> <.popover_trigger as={&button/1} variant="outline">Top</.popover_trigger> <.popover_content side="top" align="center" side-offset={8} class="w-64"> <p class="text-sm">Appears above trigger.</p> </.popover_content> </.popover> <.popover id="popover-placement-examples-right"> <.popover_trigger as={&button/1} variant="outline">Right</.popover_trigger> <.popover_content side="right" align="center" side-offset={8} class="w-64"> <p class="text-sm">Appears right of trigger.</p> </.popover_content> </.popover> <.popover id="popover-placement-examples-bottom"> <.popover_trigger as={&button/1} variant="outline">Bottom</.popover_trigger> <.popover_content side="bottom" align="center" side-offset={8} class="w-64"> <p class="text-sm">Appears below trigger.</p> </.popover_content> </.popover> <.popover id="popover-placement-examples-left"> <.popover_trigger as={&button/1} variant="outline">Left</.popover_trigger> <.popover_content side="left" align="center" side-offset={8} class="w-64"> <p class="text-sm">Appears left of trigger.</p> </.popover_content> </.popover>
<.popover id="popover-single-portal-container" portal-container="#popover-portal-target" use-portal > <div id="popover-portal-target"></div> <.popover_trigger as={&button/1} variant="outline"> Open in portal </.popover_trigger> <.popover_content side="bottom" align="start" class="w-64"> <div class="space-y-2"> <h4 class="font-medium leading-none">Custom portal container</h4> <p class="text-sm text-muted-foreground"> This content is moved into <code>#popover-portal-target</code> while open. </p> </div> </.popover_content> </.popover>
<.popover id="popover-alignment-examples-start"> <.popover_trigger as={&button/1} variant="outline">Start</.popover_trigger> <.popover_content side="bottom" align="start" side-offset={8} class="w-64"> <p class="text-sm">Aligned to trigger start.</p> </.popover_content> </.popover> <.popover id="popover-alignment-examples-center"> <.popover_trigger as={&button/1} variant="outline">Center</.popover_trigger> <.popover_content side="bottom" align="center" side-offset={8} class="w-64"> <p class="text-sm">Centered on trigger.</p> </.popover_content> </.popover> <.popover id="popover-alignment-examples-end"> <.popover_trigger as={&button/1} variant="outline">End</.popover_trigger> <.popover_content side="bottom" align="end" side-offset={8} class="w-64"> <p class="text-sm">Aligned to trigger end.</p> </.popover_content> </.popover>