phlex-icons 2.19.0 → 2.21.0

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 (77) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +5 -1
  3. data/README.md +44 -0
  4. data/lib/phlex-icons/bootstrap/anthropic.rb +24 -0
  5. data/lib/phlex-icons/bootstrap/apple_music.rb +24 -0
  6. data/lib/phlex-icons/bootstrap/battery_low.rb +24 -0
  7. data/lib/phlex-icons/bootstrap/beaker.rb +27 -0
  8. data/lib/phlex-icons/bootstrap/beaker_fill.rb +23 -0
  9. data/lib/phlex-icons/bootstrap/bluesky.rb +23 -0
  10. data/lib/phlex-icons/bootstrap/calendar3_event_fill.rb +1 -2
  11. data/lib/phlex-icons/bootstrap/calendar3_range_fill.rb +1 -2
  12. data/lib/phlex-icons/bootstrap/calendar3_week_fill.rb +1 -2
  13. data/lib/phlex-icons/bootstrap/claude.rb +23 -0
  14. data/lib/phlex-icons/bootstrap/css.rb +24 -0
  15. data/lib/phlex-icons/bootstrap/flask.rb +23 -0
  16. data/lib/phlex-icons/bootstrap/flask_fill.rb +23 -0
  17. data/lib/phlex-icons/bootstrap/flask_florence.rb +23 -0
  18. data/lib/phlex-icons/bootstrap/flask_florence_fill.rb +23 -0
  19. data/lib/phlex-icons/bootstrap/fork_knife.rb +23 -0
  20. data/lib/phlex-icons/bootstrap/globe_americas_fill.rb +24 -0
  21. data/lib/phlex-icons/bootstrap/globe_asia_australia_fill.rb +24 -0
  22. data/lib/phlex-icons/bootstrap/globe_central_south_asia_fill.rb +24 -0
  23. data/lib/phlex-icons/bootstrap/globe_europe_africa_fill.rb +24 -0
  24. data/lib/phlex-icons/bootstrap/javascript.rb +24 -0
  25. data/lib/phlex-icons/bootstrap/leaf.rb +23 -0
  26. data/lib/phlex-icons/bootstrap/leaf_fill.rb +23 -0
  27. data/lib/phlex-icons/bootstrap/lock.rb +2 -1
  28. data/lib/phlex-icons/bootstrap/lock_fill.rb +2 -1
  29. data/lib/phlex-icons/bootstrap/measuring_cup.rb +23 -0
  30. data/lib/phlex-icons/bootstrap/measuring_cup_fill.rb +23 -0
  31. data/lib/phlex-icons/bootstrap/meta.rb +1 -1
  32. data/lib/phlex-icons/bootstrap/openai.rb +23 -0
  33. data/lib/phlex-icons/bootstrap/perplexity.rb +24 -0
  34. data/lib/phlex-icons/bootstrap/tux.rb +28 -0
  35. data/lib/phlex-icons/bootstrap/typescript.rb +24 -0
  36. data/lib/phlex-icons/bootstrap/unlock.rb +2 -1
  37. data/lib/phlex-icons/bootstrap/unlock2.rb +24 -0
  38. data/lib/phlex-icons/bootstrap/unlock2_fill.rb +24 -0
  39. data/lib/phlex-icons/bootstrap/unlock_fill.rb +2 -1
  40. data/lib/phlex-icons/bootstrap.rb +29 -1
  41. data/lib/phlex-icons/configuration.rb +24 -1
  42. data/lib/phlex-icons/icon.rb +31 -0
  43. data/lib/phlex-icons/lucide/air_vent.rb +2 -2
  44. data/lib/phlex-icons/lucide/axe.rb +7 -2
  45. data/lib/phlex-icons/lucide/bell_electric.rb +4 -4
  46. data/lib/phlex-icons/lucide/brackets.rb +2 -2
  47. data/lib/phlex-icons/lucide/brush_cleaning.rb +30 -0
  48. data/lib/phlex-icons/lucide/check_line.rb +24 -0
  49. data/lib/phlex-icons/lucide/clock_plus.rb +25 -0
  50. data/lib/phlex-icons/lucide/dumbbell.rb +5 -5
  51. data/lib/phlex-icons/lucide/expand.rb +4 -4
  52. data/lib/phlex-icons/lucide/gpu.rb +26 -0
  53. data/lib/phlex-icons/lucide/guitar.rb +1 -2
  54. data/lib/phlex-icons/lucide/hamburger.rb +28 -0
  55. data/lib/phlex-icons/lucide/laptop.rb +2 -1
  56. data/lib/phlex-icons/lucide/locate_off.rb +7 -13
  57. data/lib/phlex-icons/lucide/mail.rb +2 -2
  58. data/lib/phlex-icons/lucide/menu.rb +3 -3
  59. data/lib/phlex-icons/lucide/package_2.rb +7 -2
  60. data/lib/phlex-icons/lucide/panda.rb +32 -0
  61. data/lib/phlex-icons/lucide/phone.rb +1 -1
  62. data/lib/phlex-icons/lucide/phone_call.rb +3 -3
  63. data/lib/phlex-icons/lucide/phone_forwarded.rb +3 -3
  64. data/lib/phlex-icons/lucide/phone_incoming.rb +3 -3
  65. data/lib/phlex-icons/lucide/phone_missed.rb +3 -3
  66. data/lib/phlex-icons/lucide/phone_off.rb +6 -2
  67. data/lib/phlex-icons/lucide/phone_outgoing.rb +3 -3
  68. data/lib/phlex-icons/lucide/search.rb +1 -1
  69. data/lib/phlex-icons/lucide/soap_dispenser_droplet.rb +33 -0
  70. data/lib/phlex-icons/lucide/touchpad_off.rb +4 -4
  71. data/lib/phlex-icons/lucide/users.rb +2 -2
  72. data/lib/phlex-icons/lucide.rb +8 -1
  73. data/lib/phlex-icons/name_parser.rb +117 -0
  74. data/lib/phlex-icons/railtie.rb +17 -0
  75. data/lib/phlex-icons/version.rb +1 -1
  76. data/lib/phlex-icons.rb +3 -0
  77. metadata +40 -2
@@ -12,8 +12,9 @@ module PhlexIcons
12
12
  viewbox: '0 0 16 16'
13
13
  ) do |s|
14
14
  s.path(
15
+ fill_rule: 'evenodd',
15
16
  d:
16
- 'M8 1a2 2 0 0 1 2 2v4H6V3a2 2 0 0 1 2-2m3 6V3a3 3 0 0 0-6 0v4a2 2 0 0 0-2 2v5a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2M5 8h6a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V9a1 1 0 0 1 1-1'
17
+ 'M8 0a4 4 0 0 1 4 4v2.05a2.5 2.5 0 0 1 2 2.45v5a2.5 2.5 0 0 1-2.5 2.5h-7A2.5 2.5 0 0 1 2 13.5v-5a2.5 2.5 0 0 1 2-2.45V4a4 4 0 0 1 4-4M4.5 7A1.5 1.5 0 0 0 3 8.5v5A1.5 1.5 0 0 0 4.5 15h7a1.5 1.5 0 0 0 1.5-1.5v-5A1.5 1.5 0 0 0 11.5 7zM8 1a3 3 0 0 0-3 3v2h6V4a3 3 0 0 0-3-3'
17
18
  )
18
19
  end
19
20
  end
@@ -12,8 +12,9 @@ module PhlexIcons
12
12
  viewbox: '0 0 16 16'
13
13
  ) do |s|
14
14
  s.path(
15
+ fill_rule: 'evenodd',
15
16
  d:
16
- 'M8 1a2 2 0 0 1 2 2v4H6V3a2 2 0 0 1 2-2m3 6V3a3 3 0 0 0-6 0v4a2 2 0 0 0-2 2v5a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2'
17
+ 'M8 0a4 4 0 0 1 4 4v2.05a2.5 2.5 0 0 1 2 2.45v5a2.5 2.5 0 0 1-2.5 2.5h-7A2.5 2.5 0 0 1 2 13.5v-5a2.5 2.5 0 0 1 2-2.45V4a4 4 0 0 1 4-4m0 1a3 3 0 0 0-3 3v2h6V4a3 3 0 0 0-3-3'
17
18
  )
18
19
  end
19
20
  end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ # rubocop:disable Layout/LineLength
4
+ module PhlexIcons
5
+ module Bootstrap
6
+ class MeasuringCup < Base
7
+ def view_template
8
+ svg(
9
+ **attrs,
10
+ xmlns: 'http://www.w3.org/2000/svg',
11
+ fill: 'currentColor',
12
+ viewbox: '0 0 16 16'
13
+ ) do |s|
14
+ s.path(
15
+ d:
16
+ 'M.038.309A.5.5 0 0 1 .5 0H14a2 2 0 0 1 2 2v5.959a1.041 1.041 0 0 1-2.069.17l-.849-5.094A.041.041 0 0 0 13 3.04V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V3.743a2.5 2.5 0 0 0-.732-1.768L.146.854A.5.5 0 0 1 .038.309M1.708 1l.267.268A3.5 3.5 0 0 1 3 3.743V14a1 1 0 0 0 1 1h7a1 1 0 0 0 1-1V3.041a1.041 1.041 0 0 1 2.069-.17l.849 5.094A.041.041 0 0 0 15 7.96V2a1 1 0 0 0-1-1zM4 3h3.5a.5.5 0 1 1 0 1H4zm0 2h1.5a.5.5 0 1 1 0 1H4zm0 2h3.5a.5.5 0 1 1 0 1H4zm0 2h1.5a.5.5 0 1 1 0 1H4zm0 2h3.5a.5.5 0 0 1 0 1H4zm0 2h1.5a.5.5 0 0 1 0 1H4z'
17
+ )
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ # rubocop:enable Layout/LineLength
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ # rubocop:disable Layout/LineLength
4
+ module PhlexIcons
5
+ module Bootstrap
6
+ class MeasuringCupFill < Base
7
+ def view_template
8
+ svg(
9
+ **attrs,
10
+ xmlns: 'http://www.w3.org/2000/svg',
11
+ fill: 'currentColor',
12
+ viewbox: '0 0 16 16'
13
+ ) do |s|
14
+ s.path(
15
+ d:
16
+ 'M14 0a2 2 0 0 1 2 2v5.959a1.041 1.041 0 0 1-2.049.264l-.02-.093-.849-5.096a.041.041 0 0 0-.082.007V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V3.742a2.5 2.5 0 0 0-.732-1.767L.146.854A.5.5 0 0 1 .5 0zM4 13v1h1.5a.5.5 0 0 0 0-1zm0-2v1h3.5a.5.5 0 0 0 0-1zm0-2v1h1.5a.5.5 0 0 0 0-1zm0-2v1h3.5a.5.5 0 0 0 0-1zm0-2v1h1.5a.5.5 0 0 0 0-1zm0-2v1h3.5a.5.5 0 0 0 0-1z'
17
+ )
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ # rubocop:enable Layout/LineLength
@@ -14,7 +14,7 @@ module PhlexIcons
14
14
  s.path(
15
15
  fill_rule: 'evenodd',
16
16
  d:
17
- 'M8.217 5.243C9.145 3.988 10.171 3 11.483 3 13.96 3 16 6.153 16.001 9.907c0 2.29-.986 3.725-2.757 3.725-1.543 0-2.395-.866-3.924-3.424l-.667-1.123-.118-.197a55 55 0 0 0-.53-.877l-1.178 2.08c-1.673 2.925-2.615 3.541-3.923 3.541C1.086 13.632 0 12.217 0 9.973 0 6.388 1.995 3 4.598 3q.477-.001.924.122c.31.086.611.22.913.407.577.359 1.154.915 1.782 1.714m1.516 2.224q-.378-.614-.727-1.133L9 6.326c.845-1.305 1.543-1.954 2.372-1.954 1.723 0 3.102 2.537 3.102 5.653 0 1.188-.39 1.877-1.195 1.877-.773 0-1.142-.51-2.61-2.87zM4.846 4.756c.725.1 1.385.634 2.34 2.001A212 212 0 0 0 5.551 9.3c-1.357 2.126-1.826 2.603-2.581 2.603-.777 0-1.24-.682-1.24-1.9 0-2.602 1.298-5.264 2.846-5.264q.136 0 .27.018Z'
17
+ 'M8.217 5.243C9.145 3.988 10.171 3 11.483 3 13.96 3 16 6.153 16.001 9.907c0 2.29-.986 3.725-2.757 3.725-1.543 0-2.395-.866-3.924-3.424l-.667-1.123-.118-.197a55 55 0 0 0-.53-.877l-1.178 2.08c-1.673 2.925-2.615 3.541-3.923 3.541C1.086 13.632 0 12.217 0 9.973 0 6.388 1.995 3 4.598 3q.477-.001.924.122c.31.086.611.22.913.407.577.359 1.154.915 1.782 1.714m1.516 2.224q-.378-.615-.727-1.133L9 6.326c.845-1.305 1.543-1.954 2.372-1.954 1.723 0 3.102 2.537 3.102 5.653 0 1.188-.39 1.877-1.195 1.877-.773 0-1.142-.51-2.61-2.87zM4.846 4.756c.725.1 1.385.634 2.34 2.001A212 212 0 0 0 5.551 9.3c-1.357 2.126-1.826 2.603-2.581 2.603-.777 0-1.24-.682-1.24-1.9 0-2.602 1.298-5.264 2.846-5.264q.137 0 .27.018'
18
18
  )
19
19
  end
20
20
  end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ # rubocop:disable Layout/LineLength
4
+ module PhlexIcons
5
+ module Bootstrap
6
+ class Openai < Base
7
+ def view_template
8
+ svg(
9
+ **attrs,
10
+ xmlns: 'http://www.w3.org/2000/svg',
11
+ fill: 'currentColor',
12
+ viewbox: '0 0 16 16'
13
+ ) do |s|
14
+ s.path(
15
+ d:
16
+ 'M14.949 6.547a3.94 3.94 0 0 0-.348-3.273 4.11 4.11 0 0 0-4.4-1.934A4.1 4.1 0 0 0 8.423.2 4.15 4.15 0 0 0 6.305.086a4.1 4.1 0 0 0-1.891.948 4.04 4.04 0 0 0-1.158 1.753 4.1 4.1 0 0 0-1.563.679A4 4 0 0 0 .554 4.72a3.99 3.99 0 0 0 .502 4.731 3.94 3.94 0 0 0 .346 3.274 4.11 4.11 0 0 0 4.402 1.933c.382.425.852.764 1.377.995.526.231 1.095.35 1.67.346 1.78.002 3.358-1.132 3.901-2.804a4.1 4.1 0 0 0 1.563-.68 4 4 0 0 0 1.14-1.253 3.99 3.99 0 0 0-.506-4.716m-6.097 8.406a3.05 3.05 0 0 1-1.945-.694l.096-.054 3.23-1.838a.53.53 0 0 0 .265-.455v-4.49l1.366.778q.02.011.025.035v3.722c-.003 1.653-1.361 2.992-3.037 2.996m-6.53-2.75a2.95 2.95 0 0 1-.36-2.01l.095.057L5.29 12.09a.53.53 0 0 0 .527 0l3.949-2.246v1.555a.05.05 0 0 1-.022.041L6.473 13.3c-1.454.826-3.311.335-4.15-1.098m-.85-6.94A3.02 3.02 0 0 1 3.07 3.949v3.785a.51.51 0 0 0 .262.451l3.93 2.237-1.366.779a.05.05 0 0 1-.048 0L2.585 9.342a2.98 2.98 0 0 1-1.113-4.094zm11.216 2.571L8.747 5.576l1.362-.776a.05.05 0 0 1 .048 0l3.265 1.86a3 3 0 0 1 1.173 1.207 2.96 2.96 0 0 1-.27 3.2 3.05 3.05 0 0 1-1.36.997V8.279a.52.52 0 0 0-.276-.445m1.36-2.015-.097-.057-3.226-1.855a.53.53 0 0 0-.53 0L6.249 6.153V4.598a.04.04 0 0 1 .019-.04L9.533 2.7a3.07 3.07 0 0 1 3.257.139c.474.325.843.778 1.066 1.303.223.526.289 1.103.191 1.664zM5.503 8.575 4.139 7.8a.05.05 0 0 1-.026-.037V4.049c0-.57.166-1.127.476-1.607s.752-.864 1.275-1.105a3.08 3.08 0 0 1 3.234.41l-.096.054-3.23 1.838a.53.53 0 0 0-.265.455zm.742-1.577 1.758-1 1.762 1v2l-1.755 1-1.762-1z'
17
+ )
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ # rubocop:enable Layout/LineLength
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ # rubocop:disable Layout/LineLength
4
+ module PhlexIcons
5
+ module Bootstrap
6
+ class Perplexity < Base
7
+ def view_template
8
+ svg(
9
+ **attrs,
10
+ xmlns: 'http://www.w3.org/2000/svg',
11
+ fill: 'currentColor',
12
+ viewbox: '0 0 16 16'
13
+ ) do |s|
14
+ s.path(
15
+ fill_rule: 'evenodd',
16
+ d:
17
+ 'M8 .188a.5.5 0 0 1 .503.5V4.03l3.022-2.92.059-.048a.51.51 0 0 1 .49-.054.5.5 0 0 1 .306.46v3.247h1.117l.1.01a.5.5 0 0 1 .403.49v5.558a.5.5 0 0 1-.503.5H12.38v3.258a.5.5 0 0 1-.312.462.51.51 0 0 1-.55-.11l-3.016-3.018v3.448c0 .275-.225.5-.503.5a.5.5 0 0 1-.503-.5v-3.448l-3.018 3.019a.51.51 0 0 1-.548.11.5.5 0 0 1-.312-.463v-3.258H2.503a.5.5 0 0 1-.503-.5V5.215l.01-.1c.047-.229.25-.4.493-.4H3.62V1.469l.006-.074a.5.5 0 0 1 .302-.387.51.51 0 0 1 .547.102l3.023 2.92V.687c0-.276.225-.5.503-.5M4.626 9.333v3.984l2.87-2.872v-4.01zm3.877 1.113 2.871 2.871V9.333l-2.87-2.897zm3.733-1.668a.5.5 0 0 1 .145.35v1.145h.612V5.715H9.201zm-9.23 1.495h.613V9.13c0-.131.052-.257.145-.35l3.033-3.064h-3.79zm1.62-5.558H6.76L4.626 2.652zm4.613 0h2.134V2.652z'
18
+ )
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ # rubocop:enable Layout/LineLength
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ # rubocop:disable Layout/LineLength
4
+ module PhlexIcons
5
+ module Bootstrap
6
+ class Tux < Base
7
+ def view_template
8
+ svg(
9
+ **attrs,
10
+ xmlns: 'http://www.w3.org/2000/svg',
11
+ fill: 'currentColor',
12
+ viewbox: '0 0 16 16'
13
+ ) do |s|
14
+ s.path(
15
+ d:
16
+ 'M8.996 4.497c.104-.076.1-.168.186-.158s.022.102-.098.207c-.12.104-.308.243-.46.323-.291.152-.631.336-.993.336s-.647-.167-.853-.33c-.102-.082-.186-.162-.248-.221-.11-.086-.096-.207-.052-.204.075.01.087.109.134.153.064.06.144.137.241.214.195.154.454.304.778.304s.702-.19.932-.32c.13-.073.297-.204.433-.304M7.34 3.781c.055-.02.123-.031.174-.003.011.006.024.021.02.034-.012.038-.074.032-.11.05-.032.017-.057.052-.093.054-.034 0-.086-.012-.09-.046-.007-.044.058-.072.1-.089m.581-.003c.05-.028.119-.018.173.003.041.017.106.045.1.09-.004.033-.057.046-.09.045-.036-.002-.062-.037-.093-.053-.036-.019-.098-.013-.11-.051-.004-.013.008-.028.02-.034'
17
+ )
18
+ s.path(
19
+ fill_rule: 'evenodd',
20
+ d:
21
+ 'M8.446.019c2.521.003 2.38 2.66 2.364 4.093-.01.939.509 1.574 1.04 2.244.474.56 1.095 1.38 1.45 2.32.29.765.402 1.613.115 2.465a.8.8 0 0 1 .254.152l.001.002c.207.175.271.447.329.698.058.252.112.488.224.615.344.382.494.667.48.922-.015.254-.203.43-.435.57-.465.28-1.164.491-1.586 1.002-.443.527-.99.83-1.505.871a1.25 1.25 0 0 1-1.256-.716v-.001a1 1 0 0 1-.078-.21c-.67.038-1.252-.165-1.718-.128-.687.038-1.116.204-1.506.206-.151.331-.445.547-.808.63-.5.114-1.126 0-1.743-.324-.577-.306-1.31-.278-1.85-.39-.27-.057-.51-.157-.626-.384-.116-.226-.095-.538.07-.988.051-.16.012-.398-.026-.648a2.5 2.5 0 0 1-.037-.369c0-.133.022-.265.087-.386v-.002c.14-.266.368-.377.577-.451s.397-.125.53-.258c.143-.15.27-.374.443-.56q.036-.037.073-.07c-.081-.538.007-1.105.192-1.662.393-1.18 1.223-2.314 1.811-3.014.502-.713.65-1.287.701-2.016.042-.997-.705-3.974 2.112-4.2q.168-.015.321-.013m2.596 10.866-.03.016c-.223.121-.348.337-.427.656-.08.32-.107.733-.13 1.206v.001c-.023.37-.192.824-.31 1.267s-.176.862-.036 1.128v.002c.226.452.608.636 1.051.601s.947-.304 1.36-.795c.474-.576 1.218-.796 1.638-1.05.21-.126.324-.242.333-.4.009-.157-.097-.403-.425-.767-.17-.192-.217-.462-.274-.71-.056-.247-.122-.468-.26-.585l-.001-.001c-.18-.157-.356-.17-.565-.164q-.069.001-.14.005c-.239.275-.805.612-1.197.508-.359-.09-.562-.508-.587-.918m-7.204.03H3.83c-.189.002-.314.09-.44.225-.149.158-.276.382-.445.56v.002h-.002c-.183.184-.414.239-.61.31-.195.069-.353.143-.46.35v.002c-.085.155-.066.378-.029.624.038.245.096.507.018.746v.002l-.001.002c-.157.427-.155.678-.082.822.074.143.235.22.48.272.493.103 1.26.069 1.906.41.583.305 1.168.404 1.598.305.431-.098.712-.369.75-.867v-.002c.029-.292-.195-.673-.485-1.052-.29-.38-.633-.752-.795-1.09v-.002l-.61-1.11c-.21-.286-.43-.462-.68-.5a1 1 0 0 0-.106-.008M9.584 4.85c-.14.2-.386.37-.695.467-.147.048-.302.17-.495.28a1.3 1.3 0 0 1-.74.19.97.97 0 0 1-.582-.227c-.14-.113-.25-.237-.394-.322a3 3 0 0 1-.192-.126c-.063 1.179-.85 2.658-1.226 3.511a5.4 5.4 0 0 0-.43 1.917c-.68-.906-.184-2.066.081-2.568.297-.55.343-.701.27-.649-.266.436-.685 1.13-.848 1.844-.085.372-.1.749.01 1.097.11.349.345.67.766.931.573.351.963.703 1.193 1.015s.302.584.23.777a.4.4 0 0 1-.212.22.7.7 0 0 1-.307.056l.184.235c.094.124.186.249.266.375 1.179.805 2.567.496 3.568-.218.1-.342.197-.664.212-.903.024-.474.05-.896.136-1.245s.244-.634.53-.791a1 1 0 0 1 .138-.061q.005-.045.013-.087c.082-.546.569-.572 1.18-.303.588.266.81.499.71.814h.13c.122-.398-.133-.69-.822-1.025l-.137-.06a2.35 2.35 0 0 0-.012-1.113c-.188-.79-.704-1.49-1.098-1.838-.072-.003-.065.06.081.203.363.333 1.156 1.532.727 2.644a1.2 1.2 0 0 0-.342-.043c-.164-.907-.543-1.66-.735-2.014-.359-.668-.918-2.036-1.158-2.983M7.72 3.503a1 1 0 0 0-.312.053c-.268.093-.447.286-.559.391-.022.021-.05.04-.119.091s-.172.126-.321.238q-.198.151-.13.38c.046.15.192.325.459.476.166.098.28.23.41.334a1 1 0 0 0 .215.133.9.9 0 0 0 .298.066c.282.017.49-.068.673-.173s.34-.233.518-.29c.365-.115.627-.345.709-.564a.37.37 0 0 0-.01-.309c-.048-.096-.148-.187-.318-.257h-.001c-.354-.151-.507-.162-.705-.29-.321-.207-.587-.28-.807-.279m-.89-1.122h-.025a.4.4 0 0 0-.278.135.76.76 0 0 0-.191.334 1.2 1.2 0 0 0-.051.445v.001c.01.162.041.299.102.436.05.116.109.204.183.274l.089-.065.117-.09-.023-.018a.4.4 0 0 1-.11-.161.7.7 0 0 1-.054-.22v-.01a.7.7 0 0 1 .014-.234.4.4 0 0 1 .08-.179q.056-.069.126-.073h.013a.18.18 0 0 1 .123.05c.045.04.08.09.11.162a.7.7 0 0 1 .054.22v.01a.7.7 0 0 1-.002.17 1.1 1.1 0 0 1 .317-.143 1.3 1.3 0 0 0 .002-.194V3.23a1.2 1.2 0 0 0-.102-.437.8.8 0 0 0-.227-.31.4.4 0 0 0-.268-.102m1.95-.155a.63.63 0 0 0-.394.14.9.9 0 0 0-.287.376 1.2 1.2 0 0 0-.1.51v.015q0 .079.01.152c.114.027.278.074.406.138a1 1 0 0 1-.011-.172.8.8 0 0 1 .058-.278.5.5 0 0 1 .139-.2.26.26 0 0 1 .182-.069.26.26 0 0 1 .178.081c.055.054.094.12.124.21.029.086.042.17.04.27l-.002.012a.8.8 0 0 1-.057.277c-.024.059-.089.106-.122.145.046.016.09.03.146.052a5 5 0 0 1 .248.102 1.2 1.2 0 0 0 .244-.763 1.2 1.2 0 0 0-.11-.495.9.9 0 0 0-.294-.37.64.64 0 0 0-.39-.133z'
22
+ )
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ # rubocop:enable Layout/LineLength
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ # rubocop:disable Layout/LineLength
4
+ module PhlexIcons
5
+ module Bootstrap
6
+ class Typescript < Base
7
+ def view_template
8
+ svg(
9
+ **attrs,
10
+ xmlns: 'http://www.w3.org/2000/svg',
11
+ fill: 'currentColor',
12
+ viewbox: '0 0 16 16'
13
+ ) do |s|
14
+ s.path(
15
+ fill_rule: 'evenodd',
16
+ d:
17
+ 'M14 0a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2zm-1.139 7.488q-.585 0-1.006.244a1.67 1.67 0 0 0-.634.674 2.1 2.1 0 0 0-.225.996q0 .753.293 1.182.303.42.967.732l.469.215q.438.186.625.43.185.244.185.635 0 .478-.166.703-.156.224-.527.224-.361.001-.547-.244-.186-.243-.205-.752h-1.162q.02.996.498 1.524.479.527 1.386.527.909 0 1.417-.518.507-.517.507-1.484 0-.81-.332-1.289t-1.045-.79l-.449-.196q-.39-.166-.556-.381-.166-.214-.166-.576 0-.4.165-.596.177-.195.508-.195.361 0 .508.234.156.234.176.703h1.123q-.03-.976-.498-1.484-.47-.518-1.309-.518M7 7.596v1.113h1.3V14.5h1.221V8.709h1.289V7.596z'
18
+ )
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ # rubocop:enable Layout/LineLength
@@ -12,8 +12,9 @@ module PhlexIcons
12
12
  viewbox: '0 0 16 16'
13
13
  ) do |s|
14
14
  s.path(
15
+ fill_rule: 'evenodd',
15
16
  d:
16
- 'M11 1a2 2 0 0 0-2 2v4a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h5V3a3 3 0 0 1 6 0v4a.5.5 0 0 1-1 0V3a2 2 0 0 0-2-2M3 8a1 1 0 0 0-1 1v5a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V9a1 1 0 0 0-1-1z'
17
+ 'M12 0a4 4 0 0 1 4 4v2.5h-1V4a3 3 0 1 0-6 0v2h.5A2.5 2.5 0 0 1 12 8.5v5A2.5 2.5 0 0 1 9.5 16h-7A2.5 2.5 0 0 1 0 13.5v-5A2.5 2.5 0 0 1 2.5 6H8V4a4 4 0 0 1 4-4M2.5 7A1.5 1.5 0 0 0 1 8.5v5A1.5 1.5 0 0 0 2.5 15h7a1.5 1.5 0 0 0 1.5-1.5v-5A1.5 1.5 0 0 0 9.5 7z'
17
18
  )
18
19
  end
19
20
  end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ # rubocop:disable Layout/LineLength
4
+ module PhlexIcons
5
+ module Bootstrap
6
+ class Unlock2 < Base
7
+ def view_template
8
+ svg(
9
+ **attrs,
10
+ xmlns: 'http://www.w3.org/2000/svg',
11
+ fill: 'currentColor',
12
+ viewbox: '0 0 16 16'
13
+ ) do |s|
14
+ s.path(
15
+ fill_rule: 'evenodd',
16
+ d:
17
+ 'M8 0c1.07 0 2.041.42 2.759 1.104l.14.14.062.08a.5.5 0 0 1-.71.675l-.076-.066-.216-.205A3 3 0 0 0 5 4v2h6.5A2.5 2.5 0 0 1 14 8.5v5a2.5 2.5 0 0 1-2.5 2.5h-7A2.5 2.5 0 0 1 2 13.5v-5a2.5 2.5 0 0 1 2-2.45V4a4 4 0 0 1 4-4M4.5 7A1.5 1.5 0 0 0 3 8.5v5A1.5 1.5 0 0 0 4.5 15h7a1.5 1.5 0 0 0 1.5-1.5v-5A1.5 1.5 0 0 0 11.5 7z'
18
+ )
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ # rubocop:enable Layout/LineLength
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ # rubocop:disable Layout/LineLength
4
+ module PhlexIcons
5
+ module Bootstrap
6
+ class Unlock2Fill < Base
7
+ def view_template
8
+ svg(
9
+ **attrs,
10
+ xmlns: 'http://www.w3.org/2000/svg',
11
+ fill: 'currentColor',
12
+ viewbox: '0 0 16 16'
13
+ ) do |s|
14
+ s.path(
15
+ fill_rule: 'evenodd',
16
+ d:
17
+ 'M8 0c1.07 0 2.041.42 2.759 1.104l.14.14.062.08a.5.5 0 0 1-.71.675l-.076-.066-.216-.205A3 3 0 0 0 5 4v2h6.5A2.5 2.5 0 0 1 14 8.5v5a2.5 2.5 0 0 1-2.5 2.5h-7A2.5 2.5 0 0 1 2 13.5v-5a2.5 2.5 0 0 1 2-2.45V4a4 4 0 0 1 4-4'
18
+ )
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
24
+ # rubocop:enable Layout/LineLength
@@ -12,8 +12,9 @@ module PhlexIcons
12
12
  viewbox: '0 0 16 16'
13
13
  ) do |s|
14
14
  s.path(
15
+ fill_rule: 'evenodd',
15
16
  d:
16
- 'M11 1a2 2 0 0 0-2 2v4a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h5V3a3 3 0 0 1 6 0v4a.5.5 0 0 1-1 0V3a2 2 0 0 0-2-2'
17
+ 'M12 0a4 4 0 0 1 4 4v2.5h-1V4a3 3 0 1 0-6 0v2h.5A2.5 2.5 0 0 1 12 8.5v5A2.5 2.5 0 0 1 9.5 16h-7A2.5 2.5 0 0 1 0 13.5v-5A2.5 2.5 0 0 1 2.5 6H8V4a4 4 0 0 1 4-4'
17
18
  )
18
19
  end
19
20
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  module PhlexIcons
4
4
  module Bootstrap # rubocop:disable Metrics/ModuleLength
5
- VERSION = '1.11.3'
5
+ VERSION = '1.13.1'
6
6
  VARIANTS = nil
7
7
 
8
8
  extend Phlex::Kit
@@ -32,9 +32,11 @@ module PhlexIcons
32
32
  autoload :Amd, 'phlex-icons/bootstrap/amd'
33
33
  autoload :Android, 'phlex-icons/bootstrap/android'
34
34
  autoload :Android2, 'phlex-icons/bootstrap/android2'
35
+ autoload :Anthropic, 'phlex-icons/bootstrap/anthropic'
35
36
  autoload :App, 'phlex-icons/bootstrap/app'
36
37
  autoload :AppIndicator, 'phlex-icons/bootstrap/app_indicator'
37
38
  autoload :Apple, 'phlex-icons/bootstrap/apple'
39
+ autoload :AppleMusic, 'phlex-icons/bootstrap/apple_music'
38
40
  autoload :Archive, 'phlex-icons/bootstrap/archive'
39
41
  autoload :ArchiveFill, 'phlex-icons/bootstrap/archive_fill'
40
42
  autoload :Arrow90degDown, 'phlex-icons/bootstrap/arrow_90deg_down'
@@ -188,6 +190,9 @@ module PhlexIcons
188
190
  autoload :BatteryCharging, 'phlex-icons/bootstrap/battery_charging'
189
191
  autoload :BatteryFull, 'phlex-icons/bootstrap/battery_full'
190
192
  autoload :BatteryHalf, 'phlex-icons/bootstrap/battery_half'
193
+ autoload :BatteryLow, 'phlex-icons/bootstrap/battery_low'
194
+ autoload :Beaker, 'phlex-icons/bootstrap/beaker'
195
+ autoload :BeakerFill, 'phlex-icons/bootstrap/beaker_fill'
191
196
  autoload :Behance, 'phlex-icons/bootstrap/behance'
192
197
  autoload :Bell, 'phlex-icons/bootstrap/bell'
193
198
  autoload :BellFill, 'phlex-icons/bootstrap/bell_fill'
@@ -201,6 +206,7 @@ module PhlexIcons
201
206
  autoload :BinocularsFill, 'phlex-icons/bootstrap/binoculars_fill'
202
207
  autoload :BlockquoteLeft, 'phlex-icons/bootstrap/blockquote_left'
203
208
  autoload :BlockquoteRight, 'phlex-icons/bootstrap/blockquote_right'
209
+ autoload :Bluesky, 'phlex-icons/bootstrap/bluesky'
204
210
  autoload :Bluetooth, 'phlex-icons/bootstrap/bluetooth'
205
211
  autoload :BodyText, 'phlex-icons/bootstrap/body_text'
206
212
  autoload :Book, 'phlex-icons/bootstrap/book'
@@ -524,6 +530,7 @@ module PhlexIcons
524
530
  autoload :CircleFill, 'phlex-icons/bootstrap/circle_fill'
525
531
  autoload :CircleHalf, 'phlex-icons/bootstrap/circle_half'
526
532
  autoload :CircleSquare, 'phlex-icons/bootstrap/circle_square'
533
+ autoload :Claude, 'phlex-icons/bootstrap/claude'
527
534
  autoload :Clipboard, 'phlex-icons/bootstrap/clipboard'
528
535
  autoload :Clipboard2, 'phlex-icons/bootstrap/clipboard2'
529
536
  autoload :Clipboard2Check, 'phlex-icons/bootstrap/clipboard2_check'
@@ -637,6 +644,7 @@ module PhlexIcons
637
644
  autoload :Crop, 'phlex-icons/bootstrap/crop'
638
645
  autoload :Crosshair, 'phlex-icons/bootstrap/crosshair'
639
646
  autoload :Crosshair2, 'phlex-icons/bootstrap/crosshair2'
647
+ autoload :Css, 'phlex-icons/bootstrap/css'
640
648
  autoload :Cup, 'phlex-icons/bootstrap/cup'
641
649
  autoload :CupFill, 'phlex-icons/bootstrap/cup_fill'
642
650
  autoload :CupHot, 'phlex-icons/bootstrap/cup_hot'
@@ -1046,6 +1054,10 @@ module PhlexIcons
1046
1054
  autoload :FiveSquareFill, 'phlex-icons/bootstrap/five_square_fill'
1047
1055
  autoload :Flag, 'phlex-icons/bootstrap/flag'
1048
1056
  autoload :FlagFill, 'phlex-icons/bootstrap/flag_fill'
1057
+ autoload :Flask, 'phlex-icons/bootstrap/flask'
1058
+ autoload :FlaskFill, 'phlex-icons/bootstrap/flask_fill'
1059
+ autoload :FlaskFlorence, 'phlex-icons/bootstrap/flask_florence'
1060
+ autoload :FlaskFlorenceFill, 'phlex-icons/bootstrap/flask_florence_fill'
1049
1061
  autoload :Floppy, 'phlex-icons/bootstrap/floppy'
1050
1062
  autoload :Floppy2, 'phlex-icons/bootstrap/floppy2'
1051
1063
  autoload :Floppy2Fill, 'phlex-icons/bootstrap/floppy2_fill'
@@ -1064,6 +1076,7 @@ module PhlexIcons
1064
1076
  autoload :FolderSymlinkFill, 'phlex-icons/bootstrap/folder_symlink_fill'
1065
1077
  autoload :FolderX, 'phlex-icons/bootstrap/folder_x'
1066
1078
  autoload :Fonts, 'phlex-icons/bootstrap/fonts'
1079
+ autoload :ForkKnife, 'phlex-icons/bootstrap/fork_knife'
1067
1080
  autoload :Forward, 'phlex-icons/bootstrap/forward'
1068
1081
  autoload :ForwardFill, 'phlex-icons/bootstrap/forward_fill'
1069
1082
  autoload :FourCircle, 'phlex-icons/bootstrap/four_circle'
@@ -1101,9 +1114,13 @@ module PhlexIcons
1101
1114
  autoload :Globe, 'phlex-icons/bootstrap/globe'
1102
1115
  autoload :Globe2, 'phlex-icons/bootstrap/globe2'
1103
1116
  autoload :GlobeAmericas, 'phlex-icons/bootstrap/globe_americas'
1117
+ autoload :GlobeAmericasFill, 'phlex-icons/bootstrap/globe_americas_fill'
1104
1118
  autoload :GlobeAsiaAustralia, 'phlex-icons/bootstrap/globe_asia_australia'
1119
+ autoload :GlobeAsiaAustraliaFill, 'phlex-icons/bootstrap/globe_asia_australia_fill'
1105
1120
  autoload :GlobeCentralSouthAsia, 'phlex-icons/bootstrap/globe_central_south_asia'
1121
+ autoload :GlobeCentralSouthAsiaFill, 'phlex-icons/bootstrap/globe_central_south_asia_fill'
1106
1122
  autoload :GlobeEuropeAfrica, 'phlex-icons/bootstrap/globe_europe_africa'
1123
+ autoload :GlobeEuropeAfricaFill, 'phlex-icons/bootstrap/globe_europe_africa_fill'
1107
1124
  autoload :Google, 'phlex-icons/bootstrap/google'
1108
1125
  autoload :GooglePlay, 'phlex-icons/bootstrap/google_play'
1109
1126
  autoload :GpuCard, 'phlex-icons/bootstrap/gpu_card'
@@ -1227,6 +1244,7 @@ module PhlexIcons
1227
1244
  autoload :InputCursorText, 'phlex-icons/bootstrap/input_cursor_text'
1228
1245
  autoload :Instagram, 'phlex-icons/bootstrap/instagram'
1229
1246
  autoload :Intersect, 'phlex-icons/bootstrap/intersect'
1247
+ autoload :Javascript, 'phlex-icons/bootstrap/javascript'
1230
1248
  autoload :Journal, 'phlex-icons/bootstrap/journal'
1231
1249
  autoload :JournalAlbum, 'phlex-icons/bootstrap/journal_album'
1232
1250
  autoload :JournalArrowDown, 'phlex-icons/bootstrap/journal_arrow_down'
@@ -1273,6 +1291,8 @@ module PhlexIcons
1273
1291
  autoload :LayoutTextWindowReverse, 'phlex-icons/bootstrap/layout_text_window_reverse'
1274
1292
  autoload :LayoutThreeColumns, 'phlex-icons/bootstrap/layout_three_columns'
1275
1293
  autoload :LayoutWtf, 'phlex-icons/bootstrap/layout_wtf'
1294
+ autoload :Leaf, 'phlex-icons/bootstrap/leaf'
1295
+ autoload :LeafFill, 'phlex-icons/bootstrap/leaf_fill'
1276
1296
  autoload :LifePreserver, 'phlex-icons/bootstrap/life_preserver'
1277
1297
  autoload :Lightbulb, 'phlex-icons/bootstrap/lightbulb'
1278
1298
  autoload :LightbulbFill, 'phlex-icons/bootstrap/lightbulb_fill'
@@ -1315,6 +1335,8 @@ module PhlexIcons
1315
1335
  autoload :MarkerTip, 'phlex-icons/bootstrap/marker_tip'
1316
1336
  autoload :Mask, 'phlex-icons/bootstrap/mask'
1317
1337
  autoload :Mastodon, 'phlex-icons/bootstrap/mastodon'
1338
+ autoload :MeasuringCup, 'phlex-icons/bootstrap/measuring_cup'
1339
+ autoload :MeasuringCupFill, 'phlex-icons/bootstrap/measuring_cup_fill'
1318
1340
  autoload :Medium, 'phlex-icons/bootstrap/medium'
1319
1341
  autoload :Megaphone, 'phlex-icons/bootstrap/megaphone'
1320
1342
  autoload :MegaphoneFill, 'phlex-icons/bootstrap/megaphone_fill'
@@ -1383,6 +1405,7 @@ module PhlexIcons
1383
1405
  autoload :OneSquare, 'phlex-icons/bootstrap/one_square'
1384
1406
  autoload :OneSquareFill, 'phlex-icons/bootstrap/one_square_fill'
1385
1407
  autoload :OneTwoThree, 'phlex-icons/bootstrap/one_two_three'
1408
+ autoload :Openai, 'phlex-icons/bootstrap/openai'
1386
1409
  autoload :Opencollective, 'phlex-icons/bootstrap/opencollective'
1387
1410
  autoload :OpticalAudio, 'phlex-icons/bootstrap/optical_audio'
1388
1411
  autoload :OpticalAudioFill, 'phlex-icons/bootstrap/optical_audio_fill'
@@ -1439,6 +1462,7 @@ module PhlexIcons
1439
1462
  autoload :People, 'phlex-icons/bootstrap/people'
1440
1463
  autoload :PeopleFill, 'phlex-icons/bootstrap/people_fill'
1441
1464
  autoload :Percent, 'phlex-icons/bootstrap/percent'
1465
+ autoload :Perplexity, 'phlex-icons/bootstrap/perplexity'
1442
1466
  autoload :Person, 'phlex-icons/bootstrap/person'
1443
1467
  autoload :PersonAdd, 'phlex-icons/bootstrap/person_add'
1444
1468
  autoload :PersonArmsUp, 'phlex-icons/bootstrap/person_arms_up'
@@ -1938,6 +1962,7 @@ module PhlexIcons
1938
1962
  autoload :TruckFront, 'phlex-icons/bootstrap/truck_front'
1939
1963
  autoload :TruckFrontFill, 'phlex-icons/bootstrap/truck_front_fill'
1940
1964
  autoload :Tsunami, 'phlex-icons/bootstrap/tsunami'
1965
+ autoload :Tux, 'phlex-icons/bootstrap/tux'
1941
1966
  autoload :Tv, 'phlex-icons/bootstrap/tv'
1942
1967
  autoload :TvFill, 'phlex-icons/bootstrap/tv_fill'
1943
1968
  autoload :Twitch, 'phlex-icons/bootstrap/twitch'
@@ -1958,6 +1983,7 @@ module PhlexIcons
1958
1983
  autoload :TypeItalic, 'phlex-icons/bootstrap/type_italic'
1959
1984
  autoload :TypeStrikethrough, 'phlex-icons/bootstrap/type_strikethrough'
1960
1985
  autoload :TypeUnderline, 'phlex-icons/bootstrap/type_underline'
1986
+ autoload :Typescript, 'phlex-icons/bootstrap/typescript'
1961
1987
  autoload :Ubuntu, 'phlex-icons/bootstrap/ubuntu'
1962
1988
  autoload :UiChecks, 'phlex-icons/bootstrap/ui_checks'
1963
1989
  autoload :UiChecksGrid, 'phlex-icons/bootstrap/ui_checks_grid'
@@ -1971,6 +1997,8 @@ module PhlexIcons
1971
1997
  autoload :UniversalAccess, 'phlex-icons/bootstrap/universal_access'
1972
1998
  autoload :UniversalAccessCircle, 'phlex-icons/bootstrap/universal_access_circle'
1973
1999
  autoload :Unlock, 'phlex-icons/bootstrap/unlock'
2000
+ autoload :Unlock2, 'phlex-icons/bootstrap/unlock2'
2001
+ autoload :Unlock2Fill, 'phlex-icons/bootstrap/unlock2_fill'
1974
2002
  autoload :UnlockFill, 'phlex-icons/bootstrap/unlock_fill'
1975
2003
  autoload :Upc, 'phlex-icons/bootstrap/upc'
1976
2004
  autoload :UpcScan, 'phlex-icons/bootstrap/upc_scan'
@@ -2,10 +2,33 @@
2
2
 
3
3
  module PhlexIcons
4
4
  class Configuration
5
- attr_accessor :default_variant, :default_classes
5
+ attr_accessor :default_variant, :default_classes, :helper_method_name
6
+ attr_reader :default_pack
6
7
 
7
8
  def initialize(default_classes: 'size-6')
8
9
  @default_classes = default_classes
10
+ @helper_method_name = :phlex_icon
11
+ @default_pack = nil
12
+ end
13
+
14
+ # Custom setter for default_pack
15
+ # Accepts Class (PhlexIcons::Hero), String ('hero'), or Symbol (:hero)
16
+ #
17
+ # @param value [Class, String, Symbol, nil] The value to set the default pack to.
18
+ # @raise [ArgumentError] If the value is not a Class, String, Symbol, or nil.
19
+ def default_pack=(value)
20
+ @default_pack = case value
21
+ when Class
22
+ # Extract 'Hero' from PhlexIcons::Hero, lowercase, symbolize
23
+ value.name.split('::').last&.downcase&.to_sym
24
+ when String, Symbol
25
+ value.to_sym
26
+ when nil
27
+ nil
28
+ else
29
+ raise ArgumentError,
30
+ "Invalid type for default_pack: #{value.class}. Expected Class, String, Symbol, or nil."
31
+ end
9
32
  end
10
33
  end
11
34
  end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'name_parser'
4
+
5
+ module PhlexIcons
6
+ extend Phlex::Kit
7
+
8
+ class Icon < Phlex::SVG
9
+ # Factory method to create an icon component instance.
10
+ # Parses the name string, finds the corresponding class, and initializes it with options.
11
+ # @param name [String] Icon identifier (e.g., "hero/house:solid", "lucide/arrow-right").
12
+ # @param options [Hash] HTML attributes and options for the icon component.
13
+ # @return [Phlex::SVG] An instance of the resolved icon component.
14
+ # @raise [ArgumentError] If the name format is invalid or default pack is missing.
15
+ # @raise [NameError] If the corresponding icon class cannot be found.
16
+ def initialize(name, **options)
17
+ @name = name
18
+ @options = options&.transform_keys(&:to_sym) || {}
19
+ super()
20
+ end
21
+
22
+ def view_template
23
+ parser = PhlexIcons::NameParser.new(@name)
24
+
25
+ # Prioritize variant from the name string over options hash
26
+ @options[:variant] = parser.variant_name if parser.variant_name
27
+
28
+ render parser.klass.new(**@options)
29
+ end
30
+ end
31
+ end
@@ -14,13 +14,13 @@ module PhlexIcons
14
14
  stroke_linecap: 'round',
15
15
  stroke_linejoin: 'round'
16
16
  ) do |s|
17
+ s.path(d: 'M18 17.5a2.5 2.5 0 1 1-4 2.03V12')
17
18
  s.path(
18
19
  d:
19
20
  'M6 12H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2'
20
21
  )
21
22
  s.path(d: 'M6 8h12')
22
- s.path(d: 'M18.3 17.7a2.5 2.5 0 0 1-3.16 3.83 2.53 2.53 0 0 1-1.14-2V12')
23
- s.path(d: 'M6.6 15.6A2 2 0 1 0 10 17v-5')
23
+ s.path(d: 'M6.6 15.572A2 2 0 1 0 10 17v-5')
24
24
  end
25
25
  end
26
26
  end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ # rubocop:disable Layout/LineLength
3
4
  module PhlexIcons
4
5
  module Lucide
5
6
  class Axe < Base
@@ -14,10 +15,14 @@ module PhlexIcons
14
15
  stroke_linecap: 'round',
15
16
  stroke_linejoin: 'round'
16
17
  ) do |s|
17
- s.path(d: 'm14 12-8.5 8.5a2.12 2.12 0 1 1-3-3L11 9')
18
- s.path(d: 'M15 13 9 7l4-4 6 6h3a8 8 0 0 1-7 7z')
18
+ s.path(d: 'm14 12-8.381 8.38a1 1 0 0 1-3.001-3L11 9')
19
+ s.path(
20
+ d:
21
+ 'M15 15.5a.5.5 0 0 0 .5.5A6.5 6.5 0 0 0 22 9.5a.5.5 0 0 0-.5-.5h-1.672a2 2 0 0 1-1.414-.586l-5.062-5.062a1.205 1.205 0 0 0-1.704 0L9.352 5.648a1.205 1.205 0 0 0 0 1.704l5.062 5.062A2 2 0 0 1 15 13.828z'
22
+ )
19
23
  end
20
24
  end
21
25
  end
22
26
  end
23
27
  end
28
+ # rubocop:enable Layout/LineLength
@@ -14,12 +14,12 @@ module PhlexIcons
14
14
  stroke_linecap: 'round',
15
15
  stroke_linejoin: 'round'
16
16
  ) do |s|
17
- s.path(d: 'M18.8 4A6.3 8.7 0 0 1 20 9')
17
+ s.path(d: 'M18.518 17.347A7 7 0 0 1 14 19')
18
+ s.path(d: 'M18.8 4A11 11 0 0 1 20 9')
18
19
  s.path(d: 'M9 9h.01')
19
- s.circle(cx: '9', cy: '9', r: '7')
20
- s.rect(width: '10', height: '6', x: '4', y: '16', rx: '2')
21
- s.path(d: 'M14 19c3 0 4.6-1.6 4.6-1.6')
22
20
  s.circle(cx: '20', cy: '16', r: '2')
21
+ s.circle(cx: '9', cy: '9', r: '7')
22
+ s.rect(x: '4', y: '16', width: '10', height: '6', rx: '2')
23
23
  end
24
24
  end
25
25
  end
@@ -14,8 +14,8 @@ module PhlexIcons
14
14
  stroke_linecap: 'round',
15
15
  stroke_linejoin: 'round'
16
16
  ) do |s|
17
- s.path(d: 'M16 3h2a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1h-2')
18
- s.path(d: 'M8 21H6a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h2')
17
+ s.path(d: 'M16 3h3a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1h-3')
18
+ s.path(d: 'M8 21H5a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h3')
19
19
  end
20
20
  end
21
21
  end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ # rubocop:disable Layout/LineLength
4
+ module PhlexIcons
5
+ module Lucide
6
+ class BrushCleaning < Base
7
+ def view_template
8
+ svg(
9
+ **attrs,
10
+ xmlns: 'http://www.w3.org/2000/svg',
11
+ viewbox: '0 0 24 24',
12
+ fill: 'none',
13
+ stroke: 'currentColor',
14
+ stroke_width: '2',
15
+ stroke_linecap: 'round',
16
+ stroke_linejoin: 'round'
17
+ ) do |s|
18
+ s.path(d: 'm16 22-1-4')
19
+ s.path(
20
+ d:
21
+ 'M19 13.99a1 1 0 0 0 1-1V12a2 2 0 0 0-2-2h-3a1 1 0 0 1-1-1V4a2 2 0 0 0-4 0v5a1 1 0 0 1-1 1H6a2 2 0 0 0-2 2v.99a1 1 0 0 0 1 1'
22
+ )
23
+ s.path(d: 'M5 14h14l1.973 6.767A1 1 0 0 1 20 22H4a1 1 0 0 1-.973-1.233z')
24
+ s.path(d: 'm8 22 1-4')
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ # rubocop:enable Layout/LineLength
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PhlexIcons
4
+ module Lucide
5
+ class CheckLine < Base
6
+ def view_template
7
+ svg(
8
+ **attrs,
9
+ xmlns: 'http://www.w3.org/2000/svg',
10
+ viewbox: '0 0 24 24',
11
+ fill: 'none',
12
+ stroke: 'currentColor',
13
+ stroke_width: '2',
14
+ stroke_linecap: 'round',
15
+ stroke_linejoin: 'round'
16
+ ) do |s|
17
+ s.path(d: 'M20 4L9 15')
18
+ s.path(d: 'M21 19L3 19')
19
+ s.path(d: 'M9 15L4 10')
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end