import { useBlockProps, RichText } from "@wordpress/block-editor";
const Icon = ({ iconEnable, iconSource, iconSourceCustom, iconOverlayEnable, iconHoverEffects, currentIcon }) => {
if (!iconEnable || (iconSource === "library" && !currentIcon) || (iconSource === "custom" && !iconSourceCustom)) {
return null;
}
return (
{iconSource === "library" ? (
) : (
)}
);
};
const Title = ({
titleTag,
titleText,
titleHoverEffects,
subTitleEnable,
subTitleTag,
subTitleText,
titleEnable,
titleGlobalTypography,
subTitleGlobalTypography,
}) => {
if (!titleEnable) {
return null;
}
return (
{subTitleEnable && (
)}
);
};
const Description = ({ descText, dropCapsEnable, descriptionEnable, desGlobalTypography }) => {
if (!descriptionEnable) {
return null;
}
return (
);
};
const Rating = ({
iconsNum,
ratingIconSource,
ratingIconSourceLibrary,
ratingValueEnable,
scale,
ratingEnable,
ratingGlobalTypography,
currentRatingIconSourceLibrary,
}) => {
if (!ratingEnable) {
return null;
}
const ratingIcons = Array(iconsNum).fill(null);
return (
{ratingIcons.map((_, index) => (
))}
{ratingIcons.map((_, index) => (
))}
{ratingValueEnable &&
{scale}/5}
);
};
const Separator = ({ separatorEnable }) => {
if (!separatorEnable) {
return null;
}
return ;
};
const CallToActionIcon = ({
buttonIconEnable,
cAIconSource,
cAIconSourceLibrary,
cAIconSourceCustom,
currentCAIcon,
}) => {
if (!buttonIconEnable) {
return null;
}
if (cAIconSource === "library" && cAIconSourceLibrary) {
return (
);
}
// Custom image icon rendering
if (cAIconSource === "custom" && cAIconSourceCustom?.url) {
return (
);
}
return null;
};
const CallToActionText = ({ caButtonText }) => {
const buttonTextWithDefault = caButtonText?.trim() || "Learn More";
return (
);
};
const CallToActionButton = ({
linkingType = "button",
caButtonText,
buttonIconEnable,
cAIconSource,
cAIconSourceLibrary,
cAIconSourceCustom,
buttonLink,
openNewTab,
callActionGlobalTypography,
callActionEnable,
currentCAIcon,
}) => {
if (!callActionEnable) {
return null;
}
if (linkingType === "fullBox") {
return null;
}
return (
);
};
const Badge = ({ badgeEnable, badgeLabel, badgePosition, badgeGlobalTypography }) => {
if (!badgeEnable || !badgeLabel) {
return null;
}
return (
{badgeLabel}
);
};
const Overlay = ({ infoBoxBg, imageOverlayEnable, imageOverlayHoverEnable }) => {
const shouldShowOverlay =
(infoBoxBg.color.style === "image" || infoBoxBg.hover.style === "image") &&
(imageOverlayEnable || imageOverlayHoverEnable);
if (!shouldShowOverlay) {
return null;
}
return ;
};
const SmartInfoBoxSave = ({ attributes, clientId, name }) => {
const {
uniqueId,
infoBoxLayout,
iconEnable,
iconSource,
iconSourceLibrary,
iconHoverEffects,
iconSourceCustom,
iconOverlayEnable,
titleTag,
titleText,
subTitleTag,
subTitleText,
subTitleEnable,
separatorEnable,
titleHoverEffects,
caButtonText,
infoBoxBg,
descText,
descriptionEnable,
dropCapsEnable,
badgeEnable,
badgeLabel,
badgePosition,
ratingEnable,
ratingIconSourceLibrary,
ratingIconSource,
cAIconSourceCustom,
scale,
linkingType,
titleEnable,
buttonIconEnable,
cAIconSource,
cAIconSourceLibrary,
overlayOnHover,
externalLinkIcon,
callActionEnable,
ratingValueEnable,
imageOverlayEnable,
imageOverlayHoverEnable,
advancedAdditionalClass,
iconName,
buttonLink,
openNewTab,
additionalCssClass,
titleGlobalTypography,
subTitleGlobalTypography,
desGlobalTypography,
callToActionGlobalTypography,
ratingGlobalTypography,
badgeGlobalTypography,
currentIcon,
currentCAIcon,
currentRatingIconSourceLibrary,
} = attributes;
const blockProps = useBlockProps.save({
className: additionalCssClass,
});
const iconsNum = 5;
const layoutOne = () => {
return (
<>
>
);
};
const layoutTwo = () => {
return (
<>
{infoBoxLayout === "smart-info-box-layout-two" && (
)}
{infoBoxLayout === "smart-info-box-layout-four" && (
)}
{infoBoxLayout === "smart-info-box-layout-two" && (
)}
{infoBoxLayout === "smart-info-box-layout-four" && (
)}
>
);
};
const layoutThree = () => {
return (
<>
>
);
};
return (
);
};
export default SmartInfoBoxSave;