rails_icons 1.2.0 → 1.3.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/Gemfile.lock +1 -1
- data/README.md +5 -3
- data/lib/generators/rails_icons/initializer_generator.rb +2 -2
- data/lib/rails_icons/base_generator.rb +26 -0
- data/lib/rails_icons/configuration/boxicons.rb +1 -0
- data/lib/rails_icons/configuration/feather.rb +1 -0
- data/lib/rails_icons/configuration/flags.rb +1 -0
- data/lib/rails_icons/configuration/heroicons.rb +1 -0
- data/lib/rails_icons/configuration/linear.rb +1 -0
- data/lib/rails_icons/configuration/lucide.rb +1 -0
- data/lib/rails_icons/configuration/phosphor.rb +1 -0
- data/lib/rails_icons/configuration/radix.rb +1 -0
- data/lib/rails_icons/configuration/sidekickicons.rb +1 -0
- data/lib/rails_icons/configuration/tabler.rb +1 -0
- data/lib/rails_icons/configuration/weather.rb +1 -0
- data/lib/rails_icons/helpers/icon_helper.rb +2 -2
- data/lib/rails_icons/icon.rb +7 -5
- data/lib/rails_icons/sync/engine.rb +2 -0
- data/lib/rails_icons/sync/process_variants.rb +2 -0
- data/lib/rails_icons/sync/transformations.rb +2 -0
- data/lib/rails_icons/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ea0d1a2d414fe4308cfd7a65732fe7422e9a1f10edab64f6673cf0a667ef351f
|
4
|
+
data.tar.gz: 9fa4bab3788760957dce0e13135777fd9a432774fdd2172da077f9d716f5ed5e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 35389cf6c698b29f48229d34db04108c2471f8cb48f6e7b1d1dca8b812a381bcd6c1601fd39e360339aaa3487944130580881c2fa09323b9eeba1023be9714f3
|
7
|
+
data.tar.gz: 5ce92e169233c6a19c6e2e6b626996436d2ddda6b0f1c1c2e14d8b20d58b0550ccbab7b47767cabd0f7106ef8646483abdbfca20a3a7dbaf25108746fbf6158c
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -4,10 +4,10 @@ Add any icon library to a Rails app. Rails Icons has first-party support for a [
|
|
4
4
|
|
5
5
|
```erb
|
6
6
|
# Using the default icon library
|
7
|
-
|
7
|
+
icon "check", class: "text-gray-500"
|
8
8
|
|
9
9
|
# Using any custom library
|
10
|
-
|
10
|
+
icon "apple", library: "simple_icons", class: "text-black"
|
11
11
|
```
|
12
12
|
|
13
13
|
The icons are sourced directly from their respective GitHub repositories, ensuring Rails Icons remain lightweight.
|
@@ -23,6 +23,8 @@ The icons are sourced directly from their respective GitHub repositories, ensuri
|
|
23
23
|
</picture>
|
24
24
|
</a>
|
25
25
|
|
26
|
+
Want to make JavaScript your second-favorite language? 👉 [JavaScript for Rails Developers](https://javascriptforrails.com/)
|
27
|
+
|
26
28
|
|
27
29
|
## Install
|
28
30
|
|
@@ -105,7 +107,7 @@ Use like this: `icon "faded-spinner", library: "animated"`. The same attributes
|
|
105
107
|
Need to use an icon from another library?
|
106
108
|
|
107
109
|
1. run `rails generate rails_icons:initializer --custom=simple_icons`;
|
108
|
-
2. add the (SVG) icons to the created directory
|
110
|
+
2. add the (SVG) icons to the created directory *app/assets/svg/icons/simple_icons*;
|
109
111
|
|
110
112
|
Every custom icon can now be used with the same interface as first-party icon libraries.
|
111
113
|
```ruby
|
@@ -47,7 +47,7 @@ module RailsIcons
|
|
47
47
|
end
|
48
48
|
|
49
49
|
def setup_custom_configuration
|
50
|
-
return
|
50
|
+
return if options[:custom].blank?
|
51
51
|
|
52
52
|
insert_custom_configuration
|
53
53
|
create_custom_directory
|
@@ -58,7 +58,7 @@ module RailsIcons
|
|
58
58
|
INITIALIZER = "config/initializers/rails_icons.rb"
|
59
59
|
|
60
60
|
def insert_custom_configuration
|
61
|
-
unless
|
61
|
+
unless file_contains?(INITIALIZER, "config.libraries.merge!")
|
62
62
|
custom_default_configuration = <<~RB.indent(2)
|
63
63
|
config.libraries.merge!(
|
64
64
|
|
@@ -2,6 +2,8 @@
|
|
2
2
|
|
3
3
|
module RailsIcons
|
4
4
|
class BaseGenerator < Rails::Generators::Base
|
5
|
+
hide!
|
6
|
+
|
5
7
|
def initialize(*arguments)
|
6
8
|
super(*arguments)
|
7
9
|
|
@@ -11,10 +13,34 @@ module RailsIcons
|
|
11
13
|
private
|
12
14
|
|
13
15
|
def validate!
|
16
|
+
return if custom_library?
|
17
|
+
|
14
18
|
raise RailsIcons::LibraryNotFound.new("") if options.libraries.empty?
|
15
19
|
raise RailsIcons::LibraryNotFound.new(invalid_libraries.join(", ")) if invalid_libraries.any?
|
16
20
|
end
|
17
21
|
|
18
22
|
def invalid_libraries = options.libraries.map(&:to_sym).map(&:downcase).reject { RailsIcons.libraries.key?(_1) }
|
23
|
+
|
24
|
+
def custom_library? = options.custom.present?
|
25
|
+
|
26
|
+
# Uses `gsub_file` as a read-only operation to check file content. This
|
27
|
+
# approach is preferred over `File.read` because `gsub_file` is properly stubbed
|
28
|
+
# in generator tests, while `File.read` would fail in the test environment.
|
29
|
+
#
|
30
|
+
def file_contains?(path, content)
|
31
|
+
return false unless File.exist?(path)
|
32
|
+
|
33
|
+
result = false
|
34
|
+
|
35
|
+
gsub_file(path, /.*/) do |file_content|
|
36
|
+
result = file_content.include?(content)
|
37
|
+
|
38
|
+
file_content
|
39
|
+
end
|
40
|
+
|
41
|
+
result
|
42
|
+
rescue Thor::Error
|
43
|
+
false
|
44
|
+
end
|
19
45
|
end
|
20
46
|
end
|
@@ -19,6 +19,7 @@ module RailsIcons
|
|
19
19
|
def initializer_config
|
20
20
|
<<~RB.indent(2)
|
21
21
|
# Override Boxicons defaults
|
22
|
+
# config.libraries.boxicons.default_variant = "" # Set a default variant for Boxicons
|
22
23
|
# config.libraries.boxicons.exclude_variants = [] # Exclude specific variants
|
23
24
|
|
24
25
|
# config.libraries.boxicons.solid.css = "size-6"
|
@@ -17,6 +17,7 @@ module RailsIcons
|
|
17
17
|
def initializer_config
|
18
18
|
<<~RB.indent(2)
|
19
19
|
# Override Feather defaults
|
20
|
+
# config.libraries.feather.default_variant = "" # Feather has no variants, this is provided for backwards compatibility
|
20
21
|
# config.libraries.feather.exclude_variants = [] # Feather has no variants, this is provided for backwards compatibility
|
21
22
|
|
22
23
|
# config.libraries.feather.default.css = "size-6"
|
@@ -18,6 +18,7 @@ module RailsIcons
|
|
18
18
|
def initializer_config
|
19
19
|
<<~RB.indent(2)
|
20
20
|
# Override Flags defaults
|
21
|
+
# config.libraries.flags.default_variant = "" # Set a default variant for Flags
|
21
22
|
# config.libraries.flags.exclude_variants = [:square, :landscape]
|
22
23
|
|
23
24
|
# config.libraries.flags.square.default.css = "size-6"
|
@@ -20,6 +20,7 @@ module RailsIcons
|
|
20
20
|
def initializer_config
|
21
21
|
<<~RB.indent(2)
|
22
22
|
# Override Heroicon defaults
|
23
|
+
# config.libraries.heroicons.default_variant = "" # Set a default variant for Heroicons
|
23
24
|
# config.libraries.heroicons.exclude_variants = [:mini, :micro] # Exclude specific variants
|
24
25
|
|
25
26
|
# config.libraries.heroicons.outline.default.css = "size-6"
|
@@ -17,6 +17,7 @@ module RailsIcons
|
|
17
17
|
def initializer_config
|
18
18
|
<<~RB.indent(2)
|
19
19
|
# Override Linear defaults
|
20
|
+
# config.libraries.linear.default_variant = "" # Set a default variant for Linear
|
20
21
|
# config.libraries.linear.exclude_variants = []
|
21
22
|
|
22
23
|
# config.libraries.linear.default.css = "size-6"
|
@@ -17,6 +17,7 @@ module RailsIcons
|
|
17
17
|
def initializer_config
|
18
18
|
<<~RB.indent(2)
|
19
19
|
# Override Lucide defaults
|
20
|
+
# config.libraries.lucide.default_variant = "" # Set a default variant for Lucide
|
20
21
|
# config.libraries.lucide.exclude_variants = [] # Exclude specific variants
|
21
22
|
|
22
23
|
# config.libraries.lucide.outline.default.css = "size-6"
|
@@ -22,6 +22,7 @@ module RailsIcons
|
|
22
22
|
def initializer_config
|
23
23
|
<<~RB.indent(2)
|
24
24
|
# Override Phosphor defaults
|
25
|
+
# config.libraries.phosphor.default_variant = "" # Set a default variant for Phosphor
|
25
26
|
# config.libraries.phosphor.exclude_variants = [:duotone, :thin] # Exclude specific variants
|
26
27
|
|
27
28
|
# config.libraries.phosphor.bold.default.css = "size-6"
|
@@ -17,6 +17,7 @@ module RailsIcons
|
|
17
17
|
def initializer_config
|
18
18
|
<<~RB.indent(2)
|
19
19
|
# Override Radix defaults
|
20
|
+
# config.libraries.radix.default_variant = "" # Radix has no variants, this is provided for backwards compatibility
|
20
21
|
# config.libraries.radix.exclude_variants = [] # Radix has no variants, this is provided for backwards compatibility
|
21
22
|
# config.libraries.radix.default.css = "size-6"
|
22
23
|
# config.libraries.radix.default.stroke_width = "2"
|
@@ -20,6 +20,7 @@ module RailsIcons
|
|
20
20
|
def initializer_config
|
21
21
|
<<~RB.indent(2)
|
22
22
|
# Override Sidekickicons defaults
|
23
|
+
# config.libraries.sidekickicons.default_variant = "" # Set a default variant for Sidekickicons
|
23
24
|
# config.libraries.sidekickicons.exclude_variants = [:mini, :micro] # Exclude specific variants
|
24
25
|
|
25
26
|
# config.libraries.sidekickicons.outline.default.css = "size-6"
|
@@ -18,6 +18,7 @@ module RailsIcons
|
|
18
18
|
def initializer_config
|
19
19
|
<<~RB.indent(2)
|
20
20
|
# Override Tabler defaults
|
21
|
+
# config.libraries.tabler.default_variant = "" # Set a default variant for Tabler
|
21
22
|
# config.libraries.tabler.exclude_variants = [] # Exclude specific variants
|
22
23
|
|
23
24
|
# config.libraries.tabler.regular.default.css = "size-6"
|
@@ -17,6 +17,7 @@ module RailsIcons
|
|
17
17
|
def initializer_config
|
18
18
|
<<~RB.indent(2)
|
19
19
|
# Override Weather defaults
|
20
|
+
# config.libraries.weather.default_variant = "" # Set a default variant for Wweather
|
20
21
|
# config.libraries.weather.exclude_variants = []
|
21
22
|
|
22
23
|
# config.libraries.weather.default.css = "size-6"
|
@@ -5,10 +5,10 @@ require_relative "../configuration"
|
|
5
5
|
module RailsIcons
|
6
6
|
module Helpers
|
7
7
|
module IconHelper
|
8
|
-
def icon(name, library: RailsIcons.configuration.default_library, variant: nil, **arguments)
|
8
|
+
def icon(name, library: RailsIcons.configuration.default_library, from: library, variant: nil, **arguments)
|
9
9
|
RailsIcons::Icon.new(
|
10
10
|
name: name,
|
11
|
-
library: library,
|
11
|
+
library: from || library,
|
12
12
|
variant: variant,
|
13
13
|
arguments: arguments
|
14
14
|
).svg
|
data/lib/rails_icons/icon.rb
CHANGED
@@ -2,7 +2,9 @@ require "rails_icons/icon/file_path"
|
|
2
2
|
require "rails_icons/icon/attributes"
|
3
3
|
|
4
4
|
class RailsIcons::Icon
|
5
|
-
def initialize(name:, library:, arguments:, variant: nil)
|
5
|
+
def initialize(name:, library:, arguments:, variant: nil, config: RailsIcons.configuration)
|
6
|
+
@config = config # set first, config is used during initialization
|
7
|
+
|
6
8
|
@name = name
|
7
9
|
@library = library.to_s.inquiry
|
8
10
|
@variant = (variant || set_variant).to_s
|
@@ -22,8 +24,8 @@ class RailsIcons::Icon
|
|
22
24
|
private
|
23
25
|
|
24
26
|
def set_variant
|
25
|
-
|
26
|
-
|
27
|
+
@config.libraries.dig(@library.to_sym, :default_variant).presence ||
|
28
|
+
@config.default_variant.presence
|
27
29
|
end
|
28
30
|
|
29
31
|
def error_message
|
@@ -55,7 +57,7 @@ class RailsIcons::Icon
|
|
55
57
|
def default(key) = library_attributes.dig(:default, key)
|
56
58
|
|
57
59
|
def library_attributes
|
58
|
-
custom_library? ? custom_library :
|
60
|
+
custom_library? ? custom_library : @config.libraries.dig(@library, @variant) || {}
|
59
61
|
end
|
60
62
|
|
61
63
|
def custom_library
|
@@ -65,7 +67,7 @@ class RailsIcons::Icon
|
|
65
67
|
&.dig("custom")
|
66
68
|
&.dig(@library.to_sym)&.with_defaults(
|
67
69
|
{
|
68
|
-
path: [
|
70
|
+
path: [@config.destination_path, @library].join("/")
|
69
71
|
}
|
70
72
|
) || {}
|
71
73
|
end
|
data/lib/rails_icons/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_icons
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rails Designer Developers
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-
|
11
|
+
date: 2025-04-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|