Popover
nswds-ui/popoverFreeComponent
A floating panel anchored to a trigger, built on the Base UI popover primitive.
Install it
npx shadcn@latest add https://raw.githubusercontent.com/digitalnsw/nswds-ui/main/apps/registry/public/r/popover.jsonSource
1'use client'23import { Popover as PopoverPrimitive } from '@base-ui/react/popover'4import * as React from 'react'56import { cn } from '@/lib/utils'78function Popover({ ...props }: PopoverPrimitive.Root.Props) {9 return <PopoverPrimitive.Root data-slot='popover' {...props} />10}1112function PopoverTrigger({ ...props }: PopoverPrimitive.Trigger.Props) {13 return <PopoverPrimitive.Trigger data-slot='popover-trigger' {...props} />14}1516function PopoverContent({17 className,18 align = 'center',19 alignOffset = 0,20 side = 'bottom',21 sideOffset = 4,22 ...props23}: PopoverPrimitive.Popup.Props &24 Pick<PopoverPrimitive.Positioner.Props, 'align' | 'alignOffset' | 'side' | 'sideOffset'>) {25 return (26 <PopoverPrimitive.Portal>27 <PopoverPrimitive.Positioner28 align={align}29 alignOffset={alignOffset}30 side={side}31 sideOffset={sideOffset}32 className='isolate z-50'33 >34 <PopoverPrimitive.Popup35 data-slot='popover-content'36 className={cn(37 'z-50 flex w-72 origin-(--transform-origin) flex-col gap-4 rounded-lg bg-popover p-2.5 text-xs text-popover-foreground shadow-md ring-1 ring-foreground/10 outline-hidden duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-start-2 data-[side=inline-start]:slide-in-from-end-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95',38 className,39 )}40 {...props}41 />42 </PopoverPrimitive.Positioner>43 </PopoverPrimitive.Portal>44 )45}4647function PopoverHeader({ className, ...props }: React.ComponentProps<'div'>) {48 return (49 <div50 data-slot='popover-header'51 className={cn('flex flex-col gap-1 text-xs', className)}52 {...props}53 />54 )55}5657function PopoverTitle({ className, ...props }: PopoverPrimitive.Title.Props) {58 return (59 <PopoverPrimitive.Title60 data-slot='popover-title'61 className={cn('text-sm font-medium', className)}62 {...props}63 />64 )65}6667function PopoverDescription({ className, ...props }: PopoverPrimitive.Description.Props) {68 return (69 <PopoverPrimitive.Description70 data-slot='popover-description'71 className={cn('text-muted-foreground', className)}72 {...props}73 />74 )75}7677// … truncated
What it pulls in
npm packages
Other registry items
Files it writes
More from @nswds/ui
All 46 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| Aspect Ratioaspect-ratio | @nswds/ui | Components | Free | 2 deps · 2 files | |
| Badgebadge | @nswds/ui | Components | Free | 4 deps · 2 files | |
| Buttonbutton | @nswds/ui | Components | Free | 4 deps · 2 files | |
| Cardcard | @nswds/ui | Components | Free | 2 deps · 2 files | |
| Collapsiblecollapsible | @nswds/ui | Components | Free | 1 dep | |
| Drawerdrawer | @nswds/ui | Components | Free | 3 deps · 2 files | |
| Expandable Searchexpandable-search | @nswds/ui | Components | Free | 3 deps · 2 files | |
| Fieldfield | @nswds/ui | Components | Free | 4 deps · 2 files |
