JSFiddle - React, Tailwind, and code Playground
HTML
<div id="button" style="background:#98cb00">Click Me</div>
JavaScript
(function($){$.fn.illuminate=function(options){var defaults={intensity:"0.05",color:"",blink:"true",blinkSpeed:"600",outerGlow:"true",outerGlowSize:"30px",outerGlowColor:""};var options=$.extend(defaults,options);var original_color="";var new_color="";var dead=false;$.fn.illuminateDie=function(){dead=true;options.intensity="0.05";options.color="";options.blink="true";options.blinkSpeed="600";options.outerGlow="true";options.outerGlowSize="30px";options.outerGlowColor="";$(this).css({"boxShadow":"0px 0px 0px","background-color":"#"+original_color});};function toggleIllumination(obj,original_color,new_color,outerGlow){if(rgb2hex(obj.css("background-color")).toUpperCase()==original_color.toUpperCase()){obj.animate({"background-color":"#"+new_color,"boxShadowBlur":outerGlow},parseInt(options.blinkSpeed),function(){if(!dead){toggleIllumination($(this),original_color,new_color,outerGlow);}});}if(rgb2hex(obj.css("background-color")).toUpperCase()==new_color.toUpperCase()){obj.animate({"background-color":"#"+original_color,"boxShadowBlur":"0px"},parseInt(options.blinkSpeed),function(){if(!dead){toggleIllumination($(this),original_color,new_color,outerGlow);}});}}function colorAdd(hex,percent){percentHex=parseInt(Math.round(parseFloat(percent)*16));return hexAdd(hex[0],percentHex)+hexAdd(hex[1],percentHex)+hexAdd(hex[2],percentHex)+hexAdd(hex[3],percentHex)+hexAdd(hex[4],percentHex)+hexAdd(hex[5],percentHex);}function hexAdd(val,val2){result=parseInt(val,16)+val2;if(result>15){return"F";}return result.toString(16).toUpperCase();}function rgb2hex(rgb){rgb=rgb.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);function hex(x){return("0"+parseInt(x).toString(16)).slice(-2);}return hex(rgb[1])+hex(rgb[2])+hex(rgb[3]);}return...