unmagic-icon 0.3.0 → 0.4.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/CHANGELOG.md +32 -1
- data/README.md +128 -1
- data/lib/unmagic/icon/library/source/aws_architecture_icons.rb +58 -0
- data/lib/unmagic/icon/library/source/carbon_pictograms.rb +22 -0
- data/lib/unmagic/icon/library/source/feather.rb +2 -2
- data/lib/unmagic/icon/library/source/gilbarbara_logos.rb +26 -0
- data/lib/unmagic/icon/library/source/homarr_icons.rb +25 -0
- data/lib/unmagic/icon/library/source/iconoir.rb +3 -3
- data/lib/unmagic/icon/library/source/lobe_icons.rb +1 -1
- data/lib/unmagic/icon/library/source/lucide.rb +1 -1
- data/lib/unmagic/icon/library/source/material_file_icons.rb +1 -1
- data/lib/unmagic/icon/library/source/octicons.rb +3 -3
- data/lib/unmagic/icon/library/source/silk.rb +1 -1
- data/lib/unmagic/icon/library/source/simple_icons.rb +1 -1
- data/lib/unmagic/icon/library/source/tabler.rb +9 -4
- data/lib/unmagic/icon/library/source.rb +27 -3
- data/lib/unmagic/icon/version.rb +1 -1
- metadata +6 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c5b83398a6488aca7718c59177ca2775d52f303a841c343eef276bb5ff839d6f
|
|
4
|
+
data.tar.gz: e1e6008c9a19de5d9a13a242995fbde2d3424fdde199715f103f31990466ad46
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3f83522a7112bb64594de36d766cefdf7ea8498494a9e18e49355b13d0702a91165beed958c2740924f7387f0a9acdb8fb2dc4fc79750a39785c920e7ccb5cd0
|
|
7
|
+
data.tar.gz: 113ba5070733c634c923f646d2bf5f501f0af3060b783f26e596d6bad507257483f3eaf0f1f0cd2fc0581475d68c01013e0c83846a5a54ddfb456d9e18f113e9
|
data/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,35 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.4.0] - 2026-09-30
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- Four pinned downloadable icon libraries: `gilbarbara-logos` (Gil Barbara SVG
|
|
14
|
+
Logos), `homarr-icons` (Homarr Dashboard Icons), `carbon-pictograms` (IBM
|
|
15
|
+
Carbon Pictograms), and `aws-architecture-icons` (official AWS service icons).
|
|
16
|
+
- Product-specific references for Microsoft Power BI, Dagster, IBM Cloud,
|
|
17
|
+
CloudFormation, AWS Cloud Development Kit, and distinct SageMaker products.
|
|
18
|
+
Preserve available Homarr light/dark variants and upstream filenames.
|
|
19
|
+
- Retain upstream license/README files and source provenance for the new
|
|
20
|
+
open-source libraries; fail downloads when required attribution is missing.
|
|
21
|
+
- Verify the pinned AWS archive with SHA-256 and retain AWS attribution and
|
|
22
|
+
usage terms. Install 64px service SVGs; AWS assets remain proprietary and
|
|
23
|
+
are downloaded directly rather than bundled in the gem.
|
|
24
|
+
- Installation examples, source pins, and licensing guidance for the new sets.
|
|
25
|
+
|
|
26
|
+
## [0.3.1] - 2026-09-30
|
|
27
|
+
|
|
28
|
+
### Changed
|
|
29
|
+
- Update Feather to 4.29.2, Tabler to 3.48.0, Lucide to 1.49.0,
|
|
30
|
+
Simple Icons to 16.33.0, Material File Icons to 5.38.1, Octicons to
|
|
31
|
+
19.38.0, Iconoir to 7.12.1, and Lobe Icons to 1.95.1.
|
|
32
|
+
- Download Tabler and Octicons from their official npm SVG packages.
|
|
33
|
+
|
|
34
|
+
### Fixed
|
|
35
|
+
- Extract Tabler's nested SVG directories, with outline icons at `tabler/name`
|
|
36
|
+
and filled variants at `tabler/filled/name`, avoiding filename collisions.
|
|
37
|
+
- Download Silk from its existing `master` branch.
|
|
38
|
+
|
|
10
39
|
## [0.3.0] - 2026-07-31
|
|
11
40
|
|
|
12
41
|
### Added
|
|
@@ -59,7 +88,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
59
88
|
hooks into `assets:precompile`) and `unmagic:icons:download[library]`
|
|
60
89
|
- `Unmagic::Icon::Web`, a Rack app for browsing the configured icon libraries
|
|
61
90
|
|
|
62
|
-
[Unreleased]: https://github.com/unreasonable-magic/unmagic-icon/compare/v0.
|
|
91
|
+
[Unreleased]: https://github.com/unreasonable-magic/unmagic-icon/compare/v0.4.0...HEAD
|
|
92
|
+
[0.4.0]: https://github.com/unreasonable-magic/unmagic-icon/compare/v0.3.1...v0.4.0
|
|
93
|
+
[0.3.1]: https://github.com/unreasonable-magic/unmagic-icon/compare/v0.3.0...v0.3.1
|
|
63
94
|
[0.3.0]: https://github.com/unreasonable-magic/unmagic-icon/compare/v0.2.1...v0.3.0
|
|
64
95
|
[0.2.1]: https://github.com/unreasonable-magic/unmagic-icon/compare/v0.2.0...v0.2.1
|
|
65
96
|
[0.2.0]: https://github.com/unreasonable-magic/unmagic-icon/compare/v0.1.0...v0.2.0
|
data/README.md
CHANGED
|
@@ -122,7 +122,7 @@ Available libraries:
|
|
|
122
122
|
| `heroicons` | Heroicons | Beautiful hand-crafted SVG icons by the makers of Tailwind CSS |
|
|
123
123
|
| `devicons` | Devicons | Icons representing programming languages, designing & development tools |
|
|
124
124
|
| `feather` | Feather Icons | Simply beautiful open source icons |
|
|
125
|
-
| `tabler` | Tabler Icons |
|
|
125
|
+
| `tabler` | Tabler Icons | Outline icons at `tabler/name`, filled icons at `tabler/filled/name` |
|
|
126
126
|
| `lucide` | Lucide Icons | Beautiful & consistent icons |
|
|
127
127
|
| `simple-icons` | Simple Icons | SVG icons for popular brands |
|
|
128
128
|
| `material-file-icons` | Material File Icons | Material Design file icons with filename/extension aliases |
|
|
@@ -134,6 +134,133 @@ Available libraries:
|
|
|
134
134
|
| `material-design-icons` | Material Design Icons | 7400+ Material Design icons (Pictogrammers @mdi) |
|
|
135
135
|
| `phosphor` | Phosphor Icons | Flexible icon family with six weights (thin to fill, plus duotone) |
|
|
136
136
|
| `lobe-icons` | Lobe Icons | Popular AI / LLM model brand logos and icons |
|
|
137
|
+
| `gilbarbara-logos` | Gil Barbara SVG Logos | Full-colour technology logos |
|
|
138
|
+
| `homarr-icons` | Homarr Dashboard Icons | Service logos with available light/dark variants |
|
|
139
|
+
| `carbon-pictograms` | IBM Carbon Pictograms | IBM pictograms including IBM Cloud |
|
|
140
|
+
| `aws-architecture-icons` | AWS Architecture Icons | Official 64px service SVGs; AWS usage terms apply |
|
|
141
|
+
|
|
142
|
+
### Brand and cloud libraries
|
|
143
|
+
|
|
144
|
+
| Key | Pinned source | Example references |
|
|
145
|
+
| --- | --- | --- |
|
|
146
|
+
| `gilbarbara-logos` | [gilbarbara/logos](https://github.com/gilbarbara/logos/tree/37a6b807fd71c622efea27a9309b5d4edc792969), commit `37a6b807fd71c622efea27a9309b5d4edc792969` | `gilbarbara-logos/microsoft-power-bi`, `gilbarbara-logos/aws-cloudformation` |
|
|
147
|
+
| `homarr-icons` | [homarr-labs/dashboard-icons](https://github.com/homarr-labs/dashboard-icons/tree/c716eb6798576923fa08e9b3e4125173148994ed), commit `c716eb6798576923fa08e9b3e4125173148994ed` | `homarr-icons/powerbi`, `homarr-icons/dagster-light`, `homarr-icons/dagster-dark` |
|
|
148
|
+
| `carbon-pictograms` | [`@carbon/pictograms` 12.85.0](https://www.npmjs.com/package/@carbon/pictograms/v/12.85.0) | `carbon-pictograms/ibm--cloud` |
|
|
149
|
+
| `aws-architecture-icons` | Official July 31, 2026 ZIP, SHA-256 verified | `aws-architecture-icons/Arch_AWS-CloudFormation_64` |
|
|
150
|
+
|
|
151
|
+
Install these through the same initializer and task as other libraries:
|
|
152
|
+
|
|
153
|
+
```ruby
|
|
154
|
+
Unmagic::Icon.configure do |config|
|
|
155
|
+
config.libraries = [:"gilbarbara-logos", :"homarr-icons", :"carbon-pictograms", :"aws-architecture-icons"]
|
|
156
|
+
end
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
bin/rails unmagic:icons:install
|
|
161
|
+
# Or individually:
|
|
162
|
+
bin/rails 'unmagic:icons:download[gilbarbara-logos]'
|
|
163
|
+
bin/rails 'unmagic:icons:download[homarr-icons]'
|
|
164
|
+
bin/rails 'unmagic:icons:download[carbon-pictograms]'
|
|
165
|
+
bin/rails 'unmagic:icons:download[aws-architecture-icons]'
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
```erb
|
|
169
|
+
<%= unmagic_icon "gilbarbara-logos/microsoft-power-bi", class: "size-6" %>
|
|
170
|
+
<%= unmagic_icon "gilbarbara-logos/aws-cloudformation" %>
|
|
171
|
+
<%= unmagic_icon "homarr-icons/powerbi" %>
|
|
172
|
+
<%= unmagic_icon "homarr-icons/dagster-light" %>
|
|
173
|
+
<%= unmagic_icon "homarr-icons/dagster-dark" %>
|
|
174
|
+
<%= unmagic_icon "carbon-pictograms/ibm--cloud" %>
|
|
175
|
+
<%= unmagic_icon "aws-architecture-icons/Arch_AWS-CloudFormation_64" %>
|
|
176
|
+
<%= unmagic_icon "aws-architecture-icons/Arch_AWS-Cloud-Development-Kit_64" %>
|
|
177
|
+
<%= unmagic_icon "aws-architecture-icons/Arch_Amazon-SageMaker_64" %>
|
|
178
|
+
<%= unmagic_icon "aws-architecture-icons/Arch_Amazon-SageMaker-AI_64" %>
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
Names retain upstream spelling, case, punctuation, and variant suffixes. Select
|
|
182
|
+
light/dark assets explicitly; no automatic theme or product aliases are added.
|
|
183
|
+
SVG Logos' `slim` identifies the [Slim PHP framework](https://www.slimframework.com/),
|
|
184
|
+
**not** the Ruby template language. Unknown products raise instead of falling
|
|
185
|
+
back to a parent-company logo.
|
|
186
|
+
|
|
187
|
+
Downloads copy `logos/*.svg`, `svg/*.svg`, and `package/svg/*.svg`, respectively,
|
|
188
|
+
into their library directories. Dashboard's archive also contains PNG/WebP and
|
|
189
|
+
website assets (a large download); only its top-level SVG assets are installed.
|
|
190
|
+
Carbon's `@carbon/icons` 11.89.0 and `@carbon/pictograms` 12.85.0 packages were
|
|
191
|
+
both inspected: the former has a UI-sized `svg/32/ibm-cloud.svg`; the latter has
|
|
192
|
+
the IBM Cloud pictogram `svg/ibm--cloud.svg`. This integration selects the
|
|
193
|
+
pictograms family, excludes `src/svg` duplicates and JavaScript, and preserves
|
|
194
|
+
the double hyphen in its canonical name. The UI icons package is not installed.
|
|
195
|
+
|
|
196
|
+
SVG Logos, Homarr Dashboard Icons, and Carbon retain the upstream license and README alongside the SVGs,
|
|
197
|
+
plus a `manifest.json` recording its source, exact revision/version and license.
|
|
198
|
+
SVG Logos also retains `logos.json` with the original product identities and
|
|
199
|
+
links. The downloader does not execute npm scripts or upstream code. Existing
|
|
200
|
+
libraries and saved references are unchanged; rendering uses the same inline
|
|
201
|
+
SVG pipeline. As with existing libraries, downloaded SVGs are trusted assets,
|
|
202
|
+
not sanitized untrusted uploads.
|
|
203
|
+
|
|
204
|
+
#### Attribution and redistribution
|
|
205
|
+
|
|
206
|
+
These assets are not covered by this gem's MIT license. Keep the downloaded
|
|
207
|
+
legal files when redistributing them:
|
|
208
|
+
|
|
209
|
+
- **SVG Logos:** [CC0-1.0](https://github.com/gilbarbara/logos/blob/37a6b807fd71c622efea27a9309b5d4edc792969/LICENSE.txt).
|
|
210
|
+
The upstream README identifies logos as their respective owners' property;
|
|
211
|
+
CC0 does not waive trademark rights or third-party rights.
|
|
212
|
+
- **Homarr Dashboard Icons:** [Apache-2.0](https://github.com/homarr-labs/dashboard-icons/blob/c716eb6798576923fa08e9b3e4125173148994ed/LICENSE),
|
|
213
|
+
with copyright attribution to Bjorn Lammers, Meier Lukas, Thomas Camlong and
|
|
214
|
+
Homarr Labs. Preserve the license and applicable notices; identify changes
|
|
215
|
+
when distributing modified files. The README limits brand representations
|
|
216
|
+
to identification and disclaims endorsement.
|
|
217
|
+
- **IBM Carbon Pictograms:** Apache-2.0, as shipped in the pinned package's
|
|
218
|
+
`LICENSE` and `README.md`. Preserve these and applicable copyright notices;
|
|
219
|
+
identify modifications. Apache-2.0 does not grant general trademark rights.
|
|
220
|
+
|
|
221
|
+
Neither pinned Apache archive contains a separate `NOTICE` file. SVG bytes are
|
|
222
|
+
copied unchanged; rendering adds the gem's normal wrapper attributes. If you
|
|
223
|
+
redistribute rendered or otherwise modified assets, retain the license and
|
|
224
|
+
applicable notices and identify your modifications.
|
|
225
|
+
|
|
226
|
+
#### AWS Architecture Icons
|
|
227
|
+
|
|
228
|
+
The `aws-architecture-icons` downloader fetches the official July 31, 2026 ZIP
|
|
229
|
+
directly from AWS. It verifies SHA-256
|
|
230
|
+
`d2d166c453526471749d520e0db022c459abef759d2946cf2dd1d1c992dc6526`
|
|
231
|
+
before extraction and installs only `Architecture-Service-Icons_07312026/Arch_*/64/*.svg`.
|
|
232
|
+
Upstream filenames and SVG bytes remain unchanged. Other sizes, resource icons,
|
|
233
|
+
category icons, raster files, and macOS metadata are excluded.
|
|
234
|
+
|
|
235
|
+
AWS assets are proprietary. The [AWS Architecture Icons](https://aws.amazon.com/architecture/icons/)
|
|
236
|
+
page permits customers and partners to use them in architecture diagrams and
|
|
237
|
+
related materials. The [AWS Site Terms](https://aws.amazon.com/terms/) and
|
|
238
|
+
[AWS Intellectual Property License](https://aws.amazon.com/legal/aws-ip-license-terms/)
|
|
239
|
+
apply; downloading through this gem does not grant general redistribution or
|
|
240
|
+
trademark rights. No separate license file is included in the archive. The
|
|
241
|
+
installer writes `ATTRIBUTION.txt` with AWS ownership, source and terms links,
|
|
242
|
+
usage constraints and the extraction/rendering changes, plus provenance in
|
|
243
|
+
`manifest.json`. No AWS assets are bundled in the gem. Check AWS's terms for
|
|
244
|
+
your intended use, especially before redistributing an icon pack.
|
|
245
|
+
|
|
246
|
+
The inspected [official archive](https://d1.awsstatic.com/onedam/marketing-channels/website/public/shared/architecture-icon-release/Icon-package_07312026.5846e92413caa21490223536cc97f1269e44fa92.zip)
|
|
247
|
+
contains the following distinct service SVGs under
|
|
248
|
+
`Architecture-Service-Icons_07312026/`:
|
|
249
|
+
|
|
250
|
+
| Product | Category / exact filename |
|
|
251
|
+
| --- | --- |
|
|
252
|
+
| CloudFormation | `Arch_Management-Tools/64/Arch_AWS-CloudFormation_64.svg` |
|
|
253
|
+
| AWS Cloud Development Kit | `Arch_Developer-Tools/64/Arch_AWS-Cloud-Development-Kit_64.svg` |
|
|
254
|
+
| Amazon SageMaker | `Arch_Analytics/64/Arch_Amazon-SageMaker_64.svg` |
|
|
255
|
+
| Amazon SageMaker AI | `Arch_Artificial-Intelligence/64/Arch_Amazon-SageMaker-AI_64.svg` |
|
|
256
|
+
| Amazon SageMaker Studio Lab | `Arch_Artificial-Intelligence/64/Arch_Amazon-SageMaker-Studio-Lab_64.svg` |
|
|
257
|
+
| Amazon SageMaker Ground Truth | `Arch_Artificial-Intelligence/64/Arch_Amazon-SageMaker-Ground-Truth_64.svg` |
|
|
258
|
+
|
|
259
|
+
Each filename above is installed at `aws-architecture-icons/<filename-without-.svg>`.
|
|
260
|
+
For example, Studio Lab is `aws-architecture-icons/Arch_Amazon-SageMaker-Studio-Lab_64`
|
|
261
|
+
and Ground Truth is `aws-architecture-icons/Arch_Amazon-SageMaker-Ground-Truth_64`.
|
|
262
|
+
SageMaker and SageMaker AI remain distinct, with no ambiguous `sagemaker` alias
|
|
263
|
+
or fallback to AWS's company logo. Source and licensing review: 2026-09-30.
|
|
137
264
|
|
|
138
265
|
### Browsing icons
|
|
139
266
|
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "digest"
|
|
4
|
+
|
|
5
|
+
module Unmagic
|
|
6
|
+
class Icon
|
|
7
|
+
class Library
|
|
8
|
+
class Source
|
|
9
|
+
class AwsArchitectureIcons < Source
|
|
10
|
+
SHA256 = "d2d166c453526471749d520e0db022c459abef759d2946cf2dd1d1c992dc6526"
|
|
11
|
+
ATTRIBUTION = <<~TEXT
|
|
12
|
+
AWS Architecture Icons — July 31, 2026
|
|
13
|
+
Icons are the property of Amazon Web Services, Inc. and/or its affiliates.
|
|
14
|
+
Source: https://aws.amazon.com/architecture/icons/
|
|
15
|
+
Terms: https://aws.amazon.com/terms/
|
|
16
|
+
IP license: https://aws.amazon.com/legal/aws-ip-license-terms/
|
|
17
|
+
|
|
18
|
+
AWS permits customers and partners to use these assets in architecture
|
|
19
|
+
diagrams and related materials. These are proprietary assets, not assets
|
|
20
|
+
licensed under this gem's MIT license. Downloading does not grant general
|
|
21
|
+
redistribution or trademark rights; check AWS's terms for your use.
|
|
22
|
+
No separate license file is included in this upstream archive.
|
|
23
|
+
|
|
24
|
+
This download copies the 64px architecture service SVGs unchanged,
|
|
25
|
+
preserving their upstream filenames. The gem's renderer adds its normal
|
|
26
|
+
SVG wrapper attributes. Other sizes, resource icons and category icons
|
|
27
|
+
are not installed.
|
|
28
|
+
TEXT
|
|
29
|
+
|
|
30
|
+
key :"aws-architecture-icons"
|
|
31
|
+
title "AWS Architecture Icons"
|
|
32
|
+
description "Official AWS service icons for architecture diagrams (AWS usage terms apply)"
|
|
33
|
+
url "https://d1.awsstatic.com/onedam/marketing-channels/website/public/shared/architecture-icon-release/Icon-package_07312026.5846e92413caa21490223536cc97f1269e44fa92.zip"
|
|
34
|
+
archive :zip
|
|
35
|
+
extract "Architecture-Service-Icons_07312026/Arch_*/64/*.svg"
|
|
36
|
+
provenance "provider" => "Amazon Web Services", "version" => "2026-07-31",
|
|
37
|
+
"license" => "Proprietary — AWS usage terms", "sha256" => SHA256,
|
|
38
|
+
"homepage" => "https://aws.amazon.com/architecture/icons/",
|
|
39
|
+
"terms" => "https://aws.amazon.com/terms/"
|
|
40
|
+
|
|
41
|
+
private
|
|
42
|
+
|
|
43
|
+
def download_file(url, destination)
|
|
44
|
+
super
|
|
45
|
+
unless Digest::SHA256.file(destination).hexdigest == SHA256
|
|
46
|
+
raise DownloadError, "AWS Architecture Icons archive checksum mismatch"
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def write_manifest(tmpdir, target_dir)
|
|
51
|
+
super
|
|
52
|
+
File.write(Pathname(target_dir).join("ATTRIBUTION.txt"), ATTRIBUTION)
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Unmagic
|
|
4
|
+
class Icon
|
|
5
|
+
class Library
|
|
6
|
+
class Source
|
|
7
|
+
class CarbonPictograms < Source
|
|
8
|
+
key :"carbon-pictograms"
|
|
9
|
+
title "IBM Carbon Pictograms"
|
|
10
|
+
description "IBM Carbon pictograms, including the IBM Cloud mark"
|
|
11
|
+
url "https://registry.npmjs.org/@carbon/pictograms/-/pictograms-12.85.0.tgz"
|
|
12
|
+
archive :tgz
|
|
13
|
+
# Use the published SVGs, not src/svg duplicates or JS components.
|
|
14
|
+
extract "package/svg/*.svg"
|
|
15
|
+
notices "package/LICENSE", "package/README.md"
|
|
16
|
+
provenance "provider" => "@carbon/pictograms", "version" => "12.85.0", "license" => "Apache-2.0",
|
|
17
|
+
"homepage" => "https://github.com/carbon-design-system/carbon"
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -8,9 +8,9 @@ module Unmagic
|
|
|
8
8
|
key :feather
|
|
9
9
|
title "Feather Icons"
|
|
10
10
|
description "Simply beautiful open source icons"
|
|
11
|
-
url "https://github.com/feathericons/feather/archive/refs/tags/v4.29.
|
|
11
|
+
url "https://github.com/feathericons/feather/archive/refs/tags/v4.29.2.zip"
|
|
12
12
|
archive :zip
|
|
13
|
-
extract "feather-4.29.
|
|
13
|
+
extract "feather-4.29.2/icons/*.svg"
|
|
14
14
|
end
|
|
15
15
|
end
|
|
16
16
|
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Unmagic
|
|
4
|
+
class Icon
|
|
5
|
+
class Library
|
|
6
|
+
class Source
|
|
7
|
+
class GilbarbaraLogos < Source
|
|
8
|
+
REVISION = "37a6b807fd71c622efea27a9309b5d4edc792969"
|
|
9
|
+
ROOT = "logos-#{REVISION}"
|
|
10
|
+
|
|
11
|
+
key :"gilbarbara-logos"
|
|
12
|
+
title "Gil Barbara SVG Logos"
|
|
13
|
+
description "Full-colour technology logos curated by Gil Barbara"
|
|
14
|
+
url "https://codeload.github.com/gilbarbara/logos/tar.gz/#{REVISION}"
|
|
15
|
+
archive :tgz
|
|
16
|
+
extract "#{ROOT}/logos/*.svg"
|
|
17
|
+
notices "#{ROOT}/LICENSE.txt", "#{ROOT}/README.md", "#{ROOT}/logos.json"
|
|
18
|
+
provenance "provider" => "gilbarbara/logos", "revision" => REVISION, "license" => "CC0-1.0",
|
|
19
|
+
"homepage" => "https://github.com/gilbarbara/logos"
|
|
20
|
+
# Keep upstream names, including slim (the PHP framework). No language
|
|
21
|
+
# aliases or parent-company fallbacks are inferred from the catalogue.
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Unmagic
|
|
4
|
+
class Icon
|
|
5
|
+
class Library
|
|
6
|
+
class Source
|
|
7
|
+
class HomarrIcons < Source
|
|
8
|
+
REVISION = "c716eb6798576923fa08e9b3e4125173148994ed"
|
|
9
|
+
ROOT = "dashboard-icons-#{REVISION}"
|
|
10
|
+
|
|
11
|
+
key :"homarr-icons"
|
|
12
|
+
title "Homarr Dashboard Icons"
|
|
13
|
+
description "Dashboard service logos from Homarr Labs, including light/dark variants"
|
|
14
|
+
url "https://codeload.github.com/homarr-labs/dashboard-icons/tar.gz/#{REVISION}"
|
|
15
|
+
archive :tgz
|
|
16
|
+
# Suffixes such as dagster-light and dagster-dark are part of the name.
|
|
17
|
+
extract "#{ROOT}/svg/*.svg"
|
|
18
|
+
notices "#{ROOT}/LICENSE", "#{ROOT}/README.md"
|
|
19
|
+
provenance "provider" => "homarr-labs/dashboard-icons", "revision" => REVISION, "license" => "Apache-2.0",
|
|
20
|
+
"homepage" => "https://github.com/homarr-labs/dashboard-icons"
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -9,12 +9,12 @@ module Unmagic
|
|
|
9
9
|
key :iconoir
|
|
10
10
|
title "Iconoir"
|
|
11
11
|
description "Free open source icons designed on a 24x24 grid"
|
|
12
|
-
url "https://github.com/iconoir-icons/iconoir/archive/refs/tags/v7.
|
|
12
|
+
url "https://github.com/iconoir-icons/iconoir/archive/refs/tags/v7.12.1.zip"
|
|
13
13
|
archive :zip
|
|
14
14
|
dir "iconoir"
|
|
15
15
|
extract_into(
|
|
16
|
-
"iconoir-7.
|
|
17
|
-
"iconoir-7.
|
|
16
|
+
"iconoir-7.12.1/icons/regular" => "regular",
|
|
17
|
+
"iconoir-7.12.1/icons/solid" => "solid"
|
|
18
18
|
)
|
|
19
19
|
end
|
|
20
20
|
end
|
|
@@ -13,7 +13,7 @@ module Unmagic
|
|
|
13
13
|
key :"lobe-icons"
|
|
14
14
|
title "Lobe Icons"
|
|
15
15
|
description "Popular AI / LLM model brand logos and icons"
|
|
16
|
-
url "https://registry.npmjs.org/@lobehub/icons-static-svg/-/icons-static-svg-1.
|
|
16
|
+
url "https://registry.npmjs.org/@lobehub/icons-static-svg/-/icons-static-svg-1.95.1.tgz"
|
|
17
17
|
archive :tgz
|
|
18
18
|
dir "lobe-icons"
|
|
19
19
|
extract "package/icons/*.svg"
|
|
@@ -8,7 +8,7 @@ module Unmagic
|
|
|
8
8
|
key :lucide
|
|
9
9
|
title "Lucide Icons"
|
|
10
10
|
description "Beautiful & consistent icons"
|
|
11
|
-
url "https://github.com/lucide-icons/lucide/releases/download/1.
|
|
11
|
+
url "https://github.com/lucide-icons/lucide/releases/download/1.49.0/lucide-icons-1.49.0.zip"
|
|
12
12
|
archive :zip
|
|
13
13
|
extract "icons/*.svg"
|
|
14
14
|
end
|
|
@@ -11,7 +11,7 @@ module Unmagic
|
|
|
11
11
|
key :"material-file-icons"
|
|
12
12
|
title "Material File Icons"
|
|
13
13
|
description "Material Design file icons with filename/extension aliases (PKief material-icon-theme)"
|
|
14
|
-
url "https://registry.npmjs.org/material-icon-theme/-/material-icon-theme-5.
|
|
14
|
+
url "https://registry.npmjs.org/material-icon-theme/-/material-icon-theme-5.38.1.tgz"
|
|
15
15
|
archive :tgz
|
|
16
16
|
dir "material"
|
|
17
17
|
extract "package/icons/*.svg"
|
|
@@ -7,10 +7,10 @@ module Unmagic
|
|
|
7
7
|
key :octicons
|
|
8
8
|
title "Octicons"
|
|
9
9
|
description "Icons and icon font from GitHub"
|
|
10
|
-
url "https://
|
|
11
|
-
archive :
|
|
10
|
+
url "https://registry.npmjs.org/@primer/octicons/-/octicons-19.38.0.tgz"
|
|
11
|
+
archive :tgz
|
|
12
12
|
dir "octicons"
|
|
13
|
-
extract "
|
|
13
|
+
extract "package/build/svg/*.svg"
|
|
14
14
|
end
|
|
15
15
|
end
|
|
16
16
|
end
|
|
@@ -8,7 +8,7 @@ module Unmagic
|
|
|
8
8
|
key :"simple-icons"
|
|
9
9
|
title "Simple Icons"
|
|
10
10
|
description "SVG icons for popular brands"
|
|
11
|
-
url "https://registry.npmjs.org/simple-icons/-/simple-icons-
|
|
11
|
+
url "https://registry.npmjs.org/simple-icons/-/simple-icons-16.33.0.tgz"
|
|
12
12
|
archive :tgz
|
|
13
13
|
extract "package/icons/*.svg"
|
|
14
14
|
end
|
|
@@ -7,10 +7,15 @@ module Unmagic
|
|
|
7
7
|
class Tabler < Source
|
|
8
8
|
key :tabler
|
|
9
9
|
title "Tabler Icons"
|
|
10
|
-
description "
|
|
11
|
-
url "https://
|
|
12
|
-
archive :
|
|
13
|
-
|
|
10
|
+
description "Free SVG icons in outline and filled styles"
|
|
11
|
+
url "https://registry.npmjs.org/@tabler/icons/-/icons-3.48.0.tgz"
|
|
12
|
+
archive :tgz
|
|
13
|
+
# Keep outline names at tabler/<name>; filled icons live separately
|
|
14
|
+
# because both styles share filenames.
|
|
15
|
+
extract_into(
|
|
16
|
+
"package/icons/outline" => ".",
|
|
17
|
+
"package/icons/filled" => "filled"
|
|
18
|
+
)
|
|
14
19
|
end
|
|
15
20
|
end
|
|
16
21
|
end
|
|
@@ -85,6 +85,15 @@ module Unmagic
|
|
|
85
85
|
def extract_into(mapping = nil)
|
|
86
86
|
mapping ? @extract_into = mapping : @extract_into
|
|
87
87
|
end
|
|
88
|
+
|
|
89
|
+
# Required upstream legal files, copied alongside the icons unchanged.
|
|
90
|
+
def notices(*patterns)
|
|
91
|
+
patterns.empty? ? (@notices || []) : @notices = patterns
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
def provenance(value = nil)
|
|
95
|
+
value ? @provenance = value : @provenance
|
|
96
|
+
end
|
|
88
97
|
end
|
|
89
98
|
|
|
90
99
|
def download(target_dir: default_target_dir, force: false)
|
|
@@ -120,15 +129,26 @@ module Unmagic
|
|
|
120
129
|
download_file(self.class.url, archive_path)
|
|
121
130
|
extract_archive(archive_path, tmpdir, self.class.archive)
|
|
122
131
|
|
|
132
|
+
notice_files = self.class.notices.map do |pattern|
|
|
133
|
+
matches = Dir.glob(File.join(tmpdir, pattern)).select { |file| File.file?(file) }
|
|
134
|
+
raise ExtractionError, "Missing required attribution: #{pattern}" if matches.empty?
|
|
135
|
+
|
|
136
|
+
matches
|
|
137
|
+
end.flatten
|
|
123
138
|
FileUtils.mkdir_p(target_dir)
|
|
139
|
+
notice_files.each { |file| FileUtils.cp(file, target_dir) }
|
|
124
140
|
copy_assets(tmpdir, target_dir)
|
|
125
141
|
write_manifest(tmpdir, target_dir)
|
|
126
142
|
end
|
|
127
143
|
end
|
|
128
144
|
|
|
129
|
-
#
|
|
130
|
-
#
|
|
131
|
-
def write_manifest(_tmpdir,
|
|
145
|
+
# Record opt-in provenance; libraries with file→icon mappings can
|
|
146
|
+
# override this to write their own manifest.json.
|
|
147
|
+
def write_manifest(_tmpdir, target_dir)
|
|
148
|
+
return unless self.class.provenance
|
|
149
|
+
|
|
150
|
+
manifest = self.class.provenance.merge("name" => self.class.dir, "archive" => self.class.url)
|
|
151
|
+
File.write(Pathname(target_dir).join("manifest.json"), JSON.pretty_generate(manifest))
|
|
132
152
|
end
|
|
133
153
|
|
|
134
154
|
def copy_assets(tmpdir, target_dir)
|
|
@@ -305,3 +325,7 @@ require_relative "source/iconoir"
|
|
|
305
325
|
require_relative "source/material_design_icons"
|
|
306
326
|
require_relative "source/phosphor"
|
|
307
327
|
require_relative "source/lobe_icons"
|
|
328
|
+
require_relative "source/gilbarbara_logos"
|
|
329
|
+
require_relative "source/homarr_icons"
|
|
330
|
+
require_relative "source/carbon_pictograms"
|
|
331
|
+
require_relative "source/aws_architecture_icons"
|
data/lib/unmagic/icon/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: unmagic-icon
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.4.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Keith Pitt
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-
|
|
11
|
+
date: 2026-09-30 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|
|
@@ -115,11 +115,15 @@ files:
|
|
|
115
115
|
- lib/unmagic/icon/library.rb
|
|
116
116
|
- lib/unmagic/icon/library/registry.rb
|
|
117
117
|
- lib/unmagic/icon/library/source.rb
|
|
118
|
+
- lib/unmagic/icon/library/source/aws_architecture_icons.rb
|
|
118
119
|
- lib/unmagic/icon/library/source/bootstrap_icons.rb
|
|
120
|
+
- lib/unmagic/icon/library/source/carbon_pictograms.rb
|
|
119
121
|
- lib/unmagic/icon/library/source/coloured_icons.rb
|
|
120
122
|
- lib/unmagic/icon/library/source/devicons.rb
|
|
121
123
|
- lib/unmagic/icon/library/source/feather.rb
|
|
124
|
+
- lib/unmagic/icon/library/source/gilbarbara_logos.rb
|
|
122
125
|
- lib/unmagic/icon/library/source/heroicons.rb
|
|
126
|
+
- lib/unmagic/icon/library/source/homarr_icons.rb
|
|
123
127
|
- lib/unmagic/icon/library/source/iconoir.rb
|
|
124
128
|
- lib/unmagic/icon/library/source/lobe_icons.rb
|
|
125
129
|
- lib/unmagic/icon/library/source/lucide.rb
|