import { Chip as MantineChip, Group as MantineGroup, Tooltip as MantineTooltip, } from "@mantine/core"; import { assertEmpty } from "@blocknote/core"; import { ComponentProps } from "@blocknote/react"; import { MouseEvent, forwardRef, useState } from "react"; import { TooltipContent } from "../toolbar/ToolbarButton.js"; export const Badge = forwardRef< HTMLInputElement, ComponentProps["Generic"]["Badge"]["Root"] >((props, ref) => { const { className, text, icon, isSelected, mainTooltip, secondaryTooltip, onClick, onMouseEnter, ...rest } = props; // false, because rest props can be added by mantine when chip is used as a trigger // assertEmpty in this case is only used at typescript level, not runtime level assertEmpty(rest, false); const [hideTooltip, setHideTooltip] = useState(false); const badge = ( setHideTooltip(false), onClick: (event: MouseEvent) => { setHideTooltip(true); onClick?.(event); }, }} variant={"light"} icon={null} ref={ref} > {icon} {text} ); if (!mainTooltip || hideTooltip) { return badge; } return ( } > {badge} ); }); export const BadgeGroup = forwardRef< HTMLDivElement, ComponentProps["Generic"]["Badge"]["Group"] >((props, ref) => { const { className, children, ...rest } = props; assertEmpty(rest); return ( {children} ); });