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.
- checksums.yaml +4 -4
- data/.rubocop.yml +5 -1
- data/README.md +44 -0
- data/generators/flag.rb +1 -1
- data/generators/hero.rb +1 -1
- data/generators/tabler.rb +1 -1
- data/lib/phlex-icons/configuration.rb +24 -1
- data/lib/phlex-icons/icon.rb +31 -0
- data/lib/phlex-icons/lucide/air_vent.rb +2 -2
- data/lib/phlex-icons/lucide/baby.rb +3 -3
- data/lib/phlex-icons/lucide/bell_electric.rb +4 -4
- data/lib/phlex-icons/lucide/book_key.rb +2 -2
- data/lib/phlex-icons/lucide/bow_arrow.rb +33 -0
- data/lib/phlex-icons/lucide/brain_cog.rb +19 -17
- data/lib/phlex-icons/lucide/brick_wall_fire.rb +33 -0
- data/lib/phlex-icons/lucide/brush.rb +3 -5
- data/lib/phlex-icons/lucide/brush_cleaning.rb +30 -0
- data/lib/phlex-icons/lucide/bubbles.rb +25 -0
- data/lib/phlex-icons/lucide/calendar_cog.rb +9 -9
- data/lib/phlex-icons/lucide/calendar_plus.rb +4 -4
- data/lib/phlex-icons/lucide/clipboard_paste.rb +5 -8
- data/lib/phlex-icons/lucide/clock_plus.rb +25 -0
- data/lib/phlex-icons/lucide/cloud_cog.rb +12 -10
- data/lib/phlex-icons/lucide/columns_3_cog.rb +35 -0
- data/lib/phlex-icons/lucide/cpu.rb +14 -10
- data/lib/phlex-icons/lucide/decimals_arrow_left.rb +25 -0
- data/lib/phlex-icons/lucide/decimals_arrow_right.rb +26 -0
- data/lib/phlex-icons/lucide/door_closed.rb +1 -1
- data/lib/phlex-icons/lucide/door_closed_locked.rb +26 -0
- data/lib/phlex-icons/lucide/door_open.rb +5 -5
- data/lib/phlex-icons/lucide/dumbbell.rb +5 -5
- data/lib/phlex-icons/lucide/expand.rb +4 -4
- data/lib/phlex-icons/lucide/file_badge_2.rb +7 -3
- data/lib/phlex-icons/lucide/file_cog.rb +8 -8
- data/lib/phlex-icons/lucide/folder_cog.rb +10 -10
- data/lib/phlex-icons/lucide/guitar.rb +1 -2
- data/lib/phlex-icons/lucide/hamburger.rb +28 -0
- data/lib/phlex-icons/lucide/heart_minus.rb +28 -0
- data/lib/phlex-icons/lucide/heart_plus.rb +29 -0
- data/lib/phlex-icons/lucide/lamp.rb +7 -2
- data/lib/phlex-icons/lucide/lamp_ceiling.rb +5 -2
- data/lib/phlex-icons/lucide/lamp_desk.rb +11 -4
- data/lib/phlex-icons/lucide/lamp_floor.rb +5 -2
- data/lib/phlex-icons/lucide/lamp_wall_down.rb +8 -3
- data/lib/phlex-icons/lucide/lamp_wall_up.rb +8 -3
- data/lib/phlex-icons/lucide/laptop.rb +2 -1
- data/lib/phlex-icons/lucide/layers_2.rb +2 -2
- data/lib/phlex-icons/lucide/locate_off.rb +7 -13
- data/lib/phlex-icons/lucide/location_edit.rb +29 -0
- data/lib/phlex-icons/lucide/mail.rb +2 -2
- data/lib/phlex-icons/lucide/menu.rb +3 -3
- data/lib/phlex-icons/lucide/monitor_cog.rb +8 -8
- data/lib/phlex-icons/lucide/non_binary.rb +2 -2
- data/lib/phlex-icons/lucide/orbit.rb +2 -2
- data/lib/phlex-icons/lucide/package_2.rb +7 -2
- data/lib/phlex-icons/lucide/palette.rb +5 -5
- data/lib/phlex-icons/lucide/panda.rb +32 -0
- data/lib/phlex-icons/lucide/phone.rb +1 -1
- data/lib/phlex-icons/lucide/phone_call.rb +3 -3
- data/lib/phlex-icons/lucide/phone_forwarded.rb +3 -3
- data/lib/phlex-icons/lucide/phone_incoming.rb +3 -3
- data/lib/phlex-icons/lucide/phone_missed.rb +3 -3
- data/lib/phlex-icons/lucide/phone_off.rb +6 -2
- data/lib/phlex-icons/lucide/phone_outgoing.rb +3 -3
- data/lib/phlex-icons/lucide/piggy_bank.rb +3 -3
- data/lib/phlex-icons/lucide/pipette.rb +8 -3
- data/lib/phlex-icons/lucide/rectangle_goggles.rb +27 -0
- data/lib/phlex-icons/lucide/rotate_ccw_key.rb +26 -0
- data/lib/phlex-icons/lucide/ruler_dimension_line.rb +28 -0
- data/lib/phlex-icons/lucide/search.rb +1 -1
- data/lib/phlex-icons/lucide/server_cog.rb +9 -10
- data/lib/phlex-icons/lucide/shredder.rb +28 -0
- data/lib/phlex-icons/lucide/soap_dispenser_droplet.rb +33 -0
- data/lib/phlex-icons/lucide/squares_exclude.rb +29 -0
- data/lib/phlex-icons/lucide/squares_intersect.rb +36 -0
- data/lib/phlex-icons/lucide/squares_subtract.rb +30 -0
- data/lib/phlex-icons/lucide/squares_unite.rb +27 -0
- data/lib/phlex-icons/lucide/text_cursor_input.rb +4 -4
- data/lib/phlex-icons/lucide/touchpad_off.rb +4 -4
- data/lib/phlex-icons/lucide/traffic_cone.rb +4 -7
- data/lib/phlex-icons/lucide/truck_electric.rb +33 -0
- data/lib/phlex-icons/lucide/user_cog.rb +9 -9
- data/lib/phlex-icons/lucide/user_lock.rb +25 -0
- data/lib/phlex-icons/lucide/user_round_cog.rb +8 -8
- data/lib/phlex-icons/lucide/users.rb +2 -2
- data/lib/phlex-icons/lucide/wifi_pen.rb +30 -0
- data/lib/phlex-icons/lucide.rb +27 -1
- data/lib/phlex-icons/name_parser.rb +117 -0
- data/lib/phlex-icons/railtie.rb +17 -0
- data/lib/phlex-icons/version.rb +1 -1
- data/lib/phlex-icons-lucide.rb +3 -0
- metadata +31 -2
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module PhlexIcons
|
4
|
+
module Lucide
|
5
|
+
class TruckElectric < 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: 'M14 19V7a2 2 0 0 0-2-2H9')
|
18
|
+
s.path(d: 'M15 19H9')
|
19
|
+
s.path(
|
20
|
+
d:
|
21
|
+
'M19 19h2a1 1 0 0 0 1-1v-3.65a1 1 0 0 0-.22-.62L18.3 9.38a1 1 0 0 0-.78-.38H14'
|
22
|
+
)
|
23
|
+
s.path(d: 'M2 13v5a1 1 0 0 0 1 1h2')
|
24
|
+
s.path(
|
25
|
+
d: 'M4 3 2.15 5.15a.495.495 0 0 0 .35.86h2.15a.47.47 0 0 1 .35.86L3 9.02'
|
26
|
+
)
|
27
|
+
s.circle(cx: '17', cy: '19', r: '2')
|
28
|
+
s.circle(cx: '7', cy: '19', r: '2')
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -15,17 +15,17 @@ module PhlexIcons
|
|
15
15
|
stroke_linecap: 'round',
|
16
16
|
stroke_linejoin: 'round'
|
17
17
|
) do |s|
|
18
|
+
s.path(d: 'M10 15H6a4 4 0 0 0-4 4v2')
|
19
|
+
s.path(d: 'm14.305 16.53.923-.382')
|
20
|
+
s.path(d: 'm15.228 13.852-.923-.383')
|
21
|
+
s.path(d: 'm16.852 12.228-.383-.923')
|
22
|
+
s.path(d: 'm16.852 17.772-.383.924')
|
23
|
+
s.path(d: 'm19.148 12.228.383-.923')
|
24
|
+
s.path(d: 'm19.53 18.696-.382-.924')
|
25
|
+
s.path(d: 'm20.772 13.852.924-.383')
|
26
|
+
s.path(d: 'm20.772 16.148.924.383')
|
18
27
|
s.circle(cx: '18', cy: '15', r: '3')
|
19
28
|
s.circle(cx: '9', cy: '7', r: '4')
|
20
|
-
s.path(d: 'M10 15H6a4 4 0 0 0-4 4v2')
|
21
|
-
s.path(d: 'm21.7 16.4-.9-.3')
|
22
|
-
s.path(d: 'm15.2 13.9-.9-.3')
|
23
|
-
s.path(d: 'm16.6 18.7.3-.9')
|
24
|
-
s.path(d: 'm19.1 12.2.3-.9')
|
25
|
-
s.path(d: 'm19.6 18.7-.4-1')
|
26
|
-
s.path(d: 'm16.8 12.3-.4-1')
|
27
|
-
s.path(d: 'm14.3 16.6 1-.4')
|
28
|
-
s.path(d: 'm20.7 13.8 1-.4')
|
29
29
|
end
|
30
30
|
end
|
31
31
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module PhlexIcons
|
4
|
+
module Lucide
|
5
|
+
class UserLock < 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.circle(cx: '10', cy: '7', r: '4')
|
18
|
+
s.path(d: 'M10.3 15H7a4 4 0 0 0-4 4v2')
|
19
|
+
s.path(d: 'M15 15.5V14a2 2 0 0 1 4 0v1.5')
|
20
|
+
s.rect(width: '8', height: '5', x: '13', y: '16', rx: '.899')
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -15,17 +15,17 @@ module PhlexIcons
|
|
15
15
|
stroke_linecap: 'round',
|
16
16
|
stroke_linejoin: 'round'
|
17
17
|
) do |s|
|
18
|
+
s.path(d: 'm14.305 19.53.923-.382')
|
19
|
+
s.path(d: 'm15.228 16.852-.923-.383')
|
20
|
+
s.path(d: 'm16.852 15.228-.383-.923')
|
21
|
+
s.path(d: 'm16.852 20.772-.383.924')
|
22
|
+
s.path(d: 'm19.148 15.228.383-.923')
|
23
|
+
s.path(d: 'm19.53 21.696-.382-.924')
|
18
24
|
s.path(d: 'M2 21a8 8 0 0 1 10.434-7.62')
|
25
|
+
s.path(d: 'm20.772 16.852.924-.383')
|
26
|
+
s.path(d: 'm20.772 19.148.924.383')
|
19
27
|
s.circle(cx: '10', cy: '8', r: '5')
|
20
28
|
s.circle(cx: '18', cy: '18', r: '3')
|
21
|
-
s.path(d: 'm19.5 14.3-.4.9')
|
22
|
-
s.path(d: 'm16.9 20.8-.4.9')
|
23
|
-
s.path(d: 'm21.7 19.5-.9-.4')
|
24
|
-
s.path(d: 'm15.2 16.9-.9-.4')
|
25
|
-
s.path(d: 'm21.7 16.5-.9.4')
|
26
|
-
s.path(d: 'm15.2 19.1-.9.4')
|
27
|
-
s.path(d: 'm19.5 21.7-.4-.9')
|
28
|
-
s.path(d: 'm16.9 15.2-.4-.9')
|
29
29
|
end
|
30
30
|
end
|
31
31
|
end
|
@@ -15,9 +15,9 @@ module PhlexIcons
|
|
15
15
|
stroke_linejoin: 'round'
|
16
16
|
) do |s|
|
17
17
|
s.path(d: 'M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2')
|
18
|
-
s.
|
18
|
+
s.path(d: 'M16 3.128a4 4 0 0 1 0 7.744')
|
19
19
|
s.path(d: 'M22 21v-2a4 4 0 0 0-3-3.87')
|
20
|
-
s.
|
20
|
+
s.circle(cx: '9', cy: '7', r: '4')
|
21
21
|
end
|
22
22
|
end
|
23
23
|
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# rubocop:disable Layout/LineLength
|
4
|
+
module PhlexIcons
|
5
|
+
module Lucide
|
6
|
+
class WifiPen < 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: 'M2 8.82a15 15 0 0 1 20 0')
|
19
|
+
s.path(
|
20
|
+
d:
|
21
|
+
'M21.378 16.626a1 1 0 0 0-3.004-3.004l-4.01 4.012a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506z'
|
22
|
+
)
|
23
|
+
s.path(d: 'M5 12.859a10 10 0 0 1 10.5-2.222')
|
24
|
+
s.path(d: 'M8.5 16.429a5 5 0 0 1 3-1.406')
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
# rubocop:enable Layout/LineLength
|
data/lib/phlex-icons/lucide.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
module PhlexIcons
|
4
4
|
module Lucide # rubocop:disable Metrics/ModuleLength
|
5
|
-
VERSION = '0.
|
5
|
+
VERSION = '0.508.0'
|
6
6
|
VARIANTS = nil
|
7
7
|
|
8
8
|
extend Phlex::Kit
|
@@ -226,6 +226,7 @@ module PhlexIcons
|
|
226
226
|
autoload :Bot, 'phlex-icons/lucide/bot'
|
227
227
|
autoload :BotMessageSquare, 'phlex-icons/lucide/bot_message_square'
|
228
228
|
autoload :BotOff, 'phlex-icons/lucide/bot_off'
|
229
|
+
autoload :BowArrow, 'phlex-icons/lucide/bow_arrow'
|
229
230
|
autoload :Box, 'phlex-icons/lucide/box'
|
230
231
|
autoload :Boxes, 'phlex-icons/lucide/boxes'
|
231
232
|
autoload :Braces, 'phlex-icons/lucide/braces'
|
@@ -234,12 +235,15 @@ module PhlexIcons
|
|
234
235
|
autoload :BrainCircuit, 'phlex-icons/lucide/brain_circuit'
|
235
236
|
autoload :BrainCog, 'phlex-icons/lucide/brain_cog'
|
236
237
|
autoload :BrickWall, 'phlex-icons/lucide/brick_wall'
|
238
|
+
autoload :BrickWallFire, 'phlex-icons/lucide/brick_wall_fire'
|
237
239
|
autoload :Briefcase, 'phlex-icons/lucide/briefcase'
|
238
240
|
autoload :BriefcaseBusiness, 'phlex-icons/lucide/briefcase_business'
|
239
241
|
autoload :BriefcaseConveyorBelt, 'phlex-icons/lucide/briefcase_conveyor_belt'
|
240
242
|
autoload :BriefcaseMedical, 'phlex-icons/lucide/briefcase_medical'
|
241
243
|
autoload :BringToFront, 'phlex-icons/lucide/bring_to_front'
|
242
244
|
autoload :Brush, 'phlex-icons/lucide/brush'
|
245
|
+
autoload :BrushCleaning, 'phlex-icons/lucide/brush_cleaning'
|
246
|
+
autoload :Bubbles, 'phlex-icons/lucide/bubbles'
|
243
247
|
autoload :Bug, 'phlex-icons/lucide/bug'
|
244
248
|
autoload :BugOff, 'phlex-icons/lucide/bug_off'
|
245
249
|
autoload :BugPlay, 'phlex-icons/lucide/bug_play'
|
@@ -414,6 +418,7 @@ module PhlexIcons
|
|
414
418
|
autoload :ClockArrowDown, 'phlex-icons/lucide/clock_arrow_down'
|
415
419
|
autoload :ClockArrowUp, 'phlex-icons/lucide/clock_arrow_up'
|
416
420
|
autoload :ClockFading, 'phlex-icons/lucide/clock_fading'
|
421
|
+
autoload :ClockPlus, 'phlex-icons/lucide/clock_plus'
|
417
422
|
autoload :Cloud, 'phlex-icons/lucide/cloud'
|
418
423
|
autoload :CloudAlert, 'phlex-icons/lucide/cloud_alert'
|
419
424
|
autoload :CloudCog, 'phlex-icons/lucide/cloud_cog'
|
@@ -443,6 +448,7 @@ module PhlexIcons
|
|
443
448
|
autoload :Coins, 'phlex-icons/lucide/coins'
|
444
449
|
autoload :Columns2, 'phlex-icons/lucide/columns_2'
|
445
450
|
autoload :Columns3, 'phlex-icons/lucide/columns_3'
|
451
|
+
autoload :Columns3Cog, 'phlex-icons/lucide/columns_3_cog'
|
446
452
|
autoload :Columns4, 'phlex-icons/lucide/columns_4'
|
447
453
|
autoload :Combine, 'phlex-icons/lucide/combine'
|
448
454
|
autoload :Command, 'phlex-icons/lucide/command'
|
@@ -490,6 +496,8 @@ module PhlexIcons
|
|
490
496
|
autoload :Database, 'phlex-icons/lucide/database'
|
491
497
|
autoload :DatabaseBackup, 'phlex-icons/lucide/database_backup'
|
492
498
|
autoload :DatabaseZap, 'phlex-icons/lucide/database_zap'
|
499
|
+
autoload :DecimalsArrowLeft, 'phlex-icons/lucide/decimals_arrow_left'
|
500
|
+
autoload :DecimalsArrowRight, 'phlex-icons/lucide/decimals_arrow_right'
|
493
501
|
autoload :Delete, 'phlex-icons/lucide/delete'
|
494
502
|
autoload :Dessert, 'phlex-icons/lucide/dessert'
|
495
503
|
autoload :Diameter, 'phlex-icons/lucide/diameter'
|
@@ -517,6 +525,7 @@ module PhlexIcons
|
|
517
525
|
autoload :DollarSign, 'phlex-icons/lucide/dollar_sign'
|
518
526
|
autoload :Donut, 'phlex-icons/lucide/donut'
|
519
527
|
autoload :DoorClosed, 'phlex-icons/lucide/door_closed'
|
528
|
+
autoload :DoorClosedLocked, 'phlex-icons/lucide/door_closed_locked'
|
520
529
|
autoload :DoorOpen, 'phlex-icons/lucide/door_open'
|
521
530
|
autoload :Dot, 'phlex-icons/lucide/dot'
|
522
531
|
autoload :Download, 'phlex-icons/lucide/download'
|
@@ -735,6 +744,7 @@ module PhlexIcons
|
|
735
744
|
autoload :Group, 'phlex-icons/lucide/group'
|
736
745
|
autoload :Guitar, 'phlex-icons/lucide/guitar'
|
737
746
|
autoload :Ham, 'phlex-icons/lucide/ham'
|
747
|
+
autoload :Hamburger, 'phlex-icons/lucide/hamburger'
|
738
748
|
autoload :Hammer, 'phlex-icons/lucide/hammer'
|
739
749
|
autoload :Hand, 'phlex-icons/lucide/hand'
|
740
750
|
autoload :HandCoins, 'phlex-icons/lucide/hand_coins'
|
@@ -763,7 +773,9 @@ module PhlexIcons
|
|
763
773
|
autoload :Heart, 'phlex-icons/lucide/heart'
|
764
774
|
autoload :HeartCrack, 'phlex-icons/lucide/heart_crack'
|
765
775
|
autoload :HeartHandshake, 'phlex-icons/lucide/heart_handshake'
|
776
|
+
autoload :HeartMinus, 'phlex-icons/lucide/heart_minus'
|
766
777
|
autoload :HeartOff, 'phlex-icons/lucide/heart_off'
|
778
|
+
autoload :HeartPlus, 'phlex-icons/lucide/heart_plus'
|
767
779
|
autoload :HeartPulse, 'phlex-icons/lucide/heart_pulse'
|
768
780
|
autoload :Heater, 'phlex-icons/lucide/heater'
|
769
781
|
autoload :Hexagon, 'phlex-icons/lucide/hexagon'
|
@@ -871,6 +883,7 @@ module PhlexIcons
|
|
871
883
|
autoload :Locate, 'phlex-icons/lucide/locate'
|
872
884
|
autoload :LocateFixed, 'phlex-icons/lucide/locate_fixed'
|
873
885
|
autoload :LocateOff, 'phlex-icons/lucide/locate_off'
|
886
|
+
autoload :LocationEdit, 'phlex-icons/lucide/location_edit'
|
874
887
|
autoload :Lock, 'phlex-icons/lucide/lock'
|
875
888
|
autoload :LockKeyhole, 'phlex-icons/lucide/lock_keyhole'
|
876
889
|
autoload :LockKeyholeOpen, 'phlex-icons/lucide/lock_keyhole_open'
|
@@ -1037,6 +1050,7 @@ module PhlexIcons
|
|
1037
1050
|
autoload :Paintbrush, 'phlex-icons/lucide/paintbrush'
|
1038
1051
|
autoload :PaintbrushVertical, 'phlex-icons/lucide/paintbrush_vertical'
|
1039
1052
|
autoload :Palette, 'phlex-icons/lucide/palette'
|
1053
|
+
autoload :Panda, 'phlex-icons/lucide/panda'
|
1040
1054
|
autoload :PanelBottom, 'phlex-icons/lucide/panel_bottom'
|
1041
1055
|
autoload :PanelBottomClose, 'phlex-icons/lucide/panel_bottom_close'
|
1042
1056
|
autoload :PanelBottomDashed, 'phlex-icons/lucide/panel_bottom_dashed'
|
@@ -1146,6 +1160,7 @@ module PhlexIcons
|
|
1146
1160
|
autoload :ReceiptSwissFranc, 'phlex-icons/lucide/receipt_swiss_franc'
|
1147
1161
|
autoload :ReceiptText, 'phlex-icons/lucide/receipt_text'
|
1148
1162
|
autoload :RectangleEllipsis, 'phlex-icons/lucide/rectangle_ellipsis'
|
1163
|
+
autoload :RectangleGoggles, 'phlex-icons/lucide/rectangle_goggles'
|
1149
1164
|
autoload :RectangleHorizontal, 'phlex-icons/lucide/rectangle_horizontal'
|
1150
1165
|
autoload :RectangleVertical, 'phlex-icons/lucide/rectangle_vertical'
|
1151
1166
|
autoload :Recycle, 'phlex-icons/lucide/recycle'
|
@@ -1173,6 +1188,7 @@ module PhlexIcons
|
|
1173
1188
|
autoload :RollerCoaster, 'phlex-icons/lucide/roller_coaster'
|
1174
1189
|
autoload :Rotate3d, 'phlex-icons/lucide/rotate_3d'
|
1175
1190
|
autoload :RotateCcw, 'phlex-icons/lucide/rotate_ccw'
|
1191
|
+
autoload :RotateCcwKey, 'phlex-icons/lucide/rotate_ccw_key'
|
1176
1192
|
autoload :RotateCcwSquare, 'phlex-icons/lucide/rotate_ccw_square'
|
1177
1193
|
autoload :RotateCw, 'phlex-icons/lucide/rotate_cw'
|
1178
1194
|
autoload :RotateCwSquare, 'phlex-icons/lucide/rotate_cw_square'
|
@@ -1184,6 +1200,7 @@ module PhlexIcons
|
|
1184
1200
|
autoload :Rows4, 'phlex-icons/lucide/rows_4'
|
1185
1201
|
autoload :Rss, 'phlex-icons/lucide/rss'
|
1186
1202
|
autoload :Ruler, 'phlex-icons/lucide/ruler'
|
1203
|
+
autoload :RulerDimensionLine, 'phlex-icons/lucide/ruler_dimension_line'
|
1187
1204
|
autoload :RussianRuble, 'phlex-icons/lucide/russian_ruble'
|
1188
1205
|
autoload :Sailboat, 'phlex-icons/lucide/sailboat'
|
1189
1206
|
autoload :Salad, 'phlex-icons/lucide/salad'
|
@@ -1255,6 +1272,7 @@ module PhlexIcons
|
|
1255
1272
|
autoload :ShoppingCart, 'phlex-icons/lucide/shopping_cart'
|
1256
1273
|
autoload :Shovel, 'phlex-icons/lucide/shovel'
|
1257
1274
|
autoload :ShowerHead, 'phlex-icons/lucide/shower_head'
|
1275
|
+
autoload :Shredder, 'phlex-icons/lucide/shredder'
|
1258
1276
|
autoload :Shrimp, 'phlex-icons/lucide/shrimp'
|
1259
1277
|
autoload :Shrink, 'phlex-icons/lucide/shrink'
|
1260
1278
|
autoload :Shrub, 'phlex-icons/lucide/shrub'
|
@@ -1284,6 +1302,7 @@ module PhlexIcons
|
|
1284
1302
|
autoload :SmilePlus, 'phlex-icons/lucide/smile_plus'
|
1285
1303
|
autoload :Snail, 'phlex-icons/lucide/snail'
|
1286
1304
|
autoload :Snowflake, 'phlex-icons/lucide/snowflake'
|
1305
|
+
autoload :SoapDispenserDroplet, 'phlex-icons/lucide/soap_dispenser_droplet'
|
1287
1306
|
autoload :Sofa, 'phlex-icons/lucide/sofa'
|
1288
1307
|
autoload :Soup, 'phlex-icons/lucide/soup'
|
1289
1308
|
autoload :Space, 'phlex-icons/lucide/space'
|
@@ -1360,6 +1379,10 @@ module PhlexIcons
|
|
1360
1379
|
autoload :SquareUser, 'phlex-icons/lucide/square_user'
|
1361
1380
|
autoload :SquareUserRound, 'phlex-icons/lucide/square_user_round'
|
1362
1381
|
autoload :SquareX, 'phlex-icons/lucide/square_x'
|
1382
|
+
autoload :SquaresExclude, 'phlex-icons/lucide/squares_exclude'
|
1383
|
+
autoload :SquaresIntersect, 'phlex-icons/lucide/squares_intersect'
|
1384
|
+
autoload :SquaresSubtract, 'phlex-icons/lucide/squares_subtract'
|
1385
|
+
autoload :SquaresUnite, 'phlex-icons/lucide/squares_unite'
|
1363
1386
|
autoload :Squircle, 'phlex-icons/lucide/squircle'
|
1364
1387
|
autoload :Squirrel, 'phlex-icons/lucide/squirrel'
|
1365
1388
|
autoload :Stamp, 'phlex-icons/lucide/stamp'
|
@@ -1473,6 +1496,7 @@ module PhlexIcons
|
|
1473
1496
|
autoload :TriangleRight, 'phlex-icons/lucide/triangle_right'
|
1474
1497
|
autoload :Trophy, 'phlex-icons/lucide/trophy'
|
1475
1498
|
autoload :Truck, 'phlex-icons/lucide/truck'
|
1499
|
+
autoload :TruckElectric, 'phlex-icons/lucide/truck_electric'
|
1476
1500
|
autoload :Turtle, 'phlex-icons/lucide/turtle'
|
1477
1501
|
autoload :Tv, 'phlex-icons/lucide/tv'
|
1478
1502
|
autoload :TvMinimal, 'phlex-icons/lucide/tv_minimal'
|
@@ -1499,6 +1523,7 @@ module PhlexIcons
|
|
1499
1523
|
autoload :User, 'phlex-icons/lucide/user'
|
1500
1524
|
autoload :UserCheck, 'phlex-icons/lucide/user_check'
|
1501
1525
|
autoload :UserCog, 'phlex-icons/lucide/user_cog'
|
1526
|
+
autoload :UserLock, 'phlex-icons/lucide/user_lock'
|
1502
1527
|
autoload :UserMinus, 'phlex-icons/lucide/user_minus'
|
1503
1528
|
autoload :UserPen, 'phlex-icons/lucide/user_pen'
|
1504
1529
|
autoload :UserPlus, 'phlex-icons/lucide/user_plus'
|
@@ -1560,6 +1585,7 @@ module PhlexIcons
|
|
1560
1585
|
autoload :WifiHigh, 'phlex-icons/lucide/wifi_high'
|
1561
1586
|
autoload :WifiLow, 'phlex-icons/lucide/wifi_low'
|
1562
1587
|
autoload :WifiOff, 'phlex-icons/lucide/wifi_off'
|
1588
|
+
autoload :WifiPen, 'phlex-icons/lucide/wifi_pen'
|
1563
1589
|
autoload :WifiZero, 'phlex-icons/lucide/wifi_zero'
|
1564
1590
|
autoload :Wind, 'phlex-icons/lucide/wind'
|
1565
1591
|
autoload :WindArrowDown, 'phlex-icons/lucide/wind_arrow_down'
|
@@ -0,0 +1,117 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module PhlexIcons
|
4
|
+
class NameParser
|
5
|
+
attr_reader :pack_name, :icon_name, :variant_name, :identifier, :klass
|
6
|
+
|
7
|
+
# Initializes the parser with the full icon identifier string (e.g., "hero/arrow-right:solid").
|
8
|
+
# Parses the string into pack, icon, and variant components.
|
9
|
+
# Determines and validates the corresponding icon component class.
|
10
|
+
# @param identifier [String] The full icon identifier.
|
11
|
+
# @raise [ArgumentError] If the name format is invalid or default pack is missing.
|
12
|
+
# @raise [NameError] If the corresponding icon class cannot be found.
|
13
|
+
def initialize(identifier)
|
14
|
+
@identifier = identifier.to_s
|
15
|
+
@pack_name, @icon_name, @variant_name = parse(@identifier)
|
16
|
+
@klass = find_icon_class(@pack_name, @icon_name)
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
# Performs the core parsing logic.
|
22
|
+
# @param identifier [String] The full icon identifier.
|
23
|
+
# @return [Array<String, String, Symbol, nil>] An array containing [pack_name, icon_name, variant_name].
|
24
|
+
def parse(identifier)
|
25
|
+
name_part, variant = identifier.split(':', 2)
|
26
|
+
|
27
|
+
# Check if the part before ':' (or the whole string if no ':') is empty
|
28
|
+
if name_part.nil? || name_part.strip.empty?
|
29
|
+
raise ArgumentError,
|
30
|
+
"Invalid icon name format. Could not determine pack or icon name from '#{identifier}'."
|
31
|
+
end
|
32
|
+
|
33
|
+
parsed_variant = variant&.empty? ? nil : variant&.to_sym
|
34
|
+
pack, icon = parse_pack_and_icon(name_part)
|
35
|
+
|
36
|
+
validate_identifier_parts(pack, icon, identifier)
|
37
|
+
|
38
|
+
[pack, icon, parsed_variant]
|
39
|
+
end
|
40
|
+
|
41
|
+
# Extracts the pack and icon names from the part before the variant separator (':').
|
42
|
+
# @param name_part [String] The part of the name string before ':'.
|
43
|
+
# @return [Array<String, String>] An array containing [pack_name, icon_name].
|
44
|
+
def parse_pack_and_icon(name_part)
|
45
|
+
if name_part.include?('/')
|
46
|
+
# If split results in empty parts, they will be caught by validate_identifier_parts later
|
47
|
+
name_part.split('/', 2)
|
48
|
+
else
|
49
|
+
# If name_part is just the icon, it cannot be empty (checked in `parse`)
|
50
|
+
[get_default_pack_name_or_raise(name_part), name_part]
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
# Retrieves the configured default pack name or raises an error if not set.
|
55
|
+
# @param icon_name_part [String] The icon name used when the pack prefix is missing (for error message).
|
56
|
+
# @return [String] The default pack name.
|
57
|
+
# @raise [ArgumentError] If PhlexIcons.configuration.default_pack is not configured.
|
58
|
+
def get_default_pack_name_or_raise(icon_name_part)
|
59
|
+
# Assumes PhlexIcons.configuration is available.
|
60
|
+
# Consider requiring 'phlex_icons/configuration' explicitly if needed outside Rails context.
|
61
|
+
default_pack_name = defined?(PhlexIcons.configuration) ? PhlexIcons.configuration&.default_pack&.to_s : nil
|
62
|
+
unless default_pack_name && !default_pack_name.empty?
|
63
|
+
raise ArgumentError,
|
64
|
+
"Icon name '#{icon_name_part}' is missing the pack name prefix (e.g., 'hero/'), " \
|
65
|
+
'and no `default_pack` is configured in PhlexIcons.'
|
66
|
+
end
|
67
|
+
default_pack_name
|
68
|
+
end
|
69
|
+
|
70
|
+
# Validates that both pack and icon name parts were successfully extracted.
|
71
|
+
# @param pack [String, nil] The extracted pack name.
|
72
|
+
# @param icon [String, nil] The extracted icon name.
|
73
|
+
# @param identifier [String] The original full identifier (for error message).
|
74
|
+
# @raise [ArgumentError] If either pack or icon is missing or empty.
|
75
|
+
def validate_identifier_parts(pack, icon, identifier)
|
76
|
+
return if pack && !pack.empty? && icon && !icon.empty?
|
77
|
+
|
78
|
+
raise ArgumentError,
|
79
|
+
"Invalid icon name format. Could not determine pack or icon name from '#{identifier}'."
|
80
|
+
end
|
81
|
+
|
82
|
+
# Finds the PhlexIcon component class based on pack and icon names.
|
83
|
+
# @param pack_name [String] The kebab-case pack name (e.g., "hero").
|
84
|
+
# @param icon_name [String] The kebab-case icon name (e.g., "arrow-right").
|
85
|
+
# @return [Class] The icon component class.
|
86
|
+
# @raise [NameError] If the corresponding icon class cannot be found.
|
87
|
+
def find_icon_class(pack_name, icon_name)
|
88
|
+
class_name = build_icon_class_name(pack_name, icon_name)
|
89
|
+
find_and_validate_icon_class(class_name, pack_name, icon_name)
|
90
|
+
end
|
91
|
+
|
92
|
+
# Constructs the full Ruby class name for an icon component.
|
93
|
+
# @param pack_name [String] The kebab-case pack name (e.g., "hero").
|
94
|
+
# @param icon_name [String] The kebab-case icon name (e.g., "arrow-right").
|
95
|
+
# @return [String] The CamelCase class name (e.g., "PhlexIcons::Hero::ArrowRight").
|
96
|
+
def build_icon_class_name(pack_name, icon_name)
|
97
|
+
pack_module_name = pack_name.split('-').map(&:capitalize).join
|
98
|
+
icon_class_name = icon_name.split('-').map(&:capitalize).join
|
99
|
+
"PhlexIcons::#{pack_module_name}::#{icon_class_name}"
|
100
|
+
end
|
101
|
+
|
102
|
+
# Attempts to find the icon class by its name and validates its existence.
|
103
|
+
# @param class_name [String] The full class name to find.
|
104
|
+
# @param pack_name [String] Original pack name (for error message).
|
105
|
+
# @param icon_name [String] Original icon name (for error message).
|
106
|
+
# @return [Class] The found icon component class.
|
107
|
+
# @raise [NameError] If the class cannot be found.
|
108
|
+
def find_and_validate_icon_class(class_name, pack_name, icon_name)
|
109
|
+
Object.const_get(class_name)
|
110
|
+
rescue NameError
|
111
|
+
raise NameError,
|
112
|
+
"Could not find icon component class '#{class_name}'. " \
|
113
|
+
"Make sure the pack ('#{pack_name}') and name ('#{icon_name}') " \
|
114
|
+
'are correct and the corresponding file is loaded.'
|
115
|
+
end
|
116
|
+
end
|
117
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative 'configuration'
|
4
|
+
|
5
|
+
module PhlexIcons
|
6
|
+
class Railtie < ::Rails::Railtie
|
7
|
+
initializer 'phlex_icons.view_helpers' do
|
8
|
+
ActiveSupport.on_load(:action_view) do
|
9
|
+
helper_method_name = PhlexIcons.configuration.helper_method_name
|
10
|
+
|
11
|
+
define_method helper_method_name do |name, **options|
|
12
|
+
PhlexIcons::Icon.call(name, **options)&.html_safe
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/lib/phlex-icons/version.rb
CHANGED
data/lib/phlex-icons-lucide.rb
CHANGED
@@ -12,6 +12,9 @@ require_relative 'phlex-icons/version'
|
|
12
12
|
require_relative 'phlex-icons/lucide'
|
13
13
|
require_relative 'phlex-icons/material'
|
14
14
|
|
15
|
+
require_relative 'phlex-icons/icon'
|
16
|
+
require_relative 'phlex-icons/railtie' if defined?(Rails)
|
17
|
+
|
15
18
|
module PhlexIcons
|
16
19
|
class << self
|
17
20
|
def configuration
|