phlex-icons-lucide 2.18.0 → 2.20.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 (92) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +5 -1
  3. data/README.md +44 -0
  4. data/generators/flag.rb +1 -1
  5. data/generators/hero.rb +1 -1
  6. data/generators/tabler.rb +1 -1
  7. data/lib/phlex-icons/configuration.rb +24 -1
  8. data/lib/phlex-icons/icon.rb +31 -0
  9. data/lib/phlex-icons/lucide/air_vent.rb +2 -2
  10. data/lib/phlex-icons/lucide/baby.rb +3 -3
  11. data/lib/phlex-icons/lucide/bell_electric.rb +4 -4
  12. data/lib/phlex-icons/lucide/book_key.rb +2 -2
  13. data/lib/phlex-icons/lucide/bow_arrow.rb +33 -0
  14. data/lib/phlex-icons/lucide/brain_cog.rb +19 -17
  15. data/lib/phlex-icons/lucide/brick_wall_fire.rb +33 -0
  16. data/lib/phlex-icons/lucide/brush.rb +3 -5
  17. data/lib/phlex-icons/lucide/brush_cleaning.rb +30 -0
  18. data/lib/phlex-icons/lucide/bubbles.rb +25 -0
  19. data/lib/phlex-icons/lucide/calendar_cog.rb +9 -9
  20. data/lib/phlex-icons/lucide/calendar_plus.rb +4 -4
  21. data/lib/phlex-icons/lucide/clipboard_paste.rb +5 -8
  22. data/lib/phlex-icons/lucide/clock_plus.rb +25 -0
  23. data/lib/phlex-icons/lucide/cloud_cog.rb +12 -10
  24. data/lib/phlex-icons/lucide/columns_3_cog.rb +35 -0
  25. data/lib/phlex-icons/lucide/cpu.rb +14 -10
  26. data/lib/phlex-icons/lucide/decimals_arrow_left.rb +25 -0
  27. data/lib/phlex-icons/lucide/decimals_arrow_right.rb +26 -0
  28. data/lib/phlex-icons/lucide/door_closed.rb +1 -1
  29. data/lib/phlex-icons/lucide/door_closed_locked.rb +26 -0
  30. data/lib/phlex-icons/lucide/door_open.rb +5 -5
  31. data/lib/phlex-icons/lucide/dumbbell.rb +5 -5
  32. data/lib/phlex-icons/lucide/expand.rb +4 -4
  33. data/lib/phlex-icons/lucide/file_badge_2.rb +7 -3
  34. data/lib/phlex-icons/lucide/file_cog.rb +8 -8
  35. data/lib/phlex-icons/lucide/folder_cog.rb +10 -10
  36. data/lib/phlex-icons/lucide/guitar.rb +1 -2
  37. data/lib/phlex-icons/lucide/hamburger.rb +28 -0
  38. data/lib/phlex-icons/lucide/heart_minus.rb +28 -0
  39. data/lib/phlex-icons/lucide/heart_plus.rb +29 -0
  40. data/lib/phlex-icons/lucide/lamp.rb +7 -2
  41. data/lib/phlex-icons/lucide/lamp_ceiling.rb +5 -2
  42. data/lib/phlex-icons/lucide/lamp_desk.rb +11 -4
  43. data/lib/phlex-icons/lucide/lamp_floor.rb +5 -2
  44. data/lib/phlex-icons/lucide/lamp_wall_down.rb +8 -3
  45. data/lib/phlex-icons/lucide/lamp_wall_up.rb +8 -3
  46. data/lib/phlex-icons/lucide/laptop.rb +2 -1
  47. data/lib/phlex-icons/lucide/layers_2.rb +2 -2
  48. data/lib/phlex-icons/lucide/locate_off.rb +7 -13
  49. data/lib/phlex-icons/lucide/location_edit.rb +29 -0
  50. data/lib/phlex-icons/lucide/mail.rb +2 -2
  51. data/lib/phlex-icons/lucide/menu.rb +3 -3
  52. data/lib/phlex-icons/lucide/monitor_cog.rb +8 -8
  53. data/lib/phlex-icons/lucide/non_binary.rb +2 -2
  54. data/lib/phlex-icons/lucide/orbit.rb +2 -2
  55. data/lib/phlex-icons/lucide/package_2.rb +7 -2
  56. data/lib/phlex-icons/lucide/palette.rb +5 -5
  57. data/lib/phlex-icons/lucide/panda.rb +32 -0
  58. data/lib/phlex-icons/lucide/phone.rb +1 -1
  59. data/lib/phlex-icons/lucide/phone_call.rb +3 -3
  60. data/lib/phlex-icons/lucide/phone_forwarded.rb +3 -3
  61. data/lib/phlex-icons/lucide/phone_incoming.rb +3 -3
  62. data/lib/phlex-icons/lucide/phone_missed.rb +3 -3
  63. data/lib/phlex-icons/lucide/phone_off.rb +6 -2
  64. data/lib/phlex-icons/lucide/phone_outgoing.rb +3 -3
  65. data/lib/phlex-icons/lucide/piggy_bank.rb +3 -3
  66. data/lib/phlex-icons/lucide/pipette.rb +8 -3
  67. data/lib/phlex-icons/lucide/rectangle_goggles.rb +27 -0
  68. data/lib/phlex-icons/lucide/rotate_ccw_key.rb +26 -0
  69. data/lib/phlex-icons/lucide/ruler_dimension_line.rb +28 -0
  70. data/lib/phlex-icons/lucide/search.rb +1 -1
  71. data/lib/phlex-icons/lucide/server_cog.rb +9 -10
  72. data/lib/phlex-icons/lucide/shredder.rb +28 -0
  73. data/lib/phlex-icons/lucide/soap_dispenser_droplet.rb +33 -0
  74. data/lib/phlex-icons/lucide/squares_exclude.rb +29 -0
  75. data/lib/phlex-icons/lucide/squares_intersect.rb +36 -0
  76. data/lib/phlex-icons/lucide/squares_subtract.rb +30 -0
  77. data/lib/phlex-icons/lucide/squares_unite.rb +27 -0
  78. data/lib/phlex-icons/lucide/text_cursor_input.rb +4 -4
  79. data/lib/phlex-icons/lucide/touchpad_off.rb +4 -4
  80. data/lib/phlex-icons/lucide/traffic_cone.rb +4 -7
  81. data/lib/phlex-icons/lucide/truck_electric.rb +33 -0
  82. data/lib/phlex-icons/lucide/user_cog.rb +9 -9
  83. data/lib/phlex-icons/lucide/user_lock.rb +25 -0
  84. data/lib/phlex-icons/lucide/user_round_cog.rb +8 -8
  85. data/lib/phlex-icons/lucide/users.rb +2 -2
  86. data/lib/phlex-icons/lucide/wifi_pen.rb +30 -0
  87. data/lib/phlex-icons/lucide.rb +27 -1
  88. data/lib/phlex-icons/name_parser.rb +117 -0
  89. data/lib/phlex-icons/railtie.rb +17 -0
  90. data/lib/phlex-icons/version.rb +1 -1
  91. data/lib/phlex-icons-lucide.rb +3 -0
  92. metadata +31 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 55f95e392127415c1868b45ec4c8cd3b863877445bc84c05ba9640725b064625
4
- data.tar.gz: 2648e4b9632216207daae25fc140b72a76cb505590417c6eea177ba07086629b
3
+ metadata.gz: 745a3cf238ca7b0e9f22877cf586a111b21856a3e362edbe197dc6a2ad7190b5
4
+ data.tar.gz: dcd6e30eff28cb8d76bba88a7fca537b4b8d4a58478c74aa36491b1843433bca
5
5
  SHA512:
6
- metadata.gz: 717928e51bd05580cbb9205fa895601c8566e379e82af2dceae8ea9661886168d9282e4d8ffbbb2f295322fdf87411afbebfffd15c2d08f07817d22b09da9528
7
- data.tar.gz: 46dc9b41d6c32649253890ab817924ee07ba63dcea14dd769f9c5c2daca92f4f644a6afe897d3173724d0e5c1e57c5b59b7d4d2a52ca3af28cef01fe9a3bb389
6
+ metadata.gz: dd16db97aab859b4e0cc3ebd92332a3eb38b065fb76acdce25da89990cc3d6fac2a7e1f80d02fc8c0a26e3444896992c9f277d5114b5d36e5b9ad43a97970500
7
+ data.tar.gz: 99ee2bece76cb47f50c4109eaf78ad7c60407d0a2bba718c0e36ddfbbaf5fa01f162dbed5770017e6f0925423b488b6f20ca2059a304d685cfa0ea1f6cbaf11c
data/.rubocop.yml CHANGED
@@ -25,4 +25,8 @@ Metrics/MethodLength:
25
25
  CountAsOne: ['array', 'method_call']
26
26
 
27
27
  Metrics/ClassLength:
28
- CountAsOne: ['array', 'method_call']
28
+ CountAsOne: ['array', 'method_call']
29
+
30
+ Metrics/BlockLength:
31
+ Exclude:
32
+ - 'spec/**/*'
data/README.md CHANGED
@@ -62,11 +62,15 @@ The gem provides global configuration options, and per icons pack configuration
62
62
  ```ruby
63
63
  PhlexIcons.configure do |config|
64
64
  config.default_classes = 'size-6'
65
+ config.helper_method_name = :phlex_icon # Default: :phlex_icon
66
+ config.default_pack = :hero # Default: nil. Accepts :symbol, "string", or Class (e.g., PhlexIcons::Hero)
65
67
  end
66
68
 
67
69
  # OR
68
70
 
69
71
  PhlexIcons.configuration.default_classes = 'size-6'
72
+ PhlexIcons.configuration.helper_method_name = :phlex_icon
73
+ PhlexIcons.configuration.default_pack = :hero
70
74
  ```
71
75
 
72
76
  ### Bootstrap Icons configuration
@@ -153,6 +157,9 @@ class PhlexIcons < Phlex::HTML
153
157
  Radix::Home(class: 'size-4')
154
158
  Remix::HomeLine(class: 'size-4')
155
159
  Tabler::Home(variant: :filled, class: 'size-4')
160
+
161
+ # or with a string
162
+ Icon('bootstrap/house', class: 'size-4')
156
163
  end
157
164
  end
158
165
  end
@@ -174,11 +181,48 @@ class PhlexIcons < Phlex::HTML
174
181
  render PhlexIcons::Radix::Home.new(class: 'size-4')
175
182
  render PhlexIcons::Remix::HomeLine.new(class: 'size-4')
176
183
  render PhlexIcons::Tabler::Home.new(variant: :filled, class: 'size-4')
184
+
185
+ # or with a string
186
+ render PhlexIcons::Icon('bootstrap/house', class: 'size-4')
177
187
  end
178
188
  end
179
189
  end
180
190
  ```
181
191
 
192
+ ### Rails View Helper
193
+
194
+ `phlex-icons` provides a convenient helper method to render icons directly in your ERB or Phlex views.
195
+
196
+ By default, the helper method is named `phlex_icon`, but is configurable.
197
+
198
+ ```erb
199
+ <%# Render a Bootstrap house icon with default size %>
200
+ <%= phlex_icon 'bootstrap/house' %>
201
+
202
+ <%# Render a Heroicons solid home icon with a specific class %>
203
+ <%= phlex_icon 'hero/home', variant: :solid, class: 'w-5 h-5 text-blue-500' %>
204
+
205
+ <%# Render a Tabler home icon, filled variant %>
206
+ <%= phlex_icon 'tabler/home:filled' %>
207
+
208
+ <%# If default_pack = :hero, render a Heroicons home icon %>
209
+ <%= phlex_icon 'home', class: 'w-6 h-6' %>
210
+
211
+ <%# Render a Flag icon (rectangle variant is default for flags if not configured otherwise) %>
212
+ <%= phlex_icon 'flag/sa' %>
213
+
214
+ <%# Render a custom icon %>
215
+ <%= phlex_icon 'custom/my_awesome_icon:variant_name' %>
216
+ ```
217
+
218
+ The first argument is the icon identifier. Such as: `'pack/icon_name:variant'`.
219
+
220
+ * If `default_pack` is configured, you can omit the pack name (e.g., `'icon_name:variant'` instead of `'pack/icon_name:variant'`).
221
+ * The `:variant` part is optional.
222
+ * Examples: `'hero/house:solid'`, `'house:solid'`, `'house'`
223
+
224
+ Subsequent arguments are passed as options to the icon component, such as `variant`, `class`, etc.
225
+
182
226
  ### Specific icon pack(s)
183
227
 
184
228
  Let's say you want to use only Heroicons and Flag Icons, you can use the following gems:
data/generators/flag.rb CHANGED
@@ -36,7 +36,7 @@ VARIANT_TEMPLATE = ERB.new <<~VARIANT_TEMPLATE
36
36
  module Flag
37
37
  class <%= icon_name %><%= variant.to_s.capitalize %> < Base
38
38
  def view_template
39
- render <%= icon_name %>.new(variant: :<%= variant %>)
39
+ render <%= icon_name %>.new(variant: :<%= variant %>, **attrs)
40
40
  end
41
41
  end
42
42
  end
data/generators/hero.rb CHANGED
@@ -36,7 +36,7 @@ VARIANT_TEMPLATE = ERB.new <<~VARIANT_TEMPLATE
36
36
  module Hero
37
37
  class <%= icon_name %><%= variant.to_s.capitalize %> < Base
38
38
  def view_template
39
- render <%= icon_name %>.new(variant: :<%= variant %>)
39
+ render <%= icon_name %>.new(variant: :<%= variant %>, **attrs)
40
40
  end
41
41
  end
42
42
  end
data/generators/tabler.rb CHANGED
@@ -36,7 +36,7 @@ VARIANT_TEMPLATE = ERB.new <<~VARIANT_TEMPLATE
36
36
  module Tabler
37
37
  class <%= icon_name %><%= variant.to_s.capitalize %> < Base
38
38
  def view_template
39
- render <%= icon_name %>.new(variant: :<%= variant %>)
39
+ render <%= icon_name %>.new(variant: :<%= variant %>, **attrs)
40
40
  end
41
41
  end
42
42
  end
@@ -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
@@ -15,13 +15,13 @@ module PhlexIcons
15
15
  stroke_linecap: 'round',
16
16
  stroke_linejoin: 'round'
17
17
  ) do |s|
18
- s.path(d: 'M9 12h.01')
19
- s.path(d: 'M15 12h.01')
20
18
  s.path(d: 'M10 16c.5.3 1.2.5 2 .5s1.5-.2 2-.5')
19
+ s.path(d: 'M15 12h.01')
21
20
  s.path(
22
21
  d:
23
- 'M19 6.3a9 9 0 0 1 1.8 3.9 2 2 0 0 1 0 3.6 9 9 0 0 1-17.6 0 2 2 0 0 1 0-3.6A9 9 0 0 1 12 3c2 0 3.5 1.1 3.5 2.5s-.9 2.5-2 2.5c-.8 0-1.5-.4-1.5-1'
22
+ 'M19.38 6.813A9 9 0 0 1 20.8 10.2a2 2 0 0 1 0 3.6 9 9 0 0 1-17.6 0 2 2 0 0 1 0-3.6A9 9 0 0 1 12 3c2 0 3.5 1.1 3.5 2.5s-.9 2.5-2 2.5c-.8 0-1.5-.4-1.5-1'
24
23
  )
24
+ s.path(d: 'M9 12h.01')
25
25
  end
26
26
  end
27
27
  end
@@ -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
@@ -16,8 +16,8 @@ module PhlexIcons
16
16
  ) do |s|
17
17
  s.path(d: 'm19 3 1 1')
18
18
  s.path(d: 'm20 2-4.5 4.5')
19
- s.path(d: 'M20 8v13a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20')
20
- s.path(d: 'M4 19.5v-15A2.5 2.5 0 0 1 6.5 2H14')
19
+ s.path(d: 'M20 7.898V21a1 1 0 0 1-1 1H6.5a1 1 0 0 1 0-5H20')
20
+ s.path(d: 'M4 19.5v-15A2.5 2.5 0 0 1 6.5 2h7.844')
21
21
  s.circle(cx: '14', cy: '8', r: '2')
22
22
  end
23
23
  end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ # rubocop:disable Layout/LineLength
4
+ module PhlexIcons
5
+ module Lucide
6
+ class BowArrow < 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: 'M17 3h4v4')
19
+ s.path(
20
+ d: 'M18.575 11.082a13 13 0 0 1 1.048 9.027 1.17 1.17 0 0 1-1.914.597L14 17'
21
+ )
22
+ s.path(d: 'M7 10 3.29 6.29a1.17 1.17 0 0 1 .6-1.91 13 13 0 0 1 9.03 1.05')
23
+ s.path(
24
+ d:
25
+ 'M7 14a1.7 1.7 0 0 0-1.207.5l-2.646 2.646A.5.5 0 0 0 3.5 18H5a1 1 0 0 1 1 1v1.5a.5.5 0 0 0 .854.354L9.5 18.207A1.7 1.7 0 0 0 10 17v-2a1 1 0 0 0-1-1z'
26
+ )
27
+ s.path(d: 'M9.707 14.293 21 3')
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ # rubocop:enable Layout/LineLength
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # rubocop:disable Layout/LineLength,Metrics/AbcSize,Metrics/MethodLength
3
+ # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
4
4
  module PhlexIcons
5
5
  module Lucide
6
6
  class BrainCog < Base
@@ -15,28 +15,30 @@ module PhlexIcons
15
15
  stroke_linecap: 'round',
16
16
  stroke_linejoin: 'round'
17
17
  ) do |s|
18
+ s.path(d: 'm10.852 14.772-.383.923')
19
+ s.path(d: 'm10.852 9.228-.383-.923')
20
+ s.path(d: 'm13.148 14.772.382.924')
21
+ s.path(d: 'm13.531 8.305-.383.923')
22
+ s.path(d: 'm14.772 10.852.923-.383')
23
+ s.path(d: 'm14.772 13.148.923.383')
18
24
  s.path(
19
25
  d:
20
- 'M12 5a3 3 0 1 0-5.997.142 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588 4 4 0 0 0 7.636 2.106 3.2 3.2 0 0 0 .164-.546c.028-.13.306-.13.335 0a3.2 3.2 0 0 0 .163.546 4 4 0 0 0 7.636-2.106 4 4 0 0 0 .556-6.588 4 4 0 0 0-2.526-5.77A3 3 0 1 0 12 5'
26
+ 'M17.598 6.5A3 3 0 1 0 12 5a3 3 0 0 0-5.63-1.446 3 3 0 0 0-.368 1.571 4 4 0 0 0-2.525 5.771'
21
27
  )
22
- s.path(d: 'M17.599 6.5a3 3 0 0 0 .399-1.375')
23
- s.path(d: 'M6.003 5.125A3 3 0 0 0 6.401 6.5')
24
- s.path(d: 'M3.477 10.896a4 4 0 0 1 .585-.396')
25
- s.path(d: 'M19.938 10.5a4 4 0 0 1 .585.396')
26
- s.path(d: 'M6 18a4 4 0 0 1-1.967-.516')
27
- s.path(d: 'M19.967 17.484A4 4 0 0 1 18 18')
28
+ s.path(d: 'M17.998 5.125a4 4 0 0 1 2.525 5.771')
29
+ s.path(d: 'M19.505 10.294a4 4 0 0 1-1.5 7.706')
30
+ s.path(
31
+ d:
32
+ 'M4.032 17.483A4 4 0 0 0 11.464 20c.18-.311.892-.311 1.072 0a4 4 0 0 0 7.432-2.516'
33
+ )
34
+ s.path(d: 'M4.5 10.291A4 4 0 0 0 6 18')
35
+ s.path(d: 'M6.002 5.125a3 3 0 0 0 .4 1.375')
36
+ s.path(d: 'm9.228 10.852-.923-.383')
37
+ s.path(d: 'm9.228 13.148-.923.383')
28
38
  s.circle(cx: '12', cy: '12', r: '3')
29
- s.path(d: 'm15.7 10.4-.9.4')
30
- s.path(d: 'm9.2 13.2-.9.4')
31
- s.path(d: 'm13.6 15.7-.4-.9')
32
- s.path(d: 'm10.8 9.2-.4-.9')
33
- s.path(d: 'm15.7 13.5-.9-.4')
34
- s.path(d: 'm9.2 10.9-.9-.4')
35
- s.path(d: 'm10.5 15.7.4-.9')
36
- s.path(d: 'm13.1 9.2.4-.9')
37
39
  end
38
40
  end
39
41
  end
40
42
  end
41
43
  end
42
- # rubocop:enable Layout/LineLength,Metrics/AbcSize,Metrics/MethodLength
44
+ # rubocop:enable Metrics/AbcSize,Metrics/MethodLength
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ # rubocop:disable Layout/LineLength
4
+ module PhlexIcons
5
+ module Lucide
6
+ class BrickWallFire < 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 3v2.107')
19
+ s.path(
20
+ d:
21
+ 'M17 9c1 3 2.5 3.5 3.5 4.5A5 5 0 0 1 22 17a5 5 0 0 1-10 0c0-.3 0-.6.1-.9a2 2 0 1 0 3.3-2C13 11.5 16 9 17 9'
22
+ )
23
+ s.path(d: 'M21 8.274V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h3.938')
24
+ s.path(d: 'M3 15h5.253')
25
+ s.path(d: 'M3 9h8.228')
26
+ s.path(d: 'M8 15v6')
27
+ s.path(d: 'M8 3v6')
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ # rubocop:enable Layout/LineLength
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # rubocop:disable Layout/LineLength
4
3
  module PhlexIcons
5
4
  module Lucide
6
5
  class Brush < Base
@@ -15,14 +14,13 @@ module PhlexIcons
15
14
  stroke_linecap: 'round',
16
15
  stroke_linejoin: 'round'
17
16
  ) do |s|
18
- s.path(d: 'm9.06 11.9 8.07-8.06a2.85 2.85 0 1 1 4.03 4.03l-8.06 8.08')
17
+ s.path(d: 'm11 10 3 3')
19
18
  s.path(
20
- d:
21
- 'M7.07 14.94c-1.66 0-3 1.35-3 3.02 0 1.33-2.5 1.52-2 2.02 1.08 1.1 2.49 2.02 4 2.02 2.2 0 4-1.8 4-4.04a3.01 3.01 0 0 0-3-3.02z'
19
+ d: 'M6.5 21A3.5 3.5 0 1 0 3 17.5a2.62 2.62 0 0 1-.708 1.792A1 1 0 0 0 3 21z'
22
20
  )
21
+ s.path(d: 'M9.969 17.031 21.378 5.624a1 1 0 0 0-3.002-3.002L6.967 14.031')
23
22
  end
24
23
  end
25
24
  end
26
25
  end
27
26
  end
28
- # rubocop:enable Layout/LineLength
@@ -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,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PhlexIcons
4
+ module Lucide
5
+ class Bubbles < 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: 'M7.2 14.8a2 2 0 0 1 2 2')
18
+ s.circle(cx: '18.5', cy: '8.5', r: '3.5')
19
+ s.circle(cx: '7.5', cy: '16.5', r: '5.5')
20
+ s.circle(cx: '7.5', cy: '4.5', r: '2.5')
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -15,16 +15,16 @@ module PhlexIcons
15
15
  stroke_linecap: 'round',
16
16
  stroke_linejoin: 'round'
17
17
  ) do |s|
18
- s.path(d: 'm15.2 16.9-.9-.4')
19
- s.path(d: 'm15.2 19.1-.9.4')
18
+ s.path(d: 'm15.228 16.852-.923-.383')
19
+ s.path(d: 'm15.228 19.148-.923.383')
20
20
  s.path(d: 'M16 2v4')
21
- s.path(d: 'm16.9 15.2-.4-.9')
22
- s.path(d: 'm16.9 20.8-.4.9')
23
- s.path(d: 'm19.5 14.3-.4.9')
24
- s.path(d: 'm19.5 21.7-.4-.9')
25
- s.path(d: 'M21 10.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h6')
26
- s.path(d: 'm21.7 16.5-.9.4')
27
- s.path(d: 'm21.7 19.5-.9-.4')
21
+ s.path(d: 'm16.47 14.305.382.923')
22
+ s.path(d: 'm16.852 20.772-.383.924')
23
+ s.path(d: 'm19.148 15.228.383-.923')
24
+ s.path(d: 'm19.53 21.696-.382-.924')
25
+ s.path(d: 'm20.772 16.852.924-.383')
26
+ s.path(d: 'm20.772 19.148.924.383')
27
+ s.path(d: 'M21 11V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h6')
28
28
  s.path(d: 'M3 10h18')
29
29
  s.path(d: 'M8 2v4')
30
30
  s.circle(cx: '18', cy: '18', r: '3')
@@ -14,12 +14,12 @@ module PhlexIcons
14
14
  stroke_linecap: 'round',
15
15
  stroke_linejoin: 'round'
16
16
  ) do |s|
17
- s.path(d: 'M8 2v4')
18
- s.path(d: 'M16 2v4')
19
- s.path(d: 'M21 13V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h8')
20
- s.path(d: 'M3 10h18')
21
17
  s.path(d: 'M16 19h6')
18
+ s.path(d: 'M16 2v4')
22
19
  s.path(d: 'M19 16v6')
20
+ s.path(d: 'M21 12.598V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h8.5')
21
+ s.path(d: 'M3 10h18')
22
+ s.path(d: 'M8 2v4')
23
23
  end
24
24
  end
25
25
  end
@@ -14,14 +14,11 @@ module PhlexIcons
14
14
  stroke_linecap: 'round',
15
15
  stroke_linejoin: 'round'
16
16
  ) do |s|
17
- s.path(
18
- d: 'M15 2H9a1 1 0 0 0-1 1v2c0 .6.4 1 1 1h6c.6 0 1-.4 1-1V3c0-.6-.4-1-1-1Z'
19
- )
20
- s.path(
21
- d:
22
- 'M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2M16 4h2a2 2 0 0 1 2 2v2M11 14h10'
23
- )
24
- s.path(d: 'm17 10 4 4-4 4')
17
+ s.path(d: 'M11 14h10')
18
+ s.path(d: 'M16 4h2a2 2 0 0 1 2 2v1.344')
19
+ s.path(d: 'm17 18 4-4-4-4')
20
+ s.path(d: 'M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 1.793-1.113')
21
+ s.rect(x: '8', y: '2', width: '8', height: '4', rx: '1')
25
22
  end
26
23
  end
27
24
  end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PhlexIcons
4
+ module Lucide
5
+ class ClockPlus < 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: 'M12 6v6l3.644 1.822')
18
+ s.path(d: 'M16 19h6')
19
+ s.path(d: 'M19 16v6')
20
+ s.path(d: 'M21.92 13.267a10 10 0 1 0-8.653 8.653')
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -15,16 +15,18 @@ module PhlexIcons
15
15
  stroke_linecap: 'round',
16
16
  stroke_linejoin: 'round'
17
17
  ) do |s|
18
- s.circle(cx: '12', cy: '17', r: '3')
19
- s.path(d: 'M4.2 15.1A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.2')
20
- s.path(d: 'm15.7 18.4-.9-.3')
21
- s.path(d: 'm9.2 15.9-.9-.3')
22
- s.path(d: 'm10.6 20.7.3-.9')
23
- s.path(d: 'm13.1 14.2.3-.9')
24
- s.path(d: 'm13.6 20.7-.4-1')
25
- s.path(d: 'm10.8 14.3-.4-1')
26
- s.path(d: 'm8.3 18.6 1-.4')
27
- s.path(d: 'm14.7 15.8 1-.4')
18
+ s.path(d: 'm10.852 19.772-.383.924')
19
+ s.path(d: 'm13.148 14.228.383-.923')
20
+ s.path(d: 'M13.148 19.772a3 3 0 1 0-2.296-5.544l-.383-.923')
21
+ s.path(d: 'm13.53 20.696-.382-.924a3 3 0 1 1-2.296-5.544')
22
+ s.path(d: 'm14.772 15.852.923-.383')
23
+ s.path(d: 'm14.772 18.148.923.383')
24
+ s.path(
25
+ d:
26
+ 'M4.2 15.1a7 7 0 1 1 9.93-9.858A7 7 0 0 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.2'
27
+ )
28
+ s.path(d: 'm9.228 15.852-.923-.383')
29
+ s.path(d: 'm9.228 18.148-.923.383')
28
30
  end
29
31
  end
30
32
  end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ # rubocop:disable Metrics/MethodLength
4
+ module PhlexIcons
5
+ module Lucide
6
+ class Columns3Cog < 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: 'M10.5 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v5.5')
19
+ s.path(d: 'm14.3 19.6 1-.4')
20
+ s.path(d: 'M15 3v7.5')
21
+ s.path(d: 'm15.2 16.9-.9-.3')
22
+ s.path(d: 'm16.6 21.7.3-.9')
23
+ s.path(d: 'm16.8 15.3-.4-1')
24
+ s.path(d: 'm19.1 15.2.3-.9')
25
+ s.path(d: 'm19.6 21.7-.4-1')
26
+ s.path(d: 'm20.7 16.8 1-.4')
27
+ s.path(d: 'm21.7 19.4-.9-.3')
28
+ s.path(d: 'M9 3v18')
29
+ s.circle(cx: '18', cy: '18', r: '3')
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ # rubocop:enable Metrics/MethodLength