💄(frontend) add dark variant prop to Popover primitive

Add dark variant following same approach as Menu component. Not ideal
as light/dark pattern differs from primary/primaryDark variants used
elsewhere.

Quick implementation that will be refactored during UI v2 migration for
better consistency across component variants.
This commit is contained in:
lebaudantoine
2025-08-21 11:20:49 +02:00
committed by aleb_the_flash
parent ac88c046dc
commit 8f28a46a5f

View File

@@ -46,6 +46,18 @@ const StyledOverlayArrow = styled(OverlayArrow, {
transform: 'rotate(180deg) translateY(-1px)', transform: 'rotate(180deg) translateY(-1px)',
}, },
}, },
variants: {
variant: {
light: {},
dark: {
fill: 'primaryDark.50',
stroke: 'primaryDark.50',
},
},
},
defaultVariants: {
variant: 'light',
},
}) })
/** /**
@@ -56,6 +68,7 @@ const StyledOverlayArrow = styled(OverlayArrow, {
*/ */
export const Popover = ({ export const Popover = ({
children, children,
variant = 'light',
...dialogProps ...dialogProps
}: { }: {
children: [ children: [
@@ -64,20 +77,21 @@ export const Popover = ({
| (({ close }: { close: () => void }) => ReactNode) | (({ close }: { close: () => void }) => ReactNode)
| ReactNode, | ReactNode,
] ]
variant?: 'dark' | 'light'
} & DialogProps) => { } & DialogProps) => {
const [trigger, popoverContent] = children const [trigger, popoverContent] = children
return ( return (
<DialogTrigger> <DialogTrigger>
{trigger} {trigger}
<StyledPopover> <StyledPopover>
<StyledOverlayArrow> <StyledOverlayArrow variant={variant}>
<svg width={12} height={12} viewBox="0 0 12 12"> <svg width={12} height={12} viewBox="0 0 12 12">
<path d="M0 0 L6 6 L12 0" /> <path d="M0 0 L6 6 L12 0" />
</svg> </svg>
</StyledOverlayArrow> </StyledOverlayArrow>
<Dialog {...dialogProps}> <Dialog {...dialogProps}>
{({ close }) => ( {({ close }) => (
<Box size="sm" type="popover"> <Box size="sm" type="popover" variant={variant}>
{typeof popoverContent === 'function' {typeof popoverContent === 'function'
? popoverContent({ close }) ? popoverContent({ close })
: popoverContent} : popoverContent}