Floating Arrow
Renders a customizable <svg>
pointing arrow triangle
inside the floating element that gets automatically positioned.
Usage
- Create an arrowRef and
pass it to the arrow middleware’s
element
option and the<FloatingArrow />
component. This lets the arrow be measured for positioning. - Pass the context to the
<FloatingArrow />
component. This lets the component read the positioning data.
The arrow will, by default, overlap the reference element. The
height
of the arrow will offset it by the desired
amount.
This does not take into account tip rounding or strokes.
Props
The arrow accepts all the props of an <svg>
element, plus
some additional props:
ref
context
The context
object returned from useFloating()
.
width
default: 14
The width of the arrow.
height
default: 7
The height of the arrow.
tipRadius
default: 0
(sharp)
The radius (rounding) of the arrow tip.
staticOffset
default: undefined
(use dynamic position)
A static offset override of the arrow from the floating element
edge. Often desirable if the floating element is smaller than the
reference element along the relevant axis and has an edge
alignment ('start'
/'end'
).
d
default: undefined
(use dynamic path)
A custom path for the arrow. Useful if you want fancy rounding.
The path should be inside a square SVG and placed at the bottom
of it. The path is designed for the 'bottom'
placement,
which will be rotated for other placements.
fill
default: "black"
(browser default)
The color of the arrow.
stroke
default: "none"
The stroke (border) color of the arrow. This must match (or be less than) the floating element’s border width.
strokeWidth
default: 0
The stroke (border) width of the arrow.
Tailwind and utility CSS styling
fill-*
sets the arrow’s fill color.[&>path:first-of-type]
targets the “stroke” path.[&>path:last-of-type]
targets the “fill” path’s extra stroke, to reduce gaps.
strokeWidth
should still be manually specified as a
prop.
Scale transforms
When animating the floating element’s scale, it looks best if the
floating element’s transform-origin
is at the tip of the arrow.
The arrow
middleware provides data to achieve this.