avo-icons 0.2.1 → 0.2.3

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 (62) hide show
  1. checksums.yaml +4 -4
  2. data/lib/assets/svgs/tabler/outline/airpods-l.svg +16 -0
  3. data/lib/assets/svgs/tabler/outline/airpods-r.svg +16 -0
  4. data/lib/assets/svgs/tabler/outline/alphabet-chinese.svg +16 -0
  5. data/lib/assets/svgs/tabler/outline/alphabet-devanagari.svg +18 -0
  6. data/lib/assets/svgs/tabler/outline/alphabet-ethiopic.svg +15 -0
  7. data/lib/assets/svgs/tabler/outline/alphabet-georgian.svg +17 -0
  8. data/lib/assets/svgs/tabler/outline/alphabet-japanese.svg +17 -0
  9. data/lib/assets/svgs/tabler/outline/blob-dashed.svg +25 -0
  10. data/lib/assets/svgs/tabler/outline/brand-instagram.svg +3 -3
  11. data/lib/assets/svgs/tabler/outline/cash-coin.svg +19 -0
  12. data/lib/assets/svgs/tabler/outline/circle-heart.svg +16 -0
  13. data/lib/assets/svgs/tabler/outline/circle-pause.svg +17 -0
  14. data/lib/assets/svgs/tabler/outline/circle-play.svg +16 -0
  15. data/lib/assets/svgs/tabler/outline/circle-stop.svg +16 -0
  16. data/lib/assets/svgs/tabler/outline/duplicate.svg +18 -0
  17. data/lib/assets/svgs/tabler/outline/edit-bulk.svg +19 -0
  18. data/lib/assets/svgs/tabler/outline/file-lock.svg +18 -0
  19. data/lib/assets/svgs/tabler/outline/folder-ai.svg +18 -0
  20. data/lib/assets/svgs/tabler/outline/folder-lock.svg +17 -0
  21. data/lib/assets/svgs/tabler/outline/folder-sparkle.svg +16 -0
  22. data/lib/assets/svgs/tabler/outline/folder-stats.svg +17 -0
  23. data/lib/assets/svgs/tabler/outline/folder-user.svg +17 -0
  24. data/lib/assets/svgs/tabler/outline/git-branch-check.svg +20 -0
  25. data/lib/assets/svgs/tabler/outline/git-branch-x.svg +21 -0
  26. data/lib/assets/svgs/tabler/outline/git-merge-queue.svg +19 -0
  27. data/lib/assets/svgs/tabler/outline/git-pull-request-locked.svg +21 -0
  28. data/lib/assets/svgs/tabler/outline/git-pull-request-unlisted.svg +20 -0
  29. data/lib/assets/svgs/tabler/outline/gpu-2.svg +24 -0
  30. data/lib/assets/svgs/tabler/outline/gpu.svg +20 -0
  31. data/lib/assets/svgs/tabler/outline/lens-concave.svg +15 -0
  32. data/lib/assets/svgs/tabler/outline/lens-convex.svg +15 -0
  33. data/lib/assets/svgs/tabler/outline/map-pinned.svg +17 -0
  34. data/lib/assets/svgs/tabler/outline/memory.svg +24 -0
  35. data/lib/assets/svgs/tabler/outline/message-2-ai.svg +20 -0
  36. data/lib/assets/svgs/tabler/outline/message-2-sparkle.svg +18 -0
  37. data/lib/assets/svgs/tabler/outline/message-ai.svg +20 -0
  38. data/lib/assets/svgs/tabler/outline/message-sparkle.svg +18 -0
  39. data/lib/assets/svgs/tabler/outline/model-ai.svg +21 -0
  40. data/lib/assets/svgs/tabler/outline/orbit-vertical.svg +16 -0
  41. data/lib/assets/svgs/tabler/outline/orbit.svg +16 -0
  42. data/lib/assets/svgs/tabler/outline/orbits.svg +17 -0
  43. data/lib/assets/svgs/tabler/outline/pencil-ai.svg +19 -0
  44. data/lib/assets/svgs/tabler/outline/reduce-motion.svg +27 -0
  45. data/lib/assets/svgs/tabler/outline/reference-image.svg +24 -0
  46. data/lib/assets/svgs/tabler/outline/secret-phrases.svg +21 -0
  47. data/lib/assets/svgs/tabler/outline/square-dashed-top-solid.svg +23 -0
  48. data/lib/assets/svgs/tabler/outline/square-dashed-x.svg +25 -0
  49. data/lib/assets/svgs/tabler/outline/square-dashed.svg +12 -1
  50. data/lib/assets/svgs/tabler/outline/stack-check.svg +18 -0
  51. data/lib/assets/svgs/tabler/outline/stack-minus.svg +18 -0
  52. data/lib/assets/svgs/tabler/outline/stack-plus.svg +19 -0
  53. data/lib/assets/svgs/tabler/outline/stack-x.svg +19 -0
  54. data/lib/assets/svgs/tabler/outline/sticker-smile.svg +19 -0
  55. data/lib/assets/svgs/tabler/outline/table-dashed.svg +18 -3
  56. data/lib/assets/svgs/tabler/outline/triangle-dashed.svg +23 -0
  57. data/lib/assets/svgs/tabler/outline/voice-2.svg +17 -0
  58. data/lib/assets/svgs/tabler/outline/voice.svg +17 -0
  59. data/lib/avo/icons/helpers.rb +11 -2
  60. data/lib/avo/icons/version.rb +1 -1
  61. data/lib/avo/icons.rb +14 -1
  62. metadata +55 -1
@@ -0,0 +1,24 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ width="24"
4
+ height="24"
5
+ viewBox="0 0 24 24"
6
+ fill="none"
7
+ stroke="currentColor"
8
+ stroke-width="2"
9
+ stroke-linecap="round"
10
+ stroke-linejoin="round"
11
+ class="icon icon-tabler icons-tabler-outline icon-tabler-memory"
12
+ >
13
+ <path stroke="none" d="M0 0h24v24H0z" fill="none" />
14
+ <path d="M12 11v2" />
15
+ <path d="M16 11v2" />
16
+ <path d="M3 7h18a1 1 0 0 1 1 1v1a1 1 0 0 1 -1 1a1 1 0 0 0 -1 1v1a1 1 0 0 0 1 1a1 1 0 0 1 1 1v2a1 1 0 0 1 -1 1h-18a1 1 0 0 1 -1 -1v-2a1 1 0 0 1 1 -1a1 1 0 0 0 1 -1v-1a1 1 0 0 0 -1 -1a1 1 0 0 1 -1 -1v-1a1 1 0 0 1 1 -1" />
17
+ <path d="M8 11v2" />
18
+ <path d="M4 17v2" />
19
+ <path d="M7 17v2" />
20
+ <path d="M10 17v2" />
21
+ <path d="M20 17v2" />
22
+ <path d="M17 17v2" />
23
+ <path d="M13 17v2" />
24
+ </svg>
@@ -0,0 +1,20 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ width="24"
4
+ height="24"
5
+ viewBox="0 0 24 24"
6
+ fill="none"
7
+ stroke="currentColor"
8
+ stroke-width="2"
9
+ stroke-linecap="round"
10
+ stroke-linejoin="round"
11
+ class="icon icon-tabler icons-tabler-outline icon-tabler-message-2-ai"
12
+ >
13
+ <path stroke="none" d="M0 0h24v24H0z" fill="none" />
14
+ <path d="M14 21v-4a2 2 0 1 1 4 0v4" />
15
+ <path d="M14 19h4" />
16
+ <path d="M21 15v6" />
17
+ <path d="M8 9h8" />
18
+ <path d="M8 13h3.5" />
19
+ <path d="M10 19l-1 -1h-3a3 3 0 0 1 -3 -3v-8a3 3 0 0 1 3 -3h12a3 3 0 0 1 3 3v4" />
20
+ </svg>
@@ -0,0 +1,18 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ width="24"
4
+ height="24"
5
+ viewBox="0 0 24 24"
6
+ fill="none"
7
+ stroke="currentColor"
8
+ stroke-width="2"
9
+ stroke-linecap="round"
10
+ stroke-linejoin="round"
11
+ class="icon icon-tabler icons-tabler-outline icon-tabler-message-2-sparkle"
12
+ >
13
+ <path stroke="none" d="M0 0h24v24H0z" fill="none" />
14
+ <path d="M8 9h8" />
15
+ <path d="M8 13h6" />
16
+ <path d="M12 21l-3 -3h-3a3 3 0 0 1 -3 -3v-8a3 3 0 0 1 3 -3h12a3 3 0 0 1 3 3v5" />
17
+ <path d="M19 22.5a4.75 4.75 0 0 1 3.5 -3.5a4.75 4.75 0 0 1 -3.5 -3.5a4.75 4.75 0 0 1 -3.5 3.5a4.75 4.75 0 0 1 3.5 3.5" />
18
+ </svg>
@@ -0,0 +1,20 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ width="24"
4
+ height="24"
5
+ viewBox="0 0 24 24"
6
+ fill="none"
7
+ stroke="currentColor"
8
+ stroke-width="2"
9
+ stroke-linecap="round"
10
+ stroke-linejoin="round"
11
+ class="icon icon-tabler icons-tabler-outline icon-tabler-message-ai"
12
+ >
13
+ <path stroke="none" d="M0 0h24v24H0z" fill="none" />
14
+ <path d="M8 9h8" />
15
+ <path d="M8 13h3.5" />
16
+ <path d="M9.994 19.804l-1.994 1.196v-3h-2a3 3 0 0 1 -3 -3v-8a3 3 0 0 1 3 -3h12a3 3 0 0 1 3 3v4" />
17
+ <path d="M14 21v-4a2 2 0 1 1 4 0v4" />
18
+ <path d="M14 19h4" />
19
+ <path d="M21 15v6" />
20
+ </svg>
@@ -0,0 +1,18 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ width="24"
4
+ height="24"
5
+ viewBox="0 0 24 24"
6
+ fill="none"
7
+ stroke="currentColor"
8
+ stroke-width="2"
9
+ stroke-linecap="round"
10
+ stroke-linejoin="round"
11
+ class="icon icon-tabler icons-tabler-outline icon-tabler-message-sparkle"
12
+ >
13
+ <path stroke="none" d="M0 0h24v24H0z" fill="none" />
14
+ <path d="M8 9h8" />
15
+ <path d="M8 13h6" />
16
+ <path d="M11.571 18.857l-3.571 2.143v-3h-2a3 3 0 0 1 -3 -3v-8a3 3 0 0 1 3 -3h12a3 3 0 0 1 3 3v5" />
17
+ <path d="M19 22.5a4.75 4.75 0 0 1 3.5 -3.5a4.75 4.75 0 0 1 -3.5 -3.5a4.75 4.75 0 0 1 -3.5 3.5a4.75 4.75 0 0 1 3.5 3.5" />
18
+ </svg>
@@ -0,0 +1,21 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ width="24"
4
+ height="24"
5
+ viewBox="0 0 24 24"
6
+ fill="none"
7
+ stroke="currentColor"
8
+ stroke-width="2"
9
+ stroke-linecap="round"
10
+ stroke-linejoin="round"
11
+ class="icon icon-tabler icons-tabler-outline icon-tabler-model-ai"
12
+ >
13
+ <path stroke="none" d="M0 0h24v24H0z" fill="none" />
14
+ <path d="M4 19a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
15
+ <path d="M4 5a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
16
+ <path d="M9 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
17
+ <path d="M17 12a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
18
+ <path d="M13 12h4" />
19
+ <path d="M9.75 10.25l-2.5 -3.5" />
20
+ <path d="M9.75 13.75l-2.5 3.5" />
21
+ </svg>
@@ -0,0 +1,16 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ width="24"
4
+ height="24"
5
+ viewBox="0 0 24 24"
6
+ fill="none"
7
+ stroke="currentColor"
8
+ stroke-width="2"
9
+ stroke-linecap="round"
10
+ stroke-linejoin="round"
11
+ class="icon icon-tabler icons-tabler-outline icon-tabler-orbit-vertical"
12
+ >
13
+ <path stroke="none" d="M0 0h24v24H0z" fill="none" />
14
+ <path d="M16.372 16.372c.4 -1.295 .628 -2.785 .628 -4.372c0 -4.97 -2.239 -9 -5 -9s-5 4.03 -5 9s2.239 9 5 9c.596 0 1.168 -.188 1.698 -.533" />
15
+ <path d="M10 12a2 2 0 1 0 4 0a2 2 0 1 0 -4 0" />
16
+ </svg>
@@ -0,0 +1,16 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ width="24"
4
+ height="24"
5
+ viewBox="0 0 24 24"
6
+ fill="none"
7
+ stroke="currentColor"
8
+ stroke-width="2"
9
+ stroke-linecap="round"
10
+ stroke-linejoin="round"
11
+ class="icon icon-tabler icons-tabler-outline icon-tabler-orbit"
12
+ >
13
+ <path stroke="none" d="M0 0h24v24H0z" fill="none" />
14
+ <path d="M7.628 7.629c-2.76 .854 -4.628 2.491 -4.628 4.371c0 2.761 4.03 5 9 5s9 -2.239 9 -5s-4.03 -5 -9 -5" />
15
+ <path d="M10 12a2 2 0 1 0 4 0a2 2 0 1 0 -4 0" />
16
+ </svg>
@@ -0,0 +1,17 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ width="24"
4
+ height="24"
5
+ viewBox="0 0 24 24"
6
+ fill="none"
7
+ stroke="currentColor"
8
+ stroke-width="2"
9
+ stroke-linecap="round"
10
+ stroke-linejoin="round"
11
+ class="icon icon-tabler icons-tabler-outline icon-tabler-orbits"
12
+ >
13
+ <path stroke="none" d="M0 0h24v24H0z" fill="none" />
14
+ <path d="M10 12a2 2 0 1 0 4 0a2 2 0 1 0 -4 0" />
15
+ <path d="M7.628 7.629c-2.76 .854 -4.628 2.491 -4.628 4.371c0 2.761 4.03 5 9 5s9 -2.239 9 -5s-4.03 -5 -9 -5" />
16
+ <path d="M16.372 16.372c.4 -1.295 .628 -2.785 .628 -4.372c0 -4.97 -2.239 -9 -5 -9s-5 4.03 -5 9s2.239 9 5 9c.596 0 1.168 -.188 1.698 -.533" />
17
+ </svg>
@@ -0,0 +1,19 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ width="24"
4
+ height="24"
5
+ viewBox="0 0 24 24"
6
+ fill="none"
7
+ stroke="currentColor"
8
+ stroke-width="2"
9
+ stroke-linecap="round"
10
+ stroke-linejoin="round"
11
+ class="icon icon-tabler icons-tabler-outline icon-tabler-pencil-ai"
12
+ >
13
+ <path stroke="none" d="M0 0h24v24H0z" fill="none" />
14
+ <path d="M17.013 10.987l1.487 -1.487a2.828 2.828 0 1 0 -4 -4l-10.5 10.5v4h4l2 -2" />
15
+ <path d="M13.5 6.5l4 4" />
16
+ <path d="M14 21v-4a2 2 0 1 1 4 0v4" />
17
+ <path d="M14 19h4" />
18
+ <path d="M21 15v6" />
19
+ </svg>
@@ -0,0 +1,27 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ width="24"
4
+ height="24"
5
+ viewBox="0 0 24 24"
6
+ fill="none"
7
+ stroke="currentColor"
8
+ stroke-width="2"
9
+ stroke-linecap="round"
10
+ stroke-linejoin="round"
11
+ class="icon icon-tabler icons-tabler-outline icon-tabler-reduce-motion"
12
+ >
13
+ <path stroke="none" d="M0 0h24v24H0z" fill="none" />
14
+ <path d="M8 12a7 7 0 1 0 14 0a7 7 0 1 0 -14 0" />
15
+ <path d="M5.5 5.941v.007" />
16
+ <path d="M2.941 8.498v.008" />
17
+ <path d="M2 11.996v.008" />
18
+ <path d="M2.941 15.494v.008" />
19
+ <path d="M5.5 18.052v.007" />
20
+ <path d="M9 18.992v.008" />
21
+ <path d="M12.5 18.052v.007" />
22
+ <path d="M15.059 15.494v.008" />
23
+ <path d="M16 11.996v.008" />
24
+ <path d="M15.059 8.498v.008" />
25
+ <path d="M12.5 5.941v.007" />
26
+ <path d="M9 5v.008" />
27
+ </svg>
@@ -0,0 +1,24 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ width="24"
4
+ height="24"
5
+ viewBox="0 0 24 24"
6
+ fill="none"
7
+ stroke="currentColor"
8
+ stroke-width="2"
9
+ stroke-linecap="round"
10
+ stroke-linejoin="round"
11
+ class="icon icon-tabler icons-tabler-outline icon-tabler-reference-image"
12
+ >
13
+ <path stroke="none" d="M0 0h24v24H0z" fill="none" />
14
+ <path d="M14.121 9.879l4.95 4.95" />
15
+ <path d="M5 7.2a2.2 2.2 0 0 1 2.2 -2.2h1a2.2 2.2 0 0 0 1.55 -.64l.7 -.7a2.2 2.2 0 0 1 3.12 0l.7 .7c.412 .41 .97 .64 1.55 .64h1a2.2 2.2 0 0 1 2.2 2.2v1c0 .58 .23 1.138 .64 1.55l.7 .7a2.2 2.2 0 0 1 0 3.12l-.7 .7a2.2 2.2 0 0 0 -.64 1.55v1a2.2 2.2 0 0 1 -2.2 2.2h-1a2.2 2.2 0 0 0 -1.55 .64l-.7 .7a2.2 2.2 0 0 1 -3.12 0l-.7 -.7a2.2 2.2 0 0 0 -1.55 -.64h-1a2.2 2.2 0 0 1 -2.2 -2.2v-1a2.2 2.2 0 0 0 -.64 -1.55l-.7 -.7a2.2 2.2 0 0 1 0 -3.12l.7 -.7a2.2 2.2 0 0 0 .64 -1.55v-1" />
16
+ <path d="M5 15h7" />
17
+ <path d="M12 9h7" />
18
+ <path d="M9.172 19.071l4.95 -4.949" />
19
+ <path d="M9.879 9.879l4.95 -4.95" />
20
+ <path d="M9 5v7" />
21
+ <path d="M15 12v7" />
22
+ <path d="M4.93 9.172l4.949 4.95" />
23
+ <path d="M15 12a3 3 0 1 1 -6 0a3 3 0 0 1 6 0" />
24
+ </svg>
@@ -0,0 +1,21 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ width="24"
4
+ height="24"
5
+ viewBox="0 0 24 24"
6
+ fill="none"
7
+ stroke="currentColor"
8
+ stroke-width="2"
9
+ stroke-linecap="round"
10
+ stroke-linejoin="round"
11
+ class="icon icon-tabler icons-tabler-outline icon-tabler-secret-phrases"
12
+ >
13
+ <path stroke="none" d="M0 0h24v24H0z" fill="none" />
14
+ <path d="M19 5h-14a2 2 0 0 0 -2 2v10a2 2 0 0 0 2 2h14a2 2 0 0 0 2 -2v-10a2 2 0 0 0 -2 -2" />
15
+ <path d="M7 9h3" />
16
+ <path d="M14 9h3" />
17
+ <path d="M7 12h3" />
18
+ <path d="M14 12h3" />
19
+ <path d="M7 15h3" />
20
+ <path d="M14 15h3" />
21
+ </svg>
@@ -0,0 +1,23 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ width="24"
4
+ height="24"
5
+ viewBox="0 0 24 24"
6
+ fill="none"
7
+ stroke="currentColor"
8
+ stroke-width="2"
9
+ stroke-linecap="round"
10
+ stroke-linejoin="round"
11
+ class="icon icon-tabler icons-tabler-outline icon-tabler-square-dashed-top-solid"
12
+ >
13
+ <path stroke="none" d="M0 0h24v24H0z" fill="none" />
14
+ <path d="M14 21h1" />
15
+ <path d="M21 14v1" />
16
+ <path d="M21 19a2 2 0 0 1 -2 2" />
17
+ <path d="M21 9v1" />
18
+ <path d="M3 14v1" />
19
+ <path d="M3 5a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2" />
20
+ <path d="M3 9v1" />
21
+ <path d="M5 21a2 2 0 0 1 -2 -2" />
22
+ <path d="M9 21h1" />
23
+ </svg>
@@ -0,0 +1,25 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ width="24"
4
+ height="24"
5
+ viewBox="0 0 24 24"
6
+ fill="none"
7
+ stroke="currentColor"
8
+ stroke-width="2"
9
+ stroke-linecap="round"
10
+ stroke-linejoin="round"
11
+ class="icon icon-tabler icons-tabler-outline icon-tabler-square-dashed-x"
12
+ >
13
+ <path stroke="none" d="M0 0h24v24H0z" fill="none" />
14
+ <path d="M5 3a2 2 0 0 0 -2 2" />
15
+ <path d="M19 3a2 2 0 0 1 2 2" />
16
+ <path d="M5 21a2 2 0 0 1 -2 -2" />
17
+ <path d="M9 3h1" />
18
+ <path d="M9 21h1" />
19
+ <path d="M14 3h1" />
20
+ <path d="M3 9v1" />
21
+ <path d="M21 9v1" />
22
+ <path d="M3 14v1" />
23
+ <path d="M22 22l-5 -5" />
24
+ <path d="M17 22l5 -5" />
25
+ </svg>
@@ -11,5 +11,16 @@
11
11
  class="icon icon-tabler icons-tabler-outline icon-tabler-square-dashed"
12
12
  >
13
13
  <path stroke="none" d="M0 0h24v24H0z" fill="none" />
14
- <path d="M3 5a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2l0 -14" />
14
+ <path d="M5 3a2 2 0 0 0 -2 2" />
15
+ <path d="M19 3a2 2 0 0 1 2 2" />
16
+ <path d="M21 19a2 2 0 0 1 -2 2" />
17
+ <path d="M5 21a2 2 0 0 1 -2 -2" />
18
+ <path d="M9 3h1" />
19
+ <path d="M9 21h1" />
20
+ <path d="M14 3h1" />
21
+ <path d="M14 21h1" />
22
+ <path d="M3 9v1" />
23
+ <path d="M21 9v1" />
24
+ <path d="M3 14v1" />
25
+ <path d="M21 14v1" />
15
26
  </svg>
@@ -0,0 +1,18 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ width="24"
4
+ height="24"
5
+ viewBox="0 0 24 24"
6
+ fill="none"
7
+ stroke="currentColor"
8
+ stroke-width="2"
9
+ stroke-linecap="round"
10
+ stroke-linejoin="round"
11
+ class="icon icon-tabler icons-tabler-outline icon-tabler-stack-check"
12
+ >
13
+ <path stroke="none" d="M0 0h24v24H0z" fill="none" />
14
+ <path d="M12 4l-8 4l8 4l8 -4l-8 -4" />
15
+ <path d="M4 12l8 4" />
16
+ <path d="M4 16l7.004 3.502" />
17
+ <path d="M15 19l2 2l4 -4" />
18
+ </svg>
@@ -0,0 +1,18 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ width="24"
4
+ height="24"
5
+ viewBox="0 0 24 24"
6
+ fill="none"
7
+ stroke="currentColor"
8
+ stroke-width="2"
9
+ stroke-linecap="round"
10
+ stroke-linejoin="round"
11
+ class="icon icon-tabler icons-tabler-outline icon-tabler-stack-minus"
12
+ >
13
+ <path stroke="none" d="M0 0h24v24H0z" fill="none" />
14
+ <path d="M12 4l-8 4l8 4l8 -4l-8 -4" />
15
+ <path d="M4 12l8 4" />
16
+ <path d="M4 16l8 4" />
17
+ <path d="M16 19h6" />
18
+ </svg>
@@ -0,0 +1,19 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ width="24"
4
+ height="24"
5
+ viewBox="0 0 24 24"
6
+ fill="none"
7
+ stroke="currentColor"
8
+ stroke-width="2"
9
+ stroke-linecap="round"
10
+ stroke-linejoin="round"
11
+ class="icon icon-tabler icons-tabler-outline icon-tabler-stack-plus"
12
+ >
13
+ <path stroke="none" d="M0 0h24v24H0z" fill="none" />
14
+ <path d="M12 4l-8 4l8 4l8 -4l-8 -4" />
15
+ <path d="M4 12l8 4" />
16
+ <path d="M4 16l8 4" />
17
+ <path d="M16 19h6" />
18
+ <path d="M19 16v6" />
19
+ </svg>
@@ -0,0 +1,19 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ width="24"
4
+ height="24"
5
+ viewBox="0 0 24 24"
6
+ fill="none"
7
+ stroke="currentColor"
8
+ stroke-width="2"
9
+ stroke-linecap="round"
10
+ stroke-linejoin="round"
11
+ class="icon icon-tabler icons-tabler-outline icon-tabler-stack-x"
12
+ >
13
+ <path stroke="none" d="M0 0h24v24H0z" fill="none" />
14
+ <path d="M12 4l-8 4l8 4l8 -4l-8 -4" />
15
+ <path d="M4 12l8 4" />
16
+ <path d="M4 16l8 4" />
17
+ <path d="M22 22l-5 -5" />
18
+ <path d="M17 22l5 -5" />
19
+ </svg>
@@ -0,0 +1,19 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ width="24"
4
+ height="24"
5
+ viewBox="0 0 24 24"
6
+ fill="none"
7
+ stroke="currentColor"
8
+ stroke-width="2"
9
+ stroke-linecap="round"
10
+ stroke-linejoin="round"
11
+ class="icon icon-tabler icons-tabler-outline icon-tabler-sticker-smile"
12
+ >
13
+ <path stroke="none" d="M0 0h24v24H0z" fill="none" />
14
+ <path d="M21 12c-.819 -.388 -2.223 -.5 -3.19 -.5a6.31 6.31 0 0 0 -6.31 6.31c0 .966 .113 2.371 .5 3.19" />
15
+ <path d="M12 21c4 0 9 -5 9 -9a9 9 0 1 0 -9 9" />
16
+ <path d="M9 10h.01" />
17
+ <path d="M15 10h.01" />
18
+ <path d="M8.75 15c.878 .672 1.746 1 3 1" />
19
+ </svg>
@@ -11,7 +11,22 @@
11
11
  class="icon icon-tabler icons-tabler-outline icon-tabler-table-dashed"
12
12
  >
13
13
  <path stroke="none" d="M0 0h24v24H0z" fill="none" />
14
- <path d="M3 5a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v14a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2l0 -14" />
15
- <path d="M3 10h18" />
16
- <path d="M10 3v18" />
14
+ <path d="M5 3a2 2 0 0 0 -2 2" />
15
+ <path d="M19 3a2 2 0 0 1 2 2" />
16
+ <path d="M21 19a2 2 0 0 1 -2 2" />
17
+ <path d="M5 21a2 2 0 0 1 -2 -2" />
18
+ <path d="M9 3h1" />
19
+ <path d="M9 21h1" />
20
+ <path d="M14 3h1" />
21
+ <path d="M14 21h1" />
22
+ <path d="M3 9v1" />
23
+ <path d="M21 9v1" />
24
+ <path d="M3 14v1" />
25
+ <path d="M21 14v1" />
26
+ <path d="M7 10h1" />
27
+ <path d="M12 10h1" />
28
+ <path d="M17 10h1" />
29
+ <path d="M10 12v1" />
30
+ <path d="M10 17v1" />
31
+ <path d="M10 7v1" />
17
32
  </svg>
@@ -0,0 +1,23 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ width="24"
4
+ height="24"
5
+ viewBox="0 0 24 24"
6
+ fill="none"
7
+ stroke="currentColor"
8
+ stroke-width="2"
9
+ stroke-linecap="round"
10
+ stroke-linejoin="round"
11
+ class="icon icon-tabler icons-tabler-outline icon-tabler-triangle-dashed"
12
+ >
13
+ <path stroke="none" d="M0 0h24v24H0z" fill="none" />
14
+ <path d="M10.17 4.128c.32 -.688 1.042 -1.131 1.837 -1.128c.795 .002 1.513 .45 1.829 1.14" />
15
+ <path d="M14 20.027h2" />
16
+ <path d="M15.874 7.486l1 1.639" />
17
+ <path d="M18.849 12.414l1 1.638" />
18
+ <path d="M21.835 17.36c.28 .587 .226 1.269 -.145 1.81a2.03 2.03 0 0 1 -1.69 .86" />
19
+ <path d="M4 20.027a2.03 2.03 0 0 1 -1.702 -.864a1.8 1.8 0 0 1 -.137 -1.822" />
20
+ <path d="M5.136 12.414l-1 1.638" />
21
+ <path d="M8 20.027h2" />
22
+ <path d="M8.102 7.486l-1 1.639" />
23
+ </svg>
@@ -0,0 +1,17 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ width="24"
4
+ height="24"
5
+ viewBox="0 0 24 24"
6
+ fill="none"
7
+ stroke="currentColor"
8
+ stroke-width="2"
9
+ stroke-linecap="round"
10
+ stroke-linejoin="round"
11
+ class="icon icon-tabler icons-tabler-outline icon-tabler-voice-2"
12
+ >
13
+ <path stroke="none" d="M0 0h24v24H0z" fill="none" />
14
+ <path d="M3 12a9 9 0 1 0 18 0a9 9 0 1 0 -18 0" />
15
+ <path d="M3.429 14.571c9 -15.857 10.134 8.908 17.143 0" />
16
+ <path d="M4.03 16.286c5.469 -3.939 8.68 3.635 13.541 2.79" />
17
+ </svg>
@@ -0,0 +1,17 @@
1
+ <svg
2
+ xmlns="http://www.w3.org/2000/svg"
3
+ width="24"
4
+ height="24"
5
+ viewBox="0 0 24 24"
6
+ fill="none"
7
+ stroke="currentColor"
8
+ stroke-width="2"
9
+ stroke-linecap="round"
10
+ stroke-linejoin="round"
11
+ class="icon icon-tabler icons-tabler-outline icon-tabler-voice"
12
+ >
13
+ <path stroke="none" d="M0 0h24v24H0z" fill="none" />
14
+ <path d="M3 12a9 9 0 1 0 18 0a9 9 0 1 0 -18 0" />
15
+ <path d="M3 12c4 0 9.647 8.23 14.4 7.092" />
16
+ <path d="M4.8 17.4c5.85 0 9.617 -7.2 15.3 -7.2" />
17
+ </svg>
@@ -13,13 +13,22 @@ module Avo
13
13
 
14
14
  file_name = "#{file_name}.svg" unless file_name.end_with? ".svg"
15
15
 
16
+ # inline_svg reads the file and runs a Nokogiri transform on every call, so reuse the markup
17
+ # once code stops reloading. `aria: true` makes inline_svg generate random ids, which must differ per render.
18
+ return render_svg(file_name, **args) if !Rails.application.config.cache_classes || args[:aria]
19
+
20
+ # A copy, so a caller appending to the result cannot change the cached markup.
21
+ Avo::Icons.fetch_rendered_svg([ file_name, args ]) { render_svg(file_name, **args) }.dup
22
+ end
23
+
24
+ private
25
+
26
+ def render_svg(file_name, **args)
16
27
  with_asset_finder(Avo::Icons::SvgFinder) do
17
28
  inline_svg file_name, **args
18
29
  end
19
30
  end
20
31
 
21
- private
22
-
23
32
  # Override inline_svg's placeholder, but only for lookups made through
24
33
  # our #svg helper (detected via the asset finder thread-local). Host app
25
34
  # calls to inline_svg/inline_svg_tag keep inline_svg's own behavior.
@@ -1,5 +1,5 @@
1
1
  module Avo
2
2
  module Icons
3
- VERSION = "0.2.1"
3
+ VERSION = "0.2.3"
4
4
  end
5
5
  end
data/lib/avo/icons.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require "concurrent/map"
1
2
  require "inline_svg"
2
3
  require "avo/icons/version"
3
4
  require "avo/icons/configuration"
@@ -7,9 +8,12 @@ require "avo/icons/railtie"
7
8
 
8
9
  module Avo
9
10
  module Icons
11
+ RENDERED_SVGS_LIMIT = 1_000
12
+
10
13
  class << self
11
14
  attr_writer :configuration
12
15
  attr_accessor :cached_svgs
16
+ attr_reader :rendered_svgs
13
17
 
14
18
  def root
15
19
  Pathname.new File.expand_path("..", __dir__)
@@ -26,9 +30,18 @@ module Avo
26
30
  def reset_configuration!
27
31
  @configuration = Configuration.new
28
32
  end
33
+
34
+ def fetch_rendered_svg(cache_key)
35
+ rendered_svgs.fetch_or_store(cache_key) do
36
+ # Host apps can pass per-record args, so drop everything once the cache is full instead of growing forever.
37
+ rendered_svgs.clear if rendered_svgs.size >= RENDERED_SVGS_LIMIT
38
+ yield
39
+ end
40
+ end
29
41
  end
30
42
 
31
- # Initialize cache
32
43
  self.cached_svgs = {}
44
+ # Every request thread reads and writes the rendered markup.
45
+ @rendered_svgs = Concurrent::Map.new
33
46
  end
34
47
  end