Skip to content

API reference

type Pin = {
top: number;
left: number;
id?: string | number;
};

top and left are percentages (0–100) of the visible image content box.

Used with custom pin components on the composite ImagePinner:

type PinnerComponentProps = {
top: number;
left: number;
itemNumber: number;
};

Props passed to ImagePinner.Image’s render function (spread onto <img />):

type ImagePinnerImageRenderProps = ComponentPropsWithoutRef<"img"> & {
ref: Ref<HTMLImageElement>;
"data-react-image-pinner-image"?: "";
};

A convenience wrapper. Combines Root, Image, Overlay, and `Item.

PropTypeDescription
srcstringImage URL.
pinsT[] where T extends PinPin list.
onAddPin(pin: Pin) => voidCalled when the user clicks the image to add a pin (optional).
pinnerComponentComponentType<PinnerComponentProps & T>Custom pin UI (optional).
altstringImage alt text (default "").
imageClassNamestringClass on the <img> (default "").
containerClassNamestringClass on the outer wrapper.
renderDefaultPinner(itemNumber: number, pin: T) => ReactElementFallback when pinnerComponent is omitted.
renderImage(props: ImagePinnerImageRenderProps) => ReactElementSame as ImagePinner.Image render.

Context provider and relative wrapper (data-react-image-pinner). Renders a <div> element.

PropType
pinsT[]
onAddPin(pin: Pin) => void (optional)
childrenReactNode
classNamestring (optional)
styleCSSProperties (optional)

Registers the image, handles resize, and click-to-add when onAddPin is set. Renders an <img> element.

PropType
render(props: ImagePinnerImageRenderProps) => ReactElement (optional)

Absolutely positioned overlay aligned to the image for rendering items. Renders a <div> element.

Single pin container. Positions children at pin.left% / pin.top% with translate(-50%, -50%). Renders a <div> element.

PropType
pinPin

Maps pins from context. Renders each pin with <ImagePinner.Item>.

PropType
render({ pin, itemNumber }) => ReactNode
getKey(pin, itemNumber) => string | number (optional)

Small numbered circle fallback (itemNumber is 0-based). Renders a <span> element.


Returns { left, top, width, height } of the image content as drawn. For advanced layout outside the provided overlay.