grab-url 0.9.141 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/dist/grab-api.cjs.js +1 -1
  2. package/dist/grab-api.cjs.js.map +1 -1
  3. package/dist/grab-api.d.ts +5 -5
  4. package/dist/grab-api.es.js.map +1 -1
  5. package/dist/icons.cjs.js +1 -1
  6. package/dist/icons.cjs.js.map +1 -1
  7. package/dist/icons.d.ts +0 -234
  8. package/dist/icons.es.js +1 -113
  9. package/dist/icons.es.js.map +1 -1
  10. package/package.json +12 -13
  11. package/readme.md +12 -18
  12. package/src/grab-api.ts +5 -5
  13. package/src/{grab-url-cli.js → grab-url.ts} +380 -354
  14. package/src/{spinners.json → icons/cli/spinners.json} +1 -482
  15. package/src/icons/index.ts +0 -255
  16. package/src/icons/svg/index.ts +313 -0
  17. package/src/grab-cli.js +0 -316
  18. /package/src/icons/{loading-bouncy-ball.svg → svg/loading-bouncy-ball.svg} +0 -0
  19. /package/src/icons/{loading-double-ring.svg → svg/loading-double-ring.svg} +0 -0
  20. /package/src/icons/{loading-eclipse.svg → svg/loading-eclipse.svg} +0 -0
  21. /package/src/icons/{loading-ellipsis.svg → svg/loading-ellipsis.svg} +0 -0
  22. /package/src/icons/{loading-floating-search.svg → svg/loading-floating-search.svg} +0 -0
  23. /package/src/icons/{loading-gears.svg → svg/loading-gears.svg} +0 -0
  24. /package/src/icons/{loading-infinity.svg → svg/loading-infinity.svg} +0 -0
  25. /package/src/icons/{loading-orbital.svg → svg/loading-orbital.svg} +0 -0
  26. /package/src/icons/{loading-pacman.svg → svg/loading-pacman.svg} +0 -0
  27. /package/src/icons/{loading-pulse-bars.svg → svg/loading-pulse-bars.svg} +0 -0
  28. /package/src/icons/{loading-red-blue-ball.svg → svg/loading-red-blue-ball.svg} +0 -0
  29. /package/src/icons/{loading-reload-arrow.svg → svg/loading-reload-arrow.svg} +0 -0
  30. /package/src/icons/{loading-ring.svg → svg/loading-ring.svg} +0 -0
  31. /package/src/icons/{loading-ripple.svg → svg/loading-ripple.svg} +0 -0
  32. /package/src/icons/{loading-spinner-oval.svg → svg/loading-spinner-oval.svg} +0 -0
  33. /package/src/icons/{loading-spinner.svg → svg/loading-spinner.svg} +0 -0
  34. /package/src/icons/{loading-square-blocks.svg → svg/loading-square-blocks.svg} +0 -0
@@ -0,0 +1,313 @@
1
+ // Do a Barrel Roll (auto-generated) index of SVG icons as JS exports, tree shaking to only the icons used.
2
+
3
+ /**
4
+ * Returns a customized SVG string for icon loading-bouncy-ball
5
+ *
6
+ * ![loading-bouncy-ball](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHN0eWxlPSJzaGFwZS1yZW5kZXJpbmc6IGF1dG87IGRpc3BsYXk6IGJsb2NrOyAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48Zz48Y2lyY2xlIGZpbGw9IiNlMTViNjQiIHI9IjEzIiBjeT0iMjMiIGN4PSI1MCI+CiAgPGFuaW1hdGUgdmFsdWVzPSIyMzs3NzsyMyIga2V5VGltZXM9IjA7MC41OzEiIGtleVNwbGluZXM9IjAuNDUgMCAwLjkgMC41NTswIDAuNDUgMC41NSAwLjkiIGNhbGNNb2RlPSJzcGxpbmUiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiBhdHRyaWJ1dGVOYW1lPSJjeSI+PC9hbmltYXRlPgo8L2NpcmNsZT48Zz48L2c+PC9nPjwvc3ZnPg==)
7
+ * @param {Object} options - Configuration options
8
+ * @param {string[]} [options.colors] - Array of hex colors to replace existing colors
9
+ * @param {number} [options.width] - Width of the SVG (default: 200)
10
+ * @param {number} [options.height] - Height of the SVG (default: 200)
11
+ * @param {number} [options.size] - Size for both width and height
12
+ * @example loadingBouncyBall({ colors: ['#0099e5', '#ff4c4c'], size: 100 });
13
+ * @returns {string} SVG string with applied customizations
14
+ */
15
+ export const loadingBouncyBall = (options: LoadingOptions = {}) => customSVG(options,
16
+ `<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>`);
17
+
18
+ /**
19
+ * Returns a customized SVG string for icon loading-double-ring
20
+ *
21
+ * ![loading-double-ring](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHN0eWxlPSJzaGFwZS1yZW5kZXJpbmc6IGF1dG87IGRpc3BsYXk6IGJsb2NrOyAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48Zz48Y2lyY2xlIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgZmlsbD0ibm9uZSIgc3Ryb2tlLWRhc2hhcnJheT0iNTAuMjY1NDgyNDU3NDM2NjkgNTAuMjY1NDgyNDU3NDM2NjkiIHN0cm9rZT0iIzAwOTllNSIgc3Ryb2tlLXdpZHRoPSI4IiByPSIzMiIgY3k9IjUwIiBjeD0iNTAiPgogIDxhbmltYXRlVHJhbnNmb3JtIHZhbHVlcz0iMCA1MCA1MDszNjAgNTAgNTAiIGtleVRpbWVzPSIwOzEiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB0eXBlPSJyb3RhdGUiIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSI+PC9hbmltYXRlVHJhbnNmb3JtPgo8L2NpcmNsZT4KPGNpcmNsZSBzdHJva2UtbGluZWNhcD0icm91bmQiIGZpbGw9Im5vbmUiIHN0cm9rZS1kYXNob2Zmc2V0PSIzNi4xMjgzMTU1MTYyODI2MiIgc3Ryb2tlLWRhc2hhcnJheT0iMzYuMTI4MzE1NTE2MjgyNjIgMzYuMTI4MzE1NTE2MjgyNjIiIHN0cm9rZT0iI2ZmNGM0YyIgc3Ryb2tlLXdpZHRoPSI4IiByPSIyMyIgY3k9IjUwIiBjeD0iNTAiPgogIDxhbmltYXRlVHJhbnNmb3JtIHZhbHVlcz0iMCA1MCA1MDstMzYwIDUwIDUwIiBrZXlUaW1lcz0iMDsxIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgZHVyPSIxcyIgdHlwZT0icm90YXRlIiBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iPjwvYW5pbWF0ZVRyYW5zZm9ybT4KPC9jaXJjbGU+PGc+PC9nPjwvZz48L3N2Zz4=)
22
+ * @param {Object} options - Configuration options
23
+ * @param {string[]} [options.colors] - Array of hex colors to replace existing colors
24
+ * @param {number} [options.width] - Width of the SVG (default: 200)
25
+ * @param {number} [options.height] - Height of the SVG (default: 200)
26
+ * @param {number} [options.size] - Size for both width and height
27
+ * @example loadingDoubleRing({ colors: ['#0099e5', '#ff4c4c'], size: 100 });
28
+ * @returns {string} SVG string with applied customizations
29
+ */
30
+ export const loadingDoubleRing = (options: LoadingOptions = {}) => customSVG(options,
31
+ `<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>`);
32
+
33
+ /**
34
+ * Returns a customized SVG string for icon loading-eclipse
35
+ *
36
+ * ![loading-eclipse](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHN0eWxlPSJzaGFwZS1yZW5kZXJpbmc6IGF1dG87IGRpc3BsYXk6IGJsb2NrOyI+PGc+PHBhdGggc3Ryb2tlPSJub25lIiBmaWxsPSIjZmZiOTAwIiBkPSJNMTAgNTBBNDAgNDAgMCAwIDAgOTAgNTBBNDAgNDIgMCAwIDEgMTAgNTAiPgogIDxhbmltYXRlVHJhbnNmb3JtIHZhbHVlcz0iMCA1MCA1MTszNjAgNTAgNTEiIGtleVRpbWVzPSIwOzEiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB0eXBlPSJyb3RhdGUiIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSI+PC9hbmltYXRlVHJhbnNmb3JtPgo8L3BhdGg+PGc+PC9nPjwvZz48L3N2Zz4=)
37
+ * @param {Object} options - Configuration options
38
+ * @param {string[]} [options.colors] - Array of hex colors to replace existing colors
39
+ * @param {number} [options.width] - Width of the SVG (default: 200)
40
+ * @param {number} [options.height] - Height of the SVG (default: 200)
41
+ * @param {number} [options.size] - Size for both width and height
42
+ * @example loadingEclipse({ colors: ['#0099e5', '#ff4c4c'], size: 100 });
43
+ * @returns {string} SVG string with applied customizations
44
+ */
45
+ export const loadingEclipse = (options: LoadingOptions = {}) => customSVG(options,
46
+ `<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>`);
47
+
48
+ /**
49
+ * Returns a customized SVG string for icon loading-ellipsis
50
+ *
51
+ * ![loading-ellipsis](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHN0eWxlPSJzaGFwZS1yZW5kZXJpbmc6IGF1dG87IGRpc3BsYXk6IGJsb2NrOyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxnPjxjaXJjbGUgZmlsbD0iI2QyMDk2MiIgcj0iMTAiIGN5PSI1MCIgY3g9Ijg0Ij4KICAgIDxhbmltYXRlIGJlZ2luPSIwcyIga2V5U3BsaW5lcz0iMCAwLjUgMC41IDEiIHZhbHVlcz0iMTA7MCIga2V5VGltZXM9IjA7MSIgY2FsY01vZGU9InNwbGluZSIgZHVyPSIwLjI1cyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGF0dHJpYnV0ZU5hbWU9InIiPjwvYW5pbWF0ZT4KICAgIDxhbmltYXRlIGJlZ2luPSIwcyIgdmFsdWVzPSIjZDIwOTYyOyMwMGE3OGU7IzdhYzE0MzsjZjQ3NzIxOyNkMjA5NjIiIGtleVRpbWVzPSIwOzAuMjU7MC41OzAuNzU7MSIgY2FsY01vZGU9ImRpc2NyZXRlIiBkdXI9IjFzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgYXR0cmlidXRlTmFtZT0iZmlsbCI+PC9hbmltYXRlPgo8L2NpcmNsZT48Y2lyY2xlIGZpbGw9IiNkMjA5NjIiIHI9IjEwIiBjeT0iNTAiIGN4PSIxNiI+CiAgPGFuaW1hdGUgYmVnaW49IjBzIiBrZXlTcGxpbmVzPSIwIDAuNSAwLjUgMTswIDAuNSAwLjUgMTswIDAuNSAwLjUgMTswIDAuNSAwLjUgMSIgdmFsdWVzPSIwOzA7MTA7MTA7MTAiIGtleVRpbWVzPSIwOzAuMjU7MC41OzAuNzU7MSIgY2FsY01vZGU9InNwbGluZSIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGF0dHJpYnV0ZU5hbWU9InIiPjwvYW5pbWF0ZT4KICA8YW5pbWF0ZSBiZWdpbj0iMHMiIGtleVNwbGluZXM9IjAgMC41IDAuNSAxOzAgMC41IDAuNSAxOzAgMC41IDAuNSAxOzAgMC41IDAuNSAxIiB2YWx1ZXM9IjE2OzE2OzE2OzUwOzg0IiBrZXlUaW1lcz0iMDswLjI1OzAuNTswLjc1OzEiIGNhbGNNb2RlPSJzcGxpbmUiIGR1cj0iMXMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBhdHRyaWJ1dGVOYW1lPSJjeCI+PC9hbmltYXRlPgo8L2NpcmNsZT48Y2lyY2xlIGZpbGw9IiNmNDc3MjEiIHI9IjEwIiBjeT0iNTAiIGN4PSI1MCI+CiAgPGFuaW1hdGUgYmVnaW49Ii0wLjI1cyIga2V5U3BsaW5lcz0iMCAwLjUgMC41IDE7MCAwLjUgMC41IDE7MCAwLjUgMC41IDE7MCAwLjUgMC41IDEiIHZhbHVlcz0iMDswOzEwOzEwOzEwIiBrZXlUaW1lcz0iMDswLjI1OzAuNTswLjc1OzEiIGNhbGNNb2RlPSJzcGxpbmUiIGR1cj0iMXMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBhdHRyaWJ1dGVOYW1lPSJyIj48L2FuaW1hdGU+CiAgPGFuaW1hdGUgYmVnaW49Ii0wLjI1cyIga2V5U3BsaW5lcz0iMCAwLjUgMC41IDE7MCAwLjUgMC41IDE7MCAwLjUgMC41IDE7MCAwLjUgMC41IDEiIHZhbHVlcz0iMTY7MTY7MTY7NTA7ODQiIGtleVRpbWVzPSIwOzAuMjU7MC41OzAuNzU7MSIgY2FsY01vZGU9InNwbGluZSIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGF0dHJpYnV0ZU5hbWU9ImN4Ij48L2FuaW1hdGU+CjwvY2lyY2xlPjxjaXJjbGUgZmlsbD0iIzdhYzE0MyIgcj0iMTAiIGN5PSI1MCIgY3g9Ijg0Ij4KICA8YW5pbWF0ZSBiZWdpbj0iLTAuNXMiIGtleVNwbGluZXM9IjAgMC41IDAuNSAxOzAgMC41IDAuNSAxOzAgMC41IDAuNSAxOzAgMC41IDAuNSAxIiB2YWx1ZXM9IjA7MDsxMDsxMDsxMCIga2V5VGltZXM9IjA7MC4yNTswLjU7MC43NTsxIiBjYWxjTW9kZT0ic3BsaW5lIiBkdXI9IjFzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgYXR0cmlidXRlTmFtZT0iciI+PC9hbmltYXRlPgogIDxhbmltYXRlIGJlZ2luPSItMC41cyIga2V5U3BsaW5lcz0iMCAwLjUgMC41IDE7MCAwLjUgMC41IDE7MCAwLjUgMC41IDE7MCAwLjUgMC41IDEiIHZhbHVlcz0iMTY7MTY7MTY7NTA7ODQiIGtleVRpbWVzPSIwOzAuMjU7MC41OzAuNzU7MSIgY2FsY01vZGU9InNwbGluZSIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGF0dHJpYnV0ZU5hbWU9ImN4Ij48L2FuaW1hdGU+CjwvY2lyY2xlPjxjaXJjbGUgZmlsbD0iIzAwYTc4ZSIgcj0iMTAiIGN5PSI1MCIgY3g9IjE2Ij4KICA8YW5pbWF0ZSBiZWdpbj0iLTAuNzVzIiBrZXlTcGxpbmVzPSIwIDAuNSAwLjUgMTswIDAuNSAwLjUgMTswIDAuNSAwLjUgMTswIDAuNSAwLjUgMSIgdmFsdWVzPSIwOzA7MTA7MTA7MTAiIGtleVRpbWVzPSIwOzAuMjU7MC41OzAuNzU7MSIgY2FsY01vZGU9InNwbGluZSIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGF0dHJpYnV0ZU5hbWU9InIiPjwvYW5pbWF0ZT4KICA8YW5pbWF0ZSBiZWdpbj0iLTAuNzVzIiBrZXlTcGxpbmVzPSIwIDAuNSAwLjUgMTswIDAuNSAwLjUgMTswIDAuNSAwLjUgMTswIDAuNSAwLjUgMSIgdmFsdWVzPSIxNjsxNjsxNjs1MDs4NCIga2V5VGltZXM9IjA7MC4yNTswLjU7MC43NTsxIiBjYWxjTW9kZT0ic3BsaW5lIiBkdXI9IjFzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgYXR0cmlidXRlTmFtZT0iY3giPjwvYW5pbWF0ZT4KPC9jaXJjbGU+PGc+PC9nPjwvZz48L3N2Zz4=)
52
+ * @param {Object} options - Configuration options
53
+ * @param {string[]} [options.colors] - Array of hex colors to replace existing colors
54
+ * @param {number} [options.width] - Width of the SVG (default: 200)
55
+ * @param {number} [options.height] - Height of the SVG (default: 200)
56
+ * @param {number} [options.size] - Size for both width and height
57
+ * @example loadingEllipsis({ colors: ['#0099e5', '#ff4c4c'], size: 100 });
58
+ * @returns {string} SVG string with applied customizations
59
+ */
60
+ export const loadingEllipsis = (options: LoadingOptions = {}) => customSVG(options,
61
+ `<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>`);
62
+
63
+ /**
64
+ * Returns a customized SVG string for icon loading-floating-search
65
+ *
66
+ * ![loading-floating-search](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCIgd2lkdGg9IjMzOSIgaGVpZ2h0PSIzMzkiIHN0eWxlPSJzaGFwZS1yZW5kZXJpbmc6IGF1dG87IGRpc3BsYXk6IGJsb2NrOyAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48Zz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MCA1MCkiPgogIDxnIHRyYW5zZm9ybT0ic2NhbGUoMC42KSI+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtNTAgLTUwKSI+CiAgICAgIDxnPgogICAgICAgIDxhbmltYXRlVHJhbnNmb3JtIGtleVRpbWVzPSIwOzAuMzM7MC42NjsxIiB2YWx1ZXM9Ii0yMCAtMjA7MjAgLTIwOzAgMjA7LTIwIC0yMCIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIHR5cGU9InRyYW5zbGF0ZSIgYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIj48L2FuaW1hdGVUcmFuc2Zvcm0+CiAgICAgICAgPHBhdGggZD0iTTQ0LjE5IDI2LjE1OGMtNC44MTcgMC05LjM0NSAxLjg3Ni0xMi43NTEgNS4yODJjLTMuNDA2IDMuNDA2LTUuMjgyIDcuOTM0LTUuMjgyIDEyLjc1MSBjMCA0LjgxNyAxLjg3NiA5LjM0NSA1LjI4MiAxMi43NTFjMy40MDYgMy40MDYgNy45MzQgNS4yODIgMTIuNzUxIDUuMjgyczkuMzQ1LTEuODc2IDEyLjc1MS01LjI4MiBjMy40MDYtMy40MDYgNS4yODItNy45MzQgNS4yODItMTIuNzUxYzAtNC44MTctMS44NzYtOS4zNDUtNS4yODItMTIuNzUxQzUzLjUzNiAyOC4wMzMgNDkuMDA3IDI2LjE1OCA0NC4xOSAyNi4xNTh6IiBmaWxsPSIjOWNjYmZiIj48L3BhdGg+CiAgICAgICAgPHBhdGggZD0iTTc4LjcxMiA3Mi40OTJMNjcuNTkzIDYxLjM3M2wtMy40NzUtMy40NzVjMS42MjEtMi4zNTIgMi43NzktNC45MjYgMy40NzUtNy41OTZjMS4wNDQtNC4wMDggMS4wNDQtOC4yMyAwLTEyLjIzOCBjLTEuMDQ4LTQuMDIyLTMuMTQ2LTcuODI3LTYuMjk3LTEwLjk3OUM1Ni41NzIgMjIuMzYyIDUwLjM4MSAyMCA0NC4xOSAyMEMzOCAyMCAzMS44MDkgMjIuMzYyIDI3LjA4NSAyNy4wODUgYy05LjQ0NyA5LjQ0Ny05LjQ0NyAyNC43NjMgMCAzNC4yMUMzMS44MDkgNjYuMDE5IDM4IDY4LjM4MSA0NC4xOSA2OC4zODFjNC43OTggMCA5LjU5My0xLjQyNSAxMy43MDgtNC4yNjJsOS42OTUgOS42OTUgbDQuODk5IDQuODk5QzczLjM1MSA3OS41NzEgNzQuNDc2IDgwIDc1LjYwMiA4MHMyLjI1MS0wLjQyOSAzLjExLTEuMjg4QzgwLjQyOSA3Ni45OTQgODAuNDI5IDc0LjIwOSA3OC43MTIgNzIuNDkyeiBNNTYuOTQyIDU2Ljk0MiBjLTMuNDA2IDMuNDA2LTcuOTM0IDUuMjgyLTEyLjc1MSA1LjI4MnMtOS4zNDUtMS44NzYtMTIuNzUxLTUuMjgyYy0zLjQwNi0zLjQwNi01LjI4Mi03LjkzNC01LjI4Mi0xMi43NTEgYzAtNC44MTcgMS44NzYtOS4zNDUgNS4yODItMTIuNzUxYzMuNDA2LTMuNDA2IDcuOTM0LTUuMjgyIDEyLjc1MS01LjI4MmM0LjgxNyAwIDkuMzQ1IDEuODc2IDEyLjc1MSA1LjI4MiBjMy40MDYgMy40MDYgNS4yODIgNy45MzQgNS4yODIgMTIuNzUxQzYyLjIyMyA0OS4wMDcgNjAuMzQ3IDUzLjUzNiA1Ni45NDIgNTYuOTQyeiIgZmlsbD0iIzBjMTNlOSI+PC9wYXRoPgogICAgICA8L2c+CiAgICA8L2c+CiAgPC9nPgo8L2c+PGc+PC9nPjwvZz48L3N2Zz4=)
67
+ * @param {Object} options - Configuration options
68
+ * @param {string[]} [options.colors] - Array of hex colors to replace existing colors
69
+ * @param {number} [options.width] - Width of the SVG (default: 339)
70
+ * @param {number} [options.height] - Height of the SVG (default: 339)
71
+ * @param {number} [options.size] - Size for both width and height
72
+ * @example loadingFloatingSearch({ colors: ['#0099e5', '#ff4c4c'], size: 100 });
73
+ * @returns {string} SVG string with applied customizations
74
+ */
75
+ export const loadingFloatingSearch = (options: LoadingOptions = {}) => customSVG(options,
76
+ `<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>`);
77
+
78
+ /**
79
+ * Returns a customized SVG string for icon loading-gears
80
+ *
81
+ * ![loading-gears](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHN0eWxlPSJzaGFwZS1yZW5kZXJpbmc6IGF1dG87IGRpc3BsYXk6IGJsb2NrOyAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48Zz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MCA1MCkiPgo8Zz4KPGFuaW1hdGVUcmFuc2Zvcm0gcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGR1cj0iMC4ycyIga2V5VGltZXM9IjA7MSIgdmFsdWVzPSIwOzQ1IiB0eXBlPSJyb3RhdGUiIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSI+PC9hbmltYXRlVHJhbnNmb3JtPjxwYXRoIGZpbGw9IiNmZDVjNjMiIGQ9Ik0yOS40OTE1MjQyMDYxMTcyNTUgLTUuNSBMMzcuNDkxNTI0MjA2MTE3MjU1IC01LjUgTDM3LjQ5MTUyNDIwNjExNzI1NSA1LjUgTDI5LjQ5MTUyNDIwNjExNzI1NSA1LjUgQTMwIDMwIDAgMCAxIDI0Ljc0Mjc0NDA1MDE5ODczOCAxNi45NjQ1Njk0NTcxNDY3MTIgTDI0Ljc0Mjc0NDA1MDE5ODczOCAxNi45NjQ1Njk0NTcxNDY3MTIgTDMwLjM5OTU5ODI5OTY5MTExNyAyMi42MjE0MjM3MDY2MzkwOTIgTDIyLjYyMTQyMzcwNjYzOTA5NiAzMC4zOTk1OTgyOTk2OTExMTQgTDE2Ljk2NDU2OTQ1NzE0NjcxNiAyNC43NDI3NDQwNTAxOTg3MzQgQTMwIDMwIDAgMCAxIDUuNSAyOS40OTE1MjQyMDYxMTcyNTUgTDUuNSAyOS40OTE1MjQyMDYxMTcyNTUgTDUuNSAzNy40OTE1MjQyMDYxMTcyNTUgTC01LjQ5OTk5OTk5OTk5OTk5NyAzNy40OTE1MjQyMDYxMTcyNTUgTC01LjQ5OTk5OTk5OTk5OTk5NyAyOS40OTE1MjQyMDYxMTcyNTUgQTMwIDMwIDAgMCAxIC0xNi45NjQ1Njk0NTcxNDY3MDUgMjQuNzQyNzQ0MDUwMTk4NzM4IEwtMTYuOTY0NTY5NDU3MTQ2NzA1IDI0Ljc0Mjc0NDA1MDE5ODczOCBMLTIyLjYyMTQyMzcwNjYzOTA4NSAzMC4zOTk1OTgyOTk2OTExMTcgTC0zMC4zOTk1OTgyOTk2OTExMTcgMjIuNjIxNDIzNzA2NjM5MDkyIEwtMjQuNzQyNzQ0MDUwMTk4NzM4IDE2Ljk2NDU2OTQ1NzE0NjcxMiBBMzAgMzAgMCAwIDEgLTI5LjQ5MTUyNDIwNjExNzI1NSA1LjUwMDAwMDAwMDAwMDAwOSBMLTI5LjQ5MTUyNDIwNjExNzI1NSA1LjUwMDAwMDAwMDAwMDAwOSBMLTM3LjQ5MTUyNDIwNjExNzI1NSA1LjUwMDAwMDAwMDAwMDAxIEwtMzcuNDkxNTI0MjA2MTE3MjU1IC01LjUwMDAwMDAwMDAwMDAwMSBMLTI5LjQ5MTUyNDIwNjExNzI1NSAtNS41MDAwMDAwMDAwMDAwMDIgQTMwIDMwIDAgMCAxIC0yNC43NDI3NDQwNTAxOTg3MzggLTE2Ljk2NDU2OTQ1NzE0NjcwNSBMLTI0Ljc0Mjc0NDA1MDE5ODczOCAtMTYuOTY0NTY5NDU3MTQ2NzA1IEwtMzAuMzk5NTk4Mjk5NjkxMTE3IC0yMi42MjE0MjM3MDY2MzkwODUgTC0yMi42MjE0MjM3MDY2MzkwOTIgLTMwLjM5OTU5ODI5OTY5MTExNyBMLTE2Ljk2NDU2OTQ1NzE0NjcxMiAtMjQuNzQyNzQ0MDUwMTk4NzM4IEEzMCAzMCAwIDAgMSAtNS41MDAwMDAwMDAwMDAwMTEgLTI5LjQ5MTUyNDIwNjExNzI1NSBMLTUuNTAwMDAwMDAwMDAwMDExIC0yOS40OTE1MjQyMDYxMTcyNTUgTC01LjUwMDAwMDAwMDAwMDAxMiAtMzcuNDkxNTI0MjA2MTE3MjU1IEw1LjQ5OTk5OTk5OTk5OTk5OCAtMzcuNDkxNTI0MjA2MTE3MjU1IEw1LjUgLTI5LjQ5MTUyNDIwNjExNzI1NSBBMzAgMzAgMCAwIDEgMTYuOTY0NTY5NDU3MTQ2NzAyIC0yNC43NDI3NDQwNTAxOTg3NCBMMTYuOTY0NTY5NDU3MTQ2NzAyIC0yNC43NDI3NDQwNTAxOTg3NCBMMjIuNjIxNDIzNzA2NjM5MDggLTMwLjM5OTU5ODI5OTY5MTEyIEwzMC4zOTk1OTgyOTk2OTExMTcgLTIyLjYyMTQyMzcwNjYzOTEgTDI0Ljc0Mjc0NDA1MDE5ODczOCAtMTYuOTY0NTY5NDU3MTQ2NzE2IEEzMCAzMCAwIDAgMSAyOS40OTE1MjQyMDYxMTcyNTUgLTUuNTAwMDAwMDAwMDAwMDEzIE0wIC0yMEEyMCAyMCAwIDEgMCAwIDIwIEEyMCAyMCAwIDEgMCAwIC0yMCI+PC9wYXRoPjwvZz48L2c+PGc+PC9nPjwvZz48L3N2Zz4=)
82
+ * @param {Object} options - Configuration options
83
+ * @param {string[]} [options.colors] - Array of hex colors to replace existing colors
84
+ * @param {number} [options.width] - Width of the SVG (default: 200)
85
+ * @param {number} [options.height] - Height of the SVG (default: 200)
86
+ * @param {number} [options.size] - Size for both width and height
87
+ * @example loadingGears({ colors: ['#0099e5', '#ff4c4c'], size: 100 });
88
+ * @returns {string} SVG string with applied customizations
89
+ */
90
+ export const loadingGears = (options: LoadingOptions = {}) => customSVG(options,
91
+ `<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>`);
92
+
93
+ /**
94
+ * Returns a customized SVG string for icon loading-infinity
95
+ *
96
+ * ![loading-infinity](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHN0eWxlPSJzaGFwZS1yZW5kZXJpbmc6IGF1dG87IGRpc3BsYXk6IGJsb2NrOyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxnPjxwYXRoIHN0eWxlPSJ0cmFuc2Zvcm06c2NhbGUoMC44KTt0cmFuc2Zvcm0tb3JpZ2luOjUwcHggNTBweCIgc3Ryb2tlLWxpbmVjYXA9InJvdW5kIiBkPSJNMjQuMyAzMEMxMS40IDMwIDUgNDMuMyA1IDUwczYuNCAyMCAxOS4zIDIwYzE5LjMgMCAzMi4xLTQwIDUxLjQtNDAgQzg4LjYgMzAgOTUgNDMuMyA5NSA1MHMtNi40IDIwLTE5LjMgMjBDNTYuNCA3MCA0My42IDMwIDI0LjMgMzB6IiBzdHJva2UtZGFzaGFycmF5PSI0Mi43NjQ4MjEzNzA0NDI3MSA0Mi43NjQ4MjEzNzA0NDI3MSIgc3Ryb2tlLXdpZHRoPSI4IiBzdHJva2U9IiMwMDk5ZTUiIGZpbGw9Im5vbmUiPgogIDxhbmltYXRlIHZhbHVlcz0iMDsyNTYuNTg4OTI4MjIyNjU2MjUiIGtleVRpbWVzPSIwOzEiIGR1cj0iMS43NTQzODU5NjQ5MTIyODA2cyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGF0dHJpYnV0ZU5hbWU9InN0cm9rZS1kYXNob2Zmc2V0Ij48L2FuaW1hdGU+CjwvcGF0aD48Zz48L2c+PC9nPjwvc3ZnPg==)
97
+ * @param {Object} options - Configuration options
98
+ * @param {string[]} [options.colors] - Array of hex colors to replace existing colors
99
+ * @param {number} [options.width] - Width of the SVG (default: 200)
100
+ * @param {number} [options.height] - Height of the SVG (default: 200)
101
+ * @param {number} [options.size] - Size for both width and height
102
+ * @example loadingInfinity({ colors: ['#0099e5', '#ff4c4c'], size: 100 });
103
+ * @returns {string} SVG string with applied customizations
104
+ */
105
+ export const loadingInfinity = (options: LoadingOptions = {}) => customSVG(options,
106
+ `<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>`);
107
+
108
+ /**
109
+ * Returns a customized SVG string for icon loading-orbital
110
+ *
111
+ * ![loading-orbital](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHN0eWxlPSJzaGFwZS1yZW5kZXJpbmc6IGF1dG87IGRpc3BsYXk6IGJsb2NrOyAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48Zz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg1MCw1MCkiPgogIDxnIHRyYW5zZm9ybT0ic2NhbGUoMC43KSI+CiAgPGNpcmNsZSBmaWxsPSIjZTkwYzU5IiByPSI1MCIgY3k9IjAiIGN4PSIwIj48L2NpcmNsZT4KICA8Y2lyY2xlIGZpbGw9IiM0NmRmZjAiIHI9IjE1IiBjeT0iLTI4IiBjeD0iMCI+CiAgICA8YW5pbWF0ZVRyYW5zZm9ybSB2YWx1ZXM9IjAgMCAwOzM2MCAwIDAiIGtleVRpbWVzPSIwOzEiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiB0eXBlPSJyb3RhdGUiIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSI+PC9hbmltYXRlVHJhbnNmb3JtPgogIDwvY2lyY2xlPgogIDwvZz4KPC9nPjxnPjwvZz48L2c+PC9zdmc+)
112
+ * @param {Object} options - Configuration options
113
+ * @param {string[]} [options.colors] - Array of hex colors to replace existing colors
114
+ * @param {number} [options.width] - Width of the SVG (default: 200)
115
+ * @param {number} [options.height] - Height of the SVG (default: 200)
116
+ * @param {number} [options.size] - Size for both width and height
117
+ * @example loadingOrbital({ colors: ['#0099e5', '#ff4c4c'], size: 100 });
118
+ * @returns {string} SVG string with applied customizations
119
+ */
120
+ export const loadingOrbital = (options: LoadingOptions = {}) => customSVG(options,
121
+ `<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>`);
122
+
123
+ /**
124
+ * Returns a customized SVG string for icon loading-pacman
125
+ *
126
+ * ![loading-pacman](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHN0eWxlPSJzaGFwZS1yZW5kZXJpbmc6IGF1dG87IGRpc3BsYXk6IGJsb2NrOyAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48Zz48Zz4KICA8Y2lyY2xlIGZpbGw9IiNlMTViNjQiIHI9IjQiIGN5PSI1MCIgY3g9IjYwIj4KICAgIDxhbmltYXRlIGJlZ2luPSItMC42N3MiIGtleVRpbWVzPSIwOzEiIHZhbHVlcz0iOTU7MzUiIGR1cj0iMXMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBhdHRyaWJ1dGVOYW1lPSJjeCI+PC9hbmltYXRlPgogICAgPGFuaW1hdGUgYmVnaW49Ii0wLjY3cyIga2V5VGltZXM9IjA7MC4yOzEiIHZhbHVlcz0iMDsxOzEiIGR1cj0iMXMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBhdHRyaWJ1dGVOYW1lPSJmaWxsLW9wYWNpdHkiPjwvYW5pbWF0ZT4KICA8L2NpcmNsZT4KICA8Y2lyY2xlIGZpbGw9IiNlMTViNjQiIHI9IjQiIGN5PSI1MCIgY3g9IjYwIj4KICAgIDxhbmltYXRlIGJlZ2luPSItMC4zM3MiIGtleVRpbWVzPSIwOzEiIHZhbHVlcz0iOTU7MzUiIGR1cj0iMXMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBhdHRyaWJ1dGVOYW1lPSJjeCI+PC9hbmltYXRlPgogICAgPGFuaW1hdGUgYmVnaW49Ii0wLjMzcyIga2V5VGltZXM9IjA7MC4yOzEiIHZhbHVlcz0iMDsxOzEiIGR1cj0iMXMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBhdHRyaWJ1dGVOYW1lPSJmaWxsLW9wYWNpdHkiPjwvYW5pbWF0ZT4KICA8L2NpcmNsZT4KICA8Y2lyY2xlIGZpbGw9IiNlMTViNjQiIHI9IjQiIGN5PSI1MCIgY3g9IjYwIj4KICAgIDxhbmltYXRlIGJlZ2luPSIwcyIga2V5VGltZXM9IjA7MSIgdmFsdWVzPSI5NTszNSIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGF0dHJpYnV0ZU5hbWU9ImN4Ij48L2FuaW1hdGU+CiAgICA8YW5pbWF0ZSBiZWdpbj0iMHMiIGtleVRpbWVzPSIwOzAuMjsxIiB2YWx1ZXM9IjA7MTsxIiBkdXI9IjFzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgYXR0cmlidXRlTmFtZT0iZmlsbC1vcGFjaXR5Ij48L2FuaW1hdGU+CiAgPC9jaXJjbGU+CjwvZz48ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTUgMCkiPgogIDxwYXRoIHRyYW5zZm9ybT0icm90YXRlKDkwIDUwIDUwKSIgZmlsbD0iI2Y4YjI2YSIgZD0iTTUwIDUwTDIwIDUwQTMwIDMwIDAgMCAwIDgwIDUwWiI+PC9wYXRoPgogIDxwYXRoIGZpbGw9IiNmOGIyNmEiIGQ9Ik01MCA1MEwyMCA1MEEzMCAzMCAwIDAgMCA4MCA1MFoiPgogICAgPGFuaW1hdGVUcmFuc2Zvcm0ga2V5VGltZXM9IjA7MC41OzEiIHZhbHVlcz0iMCA1MCA1MDs0NSA1MCA1MDswIDUwIDUwIiBkdXI9IjFzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgdHlwZT0icm90YXRlIiBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iPjwvYW5pbWF0ZVRyYW5zZm9ybT4KICA8L3BhdGg+CiAgPHBhdGggZmlsbD0iI2Y4YjI2YSIgZD0iTTUwIDUwTDIwIDUwQTMwIDMwIDAgMCAxIDgwIDUwWiI+CiAgICA8YW5pbWF0ZVRyYW5zZm9ybSBrZXlUaW1lcz0iMDswLjU7MSIgdmFsdWVzPSIwIDUwIDUwOy00NSA1MCA1MDswIDUwIDUwIiBkdXI9IjFzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgdHlwZT0icm90YXRlIiBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iPjwvYW5pbWF0ZVRyYW5zZm9ybT4KICA8L3BhdGg+CjwvZz48Zz48L2c+PC9nPjwvc3ZnPg==)
127
+ * @param {Object} options - Configuration options
128
+ * @param {string[]} [options.colors] - Array of hex colors to replace existing colors
129
+ * @param {number} [options.width] - Width of the SVG (default: 200)
130
+ * @param {number} [options.height] - Height of the SVG (default: 200)
131
+ * @param {number} [options.size] - Size for both width and height
132
+ * @example loadingPacman({ colors: ['#0099e5', '#ff4c4c'], size: 100 });
133
+ * @returns {string} SVG string with applied customizations
134
+ */
135
+ export const loadingPacman = (options: LoadingOptions = {}) => customSVG(options,
136
+ `<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>`);
137
+
138
+ /**
139
+ * Returns a customized SVG string for icon loading-pulse-bars
140
+ *
141
+ * ![loading-pulse-bars](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHN0eWxlPSJzaGFwZS1yZW5kZXJpbmc6IGF1dG87IGRpc3BsYXk6IGJsb2NrOyAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48Zz48cmVjdCBmaWxsPSIjZTE1YjY0IiBoZWlnaHQ9IjQwIiB3aWR0aD0iMTUiIHk9IjMwIiB4PSIxNy41Ij4KICA8YW5pbWF0ZSBiZWdpbj0iLTAuMnMiIGtleVNwbGluZXM9IjAgMC41IDAuNSAxOzAgMC41IDAuNSAxIiB2YWx1ZXM9IjE4OzMwOzMwIiBrZXlUaW1lcz0iMDswLjU7MSIgY2FsY01vZGU9InNwbGluZSIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGF0dHJpYnV0ZU5hbWU9InkiPjwvYW5pbWF0ZT4KICA8YW5pbWF0ZSBiZWdpbj0iLTAuMnMiIGtleVNwbGluZXM9IjAgMC41IDAuNSAxOzAgMC41IDAuNSAxIiB2YWx1ZXM9IjY0OzQwOzQwIiBrZXlUaW1lcz0iMDswLjU7MSIgY2FsY01vZGU9InNwbGluZSIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGF0dHJpYnV0ZU5hbWU9ImhlaWdodCI+PC9hbmltYXRlPgo8L3JlY3Q+CjxyZWN0IGZpbGw9IiNmOGIyNmEiIGhlaWdodD0iNDAiIHdpZHRoPSIxNSIgeT0iMzAiIHg9IjQyLjUiPgogIDxhbmltYXRlIGJlZ2luPSItMC4xcyIga2V5U3BsaW5lcz0iMCAwLjUgMC41IDE7MCAwLjUgMC41IDEiIHZhbHVlcz0iMjAuOTk5OTk5OTk5OTk5OTk2OzMwOzMwIiBrZXlUaW1lcz0iMDswLjU7MSIgY2FsY01vZGU9InNwbGluZSIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGF0dHJpYnV0ZU5hbWU9InkiPjwvYW5pbWF0ZT4KICA8YW5pbWF0ZSBiZWdpbj0iLTAuMXMiIGtleVNwbGluZXM9IjAgMC41IDAuNSAxOzAgMC41IDAuNSAxIiB2YWx1ZXM9IjU4LjAwMDAwMDAwMDAwMDAxOzQwOzQwIiBrZXlUaW1lcz0iMDswLjU7MSIgY2FsY01vZGU9InNwbGluZSIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGF0dHJpYnV0ZU5hbWU9ImhlaWdodCI+PC9hbmltYXRlPgo8L3JlY3Q+CjxyZWN0IGZpbGw9IiNhYmJkODEiIGhlaWdodD0iNDAiIHdpZHRoPSIxNSIgeT0iMzAiIHg9IjY3LjUiPgogIDxhbmltYXRlIGtleVNwbGluZXM9IjAgMC41IDAuNSAxOzAgMC41IDAuNSAxIiB2YWx1ZXM9IjIwLjk5OTk5OTk5OTk5OTk5NjszMDszMCIga2V5VGltZXM9IjA7MC41OzEiIGNhbGNNb2RlPSJzcGxpbmUiIGR1cj0iMXMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBhdHRyaWJ1dGVOYW1lPSJ5Ij48L2FuaW1hdGU+CiAgPGFuaW1hdGUga2V5U3BsaW5lcz0iMCAwLjUgMC41IDE7MCAwLjUgMC41IDEiIHZhbHVlcz0iNTguMDAwMDAwMDAwMDAwMDE7NDA7NDAiIGtleVRpbWVzPSIwOzAuNTsxIiBjYWxjTW9kZT0ic3BsaW5lIiBkdXI9IjFzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgYXR0cmlidXRlTmFtZT0iaGVpZ2h0Ij48L2FuaW1hdGU+CjwvcmVjdD48Zz48L2c+PC9nPjwvc3ZnPg==)
142
+ * @param {Object} options - Configuration options
143
+ * @param {string[]} [options.colors] - Array of hex colors to replace existing colors
144
+ * @param {number} [options.width] - Width of the SVG (default: 200)
145
+ * @param {number} [options.height] - Height of the SVG (default: 200)
146
+ * @param {number} [options.size] - Size for both width and height
147
+ * @example loadingPulseBars({ colors: ['#0099e5', '#ff4c4c'], size: 100 });
148
+ * @returns {string} SVG string with applied customizations
149
+ */
150
+ export const loadingPulseBars = (options: LoadingOptions = {}) => customSVG(options,
151
+ `<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>`);
152
+
153
+ /**
154
+ * Returns a customized SVG string for icon loading-red-blue-ball
155
+ *
156
+ * ![loading-red-blue-ball](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHN0eWxlPSJzaGFwZS1yZW5kZXJpbmc6IGF1dG87IGRpc3BsYXk6IGJsb2NrOyAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48Zz48Y2lyY2xlIHI9IjIwIiBmaWxsPSIjZTkwYzU5IiBjeT0iNTAiIGN4PSIzMCI+CiAgPGFuaW1hdGUgYmVnaW49Ii0wLjVzIiB2YWx1ZXM9IjMwOzcwOzMwIiBrZXlUaW1lcz0iMDswLjU7MSIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGF0dHJpYnV0ZU5hbWU9ImN4Ij48L2FuaW1hdGU+CjwvY2lyY2xlPgo8Y2lyY2xlIHI9IjIwIiBmaWxsPSIjMGYzYmM2IiBjeT0iNTAiIGN4PSI3MCI+CiAgPGFuaW1hdGUgYmVnaW49IjBzIiB2YWx1ZXM9IjMwOzcwOzMwIiBrZXlUaW1lcz0iMDswLjU7MSIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGF0dHJpYnV0ZU5hbWU9ImN4Ij48L2FuaW1hdGU+CjwvY2lyY2xlPgo8Y2lyY2xlIHI9IjIwIiBmaWxsPSIjZTkwYzU5IiBjeT0iNTAiIGN4PSIzMCI+CiAgPGFuaW1hdGUgYmVnaW49Ii0wLjVzIiB2YWx1ZXM9IjMwOzcwOzMwIiBrZXlUaW1lcz0iMDswLjU7MSIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGF0dHJpYnV0ZU5hbWU9ImN4Ij48L2FuaW1hdGU+CiAgPGFuaW1hdGUgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGR1cj0iMXMiIGtleVRpbWVzPSIwOzAuNDk5OzAuNTsxIiBjYWxjTW9kZT0iZGlzY3JldGUiIHZhbHVlcz0iMDswOzE7MSIgYXR0cmlidXRlTmFtZT0iZmlsbC1vcGFjaXR5Ij48L2FuaW1hdGU+CjwvY2lyY2xlPjxnPjwvZz48L2c+PC9zdmc+)
157
+ * @param {Object} options - Configuration options
158
+ * @param {string[]} [options.colors] - Array of hex colors to replace existing colors
159
+ * @param {number} [options.width] - Width of the SVG (default: 200)
160
+ * @param {number} [options.height] - Height of the SVG (default: 200)
161
+ * @param {number} [options.size] - Size for both width and height
162
+ * @example loadingRedBlueBall({ colors: ['#0099e5', '#ff4c4c'], size: 100 });
163
+ * @returns {string} SVG string with applied customizations
164
+ */
165
+ export const loadingRedBlueBall = (options: LoadingOptions = {}) => customSVG(options,
166
+ `<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>`);
167
+
168
+ /**
169
+ * Returns a customized SVG string for icon loading-reload-arrow
170
+ *
171
+ * ![loading-reload-arrow](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHN0eWxlPSJzaGFwZS1yZW5kZXJpbmc6IGF1dG87IGRpc3BsYXk6IGJsb2NrOyAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48Zz48Zz4KICA8cGF0aCBzdHJva2Utd2lkdGg9IjEyIiBzdHJva2U9IiNlMTk0NWIiIGZpbGw9Im5vbmUiIGQ9Ik01MCAxNUEzNSAzNSAwIDEgMCA3NC43NDg3MzczNDE1MjkxNiAyNS4yNTEyNjI2NTg0NzA4NDMiPjwvcGF0aD4KICA8cGF0aCBmaWxsPSIjZTE5NDViIiBkPSJNNDkgM0w0OSAyN0w2MSAxNUw0OSAzIj48L3BhdGg+CiAgPGFuaW1hdGVUcmFuc2Zvcm0ga2V5VGltZXM9IjA7MSIgdmFsdWVzPSIwIDUwIDUwOzM2MCA1MCA1MCIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIHR5cGU9InJvdGF0ZSIgYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIj48L2FuaW1hdGVUcmFuc2Zvcm0+CjwvZz48Zz48L2c+PC9nPjwvc3ZnPg==)
172
+ * @param {Object} options - Configuration options
173
+ * @param {string[]} [options.colors] - Array of hex colors to replace existing colors
174
+ * @param {number} [options.width] - Width of the SVG (default: 200)
175
+ * @param {number} [options.height] - Height of the SVG (default: 200)
176
+ * @param {number} [options.size] - Size for both width and height
177
+ * @example loadingReloadArrow({ colors: ['#0099e5', '#ff4c4c'], size: 100 });
178
+ * @returns {string} SVG string with applied customizations
179
+ */
180
+ export const loadingReloadArrow = (options: LoadingOptions = {}) => customSVG(options,
181
+ `<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>`);
182
+
183
+ /**
184
+ * Returns a customized SVG string for icon loading-ring
185
+ *
186
+ * ![loading-ring](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHN0eWxlPSJzaGFwZS1yZW5kZXJpbmc6IGF1dG87IGRpc3BsYXk6IGJsb2NrOyAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48Zz48Y2lyY2xlIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgZmlsbD0ibm9uZSIgc3Ryb2tlLWRhc2hhcnJheT0iNTAuMjY1NDgyNDU3NDM2NjkgNTAuMjY1NDgyNDU3NDM2NjkiIHN0cm9rZT0iI2ZlNzE4ZCIgc3Ryb2tlLXdpZHRoPSI4IiByPSIzMiIgY3k9IjUwIiBjeD0iNTAiPgogIDxhbmltYXRlVHJhbnNmb3JtIHZhbHVlcz0iMCA1MCA1MDszNjAgNTAgNTAiIGtleVRpbWVzPSIwOzEiIGR1cj0iMXMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiB0eXBlPSJyb3RhdGUiIGF0dHJpYnV0ZU5hbWU9InRyYW5zZm9ybSI+PC9hbmltYXRlVHJhbnNmb3JtPgo8L2NpcmNsZT48Zz48L2c+PC9nPjwvc3ZnPg==)
187
+ * @param {Object} options - Configuration options
188
+ * @param {string[]} [options.colors] - Array of hex colors to replace existing colors
189
+ * @param {number} [options.width] - Width of the SVG (default: 200)
190
+ * @param {number} [options.height] - Height of the SVG (default: 200)
191
+ * @param {number} [options.size] - Size for both width and height
192
+ * @example loadingRing({ colors: ['#0099e5', '#ff4c4c'], size: 100 });
193
+ * @returns {string} SVG string with applied customizations
194
+ */
195
+ export const loadingRing = (options: LoadingOptions = {}) => customSVG(options,
196
+ `<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>`);
197
+
198
+ /**
199
+ * Returns a customized SVG string for icon loading-ripple
200
+ *
201
+ * ![loading-ripple](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHN0eWxlPSJzaGFwZS1yZW5kZXJpbmc6IGF1dG87IGRpc3BsYXk6IGJsb2NrIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PGc+PGNpcmNsZSBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZT0iI2NiYjk1MyIgZmlsbD0ibm9uZSIgcj0iMCIgY3k9IjUwIiBjeD0iNTAiPgogIDxhbmltYXRlIGJlZ2luPSIwcyIgY2FsY01vZGU9InNwbGluZSIga2V5U3BsaW5lcz0iMCAwLjIgMC44IDEiIGtleVRpbWVzPSIwOzEiIHZhbHVlcz0iMDs0MCIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGF0dHJpYnV0ZU5hbWU9InIiPjwvYW5pbWF0ZT4KICA8YW5pbWF0ZSBiZWdpbj0iMHMiIGNhbGNNb2RlPSJzcGxpbmUiIGtleVNwbGluZXM9IjAuMiAwIDAuOCAxIiBrZXlUaW1lcz0iMDsxIiB2YWx1ZXM9IjE7MCIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGF0dHJpYnV0ZU5hbWU9Im9wYWNpdHkiPjwvYW5pbWF0ZT4KPC9jaXJjbGU+PGNpcmNsZSBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZT0iI2NiYjk1MyIgZmlsbD0ibm9uZSIgcj0iMCIgY3k9IjUwIiBjeD0iNTAiPgogIDxhbmltYXRlIGJlZ2luPSItMC41cyIgY2FsY01vZGU9InNwbGluZSIga2V5U3BsaW5lcz0iMCAwLjIgMC44IDEiIGtleVRpbWVzPSIwOzEiIHZhbHVlcz0iMDs0MCIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGF0dHJpYnV0ZU5hbWU9InIiPjwvYW5pbWF0ZT4KICA8YW5pbWF0ZSBiZWdpbj0iLTAuNXMiIGNhbGNNb2RlPSJzcGxpbmUiIGtleVNwbGluZXM9IjAuMiAwIDAuOCAxIiBrZXlUaW1lcz0iMDsxIiB2YWx1ZXM9IjE7MCIgZHVyPSIxcyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGF0dHJpYnV0ZU5hbWU9Im9wYWNpdHkiPjwvYW5pbWF0ZT4KPC9jaXJjbGU+PGc+PC9nPjwvZz48L3N2Zz4=)
202
+ * @param {Object} options - Configuration options
203
+ * @param {string[]} [options.colors] - Array of hex colors to replace existing colors
204
+ * @param {number} [options.width] - Width of the SVG (default: 200)
205
+ * @param {number} [options.height] - Height of the SVG (default: 200)
206
+ * @param {number} [options.size] - Size for both width and height
207
+ * @example loadingRipple({ colors: ['#0099e5', '#ff4c4c'], size: 100 });
208
+ * @returns {string} SVG string with applied customizations
209
+ */
210
+ export const loadingRipple = (options: LoadingOptions = {}) => customSVG(options,
211
+ `<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>`);
212
+
213
+ /**
214
+ * Returns a customized SVG string for icon loading-spinner-oval
215
+ *
216
+ * ![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+)
217
+ * @param {Object} options - Configuration options
218
+ * @param {string[]} [options.colors] - Array of hex colors to replace existing colors
219
+ * @param {number} [options.width] - Width of the SVG (default: 200)
220
+ * @param {number} [options.height] - Height of the SVG (default: 200)
221
+ * @param {number} [options.size] - Size for both width and height
222
+ * @example loadingSpinnerOval({ colors: ['#0099e5', '#ff4c4c'], size: 100 });
223
+ * @returns {string} SVG string with applied customizations
224
+ */
225
+ export const loadingSpinnerOval = (options: LoadingOptions = {}) => customSVG(options,
226
+ `<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>`);
227
+
228
+ /**
229
+ * Returns a customized SVG string for icon loading-spinner
230
+ *
231
+ * ![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=)
232
+ * @param {Object} options - Configuration options
233
+ * @param {string[]} [options.colors] - Array of hex colors to replace existing colors
234
+ * @param {number} [options.width] - Width of the SVG (default: 200)
235
+ * @param {number} [options.height] - Height of the SVG (default: 200)
236
+ * @param {number} [options.size] - Size for both width and height
237
+ * @example loadingSpinner({ colors: ['#0099e5', '#ff4c4c'], size: 100 });
238
+ * @returns {string} SVG string with applied customizations
239
+ */
240
+ export const loadingSpinner = (options: LoadingOptions = {}) => customSVG(options,
241
+ `<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>`);
242
+
243
+ /**
244
+ * Returns a customized SVG string for icon loading-square-blocks
245
+ *
246
+ * ![loading-square-blocks](data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAxMDAgMTAwIiBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWlkWU1pZCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyMDAiIHN0eWxlPSJzaGFwZS1yZW5kZXJpbmc6IGF1dG87IGRpc3BsYXk6IGJsb2NrOyAiIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj48Zz48cmVjdCBmaWxsPSIjZTE1YjY0IiBoZWlnaHQ9IjIwIiB3aWR0aD0iMjAiIHk9IjE5IiB4PSIxOSI+CiAgPGFuaW1hdGUgY2FsY01vZGU9ImRpc2NyZXRlIiBiZWdpbj0iMHMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiBrZXlUaW1lcz0iMDswLjEyNTsxIiB2YWx1ZXM9IiNmOGIyNmE7I2UxNWI2NDsjZTE1YjY0IiBhdHRyaWJ1dGVOYW1lPSJmaWxsIj48L2FuaW1hdGU+CjwvcmVjdD48cmVjdCBmaWxsPSIjZTE1YjY0IiBoZWlnaHQ9IjIwIiB3aWR0aD0iMjAiIHk9IjE5IiB4PSI0MCI+CiAgPGFuaW1hdGUgY2FsY01vZGU9ImRpc2NyZXRlIiBiZWdpbj0iMC4xMjVzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgZHVyPSIxcyIga2V5VGltZXM9IjA7MC4xMjU7MSIgdmFsdWVzPSIjZjhiMjZhOyNlMTViNjQ7I2UxNWI2NCIgYXR0cmlidXRlTmFtZT0iZmlsbCI+PC9hbmltYXRlPgo8L3JlY3Q+PHJlY3QgZmlsbD0iI2UxNWI2NCIgaGVpZ2h0PSIyMCIgd2lkdGg9IjIwIiB5PSIxOSIgeD0iNjEiPgogIDxhbmltYXRlIGNhbGNNb2RlPSJkaXNjcmV0ZSIgYmVnaW49IjAuMjVzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgZHVyPSIxcyIga2V5VGltZXM9IjA7MC4xMjU7MSIgdmFsdWVzPSIjZjhiMjZhOyNlMTViNjQ7I2UxNWI2NCIgYXR0cmlidXRlTmFtZT0iZmlsbCI+PC9hbmltYXRlPgo8L3JlY3Q+PHJlY3QgZmlsbD0iI2UxNWI2NCIgaGVpZ2h0PSIyMCIgd2lkdGg9IjIwIiB5PSI0MCIgeD0iMTkiPgogIDxhbmltYXRlIGNhbGNNb2RlPSJkaXNjcmV0ZSIgYmVnaW49IjAuODc1cyIgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIGR1cj0iMXMiIGtleVRpbWVzPSIwOzAuMTI1OzEiIHZhbHVlcz0iI2Y4YjI2YTsjZTE1YjY0OyNlMTViNjQiIGF0dHJpYnV0ZU5hbWU9ImZpbGwiPjwvYW5pbWF0ZT4KPC9yZWN0PjxyZWN0IGZpbGw9IiNlMTViNjQiIGhlaWdodD0iMjAiIHdpZHRoPSIyMCIgeT0iNDAiIHg9IjYxIj4KICA8YW5pbWF0ZSBjYWxjTW9kZT0iZGlzY3JldGUiIGJlZ2luPSIwLjM3NXMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiBrZXlUaW1lcz0iMDswLjEyNTsxIiB2YWx1ZXM9IiNmOGIyNmE7I2UxNWI2NDsjZTE1YjY0IiBhdHRyaWJ1dGVOYW1lPSJmaWxsIj48L2FuaW1hdGU+CjwvcmVjdD48cmVjdCBmaWxsPSIjZTE1YjY0IiBoZWlnaHQ9IjIwIiB3aWR0aD0iMjAiIHk9IjYxIiB4PSIxOSI+CiAgPGFuaW1hdGUgY2FsY01vZGU9ImRpc2NyZXRlIiBiZWdpbj0iMC43NXMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiBrZXlUaW1lcz0iMDswLjEyNTsxIiB2YWx1ZXM9IiNmOGIyNmE7I2UxNWI2NDsjZTE1YjY0IiBhdHRyaWJ1dGVOYW1lPSJmaWxsIj48L2FuaW1hdGU+CjwvcmVjdD48cmVjdCBmaWxsPSIjZTE1YjY0IiBoZWlnaHQ9IjIwIiB3aWR0aD0iMjAiIHk9IjYxIiB4PSI0MCI+CiAgPGFuaW1hdGUgY2FsY01vZGU9ImRpc2NyZXRlIiBiZWdpbj0iMC42MjVzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgZHVyPSIxcyIga2V5VGltZXM9IjA7MC4xMjU7MSIgdmFsdWVzPSIjZjhiMjZhOyNlMTViNjQ7I2UxNWI2NCIgYXR0cmlidXRlTmFtZT0iZmlsbCI+PC9hbmltYXRlPgo8L3JlY3Q+PHJlY3QgZmlsbD0iI2UxNWI2NCIgaGVpZ2h0PSIyMCIgd2lkdGg9IjIwIiB5PSI2MSIgeD0iNjEiPgogIDxhbmltYXRlIGNhbGNNb2RlPSJkaXNjcmV0ZSIgYmVnaW49IjAuNXMiIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiBkdXI9IjFzIiBrZXlUaW1lcz0iMDswLjEyNTsxIiB2YWx1ZXM9IiNmOGIyNmE7I2UxNWI2NDsjZTE1YjY0IiBhdHRyaWJ1dGVOYW1lPSJmaWxsIj48L2FuaW1hdGU+CjwvcmVjdD48Zz48L2c+PC9nPjwvc3ZnPg==)
247
+ * @param {Object} options - Configuration options
248
+ * @param {string[]} [options.colors] - Array of hex colors to replace existing colors
249
+ * @param {number} [options.width] - Width of the SVG (default: 200)
250
+ * @param {number} [options.height] - Height of the SVG (default: 200)
251
+ * @param {number} [options.size] - Size for both width and height
252
+ * @example loadingSquareBlocks({ colors: ['#0099e5', '#ff4c4c'], size: 100 });
253
+ * @returns {string} SVG string with applied customizations
254
+ */
255
+ export const loadingSquareBlocks = (options: LoadingOptions = {}) => customSVG(options,
256
+ `<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>`);
257
+
258
+ /**
259
+ * Shared utility function for processing SVG icons
260
+ * @param {Object} options - Configuration options
261
+ * @param {boolean} [options.raw] - Whether to return the raw SVG string or an img tag
262
+ * @param {string[]} [options.colors] - Array of hex colors to replace existing colors
263
+ * @param {number|string} [options.width] - Width of the SVG
264
+ * @param {number|string} [options.height] - Height of the SVG
265
+ * @param {number|string} [options.size] - Size for both width and height (overrides width/height)
266
+ * @param {string} svgString - The original SVG content
267
+ * @returns {string} SVG string with applied customizations
268
+ */
269
+ function customSVG( options: LoadingOptions, svgString: string) {
270
+ const { colors = [], width, height, size, raw = false } = options;
271
+
272
+ const widthMatch = svgString.match(/width="[^"]*"/);
273
+ const heightMatch = svgString.match(/height="[^"]*"/);
274
+ const finalWidth = size || width || widthMatch?.[1] || '100';
275
+ const finalHeight = size || height || heightMatch?.[1] || '100';
276
+
277
+ if (width || height || size) {
278
+ svgString = svgString.replace(/width="[^"]*"/, `width="${finalWidth}px"`);
279
+ svgString = svgString.replace(/height="[^"]*"/, `height="${finalHeight}px"`);
280
+ }
281
+
282
+
283
+ // If colors array is provided, replace hex colors in order of appearance
284
+ if (colors && colors.length > 0) {
285
+ const hexColorRegex = /#[0-9a-fA-F]{6}|#[0-9a-fA-F]{3}/g;
286
+ let colorIndex = 0;
287
+
288
+ svgString = svgString.replace(hexColorRegex, (match) => {
289
+ if (colorIndex < colors.length) {
290
+ const replacement = colors[colorIndex];
291
+ colorIndex++;
292
+ return replacement?.startsWith('#') ? replacement : `#${replacement}`;
293
+ }
294
+ return match; // Keep original color if no replacement available
295
+ });
296
+ }
297
+ if (!raw)
298
+ svgString = (width || height || size ? `<img width="${finalWidth}" height="${finalHeight}"` : '<img') + ` alt="icon" src="data:image/svg+xml;utf8,${encodeURIComponent(svgString)}" />`
299
+
300
+ return svgString;
301
+ }
302
+ interface LoadingOptions {
303
+ /** Array of hex colors to replace existing colors, in order of appearance in SVG*/
304
+ colors?: string[];
305
+ /** Width of the SVG */
306
+ width?: number;
307
+ /** Height of the SVG */
308
+ height?: number;
309
+ /** Size for both width and height (overrides width/height) */
310
+ size?: number;
311
+ /** Whether to return the raw SVG string or an img tag */
312
+ raw?: boolean;
313
+ }