Components
Popover
Displays rich content in a portal, triggered by a button.
This component is made on top of Radix UIs Popover Component with our styling conventions. This component has been shared with you, ensuring that all its native properties are accessible. If you need to apply your own styling you can use the isBarebone
(to remove styling from entire component and its subcomponents) or isUnstyled
(to remove styling from a particular subcomponent).
Anatomy
Import all parts and piece them together.
import {
Popover,
PopoverTrigger,
PopoverContent,
PopverClose,
} from "@rafty/ui";
<Popover>
<PopoverTrigger />
<PopoverContent>
<PopverClose />
</PopoverContent>
</Popover>;
Usage
<Popover>
<PopoverTrigger>
Open
</PopoverTrigger>
<PopoverContent className="!w-96 space-y-3">
<Text>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore.
</Text>
<div className="flex justify-end gap-3">
<Button size="sm">
Button
</Button>
<Button
colorScheme="primary"
size="sm"
>
Button
</Button>
</div>
</PopoverContent>
</Popover>
Size
There are 3 size
options in popover: sm
, md
(default) & lg
<Popover size="sm">
<PopoverTrigger>
Open
</PopoverTrigger>
<PopoverContent className="!w-96 space-y-3">
<Text>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore.
</Text>
<div className="flex justify-end gap-3">
<Button size="sm">
Button
</Button>
<Button
colorScheme="primary"
size="sm"
>
Button
</Button>
</div>
</PopoverContent>
</Popover>
Open
To manage open state of popover you can use open
prop and to open popover by default pass defaultOpen
prop.
<Popover open>
<PopoverTrigger>
Open
</PopoverTrigger>
<PopoverContent className="!w-96 space-y-3">
<Text>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore.
</Text>
<div className="flex justify-end gap-3 py-1">
<Button
colorScheme="success"
size="sm"
>
Demo 1
</Button>
<Button
colorScheme="error"
size="sm"
>
Demo 2
</Button>
</div>
</PopoverContent>
</Popover>
ShowArrow
To make arrow on top of content visible you can use showArrow
prop. It is a boolean type prop whose default value is false
.
<Popover>
<PopoverTrigger>
Open
</PopoverTrigger>
<PopoverContent
className="!w-96"
showArrow
>
<Text>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore.
</Text>
<div className="mt-3 flex justify-end gap-3 py-1">
<Button
colorScheme="success"
size="sm"
>
Demo 1
</Button>
<Button
colorScheme="error"
size="sm"
>
Demo 2
</Button>
</div>
</PopoverContent>
</Popover>
Barebone
Pass isBarebone
prop to remove all style in popover.
<Popover isBarebone>
<PopoverTrigger
className="rounded-md bg-slate-100 px-4 py-2 hover:bg-slate-100 hover:text-purple-600 dark:bg-zinc-700 dark:text-white dark:hover:bg-zinc-500"
size="lg"
>
Open
</PopoverTrigger>
<PopoverContent className="bg-secondary-50 w-[300px] space-y-4 rounded-lg p-4 shadow-lg dark:bg-stone-950">
<Text>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore.
</Text>
<div className="flex justify-end gap-3">
<Button
className="!bg-green-300 !text-black"
size="sm"
>
Demo 1
</Button>
<Button
className="!bg-blue-300 !text-black"
size="sm"
>
Demo 2
</Button>
</div>
</PopoverContent>
</Popover>
API
Root
Property | Description | Type | Default |
---|---|---|---|
isBarebone | boolean | false |
Trigger
Property | Description | Type | Default |
---|---|---|---|
isUnstyled | Removes style from component | boolean | false |
Content
Property | Description | Type | Default |
---|---|---|---|
isUnstyled | Removes style from component | boolean | false |
showArrow | Set Arrow visibility | boolean | false |