All files / spotlight-tour/src/components/Arrow Arrow.tsx

100% Statements 3/3
100% Branches 0/0
100% Functions 1/1
100% Lines 3/3

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38                                                135x 135x                     2x  
import * as React from "react";
import { clsx } from "clsx";
import styles from "./Arrow.module.scss";
 
/** Props for the internal {@link Arrow}. */
export interface ArrowProps {
  /** Anchor x, relative to the tooltip's top-left (from the engine). */
  x: number;
  /** Anchor y, relative to the tooltip's top-left (from the engine). */
  y: number;
  /** Resolved tooltip placement (orients the visible tip's border). */
  placement: string;
  /** Extra class (`classNames.arrow`). */
  className?: string;
}
 
/**
 * The tooltip arrow: a rotated square centered on the engine-computed anchor
 * point, which always lies on the tooltip edge facing the target. Purely
 * decorative (`aria-hidden`).
 *
 * @internal Rendered by the default tooltip UI; not part of the public API.
 */
export function Arrow(props: ArrowProps): React.ReactNode {
  const { x, y, placement, className } = props;
  return (
    <div
      className={clsx(styles.arrow, className)}
      style={{ left: x, top: y }}
      data-placement={placement}
      data-tour-arrow=""
      aria-hidden="true"
    />
  );
}
 
Arrow.displayName = "SpotlightTourArrow";