UNPKG

grab-url

Version:

📥 Generate Request to API from Browser

314 lines • 71.6 kB
// Do a Barrel Roll (auto-generated) index of SVG icons as JS exports, tree shaking to only the icons used.

/**
* Returns a customized SVG string for icon loading-bouncy-ball
*
* ![loading-bouncy-ball](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHN0eWxlPSJzaGFwZS1yZW5kZXJpbmc6IGF1dG87IGRpc3BsYXk6IGJsb2NrOyAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48Zz48Y2lyY2xlIGZpbGw9IiNlMTViNjQiIHI9IjEzIiBjeT0iMjMiIGN4PSI1MCI+CiAgPGFuaW1hdGUgdmFsdWVzPSIyMzs3NzsyMyIga2V5VGltZXM9IjA7MC41OzEiIGtleVNwbGluZXM9IjAuNDUgMCAwLjkgMC41NTswIDAuNDUgMC41NSAwLjkiIGNhbGNNb2RlPSJzcGxpbmUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiBhdHRyaWJ1dGVOYW1lPSJjeSI+PC9hbmltYXRlPgo8L2NpcmNsZT48Zz48L2c+PC9nPjwvc3ZnPg==)
* @param {Object} options - Configuration options
* @param {string[]} [options.colors] - Array of hex colors to replace existing colors
* @param {number} [options.width] - Width of the SVG (default: 200)
* @param {number} [options.height] - Height of the SVG (default: 200)
* @param {number} [options.size] - Size for both width and height
* @example loadingBouncyBall({ colors: ['#0099e5', '#ff4c4c'], size: 100 });
* @returns {string} SVG string with applied customizations
*/
export const loadingBouncyBall = (options: LoadingOptions = {}) => customSVG(options, 
`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" width="200" height="200" style="shape-rendering: auto; display: block; "><g><circle fill="#e15b64" r="13" cy="23" cx="50"><animate values="23;77;23" keyTimes="0;0.5;1" keySplines="0.45 0 0.9 0.55;0 0.45 0.55 0.9" calcMode="spline" repeatCount="indefinite" dur="1s" attributeName="cy"></animate></circle><g></g></g></svg>`);

/**
* Returns a customized SVG string for icon loading-double-ring
*
* ![loading-double-ring](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHN0eWxlPSJzaGFwZS1yZW5kZXJpbmc6IGF1dG87IGRpc3BsYXk6IGJsb2NrOyAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48Zz48Y2lyY2xlIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgZmlsbD0ibm9uZSIgc3Ryb2tlLWRhc2hhcnJheT0iNTAuMjY1NDgyNDU3NDM2NjkgNTAuMjY1NDgyNDU3NDM2NjkiIHN0cm9rZT0iIzAwOTllNSIgc3Ryb2tlLXdpZHRoPSI4IiByPSIzMiIgY3k9IjUwIiBjeD0iNTAiPgogIDxhbmltYXRlVHJhbnNmb3JtIHZhbHVlcz0iMCA1MCA1MDszNjAgNTAgNTAiIGtleVRpbWVzPSIwOzEiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB0eXBlPSJyb3RhdGUiIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSI+PC9hbmltYXRlVHJhbnNmb3JtPgo8L2NpcmNsZT4KPGNpcmNsZSBzdHJva2UtbGluZWNhcD0icm91bmQiIGZpbGw9Im5vbmUiIHN0cm9rZS1kYXNob2Zmc2V0PSIzNi4xMjgzMTU1MTYyODI2MiIgc3Ryb2tlLWRhc2hhcnJheT0iMzYuMTI4MzE1NTE2MjgyNjIgMzYuMTI4MzE1NTE2MjgyNjIiIHN0cm9rZT0iI2ZmNGM0YyIgc3Ryb2tlLXdpZHRoPSI4IiByPSIyMyIgY3k9IjUwIiBjeD0iNTAiPgogIDxhbmltYXRlVHJhbnNmb3JtIHZhbHVlcz0iMCA1MCA1MDstMzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgZHVyPSIxcyIgdHlwZT0icm90YXRlIiBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iPjwvYW5pbWF0ZVRyYW5zZm9ybT4KPC9jaXJjbGU+PGc+PC9nPjwvZz48L3N2Zz4=)
* @param {Object} options - Configuration options
* @param {string[]} [options.colors] - Array of hex colors to replace existing colors
* @param {number} [options.width] - Width of the SVG (default: 200)
* @param {number} [options.height] - Height of the SVG (default: 200)
* @param {number} [options.size] - Size for both width and height
* @example loadingDoubleRing({ colors: ['#0099e5', '#ff4c4c'], size: 100 });
* @returns {string} SVG string with applied customizations
*/
export const loadingDoubleRing = (options: LoadingOptions = {}) => customSVG(options, 
`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" width="200" height="200" style="shape-rendering: auto; display: block; "><g><circle stroke-linecap="round" fill="none" stroke-dasharray="50.26548245743669 50.26548245743669" stroke="#0099e5" stroke-width="8" r="32" cy="50" cx="50"><animateTransform values="0 50 50;360 50 50" keyTimes="0;1" repeatCount="indefinite" dur="1s" type="rotate" attributeName="transform"></animateTransform></circle><circle stroke-linecap="round" fill="none" stroke-dashoffset="36.12831551628262" stroke-dasharray="36.12831551628262 36.12831551628262" stroke="#ff4c4c" stroke-width="8" r="23" cy="50" cx="50"><animateTransform values="0 50 50;-360 50 50" keyTimes="0;1" repeatCount="indefinite" dur="1s" type="rotate" attributeName="transform"></animateTransform></circle><g></g></g></svg>`);

/**
* Returns a customized SVG string for icon loading-eclipse
*
* ![loading-eclipse](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHN0eWxlPSJzaGFwZS1yZW5kZXJpbmc6IGF1dG87IGRpc3BsYXk6IGJsb2NrOyI+PGc+PHBhdGggc3Ryb2tlPSJub25lIiBmaWxsPSIjZmZiOTAwIiBkPSJNMTAgNTBBNDAgNDAgMCAwIDAgOTAgNTBBNDAgNDIgMCAwIDEgMTAgNTAiPgogIDxhbmltYXRlVHJhbnNmb3JtIHZhbHVlcz0iMCA1MCA1MTszNjAgNTAgNTEiIGtleVRpbWVzPSIwOzEiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB0eXBlPSJyb3RhdGUiIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSI+PC9hbmltYXRlVHJhbnNmb3JtPgo8L3BhdGg+PGc+PC9nPjwvZz48L3N2Zz4=)
* @param {Object} options - Configuration options
* @param {string[]} [options.colors] - Array of hex colors to replace existing colors
* @param {number} [options.width] - Width of the SVG (default: 200)
* @param {number} [options.height] - Height of the SVG (default: 200)
* @param {number} [options.size] - Size for both width and height
* @example loadingEclipse({ colors: ['#0099e5', '#ff4c4c'], size: 100 });
* @returns {string} SVG string with applied customizations
*/
export const loadingEclipse = (options: LoadingOptions = {}) => customSVG(options, 
`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" width="200" height="200" style="shape-rendering: auto; display: block;"><g><path stroke="none" fill="#ffb900" d="M10 50A40 40 0 0 0 90 50A40 42 0 0 1 10 50"><animateTransform values="0 50 51;360 50 51" keyTimes="0;1" repeatCount="indefinite" dur="1s" type="rotate" attributeName="transform"></animateTransform></path><g></g></g></svg>`);

/**
* Returns a customized SVG string for icon loading-ellipsis
*
* ![loading-ellipsis](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHN0eWxlPSJzaGFwZS1yZW5kZXJpbmc6IGF1dG87IGRpc3BsYXk6IGJsb2NrOyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxnPjxjaXJjbGUgZmlsbD0iI2QyMDk2MiIgcj0iMTAiIGN5PSI1MCIgY3g9Ijg0Ij4KICAgIDxhbmltYXRlIGJlZ2luPSIwcyIga2V5U3BsaW5lcz0iMCAwLjUgMC41IDEiIHZhbHVlcz0iMTA7MCIga2V5VGltZXM9IjA7MSIgY2FsY01vZGU9InNwbGluZSIgZHVyPSIwLjI1cyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGF0dHJpYnV0ZU5hbWU9InIiPjwvYW5pbWF0ZT4KICAgIDxhbmltYXRlIGJlZ2luPSIwcyIgdmFsdWVzPSIjZDIwOTYyOyMwMGE3OGU7IzdhYzE0MzsjZjQ3NzIxOyNkMjA5NjIiIGtleVRpbWVzPSIwOzAuMjU7MC41OzAuNzU7MSIgY2FsY01vZGU9ImRpc2NyZXRlIiBkdXI9IjFzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgYXR0cmlidXRlTmFtZT0iZmlsbCI+PC9hbmltYXRlPgo8L2NpcmNsZT48Y2lyY2xlIGZpbGw9IiNkMjA5NjIiIHI9IjEwIiBjeT0iNTAiIGN4PSIxNiI+CiAgPGFuaW1hdGUgYmVnaW49IjBzIiBrZXlTcGxpbmVzPSIwIDAuNSAwLjUgMTswIDAuNSAwLjUgMTswIDAuNSAwLjUgMTswIDAuNSAwLjUgMSIgdmFsdWVzPSIwOzA7MTA7MTA7MTAiIGtleVRpbWVzPSIwOzAuMjU7MC41OzAuNzU7MSIgY2FsY01vZGU9InNwbGluZSIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGF0dHJpYnV0ZU5hbWU9InIiPjwvYW5pbWF0ZT4KICA8YW5pbWF0ZSBiZWdpbj0iMHMiIGtleVNwbGluZXM9IjAgMC41IDAuNSAxOzAgMC41IDAuNSAxOzAgMC41IDAuNSAxOzAgMC41IDAuNSAxIiB2YWx1ZXM9IjE2OzE2OzE2OzUwOzg0IiBrZXlUaW1lcz0iMDswLjI1OzAuNTswLjc1OzEiIGNhbGNNb2RlPSJzcGxpbmUiIGR1cj0iMXMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBhdHRyaWJ1dGVOYW1lPSJjeCI+PC9hbmltYXRlPgo8L2NpcmNsZT48Y2lyY2xlIGZpbGw9IiNmNDc3MjEiIHI9IjEwIiBjeT0iNTAiIGN4PSI1MCI+CiAgPGFuaW1hdGUgYmVnaW49Ii0wLjI1cyIga2V5U3BsaW5lcz0iMCAwLjUgMC41IDE7MCAwLjUgMC41IDE7MCAwLjUgMC41IDE7MCAwLjUgMC41IDEiIHZhbHVlcz0iMDswOzEwOzEwOzEwIiBrZXlUaW1lcz0iMDswLjI1OzAuNTswLjc1OzEiIGNhbGNNb2RlPSJzcGxpbmUiIGR1cj0iMXMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBhdHRyaWJ1dGVOYW1lPSJyIj48L2FuaW1hdGU+CiAgPGFuaW1hdGUgYmVnaW49Ii0wLjI1cyIga2V5U3BsaW5lcz0iMCAwLjUgMC41IDE7MCAwLjUgMC41IDE7MCAwLjUgMC41IDE7MCAwLjUgMC41IDEiIHZhbHVlcz0iMTY7MTY7MTY7NTA7ODQiIGtleVRpbWVzPSIwOzAuMjU7MC41OzAuNzU7MSIgY2FsY01vZGU9InNwbGluZSIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGF0dHJpYnV0ZU5hbWU9ImN4Ij48L2FuaW1hdGU+CjwvY2lyY2xlPjxjaXJjbGUgZmlsbD0iIzdhYzE0MyIgcj0iMTAiIGN5PSI1MCIgY3g9Ijg0Ij4KICA8YW5pbWF0ZSBiZWdpbj0iLTAuNXMiIGtleVNwbGluZXM9IjAgMC41IDAuNSAxOzAgMC41IDAuNSAxOzAgMC41IDAuNSAxOzAgMC41IDAuNSAxIiB2YWx1ZXM9IjA7MDsxMDsxMDsxMCIga2V5VGltZXM9IjA7MC4yNTswLjU7MC43NTsxIiBjYWxjTW9kZT0ic3BsaW5lIiBkdXI9IjFzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgYXR0cmlidXRlTmFtZT0iciI+PC9hbmltYXRlPgogIDxhbmltYXRlIGJlZ2luPSItMC41cyIga2V5U3BsaW5lcz0iMCAwLjUgMC41IDE7MCAwLjUgMC41IDE7MCAwLjUgMC41IDE7MCAwLjUgMC41IDEiIHZhbHVlcz0iMTY7MTY7MTY7NTA7ODQiIGtleVRpbWVzPSIwOzAuMjU7MC41OzAuNzU7MSIgY2FsY01vZGU9InNwbGluZSIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGF0dHJpYnV0ZU5hbWU9ImN4Ij48L2FuaW1hdGU+CjwvY2lyY2xlPjxjaXJjbGUgZmlsbD0iIzAwYTc4ZSIgcj0iMTAiIGN5PSI1MCIgY3g9IjE2Ij4KICA8YW5pbWF0ZSBiZWdpbj0iLTAuNzVzIiBrZXlTcGxpbmVzPSIwIDAuNSAwLjUgMTswIDAuNSAwLjUgMTswIDAuNSAwLjUgMTswIDAuNSAwLjUgMSIgdmFsdWVzPSIwOzA7MTA7MTA7MTAiIGtleVRpbWVzPSIwOzAuMjU7MC41OzAuNzU7MSIgY2FsY01vZGU9InNwbGluZSIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGF0dHJpYnV0ZU5hbWU9InIiPjwvYW5pbWF0ZT4KICA8YW5pbWF0ZSBiZWdpbj0iLTAuNzVzIiBrZXlTcGxpbmVzPSIwIDAuNSAwLjUgMTswIDAuNSAwLjUgMTswIDAuNSAwLjUgMTswIDAuNSAwLjUgMSIgdmFsdWVzPSIxNjsxNjsxNjs1MDs4NCIga2V5VGltZXM9IjA7MC4yNTswLjU7MC43NTsxIiBjYWxjTW9kZT0ic3BsaW5lIiBkdXI9IjFzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgYXR0cmlidXRlTmFtZT0iY3giPjwvYW5pbWF0ZT4KPC9jaXJjbGU+PGc+PC9nPjwvZz48L3N2Zz4=)
* @param {Object} options - Configuration options
* @param {string[]} [options.colors] - Array of hex colors to replace existing colors
* @param {number} [options.width] - Width of the SVG (default: 200)
* @param {number} [options.height] - Height of the SVG (default: 200)
* @param {number} [options.size] - Size for both width and height
* @example loadingEllipsis({ colors: ['#0099e5', '#ff4c4c'], size: 100 });
* @returns {string} SVG string with applied customizations
*/
export const loadingEllipsis = (options: LoadingOptions = {}) => customSVG(options, 
`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" width="200" height="200" style="shape-rendering: auto; display: block;"><g><circle fill="#d20962" r="10" cy="50" cx="84"><animate begin="0s" keySplines="0 0.5 0.5 1" values="10;0" keyTimes="0;1" calcMode="spline" dur="0.25s" repeatCount="indefinite" attributeName="r"></animate><animate begin="0s" values="#d20962;#00a78e;#7ac143;#f47721;#d20962" keyTimes="0;0.25;0.5;0.75;1" calcMode="discrete" dur="1s" repeatCount="indefinite" attributeName="fill"></animate></circle><circle fill="#d20962" r="10" cy="50" cx="16"><animate begin="0s" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" values="0;0;10;10;10" keyTimes="0;0.25;0.5;0.75;1" calcMode="spline" dur="1s" repeatCount="indefinite" attributeName="r"></animate><animate begin="0s" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" values="16;16;16;50;84" keyTimes="0;0.25;0.5;0.75;1" calcMode="spline" dur="1s" repeatCount="indefinite" attributeName="cx"></animate></circle><circle fill="#f47721" r="10" cy="50" cx="50"><animate begin="-0.25s" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" values="0;0;10;10;10" keyTimes="0;0.25;0.5;0.75;1" calcMode="spline" dur="1s" repeatCount="indefinite" attributeName="r"></animate><animate begin="-0.25s" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" values="16;16;16;50;84" keyTimes="0;0.25;0.5;0.75;1" calcMode="spline" dur="1s" repeatCount="indefinite" attributeName="cx"></animate></circle><circle fill="#7ac143" r="10" cy="50" cx="84"><animate begin="-0.5s" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" values="0;0;10;10;10" keyTimes="0;0.25;0.5;0.75;1" calcMode="spline" dur="1s" repeatCount="indefinite" attributeName="r"></animate><animate begin="-0.5s" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" values="16;16;16;50;84" keyTimes="0;0.25;0.5;0.75;1" calcMode="spline" dur="1s" repeatCount="indefinite" attributeName="cx"></animate></circle><circle fill="#00a78e" r="10" cy="50" cx="16"><animate begin="-0.75s" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" values="0;0;10;10;10" keyTimes="0;0.25;0.5;0.75;1" calcMode="spline" dur="1s" repeatCount="indefinite" attributeName="r"></animate><animate begin="-0.75s" keySplines="0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1;0 0.5 0.5 1" values="16;16;16;50;84" keyTimes="0;0.25;0.5;0.75;1" calcMode="spline" dur="1s" repeatCount="indefinite" attributeName="cx"></animate></circle><g></g></g></svg>`);

/**
* Returns a customized SVG string for icon loading-floating-search
*
* ![loading-floating-search](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCIgd2lkdGg9IjMzOSIgaGVpZ2h0PSIzMzkiIHN0eWxlPSJzaGFwZS1yZW5kZXJpbmc6IGF1dG87IGRpc3BsYXk6IGJsb2NrOyAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48Zz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MCA1MCkiPgogIDxnIHRyYW5zZm9ybT0ic2NhbGUoMC42KSI+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNTAgLTUwKSI+CiAgICAgIDxnPgogICAgICAgIDxhbmltYXRlVHJhbnNmb3JtIGtleVRpbWVzPSIwOzAuMzM7MC42NjsxIiB2YWx1ZXM9Ii0yMCAtMjA7MjAgLTIwOzAgMjA7LTIwIC0yMCIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIHR5cGU9InRyYW5zbGF0ZSIgYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIj48L2FuaW1hdGVUcmFuc2Zvcm0+CiAgICAgICAgPHBhdGggZD0iTTQ0LjE5IDI2LjE1OGMtNC44MTcgMC05LjM0NSAxLjg3Ni0xMi43NTEgNS4yODJjLTMuNDA2IDMuNDA2LTUuMjgyIDcuOTM0LTUuMjgyIDEyLjc1MSBjMCA0LjgxNyAxLjg3NiA5LjM0NSA1LjI4MiAxMi43NTFjMy40MDYgMy40MDYgNy45MzQgNS4yODIgMTIuNzUxIDUuMjgyczkuMzQ1LTEuODc2IDEyLjc1MS01LjI4MiBjMy40MDYtMy40MDYgNS4yODItNy45MzQgNS4yODItMTIuNzUxYzAtNC44MTctMS44NzYtOS4zNDUtNS4yODItMTIuNzUxQzUzLjUzNiAyOC4wMzMgNDkuMDA3IDI2LjE1OCA0NC4xOSAyNi4xNTh6IiBmaWxsPSIjOWNjYmZiIj48L3BhdGg+CiAgICAgICAgPHBhdGggZD0iTTc4LjcxMiA3Mi40OTJMNjcuNTkzIDYxLjM3M2wtMy40NzUtMy40NzVjMS42MjEtMi4zNTIgMi43NzktNC45MjYgMy40NzUtNy41OTZjMS4wNDQtNC4wMDggMS4wNDQtOC4yMyAwLTEyLjIzOCBjLTEuMDQ4LTQuMDIyLTMuMTQ2LTcuODI3LTYuMjk3LTEwLjk3OUM1Ni41NzIgMjIuMzYyIDUwLjM4MSAyMCA0NC4xOSAyMEMzOCAyMCAzMS44MDkgMjIuMzYyIDI3LjA4NSAyNy4wODUgYy05LjQ0NyA5LjQ0Ny05LjQ0NyAyNC43NjMgMCAzNC4yMUMzMS44MDkgNjYuMDE5IDM4IDY4LjM4MSA0NC4xOSA2OC4zODFjNC43OTggMCA5LjU5My0xLjQyNSAxMy43MDgtNC4yNjJsOS42OTUgOS42OTUgbDQuODk5IDQuODk5QzczLjM1MSA3OS41NzEgNzQuNDc2IDgwIDc1LjYwMiA4MHMyLjI1MS0wLjQyOSAzLjExLTEuMjg4QzgwLjQyOSA3Ni45OTQgODAuNDI5IDc0LjIwOSA3OC43MTIgNzIuNDkyeiBNNTYuOTQyIDU2Ljk0MiBjLTMuNDA2IDMuNDA2LTcuOTM0IDUuMjgyLTEyLjc1MSA1LjI4MnMtOS4zNDUtMS44NzYtMTIuNzUxLTUuMjgyYy0zLjQwNi0zLjQwNi01LjI4Mi03LjkzNC01LjI4Mi0xMi43NTEgYzAtNC44MTcgMS44NzYtOS4zNDUgNS4yODItMTIuNzUxYzMuNDA2LTMuNDA2IDcuOTM0LTUuMjgyIDEyLjc1MS01LjI4MmM0LjgxNyAwIDkuMzQ1IDEuODc2IDEyLjc1MSA1LjI4MiBjMy40MDYgMy40MDYgNS4yODIgNy45MzQgNS4yODIgMTIuNzUxQzYyLjIyMyA0OS4wMDcgNjAuMzQ3IDUzLjUzNiA1Ni45NDIgNTYuOTQyeiIgZmlsbD0iIzBjMTNlOSI+PC9wYXRoPgogICAgICA8L2c+CiAgICA8L2c+CiAgPC9nPgo8L2c+PGc+PC9nPjwvZz48L3N2Zz4=)
* @param {Object} options - Configuration options
* @param {string[]} [options.colors] - Array of hex colors to replace existing colors
* @param {number} [options.width] - Width of the SVG (default: 339)
* @param {number} [options.height] - Height of the SVG (default: 339)
* @param {number} [options.size] - Size for both width and height
* @example loadingFloatingSearch({ colors: ['#0099e5', '#ff4c4c'], size: 100 });
* @returns {string} SVG string with applied customizations
*/
export const loadingFloatingSearch = (options: LoadingOptions = {}) => customSVG(options, 
`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" width="339" height="339" style="shape-rendering: auto; display: block; "><g><g transform="translate(50 50)"><g transform="scale(0.6)"><g transform="translate(-50 -50)"><g><animateTransform keyTimes="0;0.33;0.66;1" values="-20 -20;20 -20;0 20;-20 -20" dur="1s" repeatCount="indefinite" type="translate" attributeName="transform"></animateTransform><path d="M44.19 26.158c-4.817 0-9.345 1.876-12.751 5.282c-3.406 3.406-5.282 7.934-5.282 12.751 c0 4.817 1.876 9.345 5.282 12.751c3.406 3.406 7.934 5.282 12.751 5.282s9.345-1.876 12.751-5.282 c3.406-3.406 5.282-7.934 5.282-12.751c0-4.817-1.876-9.345-5.282-12.751C53.536 28.033 49.007 26.158 44.19 26.158z" fill="#9ccbfb"></path><path d="M78.712 72.492L67.593 61.373l-3.475-3.475c1.621-2.352 2.779-4.926 3.475-7.596c1.044-4.008 1.044-8.23 0-12.238 c-1.048-4.022-3.146-7.827-6.297-10.979C56.572 22.362 50.381 20 44.19 20C38 20 31.809 22.362 27.085 27.085 c-9.447 9.447-9.447 24.763 0 34.21C31.809 66.019 38 68.381 44.19 68.381c4.798 0 9.593-1.425 13.708-4.262l9.695 9.695 l4.899 4.899C73.351 79.571 74.476 80 75.602 80s2.251-0.429 3.11-1.288C80.429 76.994 80.429 74.209 78.712 72.492z M56.942 56.942 c-3.406 3.406-7.934 5.282-12.751 5.282s-9.345-1.876-12.751-5.282c-3.406-3.406-5.282-7.934-5.282-12.751 c0-4.817 1.876-9.345 5.282-12.751c3.406-3.406 7.934-5.282 12.751-5.282c4.817 0 9.345 1.876 12.751 5.282 c3.406 3.406 5.282 7.934 5.282 12.751C62.223 49.007 60.347 53.536 56.942 56.942z" fill="#0c13e9"></path></g></g></g></g><g></g></g></svg>`);

/**
* Returns a customized SVG string for icon loading-gears
*
* ![loading-gears](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHN0eWxlPSJzaGFwZS1yZW5kZXJpbmc6IGF1dG87IGRpc3BsYXk6IGJsb2NrOyAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48Zz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MCA1MCkiPgo8Zz4KPGFuaW1hdGVUcmFuc2Zvcm0gcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGR1cj0iMC4ycyIga2V5VGltZXM9IjA7MSIgdmFsdWVzPSIwOzQ1IiB0eXBlPSJyb3RhdGUiIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSI+PC9hbmltYXRlVHJhbnNmb3JtPjxwYXRoIGZpbGw9IiNmZDVjNjMiIGQ9Ik0yOS40OTE1MjQyMDYxMTcyNTUgLTUuNSBMMzcuNDkxNTI0MjA2MTE3MjU1IC01LjUgTDM3LjQ5MTUyNDIwNjExNzI1NSA1LjUgTDI5LjQ5MTUyNDIwNjExNzI1NSA1LjUgQTMwIDMwIDAgMCAxIDI0Ljc0Mjc0NDA1MDE5ODczOCAxNi45NjQ1Njk0NTcxNDY3MTIgTDI0Ljc0Mjc0NDA1MDE5ODczOCAxNi45NjQ1Njk0NTcxNDY3MTIgTDMwLjM5OTU5ODI5OTY5MTExNyAyMi42MjE0MjM3MDY2MzkwOTIgTDIyLjYyMTQyMzcwNjYzOTA5NiAzMC4zOTk1OTgyOTk2OTExMTQgTDE2Ljk2NDU2OTQ1NzE0NjcxNiAyNC43NDI3NDQwNTAxOTg3MzQgQTMwIDMwIDAgMCAxIDUuNSAyOS40OTE1MjQyMDYxMTcyNTUgTDUuNSAyOS40OTE1MjQyMDYxMTcyNTUgTDUuNSAzNy40OTE1MjQyMDYxMTcyNTUgTC01LjQ5OTk5OTk5OTk5OTk5NyAzNy40OTE1MjQyMDYxMTcyNTUgTC01LjQ5OTk5OTk5OTk5OTk5NyAyOS40OTE1MjQyMDYxMTcyNTUgQTMwIDMwIDAgMCAxIC0xNi45NjQ1Njk0NTcxNDY3MDUgMjQuNzQyNzQ0MDUwMTk4NzM4IEwtMTYuOTY0NTY5NDU3MTQ2NzA1IDI0Ljc0Mjc0NDA1MDE5ODczOCBMLTIyLjYyMTQyMzcwNjYzOTA4NSAzMC4zOTk1OTgyOTk2OTExMTcgTC0zMC4zOTk1OTgyOTk2OTExMTcgMjIuNjIxNDIzNzA2NjM5MDkyIEwtMjQuNzQyNzQ0MDUwMTk4NzM4IDE2Ljk2NDU2OTQ1NzE0NjcxMiBBMzAgMzAgMCAwIDEgLTI5LjQ5MTUyNDIwNjExNzI1NSA1LjUwMDAwMDAwMDAwMDAwOSBMLTI5LjQ5MTUyNDIwNjExNzI1NSA1LjUwMDAwMDAwMDAwMDAwOSBMLTM3LjQ5MTUyNDIwNjExNzI1NSA1LjUwMDAwMDAwMDAwMDAxIEwtMzcuNDkxNTI0MjA2MTE3MjU1IC01LjUwMDAwMDAwMDAwMDAwMSBMLTI5LjQ5MTUyNDIwNjExNzI1NSAtNS41MDAwMDAwMDAwMDAwMDIgQTMwIDMwIDAgMCAxIC0yNC43NDI3NDQwNTAxOTg3MzggLTE2Ljk2NDU2OTQ1NzE0NjcwNSBMLTI0Ljc0Mjc0NDA1MDE5ODczOCAtMTYuOTY0NTY5NDU3MTQ2NzA1IEwtMzAuMzk5NTk4Mjk5NjkxMTE3IC0yMi42MjE0MjM3MDY2MzkwODUgTC0yMi42MjE0MjM3MDY2MzkwOTIgLTMwLjM5OTU5ODI5OTY5MTExNyBMLTE2Ljk2NDU2OTQ1NzE0NjcxMiAtMjQuNzQyNzQ0MDUwMTk4NzM4IEEzMCAzMCAwIDAgMSAtNS41MDAwMDAwMDAwMDAwMTEgLTI5LjQ5MTUyNDIwNjExNzI1NSBMLTUuNTAwMDAwMDAwMDAwMDExIC0yOS40OTE1MjQyMDYxMTcyNTUgTC01LjUwMDAwMDAwMDAwMDAxMiAtMzcuNDkxNTI0MjA2MTE3MjU1IEw1LjQ5OTk5OTk5OTk5OTk5OCAtMzcuNDkxNTI0MjA2MTE3MjU1IEw1LjUgLTI5LjQ5MTUyNDIwNjExNzI1NSBBMzAgMzAgMCAwIDEgMTYuOTY0NTY5NDU3MTQ2NzAyIC0yNC43NDI3NDQwNTAxOTg3NCBMMTYuOTY0NTY5NDU3MTQ2NzAyIC0yNC43NDI3NDQwNTAxOTg3NCBMMjIuNjIxNDIzNzA2NjM5MDggLTMwLjM5OTU5ODI5OTY5MTEyIEwzMC4zOTk1OTgyOTk2OTExMTcgLTIyLjYyMTQyMzcwNjYzOTEgTDI0Ljc0Mjc0NDA1MDE5ODczOCAtMTYuOTY0NTY5NDU3MTQ2NzE2IEEzMCAzMCAwIDAgMSAyOS40OTE1MjQyMDYxMTcyNTUgLTUuNTAwMDAwMDAwMDAwMDEzIE0wIC0yMEEyMCAyMCAwIDEgMCAwIDIwIEEyMCAyMCAwIDEgMCAwIC0yMCI+PC9wYXRoPjwvZz48L2c+PGc+PC9nPjwvZz48L3N2Zz4=)
* @param {Object} options - Configuration options
* @param {string[]} [options.colors] - Array of hex colors to replace existing colors
* @param {number} [options.width] - Width of the SVG (default: 200)
* @param {number} [options.height] - Height of the SVG (default: 200)
* @param {number} [options.size] - Size for both width and height
* @example loadingGears({ colors: ['#0099e5', '#ff4c4c'], size: 100 });
* @returns {string} SVG string with applied customizations
*/
export const loadingGears = (options: LoadingOptions = {}) => customSVG(options, 
`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" width="200" height="200" style="shape-rendering: auto; display: block; "><g><g transform="translate(50 50)"><g><animateTransform repeatCount="indefinite" dur="0.2s" keyTimes="0;1" values="0;45" type="rotate" attributeName="transform"></animateTransform><path fill="#fd5c63" d="M29.491524206117255 -5.5 L37.491524206117255 -5.5 L37.491524206117255 5.5 L29.491524206117255 5.5 A30 30 0 0 1 24.742744050198738 16.964569457146712 L24.742744050198738 16.964569457146712 L30.399598299691117 22.621423706639092 L22.621423706639096 30.399598299691114 L16.964569457146716 24.742744050198734 A30 30 0 0 1 5.5 29.491524206117255 L5.5 29.491524206117255 L5.5 37.491524206117255 L-5.499999999999997 37.491524206117255 L-5.499999999999997 29.491524206117255 A30 30 0 0 1 -16.964569457146705 24.742744050198738 L-16.964569457146705 24.742744050198738 L-22.621423706639085 30.399598299691117 L-30.399598299691117 22.621423706639092 L-24.742744050198738 16.964569457146712 A30 30 0 0 1 -29.491524206117255 5.500000000000009 L-29.491524206117255 5.500000000000009 L-37.491524206117255 5.50000000000001 L-37.491524206117255 -5.500000000000001 L-29.491524206117255 -5.500000000000002 A30 30 0 0 1 -24.742744050198738 -16.964569457146705 L-24.742744050198738 -16.964569457146705 L-30.399598299691117 -22.621423706639085 L-22.621423706639092 -30.399598299691117 L-16.964569457146712 -24.742744050198738 A30 30 0 0 1 -5.500000000000011 -29.491524206117255 L-5.500000000000011 -29.491524206117255 L-5.500000000000012 -37.491524206117255 L5.499999999999998 -37.491524206117255 L5.5 -29.491524206117255 A30 30 0 0 1 16.964569457146702 -24.74274405019874 L16.964569457146702 -24.74274405019874 L22.62142370663908 -30.39959829969112 L30.399598299691117 -22.6214237066391 L24.742744050198738 -16.964569457146716 A30 30 0 0 1 29.491524206117255 -5.500000000000013 M0 -20A20 20 0 1 0 0 20 A20 20 0 1 0 0 -20"></path></g></g><g></g></g></svg>`);

/**
* Returns a customized SVG string for icon loading-infinity
*
* ![loading-infinity](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHN0eWxlPSJzaGFwZS1yZW5kZXJpbmc6IGF1dG87IGRpc3BsYXk6IGJsb2NrOyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxnPjxwYXRoIHN0eWxlPSJ0cmFuc2Zvcm06c2NhbGUoMC44KTt0cmFuc2Zvcm0tb3JpZ2luOjUwcHggNTBweCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBkPSJNMjQuMyAzMEMxMS40IDMwIDUgNDMuMyA1IDUwczYuNCAyMCAxOS4zIDIwYzE5LjMgMCAzMi4xLTQwIDUxLjQtNDAgQzg4LjYgMzAgOTUgNDMuMyA5NSA1MHMtNi40IDIwLTE5LjMgMjBDNTYuNCA3MCA0My42IDMwIDI0LjMgMzB6IiBzdHJva2UtZGFzaGFycmF5PSI0Mi43NjQ4MjEzNzA0NDI3MSA0Mi43NjQ4MjEzNzA0NDI3MSIgc3Ryb2tlLXdpZHRoPSI4IiBzdHJva2U9IiMwMDk5ZTUiIGZpbGw9Im5vbmUiPgogIDxhbmltYXRlIHZhbHVlcz0iMDsyNTYuNTg4OTI4MjIyNjU2MjUiIGtleVRpbWVzPSIwOzEiIGR1cj0iMS43NTQzODU5NjQ5MTIyODA2cyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGF0dHJpYnV0ZU5hbWU9InN0cm9rZS1kYXNob2Zmc2V0Ij48L2FuaW1hdGU+CjwvcGF0aD48Zz48L2c+PC9nPjwvc3ZnPg==)
* @param {Object} options - Configuration options
* @param {string[]} [options.colors] - Array of hex colors to replace existing colors
* @param {number} [options.width] - Width of the SVG (default: 200)
* @param {number} [options.height] - Height of the SVG (default: 200)
* @param {number} [options.size] - Size for both width and height
* @example loadingInfinity({ colors: ['#0099e5', '#ff4c4c'], size: 100 });
* @returns {string} SVG string with applied customizations
*/
export const loadingInfinity = (options: LoadingOptions = {}) => customSVG(options, 
`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" width="200" height="200" style="shape-rendering: auto; display: block;"><g><path style="transform:scale(0.8);transform-origin:50px 50px" stroke-linecap="round" d="M24.3 30C11.4 30 5 43.3 5 50s6.4 20 19.3 20c19.3 0 32.1-40 51.4-40 C88.6 30 95 43.3 95 50s-6.4 20-19.3 20C56.4 70 43.6 30 24.3 30z" stroke-dasharray="42.76482137044271 42.76482137044271" stroke-width="8" stroke="#0099e5" fill="none"><animate values="0;256.58892822265625" keyTimes="0;1" dur="1.7543859649122806s" repeatCount="indefinite" attributeName="stroke-dashoffset"></animate></path><g></g></g></svg>`);

/**
* Returns a customized SVG string for icon loading-orbital
*
* ![loading-orbital](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHN0eWxlPSJzaGFwZS1yZW5kZXJpbmc6IGF1dG87IGRpc3BsYXk6IGJsb2NrOyAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48Zz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MCw1MCkiPgogIDxnIHRyYW5zZm9ybT0ic2NhbGUoMC43KSI+CiAgPGNpcmNsZSBmaWxsPSIjZTkwYzU5IiByPSI1MCIgY3k9IjAiIGN4PSIwIj48L2NpcmNsZT4KICA8Y2lyY2xlIGZpbGw9IiM0NmRmZjAiIHI9IjE1IiBjeT0iLTI4IiBjeD0iMCI+CiAgICA8YW5pbWF0ZVRyYW5zZm9ybSB2YWx1ZXM9IjAgMCAwOzM2MCAwIDAiIGtleVRpbWVzPSIwOzEiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB0eXBlPSJyb3RhdGUiIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSI+PC9hbmltYXRlVHJhbnNmb3JtPgogIDwvY2lyY2xlPgogIDwvZz4KPC9nPjxnPjwvZz48L2c+PC9zdmc+)
* @param {Object} options - Configuration options
* @param {string[]} [options.colors] - Array of hex colors to replace existing colors
* @param {number} [options.width] - Width of the SVG (default: 200)
* @param {number} [options.height] - Height of the SVG (default: 200)
* @param {number} [options.size] - Size for both width and height
* @example loadingOrbital({ colors: ['#0099e5', '#ff4c4c'], size: 100 });
* @returns {string} SVG string with applied customizations
*/
export const loadingOrbital = (options: LoadingOptions = {}) => customSVG(options, 
`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" width="200" height="200" style="shape-rendering: auto; display: block; "><g><g transform="translate(50,50)"><g transform="scale(0.7)"><circle fill="#e90c59" r="50" cy="0" cx="0"></circle><circle fill="#46dff0" r="15" cy="-28" cx="0"><animateTransform values="0 0 0;360 0 0" keyTimes="0;1" repeatCount="indefinite" dur="1s" type="rotate" attributeName="transform"></animateTransform></circle></g></g><g></g></g></svg>`);

/**
* Returns a customized SVG string for icon loading-pacman
*
* ![loading-pacman](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHN0eWxlPSJzaGFwZS1yZW5kZXJpbmc6IGF1dG87IGRpc3BsYXk6IGJsb2NrOyAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48Zz48Zz4KICA8Y2lyY2xlIGZpbGw9IiNlMTViNjQiIHI9IjQiIGN5PSI1MCIgY3g9IjYwIj4KICAgIDxhbmltYXRlIGJlZ2luPSItMC42N3MiIGtleVRpbWVzPSIwOzEiIHZhbHVlcz0iOTU7MzUiIGR1cj0iMXMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBhdHRyaWJ1dGVOYW1lPSJjeCI+PC9hbmltYXRlPgogICAgPGFuaW1hdGUgYmVnaW49Ii0wLjY3cyIga2V5VGltZXM9IjA7MC4yOzEiIHZhbHVlcz0iMDsxOzEiIGR1cj0iMXMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBhdHRyaWJ1dGVOYW1lPSJmaWxsLW9wYWNpdHkiPjwvYW5pbWF0ZT4KICA8L2NpcmNsZT4KICA8Y2lyY2xlIGZpbGw9IiNlMTViNjQiIHI9IjQiIGN5PSI1MCIgY3g9IjYwIj4KICAgIDxhbmltYXRlIGJlZ2luPSItMC4zM3MiIGtleVRpbWVzPSIwOzEiIHZhbHVlcz0iOTU7MzUiIGR1cj0iMXMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBhdHRyaWJ1dGVOYW1lPSJjeCI+PC9hbmltYXRlPgogICAgPGFuaW1hdGUgYmVnaW49Ii0wLjMzcyIga2V5VGltZXM9IjA7MC4yOzEiIHZhbHVlcz0iMDsxOzEiIGR1cj0iMXMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBhdHRyaWJ1dGVOYW1lPSJmaWxsLW9wYWNpdHkiPjwvYW5pbWF0ZT4KICA8L2NpcmNsZT4KICA8Y2lyY2xlIGZpbGw9IiNlMTViNjQiIHI9IjQiIGN5PSI1MCIgY3g9IjYwIj4KICAgIDxhbmltYXRlIGJlZ2luPSIwcyIga2V5VGltZXM9IjA7MSIgdmFsdWVzPSI5NTszNSIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGF0dHJpYnV0ZU5hbWU9ImN4Ij48L2FuaW1hdGU+CiAgICA8YW5pbWF0ZSBiZWdpbj0iMHMiIGtleVRpbWVzPSIwOzAuMjsxIiB2YWx1ZXM9IjA7MTsxIiBkdXI9IjFzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgYXR0cmlidXRlTmFtZT0iZmlsbC1vcGFjaXR5Ij48L2FuaW1hdGU+CiAgPC9jaXJjbGU+CjwvZz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTUgMCkiPgogIDxwYXRoIHRyYW5zZm9ybT0icm90YXRlKDkwIDUwIDUwKSIgZmlsbD0iI2Y4YjI2YSIgZD0iTTUwIDUwTDIwIDUwQTMwIDMwIDAgMCAwIDgwIDUwWiI+PC9wYXRoPgogIDxwYXRoIGZpbGw9IiNmOGIyNmEiIGQ9Ik01MCA1MEwyMCA1MEEzMCAzMCAwIDAgMCA4MCA1MFoiPgogICAgPGFuaW1hdGVUcmFuc2Zvcm0ga2V5VGltZXM9IjA7MC41OzEiIHZhbHVlcz0iMCA1MCA1MDs0NSA1MCA1MDswIDUwIDUwIiBkdXI9IjFzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgdHlwZT0icm90YXRlIiBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iPjwvYW5pbWF0ZVRyYW5zZm9ybT4KICA8L3BhdGg+CiAgPHBhdGggZmlsbD0iI2Y4YjI2YSIgZD0iTTUwIDUwTDIwIDUwQTMwIDMwIDAgMCAxIDgwIDUwWiI+CiAgICA8YW5pbWF0ZVRyYW5zZm9ybSBrZXlUaW1lcz0iMDswLjU7MSIgdmFsdWVzPSIwIDUwIDUwOy00NSA1MCA1MDswIDUwIDUwIiBkdXI9IjFzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgdHlwZT0icm90YXRlIiBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iPjwvYW5pbWF0ZVRyYW5zZm9ybT4KICA8L3BhdGg+CjwvZz48Zz48L2c+PC9nPjwvc3ZnPg==)
* @param {Object} options - Configuration options
* @param {string[]} [options.colors] - Array of hex colors to replace existing colors
* @param {number} [options.width] - Width of the SVG (default: 200)
* @param {number} [options.height] - Height of the SVG (default: 200)
* @param {number} [options.size] - Size for both width and height
* @example loadingPacman({ colors: ['#0099e5', '#ff4c4c'], size: 100 });
* @returns {string} SVG string with applied customizations
*/
export const loadingPacman = (options: LoadingOptions = {}) => customSVG(options, 
`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" width="200" height="200" style="shape-rendering: auto; display: block; "><g><g><circle fill="#e15b64" r="4" cy="50" cx="60"><animate begin="-0.67s" keyTimes="0;1" values="95;35" dur="1s" repeatCount="indefinite" attributeName="cx"></animate><animate begin="-0.67s" keyTimes="0;0.2;1" values="0;1;1" dur="1s" repeatCount="indefinite" attributeName="fill-opacity"></animate></circle><circle fill="#e15b64" r="4" cy="50" cx="60"><animate begin="-0.33s" keyTimes="0;1" values="95;35" dur="1s" repeatCount="indefinite" attributeName="cx"></animate><animate begin="-0.33s" keyTimes="0;0.2;1" values="0;1;1" dur="1s" repeatCount="indefinite" attributeName="fill-opacity"></animate></circle><circle fill="#e15b64" r="4" cy="50" cx="60"><animate begin="0s" keyTimes="0;1" values="95;35" dur="1s" repeatCount="indefinite" attributeName="cx"></animate><animate begin="0s" keyTimes="0;0.2;1" values="0;1;1" dur="1s" repeatCount="indefinite" attributeName="fill-opacity"></animate></circle></g><g transform="translate(-15 0)"><path transform="rotate(90 50 50)" fill="#f8b26a" d="M50 50L20 50A30 30 0 0 0 80 50Z"></path><path fill="#f8b26a" d="M50 50L20 50A30 30 0 0 0 80 50Z"><animateTransform keyTimes="0;0.5;1" values="0 50 50;45 50 50;0 50 50" dur="1s" repeatCount="indefinite" type="rotate" attributeName="transform"></animateTransform></path><path fill="#f8b26a" d="M50 50L20 50A30 30 0 0 1 80 50Z"><animateTransform keyTimes="0;0.5;1" values="0 50 50;-45 50 50;0 50 50" dur="1s" repeatCount="indefinite" type="rotate" attributeName="transform"></animateTransform></path></g><g></g></g></svg>`);

/**
* Returns a customized SVG string for icon loading-pulse-bars
*
* ![loading-pulse-bars](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHN0eWxlPSJzaGFwZS1yZW5kZXJpbmc6IGF1dG87IGRpc3BsYXk6IGJsb2NrOyAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48Zz48cmVjdCBmaWxsPSIjZTE1YjY0IiBoZWlnaHQ9IjQwIiB3aWR0aD0iMTUiIHk9IjMwIiB4PSIxNy41Ij4KICA8YW5pbWF0ZSBiZWdpbj0iLTAuMnMiIGtleVNwbGluZXM9IjAgMC41IDAuNSAxOzAgMC41IDAuNSAxIiB2YWx1ZXM9IjE4OzMwOzMwIiBrZXlUaW1lcz0iMDswLjU7MSIgY2FsY01vZGU9InNwbGluZSIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGF0dHJpYnV0ZU5hbWU9InkiPjwvYW5pbWF0ZT4KICA8YW5pbWF0ZSBiZWdpbj0iLTAuMnMiIGtleVNwbGluZXM9IjAgMC41IDAuNSAxOzAgMC41IDAuNSAxIiB2YWx1ZXM9IjY0OzQwOzQwIiBrZXlUaW1lcz0iMDswLjU7MSIgY2FsY01vZGU9InNwbGluZSIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGF0dHJpYnV0ZU5hbWU9ImhlaWdodCI+PC9hbmltYXRlPgo8L3JlY3Q+CjxyZWN0IGZpbGw9IiNmOGIyNmEiIGhlaWdodD0iNDAiIHdpZHRoPSIxNSIgeT0iMzAiIHg9IjQyLjUiPgogIDxhbmltYXRlIGJlZ2luPSItMC4xcyIga2V5U3BsaW5lcz0iMCAwLjUgMC41IDE7MCAwLjUgMC41IDEiIHZhbHVlcz0iMjAuOTk5OTk5OTk5OTk5OTk2OzMwOzMwIiBrZXlUaW1lcz0iMDswLjU7MSIgY2FsY01vZGU9InNwbGluZSIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGF0dHJpYnV0ZU5hbWU9InkiPjwvYW5pbWF0ZT4KICA8YW5pbWF0ZSBiZWdpbj0iLTAuMXMiIGtleVNwbGluZXM9IjAgMC41IDAuNSAxOzAgMC41IDAuNSAxIiB2YWx1ZXM9IjU4LjAwMDAwMDAwMDAwMDAxOzQwOzQwIiBrZXlUaW1lcz0iMDswLjU7MSIgY2FsY01vZGU9InNwbGluZSIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGF0dHJpYnV0ZU5hbWU9ImhlaWdodCI+PC9hbmltYXRlPgo8L3JlY3Q+CjxyZWN0IGZpbGw9IiNhYmJkODEiIGhlaWdodD0iNDAiIHdpZHRoPSIxNSIgeT0iMzAiIHg9IjY3LjUiPgogIDxhbmltYXRlIGtleVNwbGluZXM9IjAgMC41IDAuNSAxOzAgMC41IDAuNSAxIiB2YWx1ZXM9IjIwLjk5OTk5OTk5OTk5OTk5NjszMDszMCIga2V5VGltZXM9IjA7MC41OzEiIGNhbGNNb2RlPSJzcGxpbmUiIGR1cj0iMXMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBhdHRyaWJ1dGVOYW1lPSJ5Ij48L2FuaW1hdGU+CiAgPGFuaW1hdGUga2V5U3BsaW5lcz0iMCAwLjUgMC41IDE7MCAwLjUgMC41IDEiIHZhbHVlcz0iNTguMDAwMDAwMDAwMDAwMDE7NDA7NDAiIGtleVRpbWVzPSIwOzAuNTsxIiBjYWxjTW9kZT0ic3BsaW5lIiBkdXI9IjFzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgYXR0cmlidXRlTmFtZT0iaGVpZ2h0Ij48L2FuaW1hdGU+CjwvcmVjdD48Zz48L2c+PC9nPjwvc3ZnPg==)
* @param {Object} options - Configuration options
* @param {string[]} [options.colors] - Array of hex colors to replace existing colors
* @param {number} [options.width] - Width of the SVG (default: 200)
* @param {number} [options.height] - Height of the SVG (default: 200)
* @param {number} [options.size] - Size for both width and height
* @example loadingPulseBars({ colors: ['#0099e5', '#ff4c4c'], size: 100 });
* @returns {string} SVG string with applied customizations
*/
export const loadingPulseBars = (options: LoadingOptions = {}) => customSVG(options, 
`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" width="200" height="200" style="shape-rendering: auto; display: block; "><g><rect fill="#e15b64" height="40" width="15" y="30" x="17.5"><animate begin="-0.2s" keySplines="0 0.5 0.5 1;0 0.5 0.5 1" values="18;30;30" keyTimes="0;0.5;1" calcMode="spline" dur="1s" repeatCount="indefinite" attributeName="y"></animate><animate begin="-0.2s" keySplines="0 0.5 0.5 1;0 0.5 0.5 1" values="64;40;40" keyTimes="0;0.5;1" calcMode="spline" dur="1s" repeatCount="indefinite" attributeName="height"></animate></rect><rect fill="#f8b26a" height="40" width="15" y="30" x="42.5"><animate begin="-0.1s" keySplines="0 0.5 0.5 1;0 0.5 0.5 1" values="20.999999999999996;30;30" keyTimes="0;0.5;1" calcMode="spline" dur="1s" repeatCount="indefinite" attributeName="y"></animate><animate begin="-0.1s" keySplines="0 0.5 0.5 1;0 0.5 0.5 1" values="58.00000000000001;40;40" keyTimes="0;0.5;1" calcMode="spline" dur="1s" repeatCount="indefinite" attributeName="height"></animate></rect><rect fill="#abbd81" height="40" width="15" y="30" x="67.5"><animate keySplines="0 0.5 0.5 1;0 0.5 0.5 1" values="20.999999999999996;30;30" keyTimes="0;0.5;1" calcMode="spline" dur="1s" repeatCount="indefinite" attributeName="y"></animate><animate keySplines="0 0.5 0.5 1;0 0.5 0.5 1" values="58.00000000000001;40;40" keyTimes="0;0.5;1" calcMode="spline" dur="1s" repeatCount="indefinite" attributeName="height"></animate></rect><g></g></g></svg>`);

/**
* Returns a customized SVG string for icon loading-red-blue-ball
*
* ![loading-red-blue-ball](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHN0eWxlPSJzaGFwZS1yZW5kZXJpbmc6IGF1dG87IGRpc3BsYXk6IGJsb2NrOyAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48Zz48Y2lyY2xlIHI9IjIwIiBmaWxsPSIjZTkwYzU5IiBjeT0iNTAiIGN4PSIzMCI+CiAgPGFuaW1hdGUgYmVnaW49Ii0wLjVzIiB2YWx1ZXM9IjMwOzcwOzMwIiBrZXlUaW1lcz0iMDswLjU7MSIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGF0dHJpYnV0ZU5hbWU9ImN4Ij48L2FuaW1hdGU+CjwvY2lyY2xlPgo8Y2lyY2xlIHI9IjIwIiBmaWxsPSIjMGYzYmM2IiBjeT0iNTAiIGN4PSI3MCI+CiAgPGFuaW1hdGUgYmVnaW49IjBzIiB2YWx1ZXM9IjMwOzcwOzMwIiBrZXlUaW1lcz0iMDswLjU7MSIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGF0dHJpYnV0ZU5hbWU9ImN4Ij48L2FuaW1hdGU+CjwvY2lyY2xlPgo8Y2lyY2xlIHI9IjIwIiBmaWxsPSIjZTkwYzU5IiBjeT0iNTAiIGN4PSIzMCI+CiAgPGFuaW1hdGUgYmVnaW49Ii0wLjVzIiB2YWx1ZXM9IjMwOzcwOzMwIiBrZXlUaW1lcz0iMDswLjU7MSIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGF0dHJpYnV0ZU5hbWU9ImN4Ij48L2FuaW1hdGU+CiAgPGFuaW1hdGUgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGR1cj0iMXMiIGtleVRpbWVzPSIwOzAuNDk5OzAuNTsxIiBjYWxjTW9kZT0iZGlzY3JldGUiIHZhbHVlcz0iMDswOzE7MSIgYXR0cmlidXRlTmFtZT0iZmlsbC1vcGFjaXR5Ij48L2FuaW1hdGU+CjwvY2lyY2xlPjxnPjwvZz48L2c+PC9zdmc+)
* @param {Object} options - Configuration options
* @param {string[]} [options.colors] - Array of hex colors to replace existing colors
* @param {number} [options.width] - Width of the SVG (default: 200)
* @param {number} [options.height] - Height of the SVG (default: 200)
* @param {number} [options.size] - Size for both width and height
* @example loadingRedBlueBall({ colors: ['#0099e5', '#ff4c4c'], size: 100 });
* @returns {string} SVG string with applied customizations
*/
export const loadingRedBlueBall = (options: LoadingOptions = {}) => customSVG(options, 
`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" width="200" height="200" style="shape-rendering: auto; display: block; "><g><circle r="20" fill="#e90c59" cy="50" cx="30"><animate begin="-0.5s" values="30;70;30" keyTimes="0;0.5;1" dur="1s" repeatCount="indefinite" attributeName="cx"></animate></circle><circle r="20" fill="#0f3bc6" cy="50" cx="70"><animate begin="0s" values="30;70;30" keyTimes="0;0.5;1" dur="1s" repeatCount="indefinite" attributeName="cx"></animate></circle><circle r="20" fill="#e90c59" cy="50" cx="30"><animate begin="-0.5s" values="30;70;30" keyTimes="0;0.5;1" dur="1s" repeatCount="indefinite" attributeName="cx"></animate><animate repeatCount="indefinite" dur="1s" keyTimes="0;0.499;0.5;1" calcMode="discrete" values="0;0;1;1" attributeName="fill-opacity"></animate></circle><g></g></g></svg>`);

/**
* Returns a customized SVG string for icon loading-reload-arrow
*
* ![loading-reload-arrow](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHN0eWxlPSJzaGFwZS1yZW5kZXJpbmc6IGF1dG87IGRpc3BsYXk6IGJsb2NrOyAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48Zz48Zz4KICA8cGF0aCBzdHJva2Utd2lkdGg9IjEyIiBzdHJva2U9IiNlMTk0NWIiIGZpbGw9Im5vbmUiIGQ9Ik01MCAxNUEzNSAzNSAwIDEgMCA3NC43NDg3MzczNDE1MjkxNiAyNS4yNTEyNjI2NTg0NzA4NDMiPjwvcGF0aD4KICA8cGF0aCBmaWxsPSIjZTE5NDViIiBkPSJNNDkgM0w0OSAyN0w2MSAxNUw0OSAzIj48L3BhdGg+CiAgPGFuaW1hdGVUcmFuc2Zvcm0ga2V5VGltZXM9IjA7MSIgdmFsdWVzPSIwIDUwIDUwOzM2MCA1MCA1MCIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIHR5cGU9InJvdGF0ZSIgYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIj48L2FuaW1hdGVUcmFuc2Zvcm0+CjwvZz48Zz48L2c+PC9nPjwvc3ZnPg==)
* @param {Object} options - Configuration options
* @param {string[]} [options.colors] - Array of hex colors to replace existing colors
* @param {number} [options.width] - Width of the SVG (default: 200)
* @param {number} [options.height] - Height of the SVG (default: 200)
* @param {number} [options.size] - Size for both width and height
* @example loadingReloadArrow({ colors: ['#0099e5', '#ff4c4c'], size: 100 });
* @returns {string} SVG string with applied customizations
*/
export const loadingReloadArrow = (options: LoadingOptions = {}) => customSVG(options, 
`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" width="200" height="200" style="shape-rendering: auto; display: block; "><g><g><path stroke-width="12" stroke="#e1945b" fill="none" d="M50 15A35 35 0 1 0 74.74873734152916 25.251262658470843"></path><path fill="#e1945b" d="M49 3L49 27L61 15L49 3"></path><animateTransform keyTimes="0;1" values="0 50 50;360 50 50" dur="1s" repeatCount="indefinite" type="rotate" attributeName="transform"></animateTransform></g><g></g></g></svg>`);

/**
* Returns a customized SVG string for icon loading-ring
*
* ![loading-ring](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHN0eWxlPSJzaGFwZS1yZW5kZXJpbmc6IGF1dG87IGRpc3BsYXk6IGJsb2NrOyAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48Zz48Y2lyY2xlIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgZmlsbD0ibm9uZSIgc3Ryb2tlLWRhc2hhcnJheT0iNTAuMjY1NDgyNDU3NDM2NjkgNTAuMjY1NDgyNDU3NDM2NjkiIHN0cm9rZT0iI2ZlNzE4ZCIgc3Ryb2tlLXdpZHRoPSI4IiByPSIzMiIgY3k9IjUwIiBjeD0iNTAiPgogIDxhbmltYXRlVHJhbnNmb3JtIHZhbHVlcz0iMCA1MCA1MDszNjAgNTAgNTAiIGtleVRpbWVzPSIwOzEiIGR1cj0iMXMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiB0eXBlPSJyb3RhdGUiIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSI+PC9hbmltYXRlVHJhbnNmb3JtPgo8L2NpcmNsZT48Zz48L2c+PC9nPjwvc3ZnPg==)
* @param {Object} options - Configuration options
* @param {string[]} [options.colors] - Array of hex colors to replace existing colors
* @param {number} [options.width] - Width of the SVG (default: 200)
* @param {number} [options.height] - Height of the SVG (default: 200)
* @param {number} [options.size] - Size for both width and height
* @example loadingRing({ colors: ['#0099e5', '#ff4c4c'], size: 100 });
* @returns {string} SVG string with applied customizations
*/
export const loadingRing = (options: LoadingOptions = {}) => customSVG(options, 
`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" width="200" height="200" style="shape-rendering: auto; display: block; "><g><circle stroke-linecap="round" fill="none" stroke-dasharray="50.26548245743669 50.26548245743669" stroke="#fe718d" stroke-width="8" r="32" cy="50" cx="50"><animateTransform values="0 50 50;360 50 50" keyTimes="0;1" dur="1s" repeatCount="indefinite" type="rotate" attributeName="transform"></animateTransform></circle><g></g></g></svg>`);

/**
* Returns a customized SVG string for icon loading-ripple
*
* ![loading-ripple](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHN0eWxlPSJzaGFwZS1yZW5kZXJpbmc6IGF1dG87IGRpc3BsYXk6IGJsb2NrIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PGc+PGNpcmNsZSBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZT0iI2NiYjk1MyIgZmlsbD0ibm9uZSIgcj0iMCIgY3k9IjUwIiBjeD0iNTAiPgogIDxhbmltYXRlIGJlZ2luPSIwcyIgY2FsY01vZGU9InNwbGluZSIga2V5U3BsaW5lcz0iMCAwLjIgMC44IDEiIGtleVRpbWVzPSIwOzEiIHZhbHVlcz0iMDs0MCIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGF0dHJpYnV0ZU5hbWU9InIiPjwvYW5pbWF0ZT4KICA8YW5pbWF0ZSBiZWdpbj0iMHMiIGNhbGNNb2RlPSJzcGxpbmUiIGtleVNwbGluZXM9IjAuMiAwIDAuOCAxIiBrZXlUaW1lcz0iMDsxIiB2YWx1ZXM9IjE7MCIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGF0dHJpYnV0ZU5hbWU9Im9wYWNpdHkiPjwvYW5pbWF0ZT4KPC9jaXJjbGU+PGNpcmNsZSBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZT0iI2NiYjk1MyIgZmlsbD0ibm9uZSIgcj0iMCIgY3k9IjUwIiBjeD0iNTAiPgogIDxhbmltYXRlIGJlZ2luPSItMC41cyIgY2FsY01vZGU9InNwbGluZSIga2V5U3BsaW5lcz0iMCAwLjIgMC44IDEiIGtleVRpbWVzPSIwOzEiIHZhbHVlcz0iMDs0MCIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGF0dHJpYnV0ZU5hbWU9InIiPjwvYW5pbWF0ZT4KICA8YW5pbWF0ZSBiZWdpbj0iLTAuNXMiIGNhbGNNb2RlPSJzcGxpbmUiIGtleVNwbGluZXM9IjAuMiAwIDAuOCAxIiBrZXlUaW1lcz0iMDsxIiB2YWx1ZXM9IjE7MCIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGF0dHJpYnV0ZU5hbWU9Im9wYWNpdHkiPjwvYW5pbWF0ZT4KPC9jaXJjbGU+PGc+PC9nPjwvZz48L3N2Zz4=)
* @param {Object} options - Configuration options
* @param {string[]} [options.colors] - Array of hex colors to replace existing colors
* @param {number} [options.width] - Width of the SVG (default: 200)
* @param {number} [options.height] - Height of the SVG (default: 200)
* @param {number} [options.size] - Size for both width and height
* @example loadingRipple({ colors: ['#0099e5', '#ff4c4c'], size: 100 });
* @returns {string} SVG string with applied customizations
*/
export const loadingRipple = (options: LoadingOptions = {}) => customSVG(options, 
`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" width="200" height="200" style="shape-rendering: auto; display: block"><g><circle stroke-width="2" stroke="#cbb953" fill="none" r="0" cy="50" cx="50"><animate begin="0s" calcMode="spline" keySplines="0 0.2 0.8 1" keyTimes="0;1" values="0;40" dur="1s" repeatCount="indefinite" attributeName="r"></animate><animate begin="0s" calcMode="spline" keySplines="0.2 0 0.8 1" keyTimes="0;1" values="1;0" dur="1s" repeatCount="indefinite" attributeName="opacity"></animate></circle><circle stroke-width="2" stroke="#cbb953" fill="none" r="0" cy="50" cx="50"><animate begin="-0.5s" calcMode="spline" keySplines="0 0.2 0.8 1" keyTimes="0;1" values="0;40" dur="1s" repeatCount="indefinite" attributeName="r"></animate><animate begin="-0.5s" calcMode="spline" keySplines="0.2 0 0.8 1" keyTimes="0;1" values="1;0" dur="1s" repeatCount="indefinite" attributeName="opacity"></animate></circle><g></g></g></svg>`);

/**
* Returns a customized SVG string for icon loading-spinner-oval
*
* ![loading-spinner-oval](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHN0eWxlPSJzaGFwZS1yZW5kZXJpbmc6IGF1dG87IGRpc3BsYXk6IGJsb2NrOyAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48Zz48ZyB0cmFuc2Zvcm09InJvdGF0ZSgwIDUwIDUwKSI+CiAgPHJlY3QgZmlsbD0iIzAwOTllNSIgaGVpZ2h0PSIxMiIgd2lkdGg9IjYiIHJ5PSI2IiByeD0iMyIgeT0iMjQiIHg9IjQ3Ij4KICAgIDxhbmltYXRlIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBiZWdpbj0iLTAuOTE2NjY2NjY2NjY2NjY2NnMiIGR1cj0iMXMiIGtleVRpbWVzPSIwOzEiIHZhbHVlcz0iMTswIiBhdHRyaWJ1dGVOYW1lPSJvcGFjaXR5Ij48L2FuaW1hdGU+CiAgPC9yZWN0Pgo8L2c+PGcgdHJhbnNmb3JtPSJyb3RhdGUoMzAgNTAgNTApIj4KICA8cmVjdCBmaWxsPSIjMDA5OWU1IiBoZWlnaHQ9IjEyIiB3aWR0aD0iNiIgcnk9IjYiIHJ4PSIzIiB5PSIyNCIgeD0iNDciPgogICAgPGFuaW1hdGUgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGJlZ2luPSItMC44MzMzMzMzMzMzMzMzMzM0cyIgZHVyPSIxcyIga2V5VGltZXM9IjA7MSIgdmFsdWVzPSIxOzAiIGF0dHJpYnV0ZU5hbWU9Im9wYWNpdHkiPjwvYW5pbWF0ZT4KICA8L3JlY3Q+CjwvZz48ZyB0cmFuc2Zvcm09InJvdGF0ZSg2MCA1MCA1MCkiPgogIDxyZWN0IGZpbGw9IiMwMDk5ZTUiIGhlaWdodD0iMTIiIHdpZHRoPSI2IiByeT0iNiIgcng9IjMiIHk9IjI0IiB4PSI0NyI+CiAgICA8YW5pbWF0ZSByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgYmVnaW49Ii0wLjc1cyIgZHVyPSIxcyIga2V5VGltZXM9IjA7MSIgdmFsdWVzPSIxOzAiIGF0dHJpYnV0ZU5hbWU9Im9wYWNpdHkiPjwvYW5pbWF0ZT4KICA8L3JlY3Q+CjwvZz48ZyB0cmFuc2Zvcm09InJvdGF0ZSg5MCA1MCA1MCkiPgogIDxyZWN0IGZpbGw9IiMwMDk5ZTUiIGhlaWdodD0iMTIiIHdpZHRoPSI2IiByeT0iNiIgcng9IjMiIHk9IjI0IiB4PSI0NyI+CiAgICA8YW5pbWF0ZSByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgYmVnaW49Ii0wLjY2NjY2NjY2NjY2NjY2NjZzIiBkdXI9IjFzIiBrZXlUaW1lcz0iMDsxIiB2YWx1ZXM9IjE7MCIgYXR0cmlidXRlTmFtZT0ib3BhY2l0eSI+PC9hbmltYXRlPgogIDwvcmVjdD4KPC9nPjxnIHRyYW5zZm9ybT0icm90YXRlKDEyMCA1MCA1MCkiPgogIDxyZWN0IGZpbGw9IiMwMDk5ZTUiIGhlaWdodD0iMTIiIHdpZHRoPSI2IiByeT0iNiIgcng9IjMiIHk9IjI0IiB4PSI0NyI+CiAgICA8YW5pbWF0ZSByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgYmVnaW49Ii0wLjU4MzMzMzMzMzMzMzMzMzRzIiBkdXI9IjFzIiBrZXlUaW1lcz0iMDsxIiB2YWx1ZXM9IjE7MCIgYXR0cmlidXRlTmFtZT0ib3BhY2l0eSI+PC9hbmltYXRlPgogIDwvcmVjdD4KPC9nPjxnIHRyYW5zZm9ybT0icm90YXRlKDE1MCA1MCA1MCkiPgogIDxyZWN0IGZpbGw9IiMwMDk5ZTUiIGhlaWdodD0iMTIiIHdpZHRoPSI2IiByeT0iNiIgcng9IjMiIHk9IjI0IiB4PSI0NyI+CiAgICA8YW5pbWF0ZSByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgYmVnaW49Ii0wLjVzIiBkdXI9IjFzIiBrZXlUaW1lcz0iMDsxIiB2YWx1ZXM9IjE7MCIgYXR0cmlidXRlTmFtZT0ib3BhY2l0eSI+PC9hbmltYXRlPgogIDwvcmVjdD4KPC9nPjxnIHRyYW5zZm9ybT0icm90YXRlKDE4MCA1MCA1MCkiPgogIDxyZWN0IGZpbGw9IiMwMDk5ZTUiIGhlaWdodD0iMTIiIHdpZHRoPSI2IiByeT0iNiIgcng9IjMiIHk9IjI0IiB4PSI0NyI+CiAgICA8YW5pbWF0ZSByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgYmVnaW49Ii0wLjQxNjY2NjY2NjY2NjY2NjdzIiBkdXI9IjFzIiBrZXlUaW1lcz0iMDsxIiB2YWx1ZXM9IjE7MCIgYXR0cmlidXRlTmFtZT0ib3BhY2l0eSI+PC9hbmltYXRlPgogIDwvcmVjdD4KPC9nPjxnIHRyYW5zZm9ybT0icm90YXRlKDIxMCA1MCA1MCkiPgogIDxyZWN0IGZpbGw9IiMwMDk5ZTUiIGhlaWdodD0iMTIiIHdpZHRoPSI2IiByeT0iNiIgcng9IjMiIHk9IjI0IiB4PSI0NyI+CiAgICA8YW5pbWF0ZSByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgYmVnaW49Ii0wLjMzMzMzMzMzMzMzMzMzMzNzIiBkdXI9IjFzIiBrZXlUaW1lcz0iMDsxIiB2YWx1ZXM9IjE7MCIgYXR0cmlidXRlTmFtZT0ib3BhY2l0eSI+PC9hbmltYXRlPgogIDwvcmVjdD4KPC9nPjxnIHRyYW5zZm9ybT0icm90YXRlKDI0MCA1MCA1MCkiPgogIDxyZWN0IGZpbGw9IiMwMDk5ZTUiIGhlaWdodD0iMTIiIHdpZHRoPSI2IiByeT0iNiIgcng9IjMiIHk9IjI0IiB4PSI0NyI+CiAgICA8YW5pbWF0ZSByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgYmVnaW49Ii0wLjI1cyIgZHVyPSIxcyIga2V5VGltZXM9IjA7MSIgdmFsdWVzPSIxOzAiIGF0dHJpYnV0ZU5hbWU9Im9wYWNpdHkiPjwvYW5pbWF0ZT4KICA8L3JlY3Q+CjwvZz48ZyB0cmFuc2Zvcm09InJvdGF0ZSgyNzAgNTAgNTApIj4KICA8cmVjdCBmaWxsPSIjMDA5OWU1IiBoZWlnaHQ9IjEyIiB3aWR0aD0iNiIgcnk9IjYiIHJ4PSIzIiB5PSIyNCIgeD0iNDciPgogICAgPGFuaW1hdGUgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGJlZ2luPSItMC4xNjY2NjY2NjY2NjY2NjY2NnMiIGR1cj0iMXMiIGtleVRpbWVzPSIwOzEiIHZhbHVlcz0iMTswIiBhdHRyaWJ1dGVOYW1lPSJvcGFjaXR5Ij48L2FuaW1hdGU+CiAgPC9yZWN0Pgo8L2c+PGcgdHJhbnNmb3JtPSJyb3RhdGUoMzAwIDUwIDUwKSI+CiAgPHJlY3QgZmlsbD0iIzAwOTllNSIgaGVpZ2h0PSIxMiIgd2lkdGg9IjYiIHJ5PSI2IiByeD0iMyIgeT0iMjQiIHg9IjQ3Ij4KICAgIDxhbmltYXRlIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBiZWdpbj0iLTAuMDgzMzMzMzMzMzMzMzMzMzNzIiBkdXI9IjFzIiBrZXlUaW1lcz0iMDsxIiB2YWx1ZXM9IjE7MCIgYXR0cmlidXRlTmFtZT0ib3BhY2l0eSI+PC9hbmltYXRlPgogIDwvcmVjdD4KPC9nPjxnIHRyYW5zZm9ybT0icm90YXRlKDMzMCA1MCA1MCkiPgogIDxyZWN0IGZpbGw9IiMwMDk5ZTUiIGhlaWdodD0iMTIiIHdpZHRoPSI2IiByeT0iNiIgcng9IjMiIHk9IjI0IiB4PSI0NyI+CiAgICA8YW5pbWF0ZSByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgYmVnaW49IjBzIiBkdXI9IjFzIiBrZXlUaW1lcz0iMDsxIiB2YWx1ZXM9IjE7MCIgYXR0cmlidXRlTmFtZT0ib3BhY2l0eSI+PC9hbmltYXRlPgogIDwvcmVjdD4KPC9nPjxnPjwvZz48L2c+PC9zdmc+)
* @param {Object} options - Configuration options
* @param {string[]} [options.colors] - Array of hex colors to replace existing colors
* @param {number} [options.width] - Width of the SVG (default: 200)
* @param {number} [options.height] - Height of the SVG (default: 200)
* @param {number} [options.size] - Size for both width and height
* @example loadingSpinnerOval({ colors: ['#0099e5', '#ff4c4c'], size: 100 });
* @returns {string} SVG string with applied customizations
*/
export const loadingSpinnerOval = (options: LoadingOptions = {}) => customSVG(options, 
`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" width="200" height="200" style="shape-rendering: auto; display: block; "><g><g transform="rotate(0 50 50)"><rect fill="#0099e5" height="12" width="6" ry="6" rx="3" y="24" x="47"><animate repeatCount="indefinite" begin="-0.9166666666666666s" dur="1s" keyTimes="0;1" values="1;0" attributeName="opacity"></animate></rect></g><g transform="rotate(30 50 50)"><rect fill="#0099e5" height="12" width="6" ry="6" rx="3" y="24" x="47"><animate repeatCount="indefinite" begin="-0.8333333333333334s" dur="1s" keyTimes="0;1" values="1;0" attributeName="opacity"></animate></rect></g><g transform="rotate(60 50 50)"><rect fill="#0099e5" height="12" width="6" ry="6" rx="3" y="24" x="47"><animate repeatCount="indefinite" begin="-0.75s" dur="1s" keyTimes="0;1" values="1;0" attributeName="opacity"></animate></rect></g><g transform="rotate(90 50 50)"><rect fill="#0099e5" height="12" width="6" ry="6" rx="3" y="24" x="47"><animate repeatCount="indefinite" begin="-0.6666666666666666s" dur="1s" keyTimes="0;1" values="1;0" attributeName="opacity"></animate></rect></g><g transform="rotate(120 50 50)"><rect fill="#0099e5" height="12" width="6" ry="6" rx="3" y="24" x="47"><animate repeatCount="indefinite" begin="-0.5833333333333334s" dur="1s" keyTimes="0;1" values="1;0" attributeName="opacity"></animate></rect></g><g transform="rotate(150 50 50)"><rect fill="#0099e5" height="12" width="6" ry="6" rx="3" y="24" x="47"><animate repeatCount="indefinite" begin="-0.5s" dur="1s" keyTimes="0;1" values="1;0" attributeName="opacity"></animate></rect></g><g transform="rotate(180 50 50)"><rect fill="#0099e5" height="12" width="6" ry="6" rx="3" y="24" x="47"><animate repeatCount="indefinite" begin="-0.4166666666666667s" dur="1s" keyTimes="0;1" values="1;0" attributeName="opacity"></animate></rect></g><g transform="rotate(210 50 50)"><rect fill="#0099e5" height="12" width="6" ry="6" rx="3" y="24" x="47"><animate repeatCount="indefinite" begin="-0.3333333333333333s" dur="1s" keyTimes="0;1" values="1;0" attributeName="opacity"></animate></rect></g><g transform="rotate(240 50 50)"><rect fill="#0099e5" height="12" width="6" ry="6" rx="3" y="24" x="47"><animate repeatCount="indefinite" begin="-0.25s" dur="1s" keyTimes="0;1" values="1;0" attributeName="opacity"></animate></rect></g><g transform="rotate(270 50 50)"><rect fill="#0099e5" height="12" width="6" ry="6" rx="3" y="24" x="47"><animate repeatCount="indefinite" begin="-0.16666666666666666s" dur="1s" keyTimes="0;1" values="1;0" attributeName="opacity"></animate></rect></g><g transform="rotate(300 50 50)"><rect fill="#0099e5" height="12" width="6" ry="6" rx="3" y="24" x="47"><animate repeatCount="indefinite" begin="-0.08333333333333333s" dur="1s" keyTimes="0;1" values="1;0" attributeName="opacity"></animate></rect></g><g transform="rotate(330 50 50)"><rect fill="#0099e5" height="12" width="6" ry="6" rx="3" y="24" x="47"><animate repeatCount="indefinite" begin="0s" dur="1s" keyTimes="0;1" values="1;0" attributeName="opacity"></animate></rect></g><g></g></g></svg>`);

/**
* Returns a customized SVG string for icon loading-spinner
*
* ![loading-spinner](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHN0eWxlPSJzaGFwZS1yZW5kZXJpbmc6IGF1dG87IGRpc3BsYXk6IGJsb2NrOyAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48Zz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg4MCw1MCkiPgo8ZyB0cmFuc2Zvcm09InJvdGF0ZSgwKSI+CjxjaXJjbGUgZmlsbC1vcGFjaXR5PSIxIiBmaWxsPSIjMDA5OWU1IiByPSI2IiBjeT0iMCIgY3g9IjAiPgogIDxhbmltYXRlVHJhbnNmb3JtIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiBrZXlUaW1lcz0iMDsxIiB2YWx1ZXM9IjEuNSAxLjU7MSAxIiBiZWdpbj0iLTAuODc1cyIgdHlwZT0ic2NhbGUiIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSI+PC9hbmltYXRlVHJhbnNmb3JtPgogIDxhbmltYXRlIGJlZ2luPSItMC44NzVzIiB2YWx1ZXM9IjE7MCIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGR1cj0iMXMiIGtleVRpbWVzPSIwOzEiIGF0dHJpYnV0ZU5hbWU9ImZpbGwtb3BhY2l0eSI+PC9hbmltYXRlPgo8L2NpcmNsZT4KPC9nPgo8L2c+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNzEuMjEzMjAzNDM1NTk2NDMsNzEuMjEzMjAzNDM1NTk2NDMpIj4KPGcgdHJhbnNmb3JtPSJyb3RhdGUoNDUpIj4KPGNpcmNsZSBmaWxsLW9wYWNpdHk9IjAuODc1IiBmaWxsPSIjMDA5OWU1IiByPSI2IiBjeT0iMCIgY3g9IjAiPgogIDxhbmltYXRlVHJhbnNmb3JtIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiBrZXlUaW1lcz0iMDsxIiB2YWx1ZXM9IjEuNSAxLjU7MSAxIiBiZWdpbj0iLTAuNzVzIiB0eXBlPSJzY2FsZSIgYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIj48L2FuaW1hdGVUcmFuc2Zvcm0+CiAgPGFuaW1hdGUgYmVnaW49Ii0wLjc1cyIgdmFsdWVzPSIxOzAiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiBrZXlUaW1lcz0iMDsxIiBhdHRyaWJ1dGVOYW1lPSJmaWxsLW9wYWNpdHkiPjwvYW5pbWF0ZT4KPC9jaXJjbGU+CjwvZz4KPC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDUwLDgwKSI+CjxnIHRyYW5zZm9ybT0icm90YXRlKDkwKSI+CjxjaXJjbGUgZmlsbC1vcGFjaXR5PSIwLjc1IiBmaWxsPSIjMDA5OWU1IiByPSI2IiBjeT0iMCIgY3g9IjAiPgogIDxhbmltYXRlVHJhbnNmb3JtIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiBrZXlUaW1lcz0iMDsxIiB2YWx1ZXM9IjEuNSAxLjU7MSAxIiBiZWdpbj0iLTAuNjI1cyIgdHlwZT0ic2NhbGUiIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSI+PC9hbmltYXRlVHJhbnNmb3JtPgogIDxhbmltYXRlIGJlZ2luPSItMC42MjVzIiB2YWx1ZXM9IjE7MCIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGR1cj0iMXMiIGtleVRpbWVzPSIwOzEiIGF0dHJpYnV0ZU5hbWU9ImZpbGwtb3BhY2l0eSI+PC9hbmltYXRlPgo8L2NpcmNsZT4KPC9nPgo8L2c+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjguNzg2Nzk2NTY0NDAzNTc3LDcxLjIxMzIwMzQzNTU5NjQzKSI+CjxnIHRyYW5zZm9ybT0icm90YXRlKDEzNSkiPgo8Y2lyY2xlIGZpbGwtb3BhY2l0eT0iMC42MjUiIGZpbGw9IiMwMDk5ZTUiIHI9IjYiIGN5PSIwIiBjeD0iMCI+CiAgPGFuaW1hdGVUcmFuc2Zvcm0gcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGR1cj0iMXMiIGtleVRpbWVzPSIwOzEiIHZhbHVlcz0iMS41IDEuNTsxIDEiIGJlZ2luPSItMC41cyIgdHlwZT0ic2NhbGUiIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSI+PC9hbmltYXRlVHJhbnNmb3JtPgogIDxhbmltYXRlIGJlZ2luPSItMC41cyIgdmFsdWVzPSIxOzAiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiBrZXlUaW1lcz0iMDsxIiBhdHRyaWJ1dGVOYW1lPSJmaWxsLW9wYWNpdHkiPjwvYW5pbWF0ZT4KPC9jaXJjbGU+CjwvZz4KPC9nPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIwLDUwLjAwMDAwMDAwMDAwMDAxKSI+CjxnIHRyYW5zZm9ybT0icm90YXRlKDE4MCkiPgo8Y2lyY2xlIGZpbGwtb3BhY2l0eT0iMC41IiBmaWxsPSIjMDA5OWU1IiByPSI2IiBjeT0iMCIgY3g9IjAiPgogIDxhbmltYXRlVHJhbnNmb3JtIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiBrZXlUaW1lcz0iMDsxIiB2YWx1ZXM9IjEuNSAxLjU7MSAxIiBiZWdpbj0iLTAuMzc1cyIgdHlwZT0ic2NhbGUiIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSI+PC9hbmltYXRlVHJhbnNmb3JtPgogIDxhbmltYXRlIGJlZ2luPSItMC4zNzVzIiB2YWx1ZXM9IjE7MCIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGR1cj0iMXMiIGtleVRpbWVzPSIwOzEiIGF0dHJpYnV0ZU5hbWU9ImZpbGwtb3BhY2l0eSI+PC9hbmltYXRlPgo8L2NpcmNsZT4KPC9nPgo8L2c+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMjguNzg2Nzk2NTY0NDAzNTcsMjguNzg2Nzk2NTY0NDAzNTc3KSI+CjxnIHRyYW5zZm9ybT0icm90YXRlKDIyNSkiPgo8Y2lyY2xlIGZpbGwtb3BhY2l0eT0iMC4zNzUiIGZpbGw9IiMwMDk5ZTUiIHI9IjYiIGN5PSIwIiBjeD0iMCI+CiAgPGFuaW1hdGVUcmFuc2Zvcm0gcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGR1cj0iMXMiIGtleVRpbWVzPSIwOzEiIHZhbHVlcz0iMS41IDEuNTsxIDEiIGJlZ2luPSItMC4yNXMiIHR5cGU9InNjYWxlIiBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iPjwvYW5pbWF0ZVRyYW5zZm9ybT4KICA8YW5pbWF0ZSBiZWdpbj0iLTAuMjVzIiB2YWx1ZXM9IjE7MCIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGR1cj0iMXMiIGtleVRpbWVzPSIwOzEiIGF0dHJpYnV0ZU5hbWU9ImZpbGwtb3BhY2l0eSI+PC9hbmltYXRlPgo8L2NpcmNsZT4KPC9nPgo8L2c+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNDkuOTk5OTk5OTk5OTk5OTksMjApIj4KPGcgdHJhbnNmb3JtPSJyb3RhdGUoMjcwKSI+CjxjaXJjbGUgZmlsbC1vcGFjaXR5PSIwLjI1IiBmaWxsPSIjMDA5OWU1IiByPSI2IiBjeT0iMCIgY3g9IjAiPgogIDxhbmltYXRlVHJhbnNmb3JtIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiBrZXlUaW1lcz0iMDsxIiB2YWx1ZXM9IjEuNSAxLjU7MSAxIiBiZWdpbj0iLTAuMTI1cyIgdHlwZT0ic2NhbGUiIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSI+PC9hbmltYXRlVHJhbnNmb3JtPgogIDxhbmltYXRlIGJlZ2luPSItMC4xMjVzIiB2YWx1ZXM9IjE7MCIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGR1cj0iMXMiIGtleVRpbWVzPSIwOzEiIGF0dHJpYnV0ZU5hbWU9ImZpbGwtb3BhY2l0eSI+PC9hbmltYXRlPgo8L2NpcmNsZT4KPC9nPgo8L2c+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNzEuMjEzMjAzNDM1NTk2NDMsMjguNzg2Nzk2NTY0NDAzNTcpIj4KPGcgdHJhbnNmb3JtPSJyb3RhdGUoMzE1KSI+CjxjaXJjbGUgZmlsbC1vcGFjaXR5PSIwLjEyNSIgZmlsbD0iIzAwOTllNSIgcj0iNiIgY3k9IjAiIGN4PSIwIj4KICA8YW5pbWF0ZVRyYW5zZm9ybSByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgZHVyPSIxcyIga2V5VGltZXM9IjA7MSIgdmFsdWVzPSIxLjUgMS41OzEgMSIgYmVnaW49IjBzIiB0eXBlPSJzY2FsZSIgYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIj48L2FuaW1hdGVUcmFuc2Zvcm0+CiAgPGFuaW1hdGUgYmVnaW49IjBzIiB2YWx1ZXM9IjE7MCIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGR1cj0iMXMiIGtleVRpbWVzPSIwOzEiIGF0dHJpYnV0ZU5hbWU9ImZpbGwtb3BhY2l0eSI+PC9hbmltYXRlPgo8L2NpcmNsZT4KPC9nPgo8L2c+PGc+PC9nPjwvZz48L3N2Zz4=)
* @param {Object} options - Configuration options
* @param {string[]} [options.colors] - Array of hex colors to replace existing colors
* @param {number} [options.width] - Width of the SVG (default: 200)
* @param {number} [options.height] - Height of the SVG (default: 200)
* @param {number} [options.size] - Size for both width and height
* @example loadingSpinner({ colors: ['#0099e5', '#ff4c4c'], size: 100 });
* @returns {string} SVG string with applied customizations
*/
export const loadingSpinner = (options: LoadingOptions = {}) => customSVG(options, 
`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" width="200" height="200" style="shape-rendering: auto; display: block; "><g><g transform="translate(80,50)"><g transform="rotate(0)"><circle fill-opacity="1" fill="#0099e5" r="6" cy="0" cx="0"><animateTransform repeatCount="indefinite" dur="1s" keyTimes="0;1" values="1.5 1.5;1 1" begin="-0.875s" type="scale" attributeName="transform"></animateTransform><animate begin="-0.875s" values="1;0" repeatCount="indefinite" dur="1s" keyTimes="0;1" attributeName="fill-opacity"></animate></circle></g></g><g transform="translate(71.21320343559643,71.21320343559643)"><g transform="rotate(45)"><circle fill-opacity="0.875" fill="#0099e5" r="6" cy="0" cx="0"><animateTransform repeatCount="indefinite" dur="1s" keyTimes="0;1" values="1.5 1.5;1 1" begin="-0.75s" type="scale" attributeName="transform"></animateTransform><animate begin="-0.75s" values="1;0" repeatCount="indefinite" dur="1s" keyTimes="0;1" attributeName="fill-opacity"></animate></circle></g></g><g transform="translate(50,80)"><g transform="rotate(90)"><circle fill-opacity="0.75" fill="#0099e5" r="6" cy="0" cx="0"><animateTransform repeatCount="indefinite" dur="1s" keyTimes="0;1" values="1.5 1.5;1 1" begin="-0.625s" type="scale" attributeName="transform"></animateTransform><animate begin="-0.625s" values="1;0" repeatCount="indefinite" dur="1s" keyTimes="0;1" attributeName="fill-opacity"></animate></circle></g></g><g transform="translate(28.786796564403577,71.21320343559643)"><g transform="rotate(135)"><circle fill-opacity="0.625" fill="#0099e5" r="6" cy="0" cx="0"><animateTransform repeatCount="indefinite" dur="1s" keyTimes="0;1" values="1.5 1.5;1 1" begin="-0.5s" type="scale" attributeName="transform"></animateTransform><animate begin="-0.5s" values="1;0" repeatCount="indefinite" dur="1s" keyTimes="0;1" attributeName="fill-opacity"></animate></circle></g></g><g transform="translate(20,50.00000000000001)"><g transform="rotate(180)"><circle fill-opacity="0.5" fill="#0099e5" r="6" cy="0" cx="0"><animateTransform repeatCount="indefinite" dur="1s" keyTimes="0;1" values="1.5 1.5;1 1" begin="-0.375s" type="scale" attributeName="transform"></animateTransform><animate begin="-0.375s" values="1;0" repeatCount="indefinite" dur="1s" keyTimes="0;1" attributeName="fill-opacity"></animate></circle></g></g><g transform="translate(28.78679656440357,28.786796564403577)"><g transform="rotate(225)"><circle fill-opacity="0.375" fill="#0099e5" r="6" cy="0" cx="0"><animateTransform repeatCount="indefinite" dur="1s" keyTimes="0;1" values="1.5 1.5;1 1" begin="-0.25s" type="scale" attributeName="transform"></animateTransform><animate begin="-0.25s" values="1;0" repeatCount="indefinite" dur="1s" keyTimes="0;1" attributeName="fill-opacity"></animate></circle></g></g><g transform="translate(49.99999999999999,20)"><g transform="rotate(270)"><circle fill-opacity="0.25" fill="#0099e5" r="6" cy="0" cx="0"><animateTransform repeatCount="indefinite" dur="1s" keyTimes="0;1" values="1.5 1.5;1 1" begin="-0.125s" type="scale" attributeName="transform"></animateTransform><animate begin="-0.125s" values="1;0" repeatCount="indefinite" dur="1s" keyTimes="0;1" attributeName="fill-opacity"></animate></circle></g></g><g transform="translate(71.21320343559643,28.78679656440357)"><g transform="rotate(315)"><circle fill-opacity="0.125" fill="#0099e5" r="6" cy="0" cx="0"><animateTransform repeatCount="indefinite" dur="1s" keyTimes="0;1" values="1.5 1.5;1 1" begin="0s" type="scale" attributeName="transform"></animateTransform><animate begin="0s" values="1;0" repeatCount="indefinite" dur="1s" keyTimes="0;1" attributeName="fill-opacity"></animate></circle></g></g><g></g></g></svg>`);

/**
* Returns a customized SVG string for icon loading-square-blocks
*
* ![loading-square-blocks](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHN0eWxlPSJzaGFwZS1yZW5kZXJpbmc6IGF1dG87IGRpc3BsYXk6IGJsb2NrOyAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48Zz48cmVjdCBmaWxsPSIjZTE1YjY0IiBoZWlnaHQ9IjIwIiB3aWR0aD0iMjAiIHk9IjE5IiB4PSIxOSI+CiAgPGFuaW1hdGUgY2FsY01vZGU9ImRpc2NyZXRlIiBiZWdpbj0iMHMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiBrZXlUaW1lcz0iMDswLjEyNTsxIiB2YWx1ZXM9IiNmOGIyNmE7I2UxNWI2NDsjZTE1YjY0IiBhdHRyaWJ1dGVOYW1lPSJmaWxsIj48L2FuaW1hdGU+CjwvcmVjdD48cmVjdCBmaWxsPSIjZTE1YjY0IiBoZWlnaHQ9IjIwIiB3aWR0aD0iMjAiIHk9IjE5IiB4PSI0MCI+CiAgPGFuaW1hdGUgY2FsY01vZGU9ImRpc2NyZXRlIiBiZWdpbj0iMC4xMjVzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgZHVyPSIxcyIga2V5VGltZXM9IjA7MC4xMjU7MSIgdmFsdWVzPSIjZjhiMjZhOyNlMTViNjQ7I2UxNWI2NCIgYXR0cmlidXRlTmFtZT0iZmlsbCI+PC9hbmltYXRlPgo8L3JlY3Q+PHJlY3QgZmlsbD0iI2UxNWI2NCIgaGVpZ2h0PSIyMCIgd2lkdGg9IjIwIiB5PSIxOSIgeD0iNjEiPgogIDxhbmltYXRlIGNhbGNNb2RlPSJkaXNjcmV0ZSIgYmVnaW49IjAuMjVzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgZHVyPSIxcyIga2V5VGltZXM9IjA7MC4xMjU7MSIgdmFsdWVzPSIjZjhiMjZhOyNlMTViNjQ7I2UxNWI2NCIgYXR0cmlidXRlTmFtZT0iZmlsbCI+PC9hbmltYXRlPgo8L3JlY3Q+PHJlY3QgZmlsbD0iI2UxNWI2NCIgaGVpZ2h0PSIyMCIgd2lkdGg9IjIwIiB5PSI0MCIgeD0iMTkiPgogIDxhbmltYXRlIGNhbGNNb2RlPSJkaXNjcmV0ZSIgYmVnaW49IjAuODc1cyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGR1cj0iMXMiIGtleVRpbWVzPSIwOzAuMTI1OzEiIHZhbHVlcz0iI2Y4YjI2YTsjZTE1YjY0OyNlMTViNjQiIGF0dHJpYnV0ZU5hbWU9ImZpbGwiPjwvYW5pbWF0ZT4KPC9yZWN0PjxyZWN0IGZpbGw9IiNlMTViNjQiIGhlaWdodD0iMjAiIHdpZHRoPSIyMCIgeT0iNDAiIHg9IjYxIj4KICA8YW5pbWF0ZSBjYWxjTW9kZT0iZGlzY3JldGUiIGJlZ2luPSIwLjM3NXMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiBrZXlUaW1lcz0iMDswLjEyNTsxIiB2YWx1ZXM9IiNmOGIyNmE7I2UxNWI2NDsjZTE1YjY0IiBhdHRyaWJ1dGVOYW1lPSJmaWxsIj48L2FuaW1hdGU+CjwvcmVjdD48cmVjdCBmaWxsPSIjZTE1YjY0IiBoZWlnaHQ9IjIwIiB3aWR0aD0iMjAiIHk9IjYxIiB4PSIxOSI+CiAgPGFuaW1hdGUgY2FsY01vZGU9ImRpc2NyZXRlIiBiZWdpbj0iMC43NXMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiBrZXlUaW1lcz0iMDswLjEyNTsxIiB2YWx1ZXM9IiNmOGIyNmE7I2UxNWI2NDsjZTE1YjY0IiBhdHRyaWJ1dGVOYW1lPSJmaWxsIj48L2FuaW1hdGU+CjwvcmVjdD48cmVjdCBmaWxsPSIjZTE1YjY0IiBoZWlnaHQ9IjIwIiB3aWR0aD0iMjAiIHk9IjYxIiB4PSI0MCI+CiAgPGFuaW1hdGUgY2FsY01vZGU9ImRpc2NyZXRlIiBiZWdpbj0iMC42MjVzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgZHVyPSIxcyIga2V5VGltZXM9IjA7MC4xMjU7MSIgdmFsdWVzPSIjZjhiMjZhOyNlMTViNjQ7I2UxNWI2NCIgYXR0cmlidXRlTmFtZT0iZmlsbCI+PC9hbmltYXRlPgo8L3JlY3Q+PHJlY3QgZmlsbD0iI2UxNWI2NCIgaGVpZ2h0PSIyMCIgd2lkdGg9IjIwIiB5PSI2MSIgeD0iNjEiPgogIDxhbmltYXRlIGNhbGNNb2RlPSJkaXNjcmV0ZSIgYmVnaW49IjAuNXMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiBrZXlUaW1lcz0iMDswLjEyNTsxIiB2YWx1ZXM9IiNmOGIyNmE7I2UxNWI2NDsjZTE1YjY0IiBhdHRyaWJ1dGVOYW1lPSJmaWxsIj48L2FuaW1hdGU+CjwvcmVjdD48Zz48L2c+PC9nPjwvc3ZnPg==)
* @param {Object} options - Configuration options
* @param {string[]} [options.colors] - Array of hex colors to replace existing colors
* @param {number} [options.width] - Width of the SVG (default: 200)
* @param {number} [options.height] - Height of the SVG (default: 200)
* @param {number} [options.size] - Size for both width and height
* @example loadingSquareBlocks({ colors: ['#0099e5', '#ff4c4c'], size: 100 });
* @returns {string} SVG string with applied customizations
*/
export const loadingSquareBlocks = (options: LoadingOptions = {}) => customSVG(options, 
`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid" width="200" height="200" style="shape-rendering: auto; display: block; "><g><rect fill="#e15b64" height="20" width="20" y="19" x="19"><animate calcMode="discrete" begin="0s" repeatCount="indefinite" dur="1s" keyTimes="0;0.125;1" values="#f8b26a;#e15b64;#e15b64" attributeName="fill"></animate></rect><rect fill="#e15b64" height="20" width="20" y="19" x="40"><animate calcMode="discrete" begin="0.125s" repeatCount="indefinite" dur="1s" keyTimes="0;0.125;1" values="#f8b26a;#e15b64;#e15b64" attributeName="fill"></animate></rect><rect fill="#e15b64" height="20" width="20" y="19" x="61"><animate calcMode="discrete" begin="0.25s" repeatCount="indefinite" dur="1s" keyTimes="0;0.125;1" values="#f8b26a;#e15b64;#e15b64" attributeName="fill"></animate></rect><rect fill="#e15b64" height="20" width="20" y="40" x="19"><animate calcMode="discrete" begin="0.875s" repeatCount="indefinite" dur="1s" keyTimes="0;0.125;1" values="#f8b26a;#e15b64;#e15b64" attributeName="fill"></animate></rect><rect fill="#e15b64" height="20" width="20" y="40" x="61"><animate calcMode="discrete" begin="0.375s" repeatCount="indefinite" dur="1s" keyTimes="0;0.125;1" values="#f8b26a;#e15b64;#e15b64" attributeName="fill"></animate></rect><rect fill="#e15b64" height="20" width="20" y="61" x="19"><animate calcMode="discrete" begin="0.75s" repeatCount="indefinite" dur="1s" keyTimes="0;0.125;1" values="#f8b26a;#e15b64;#e15b64" attributeName="fill"></animate></rect><rect fill="#e15b64" height="20" width="20" y="61" x="40"><animate calcMode="discrete" begin="0.625s" repeatCount="indefinite" dur="1s" keyTimes="0;0.125;1" values="#f8b26a;#e15b64;#e15b64" attributeName="fill"></animate></rect><rect fill="#e15b64" height="20" width="20" y="61" x="61"><animate calcMode="discrete" begin="0.5s" repeatCount="indefinite" dur="1s" keyTimes="0;0.125;1" values="#f8b26a;#e15b64;#e15b64" attributeName="fill"></animate></rect><g></g></g></svg>`);

/**
 * Shared utility function for processing SVG icons
 * @param {Object} options - Configuration options
 * @param {boolean} [options.raw] - Whether to return the raw SVG string or an img tag
 * @param {string[]} [options.colors] - Array of hex colors to replace existing colors
 * @param {number|string} [options.width] - Width of the SVG
 * @param {number|string} [options.height] - Height of the SVG
 * @param {number|string} [options.size] - Size for both width and height (overrides width/height)
 * @param {string} svgString - The original SVG content
 * @returns {string} SVG string with applied customizations
 */
function customSVG( options: LoadingOptions, svgString: string) {
    const { colors = [], width, height, size, raw = false } = options;

    const widthMatch = svgString.match(/width="[^"]*"/);
    const heightMatch = svgString.match(/height="[^"]*"/);
    const finalWidth = size || width || widthMatch?.[1] || '100';
    const finalHeight = size || height || heightMatch?.[1] || '100';

    if (width || height || size) {
        svgString = svgString.replace(/width="[^"]*"/, `width="${finalWidth}px"`);
        svgString = svgString.replace(/height="[^"]*"/, `height="${finalHeight}px"`);
    }


    // If colors array is provided, replace hex colors in order of appearance
    if (colors && colors.length > 0) {
        const hexColorRegex = /#[0-9a-fA-F]{6}|#[0-9a-fA-F]{3}/g;
        let colorIndex = 0;
        
        svgString = svgString.replace(hexColorRegex, (match) => {
            if (colorIndex < colors.length) {
                const replacement = colors[colorIndex];
                colorIndex++;
                return replacement?.startsWith('#') ? replacement : `#${replacement}`;
            }
            return match; // Keep original color if no replacement available
        });
    }
    if (!raw) 
        svgString = (width || height || size ? `<img width="${finalWidth}" height="${finalHeight}"` : '<img') + ` alt="icon" src="data:image/svg+xml;utf8,${encodeURIComponent(svgString)}" />`

    return svgString;
}
interface LoadingOptions {
  /** Array of hex colors to replace existing colors, in order of appearance in SVG*/
  colors?: string[];
  /** Width of the SVG */
  width?: number;
  /** Height of the SVG */
  height?: number;
  /** Size for both width and height (overrides width/height) */
  size?: number;
  /** Whether to return the raw SVG string or an img tag */
  raw?: boolean;
}