"use client"; import { Typography, TypographyProps } from "@mui/joy"; import { MouseEvent } from "react"; import { hasClickableParent } from "@stackframe/stack-shared/dist/utils/dom"; import { getNodeText } from "@stackframe/stack-shared/dist/utils/react"; import { useSnackbar } from "@/hooks/use-snackbar"; import { runAsynchronously } from "@stackframe/stack-shared/dist/utils/promises"; export function InlineCode(props: TypographyProps<"code">) { const { onClick, style, ...typographyProps } = props; const snackbar = useSnackbar(); return ( ) => { onClick?.(e); if (!hasClickableParent(e.currentTarget)) { e.stopPropagation(); e.preventDefault(); runAsynchronously(async () => { try { await navigator.clipboard.writeText(getNodeText(props.children)); snackbar.showSuccess('Copied to clipboard!'); } catch (e) { snackbar.showError('Failed to copy to clipboard!'); } }); } }} /> ); }