"use client" import * as React from "react" // --- Tiptap UI Primitive --- import { Tooltip, TooltipContent, TooltipTrigger, } from "@/components/tiptap-ui-primitive/tooltip" // --- Lib --- import { cn, parseShortcutKeys } from "@/lib/tiptap-utils" import "@/components/tiptap-ui-primitive/button/button-colors.scss" import "@/components/tiptap-ui-primitive/button/button-group.scss" import "@/components/tiptap-ui-primitive/button/button.scss" export interface ButtonProps extends React.ButtonHTMLAttributes { className?: string showTooltip?: boolean tooltip?: React.ReactNode shortcutKeys?: string } export const ShortcutDisplay: React.FC<{ shortcuts: string[] }> = ({ shortcuts, }) => { if (shortcuts.length === 0) return null return (
{shortcuts.map((key, index) => ( {index > 0 && +} {key} ))}
) } export const Button = React.forwardRef( ( { className, children, tooltip, showTooltip = true, shortcutKeys, "aria-label": ariaLabel, ...props }, ref ) => { const shortcuts = React.useMemo( () => parseShortcutKeys({ shortcutKeys }), [shortcutKeys] ) if (!tooltip || !showTooltip) { return ( ) } return ( {children} {tooltip} ) } ) Button.displayName = "Button" export const ButtonGroup = React.forwardRef< HTMLDivElement, React.ComponentProps<"div"> & { orientation?: "horizontal" | "vertical" } >(({ className, children, orientation = "vertical", ...props }, ref) => { return (
{children}
) }) ButtonGroup.displayName = "ButtonGroup" export default Button