Popover
Displays rich content in a portal, triggered by a button.
Loading preview…
1<script lang="ts">
2 import { buttonVariants } from '../button/button.variants.js';
3 import * as Popover from './index.js';
4</script>
5
6<Popover.Root>
7 <Popover.Trigger class={buttonVariants({ variant: 'outline' })}>Open popover</Popover.Trigger>
8 <Popover.Content class="w-80">
9 <div class="grid gap-4">
10 <div class="space-y-2">
11 <h4 class="leading-none font-medium">Dimensions</h4>
12 <p class="text-sm text-muted-foreground">Set the dimensions for the layer.</p>
13 </div>
14 </div>
15 </Popover.Content>
16</Popover.Root>
17Installation
1. Install dependencies
2. Copy these files into your project
- ~/components/popover/index.ts
- ~/components/popover/popover.svelte
- ~/components/popover/popover-trigger.svelte
- ~/components/popover/popover-portal.svelte
- ~/components/popover/popover-content.svelte
- ~/components/popover/popover-close.svelte
Usage
Use popover for non-modal floating content. Compose Popover.Root with Trigger and Content.
1<script lang="ts">
2 import * as Popover from '~/components/popover';
3 import { buttonVariants } from '~/components/button';
4</script>
5
6<Popover.Root>
7 <Popover.Trigger class={buttonVariants({ variant: 'outline' })}>Open popover</Popover.Trigger>
8 <Popover.Content class="w-80">
9 <div class="grid gap-4">
10 <div class="space-y-2">
11 <h4 class="leading-none font-medium">Dimensions</h4>
12 <p class="text-muted-foreground text-sm">Set the dimensions for the layer.</p>
13 </div>
14 </div>
15 </Popover.Content>
16</Popover.Root>