components/elements/CircleInfographic/CircleInfographic.jsxjavascript
import "./CircleInfographic.scss";
import { useState } from "react";
import { Circle } from "./Circle";
import "@ui-marcom/icon";
/**
* Interactive four-circle service infographic ("circleInfographic" element
* type): tapping a circle opens its detail {@link Card} and blurs the rest.
* Expects exactly four entries; render order is fixed to match the layout.
*
* @param {Object} props
* @param {Array<{text: string, icons: Array<{small: string, big: string}>, card: {headline: string|null, text: string|null, underline: string|null}}>} props.circle - The four circle definitions.
* @param {string} props.headline - Label shown in the center of the ring.
*/
const ARROW_BLACK = "/assets/icons/es_rad_impact-arrow-1.svg";
const ARROW_BLUE = "/assets/icons/es_rad_impact-arrow-2.svg";
const ARROW_ORANGE = "/assets/icons/es_rad_impact-arrow-3.svg";
export const CircleInfographic = ({ circle, qrcode, headline }) => {
const [blur, setBlur] = useState(false);
const handleCircleSelect = () => {
setBlur(true);
};
return (
<div className={`infographic-container ${blur ? "blur" : ""}`}>
<div className={`circle-container`}>
<Circle
text={circle[0].text}
card={circle[0].card}
icons={circle[0].icons}
color={"black"}
handleCircleSelect={handleCircleSelect}
close={() => setBlur(false)}
/>
<img src={ARROW_BLACK} className="arrow--black" />
<Circle
text={circle[1].text}
card={circle[1].card}
icons={circle[1].icons}
color={"blue"}
handleCircleSelect={handleCircleSelect}
close={() => setBlur(false)}
/>
<img src={ARROW_BLUE} className="arrow--blue" />
<Circle
text={circle[3].text}
card={circle[3].card}
icons={circle[3].icons}
color={"white"}
handleCircleSelect={handleCircleSelect}
close={() => setBlur(false)}
/>
<img src={ARROW_ORANGE} className="arrow--orange" />
<Circle
text={circle[2].text}
card={circle[2].card}
icons={circle[2].icons}
color={"orange"}
handleCircleSelect={handleCircleSelect}
close={() => setBlur(false)}
/>
<div className="infographic--headlinecontainer">
<h3 className="infographic--headline">{headline}</h3>
</div>
</div>
<img className="infographic__qrcode" src={qrcode} alt="" />
</div>
);
};