mirror of
https://github.com/lucide-icons/lucide.git
synced 2025-12-17 20:27:42 +01:00
Compare commits
1897 Commits
v0.1.2
...
fix/fixed-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a8f578fa8b | ||
|
|
97f214934d | ||
|
|
34dfc63ce2 | ||
|
|
b46927e510 | ||
|
|
1828a392c8 | ||
|
|
3ab6c373a0 | ||
|
|
ba2c4b526f | ||
|
|
bde3f01e0b | ||
|
|
50630b3aaf | ||
|
|
e28426a871 | ||
|
|
eb158561d3 | ||
|
|
410ae434fa | ||
|
|
0801b89e4d | ||
|
|
a1d17eedc9 | ||
|
|
7481dd0a3f | ||
|
|
f9e93824f1 | ||
|
|
4ba4cf2f35 | ||
|
|
6b29716aa9 | ||
|
|
97bbe1d6b2 | ||
|
|
608da04bdf | ||
|
|
961404d5cc | ||
|
|
f3100b8af1 | ||
|
|
0df4e2991c | ||
|
|
2b8242fa14 | ||
|
|
27c667556b | ||
|
|
31c3fefc17 | ||
|
|
389fed8770 | ||
|
|
58c2e108c3 | ||
|
|
d5fe5a0ef4 | ||
|
|
db30ab89f4 | ||
|
|
fa7120cbe0 | ||
|
|
419d47019c | ||
|
|
655111e4aa | ||
|
|
ea0ac2f92b | ||
|
|
1a5ee439ef | ||
|
|
5947ca82d5 | ||
|
|
edf46adc9e | ||
|
|
94782f53c1 | ||
|
|
79bbfa958e | ||
|
|
970fc3d4be | ||
|
|
f12b0de177 | ||
|
|
67cbce66e9 | ||
|
|
b927275150 | ||
|
|
ea89735f67 | ||
|
|
53c61c0f48 | ||
|
|
4213367a37 | ||
|
|
bc22d17fa9 | ||
|
|
7773135308 | ||
|
|
4f740348cd | ||
|
|
ca50dd8bc8 | ||
|
|
6b19d52ab0 | ||
|
|
7fc3467761 | ||
|
|
ee575f6ae9 | ||
|
|
212b488dae | ||
|
|
4f038d5fe8 | ||
|
|
5ca6bc3385 | ||
|
|
15e4b6b69d | ||
|
|
407b55f57c | ||
|
|
6fc7297199 | ||
|
|
c21df35283 | ||
|
|
775359260c | ||
|
|
eaeef9ae37 | ||
|
|
636f966a98 | ||
|
|
1d5c725b58 | ||
|
|
d9a011994a | ||
|
|
c6c645ca7f | ||
|
|
91391eea7b | ||
|
|
49070b4d1f | ||
|
|
ae43473aa6 | ||
|
|
392bc961aa | ||
|
|
f238fe1b18 | ||
|
|
4d91fbb588 | ||
|
|
d939a7005d | ||
|
|
2c55c2ab93 | ||
|
|
cb60e31162 | ||
|
|
09cebe178d | ||
|
|
0f3fd12f16 | ||
|
|
4b0d17ad24 | ||
|
|
30fe706dd6 | ||
|
|
d6178fa471 | ||
|
|
855cb4985d | ||
|
|
9f99ea510f | ||
|
|
e2ee0c77e7 | ||
|
|
d041d5c2d2 | ||
|
|
8700418260 | ||
|
|
30077f913f | ||
|
|
bc09d5f283 | ||
|
|
88c757f540 | ||
|
|
f93beca595 | ||
|
|
b1777430b9 | ||
|
|
d30698cb38 | ||
|
|
d2f7a0931d | ||
|
|
98bbcc4b06 | ||
|
|
c253cb821b | ||
|
|
484dc38b0a | ||
|
|
11b95f883a | ||
|
|
b8cd54f1b2 | ||
|
|
98b3b6fae7 | ||
|
|
3ca465ee11 | ||
|
|
dcd19cedc9 | ||
|
|
8cea9feecc | ||
|
|
e80d98040f | ||
|
|
a1641a372b | ||
|
|
757bf0fb85 | ||
|
|
dd3aed1ecd | ||
|
|
4d98681f05 | ||
|
|
bde9e1cb6b | ||
|
|
a5e07c28bd | ||
|
|
2a68b12cbe | ||
|
|
493382b4fd | ||
|
|
6588971ead | ||
|
|
13cea45e8b | ||
|
|
5dfcfc8d1a | ||
|
|
db24b1d517 | ||
|
|
e1202b545e | ||
|
|
2e1a5cf6ea | ||
|
|
f49ecd73a5 | ||
|
|
a72cbc2d49 | ||
|
|
d4976890e5 | ||
|
|
8c8d1d3338 | ||
|
|
542507f835 | ||
|
|
c6a4908ed0 | ||
|
|
b6e71c6c7a | ||
|
|
7de43440ee | ||
|
|
c8d5260d54 | ||
|
|
0c912bd7ff | ||
|
|
3f24597a65 | ||
|
|
590d59ac5f | ||
|
|
85d427d846 | ||
|
|
478a624162 | ||
|
|
f0afdd4614 | ||
|
|
38e7431189 | ||
|
|
19dd912381 | ||
|
|
f70d5f5169 | ||
|
|
30e0d55b4a | ||
|
|
36a5a8b9ac | ||
|
|
e20e7a43ba | ||
|
|
e8ab1bc15b | ||
|
|
ef090c7dd4 | ||
|
|
65e49e2684 | ||
|
|
0ca2099113 | ||
|
|
9c99fd809c | ||
|
|
cd0d4e1f8a | ||
|
|
e1668804c9 | ||
|
|
efcede62e7 | ||
|
|
3c3f548ec1 | ||
|
|
0160bbe539 | ||
|
|
7837a04438 | ||
|
|
944e428630 | ||
|
|
aa4b1f06b4 | ||
|
|
b1087d3da0 | ||
|
|
fd8d69a129 | ||
|
|
379df75eda | ||
|
|
25707c7c47 | ||
|
|
cbb4ed985c | ||
|
|
d7d1074a60 | ||
|
|
79c2333b7f | ||
|
|
e3f78d73d8 | ||
|
|
e391973a70 | ||
|
|
5a2e3a20ee | ||
|
|
6e65118cd3 | ||
|
|
10c3662ff1 | ||
|
|
c7c6b479fc | ||
|
|
442e477a9a | ||
|
|
777166c06d | ||
|
|
8be94e7f86 | ||
|
|
07dd0bfdb1 | ||
|
|
3271972d97 | ||
|
|
915e8b5b6d | ||
|
|
6c32e47bea | ||
|
|
d4d90f0d4e | ||
|
|
3cf67355b4 | ||
|
|
66bc180c84 | ||
|
|
3c6a8c5118 | ||
|
|
8a088af570 | ||
|
|
cf5d6fc887 | ||
|
|
6052c88831 | ||
|
|
6272f4fd1f | ||
|
|
89070bfa44 | ||
|
|
4cae01a2f5 | ||
|
|
c2cc325f40 | ||
|
|
3143b24dff | ||
|
|
f0625d085e | ||
|
|
beddaa7cbb | ||
|
|
158212c130 | ||
|
|
1d5edc507d | ||
|
|
6f44a5d624 | ||
|
|
1c12bae0f5 | ||
|
|
fdcb73cb7a | ||
|
|
f2f685bd65 | ||
|
|
18d18361e8 | ||
|
|
45c3c00d1d | ||
|
|
45bc8c08da | ||
|
|
6676cdd513 | ||
|
|
eb93f112bd | ||
|
|
54a58881da | ||
|
|
568d0b2fa3 | ||
|
|
2d1be858c8 | ||
|
|
fa6ddf923f | ||
|
|
658b94e65a | ||
|
|
137ab5c885 | ||
|
|
83284d842a | ||
|
|
8993b0b174 | ||
|
|
1b2b66f1f3 | ||
|
|
0186afc0e6 | ||
|
|
36c68bd901 | ||
|
|
e8abed3fa7 | ||
|
|
b4af645560 | ||
|
|
8f65b7e6f4 | ||
|
|
3c3e3508ec | ||
|
|
01e5fd74e6 | ||
|
|
7c62c7c662 | ||
|
|
e92d5e2d40 | ||
|
|
3975020fd2 | ||
|
|
43dfe362b6 | ||
|
|
58524b25ee | ||
|
|
34805df73f | ||
|
|
7cb867782d | ||
|
|
63deb3e4f9 | ||
|
|
4dcc340301 | ||
|
|
8bd401fa8c | ||
|
|
338fc70f6d | ||
|
|
7ca1fabc12 | ||
|
|
0d2c6c457e | ||
|
|
2539470978 | ||
|
|
12b412aa87 | ||
|
|
c8b00be37e | ||
|
|
291b11fbd1 | ||
|
|
4635141dfa | ||
|
|
c761ec7b5e | ||
|
|
bbd877a3ba | ||
|
|
e830fb16e0 | ||
|
|
7625cab264 | ||
|
|
7726b7e7ff | ||
|
|
bca0eeaf09 | ||
|
|
8125a21a7e | ||
|
|
077242cfa0 | ||
|
|
ce79418c66 | ||
|
|
80350b2cb1 | ||
|
|
172f397019 | ||
|
|
a463d8a5c7 | ||
|
|
fbd5225aad | ||
|
|
acd4a879f2 | ||
|
|
e11fa135a0 | ||
|
|
f980863f6c | ||
|
|
07230a442f | ||
|
|
a34919f0af | ||
|
|
f4d451de80 | ||
|
|
1e887bc30f | ||
|
|
1442b9a35b | ||
|
|
41fd856578 | ||
|
|
621b60b19d | ||
|
|
b77e372f3e | ||
|
|
d4891a7307 | ||
|
|
199987276b | ||
|
|
5647b34594 | ||
|
|
439e463430 | ||
|
|
22921304a7 | ||
|
|
220abb1510 | ||
|
|
91ce9221e8 | ||
|
|
904d74fe4a | ||
|
|
f507644488 | ||
|
|
501b65a7a1 | ||
|
|
14862fb0dc | ||
|
|
2963369c8d | ||
|
|
1e20d5087a | ||
|
|
4b312b369f | ||
|
|
afbef743de | ||
|
|
864fdeca84 | ||
|
|
541add925c | ||
|
|
2e7df30267 | ||
|
|
0a578c8803 | ||
|
|
b227caee98 | ||
|
|
72b74fbdb4 | ||
|
|
01d36ad363 | ||
|
|
548cb9cdf5 | ||
|
|
79430da42e | ||
|
|
0620843f4c | ||
|
|
34d063302a | ||
|
|
0abc3389db | ||
|
|
ebb8ec66af | ||
|
|
f55ced97a5 | ||
|
|
8458345535 | ||
|
|
66d6c2fe4b | ||
|
|
053808685c | ||
|
|
4f2a6b70d8 | ||
|
|
d8004e471a | ||
|
|
e2b46eac8e | ||
|
|
1b3173b17b | ||
|
|
d5f4275055 | ||
|
|
6abae7cc14 | ||
|
|
f32ffcd2a2 | ||
|
|
824bb897cf | ||
|
|
2843a76e28 | ||
|
|
155ff3319a | ||
|
|
34dddb811b | ||
|
|
5fead67bf3 | ||
|
|
48dc9372db | ||
|
|
747446fc76 | ||
|
|
5862ea735e | ||
|
|
3a8a349771 | ||
|
|
70bc2245c7 | ||
|
|
89f6b6357d | ||
|
|
354af456d3 | ||
|
|
e50582e93e | ||
|
|
65deefa53c | ||
|
|
54ef137b49 | ||
|
|
d4df542117 | ||
|
|
8c1e56a7bf | ||
|
|
dff2172173 | ||
|
|
e8ccd3df7e | ||
|
|
b593355537 | ||
|
|
09420cbca5 | ||
|
|
45e82a51b8 | ||
|
|
305e282e19 | ||
|
|
ad7ae84987 | ||
|
|
df100bde73 | ||
|
|
0724851934 | ||
|
|
34cf88d209 | ||
|
|
6322d1df66 | ||
|
|
8a414b3249 | ||
|
|
58f614acca | ||
|
|
d598ad7190 | ||
|
|
439ee3f707 | ||
|
|
c2c85fbd5c | ||
|
|
59aa7bc824 | ||
|
|
0beb50ebca | ||
|
|
649b440d9d | ||
|
|
a74e8f3863 | ||
|
|
46318b1605 | ||
|
|
4bf91a3c51 | ||
|
|
3cde4f2a41 | ||
|
|
d75c7613b2 | ||
|
|
d17e81d712 | ||
|
|
3b4a19efcf | ||
|
|
94bbdb4e06 | ||
|
|
4b87cdb55f | ||
|
|
52de557ec1 | ||
|
|
642fa718f6 | ||
|
|
215f0767d7 | ||
|
|
a0befaf186 | ||
|
|
167f563f6d | ||
|
|
0ee6b84a06 | ||
|
|
9a65837e45 | ||
|
|
4c6587612a | ||
|
|
4aa36db1cb | ||
|
|
01401a3c97 | ||
|
|
d1e528fd95 | ||
|
|
5f5be9ec1e | ||
|
|
c66cda28da | ||
|
|
e565116a4a | ||
|
|
cf50c9f849 | ||
|
|
9fa47227a7 | ||
|
|
547111ed5b | ||
|
|
0d6aa9feaa | ||
|
|
3a0f2b3fa8 | ||
|
|
712e6bf6e4 | ||
|
|
58319dd447 | ||
|
|
cf89b8eeac | ||
|
|
a8c6add82b | ||
|
|
d000e4904d | ||
|
|
c99d6cbf4a | ||
|
|
0b1fb8ff1f | ||
|
|
dcde43e97e | ||
|
|
96da23cc88 | ||
|
|
78182c3573 | ||
|
|
02f8f5a1c1 | ||
|
|
16ee591f49 | ||
|
|
5378156833 | ||
|
|
7b76078792 | ||
|
|
e2af1af4f9 | ||
|
|
c9513d0bf4 | ||
|
|
6fbd5ee06a | ||
|
|
d8773827fb | ||
|
|
bc1843f767 | ||
|
|
07aefe3b88 | ||
|
|
76d449a974 | ||
|
|
dd39fa328c | ||
|
|
0cf568c38b | ||
|
|
a8b8dfc58e | ||
|
|
41dde6b574 | ||
|
|
ae35ca256c | ||
|
|
38142f24a5 | ||
|
|
b16f70993a | ||
|
|
ad1accb2e3 | ||
|
|
d255c6ac4e | ||
|
|
d67ef7b0ca | ||
|
|
198ccb8430 | ||
|
|
ce1b5bdefa | ||
|
|
45aa928369 | ||
|
|
93dc356fa1 | ||
|
|
a0aa132682 | ||
|
|
1a4dd64862 | ||
|
|
3481f70ad7 | ||
|
|
024f21e896 | ||
|
|
c30ccd472e | ||
|
|
28ec03ebc8 | ||
|
|
ab3a31367a | ||
|
|
148bae88d8 | ||
|
|
ca4a38ba85 | ||
|
|
f297765a13 | ||
|
|
4657ccbfff | ||
|
|
db222d4591 | ||
|
|
bafad1c625 | ||
|
|
7f1e95c6e7 | ||
|
|
ca7a87112c | ||
|
|
d542da0a1c | ||
|
|
6fa51d2a22 | ||
|
|
ca53b06af2 | ||
|
|
b5dc96d2c2 | ||
|
|
5e5fe0085f | ||
|
|
0c2a8d774f | ||
|
|
804906dcd8 | ||
|
|
d575743d3a | ||
|
|
42c1faed75 | ||
|
|
42b494f853 | ||
|
|
9bf8a653a3 | ||
|
|
01cff578e5 | ||
|
|
a0b1305258 | ||
|
|
0cfdfa2181 | ||
|
|
a2e8ea32d2 | ||
|
|
8a7e6ba343 | ||
|
|
7a9233f4a7 | ||
|
|
71aef25812 | ||
|
|
33189a81ac | ||
|
|
e3923f87c2 | ||
|
|
08c040a57d | ||
|
|
981c3309ce | ||
|
|
2e0af66d8a | ||
|
|
a789c91213 | ||
|
|
91c95600f3 | ||
|
|
99acf4102c | ||
|
|
86f2dc12f4 | ||
|
|
b9fdde2d09 | ||
|
|
5c494962e1 | ||
|
|
772c5be034 | ||
|
|
ee3483eb1b | ||
|
|
9182c51962 | ||
|
|
eb035fe370 | ||
|
|
b96e6acd2e | ||
|
|
7b62649c39 | ||
|
|
10aff6cf7b | ||
|
|
cfa8924025 | ||
|
|
713e9b8a09 | ||
|
|
8ab6f80e4f | ||
|
|
a5221c236a | ||
|
|
cdd32b5294 | ||
|
|
54c8d4078d | ||
|
|
3302870983 | ||
|
|
0f25ee86a0 | ||
|
|
28686b5bd5 | ||
|
|
8cc143915c | ||
|
|
06372db723 | ||
|
|
114fb08556 | ||
|
|
3bad7f6ced | ||
|
|
e450afe408 | ||
|
|
6fcfc820ca | ||
|
|
55f264bea6 | ||
|
|
675158df16 | ||
|
|
042393a931 | ||
|
|
551635003c | ||
|
|
5c7119f6d1 | ||
|
|
7bfdb2f54a | ||
|
|
e3abcdbcc6 | ||
|
|
62d350140e | ||
|
|
ad90ee7582 | ||
|
|
b0e825cb57 | ||
|
|
d4cbe899fb | ||
|
|
be3ccc8ece | ||
|
|
e56b09d400 | ||
|
|
7e936c8803 | ||
|
|
c9ffa4033f | ||
|
|
32a6187d69 | ||
|
|
2bf20db4bf | ||
|
|
4473df5ad5 | ||
|
|
bc5efd7f0d | ||
|
|
05f209cb04 | ||
|
|
ef89510a47 | ||
|
|
b72cea6399 | ||
|
|
d2152b3cdd | ||
|
|
ea43df6431 | ||
|
|
4042a366e8 | ||
|
|
5e0ba7e897 | ||
|
|
6b4f575992 | ||
|
|
92784de9c5 | ||
|
|
314ee3b255 | ||
|
|
ee7add11bf | ||
|
|
001d0a51fb | ||
|
|
fd4308e755 | ||
|
|
59893119b5 | ||
|
|
faff6a8269 | ||
|
|
3fe74beeb0 | ||
|
|
f8aafd63b9 | ||
|
|
f0422f415c | ||
|
|
14a196d89c | ||
|
|
87a89b30da | ||
|
|
3180910b23 | ||
|
|
46a4041cc7 | ||
|
|
e3166c65df | ||
|
|
d9d7e245a3 | ||
|
|
e19a9cc43a | ||
|
|
5ecfd61397 | ||
|
|
5366782da0 | ||
|
|
262f9e8865 | ||
|
|
7af26002a0 | ||
|
|
e71a776acc | ||
|
|
0a69fb9e52 | ||
|
|
3648e02992 | ||
|
|
64504da1cd | ||
|
|
e166ba4e80 | ||
|
|
1123214b13 | ||
|
|
4140ba5612 | ||
|
|
019f38281c | ||
|
|
633595d1c1 | ||
|
|
df58c3ff2f | ||
|
|
e7abba5273 | ||
|
|
2693da38d3 | ||
|
|
ab59a1ec36 | ||
|
|
315c020279 | ||
|
|
494f7953c8 | ||
|
|
a5ea3a5368 | ||
|
|
6486f76c55 | ||
|
|
e32db96f1f | ||
|
|
73f70c885a | ||
|
|
14c7ea8e13 | ||
|
|
9fc7653dc1 | ||
|
|
2b007e7962 | ||
|
|
bb1e470f3a | ||
|
|
4a1e6bbfa5 | ||
|
|
e5ee997566 | ||
|
|
27c0a136cd | ||
|
|
84b3c46b65 | ||
|
|
1a09e7fb39 | ||
|
|
75e9724072 | ||
|
|
fbaccc7d9f | ||
|
|
c24bc4d7ef | ||
|
|
5c8c8f4362 | ||
|
|
ffd2a62941 | ||
|
|
e77959e1a6 | ||
|
|
149ee36e61 | ||
|
|
88bf60b5d7 | ||
|
|
1e5df716a4 | ||
|
|
fc0ea760e5 | ||
|
|
c85275899a | ||
|
|
288edde1ea | ||
|
|
207ff6c487 | ||
|
|
a1a9a4d839 | ||
|
|
c5804ad9a5 | ||
|
|
c72fb4a28b | ||
|
|
da5ad547b5 | ||
|
|
66cfe527b3 | ||
|
|
d1866225ba | ||
|
|
372735999f | ||
|
|
f3a33346dd | ||
|
|
3373acf596 | ||
|
|
73d5bfc318 | ||
|
|
ddbc074aa3 | ||
|
|
8f4d6b1651 | ||
|
|
d8b08f8fda | ||
|
|
fddacb6260 | ||
|
|
3d0c8691c9 | ||
|
|
47998b05aa | ||
|
|
9a9e051343 | ||
|
|
6c6c8448fa | ||
|
|
49445aad3a | ||
|
|
70656eb4f0 | ||
|
|
930f862547 | ||
|
|
931b7f5376 | ||
|
|
81e44bdc40 | ||
|
|
e6e90944b9 | ||
|
|
f6fd369bfe | ||
|
|
bbf183fe48 | ||
|
|
4f5642b872 | ||
|
|
1dce6a141a | ||
|
|
dbfce919fc | ||
|
|
52adb78df8 | ||
|
|
c5cfbed28c | ||
|
|
1e4fd13852 | ||
|
|
0a0fd1cf6c | ||
|
|
487d03fc4d | ||
|
|
950160ad5a | ||
|
|
b6f5898aee | ||
|
|
a9c1dca801 | ||
|
|
c05c7e333f | ||
|
|
dff42fe326 | ||
|
|
c1f642e20f | ||
|
|
cf9565b69c | ||
|
|
4cc4468d2f | ||
|
|
fd9ab8f17a | ||
|
|
c9101f0f39 | ||
|
|
614ef1a1d5 | ||
|
|
1a441812ac | ||
|
|
4a33e90c65 | ||
|
|
062a64a078 | ||
|
|
95a1ea7255 | ||
|
|
a0a5bc8fc2 | ||
|
|
698eded89b | ||
|
|
a70b713572 | ||
|
|
34530ad805 | ||
|
|
f73aed151a | ||
|
|
2bd7748562 | ||
|
|
da8a6c5a1b | ||
|
|
5736028dfa | ||
|
|
45d2063340 | ||
|
|
f71d3ffd1d | ||
|
|
b8c3a5fa0b | ||
|
|
a4076db69b | ||
|
|
55cb681461 | ||
|
|
09d9bb747d | ||
|
|
42f9cdceca | ||
|
|
c652723b32 | ||
|
|
a44328d8be | ||
|
|
376568239f | ||
|
|
92d05b5fca | ||
|
|
27b5b7eaad | ||
|
|
4de1355e54 | ||
|
|
c8d94bf3e1 | ||
|
|
a128d1c3c1 | ||
|
|
e145cb05e2 | ||
|
|
759ff562fd | ||
|
|
ae2899a09e | ||
|
|
8b7ea73aa3 | ||
|
|
1bdeae5364 | ||
|
|
0e307087f6 | ||
|
|
a46114b3e7 | ||
|
|
fcafe0e7b7 | ||
|
|
5312982b8f | ||
|
|
3a13fab009 | ||
|
|
30a69ee670 | ||
|
|
5f442122ab | ||
|
|
e78d910a83 | ||
|
|
ccc8dc2b34 | ||
|
|
96bcca0e08 | ||
|
|
d95b14a70b | ||
|
|
a852a43ef4 | ||
|
|
4953a95e36 | ||
|
|
cad1b95b69 | ||
|
|
92f3fb0f90 | ||
|
|
6e8895d075 | ||
|
|
a1b2ce5b7b | ||
|
|
4a54e87e84 | ||
|
|
d8bdbff9c6 | ||
|
|
70cffa8dd2 | ||
|
|
8cff59627b | ||
|
|
b684a0083b | ||
|
|
9fb4b0b161 | ||
|
|
9ec40ae506 | ||
|
|
890514de6c | ||
|
|
9463b2e445 | ||
|
|
0221022e24 | ||
|
|
751f7cb1e3 | ||
|
|
4c90b84236 | ||
|
|
01be733532 | ||
|
|
4ffa38e013 | ||
|
|
0a38dccdae | ||
|
|
3391b5b717 | ||
|
|
5c145f4e72 | ||
|
|
74429a8e92 | ||
|
|
1e99499dc8 | ||
|
|
724a43e3f0 | ||
|
|
fb79059fca | ||
|
|
9a54838538 | ||
|
|
c7438c0c10 | ||
|
|
667ae303f8 | ||
|
|
dc1d17181f | ||
|
|
26abdb904d | ||
|
|
cf0264745e | ||
|
|
510a5ec3b9 | ||
|
|
e1bc19be4e | ||
|
|
062894e113 | ||
|
|
eaa99b35f6 | ||
|
|
7c22ccfab4 | ||
|
|
e0e171db81 | ||
|
|
3b11552e5e | ||
|
|
d8b455b614 | ||
|
|
79eecc89f6 | ||
|
|
b943430a08 | ||
|
|
cebb0ee84b | ||
|
|
210c56807e | ||
|
|
c2a8f31176 | ||
|
|
a3f70d5b8b | ||
|
|
c97c6ed9e4 | ||
|
|
e9d69c6948 | ||
|
|
270c935cd4 | ||
|
|
b7377d21eb | ||
|
|
7ccf155ad4 | ||
|
|
c696d1e907 | ||
|
|
a8cf24e75a | ||
|
|
4e2773bd2d | ||
|
|
7c8f898893 | ||
|
|
c3951d36c7 | ||
|
|
f958310d91 | ||
|
|
d00cbebcc4 | ||
|
|
3619dfa7f2 | ||
|
|
c844bc668f | ||
|
|
32dec05e0b | ||
|
|
5394d7fceb | ||
|
|
8dea4c7b7f | ||
|
|
b8a595275d | ||
|
|
a7b3ecde63 | ||
|
|
8bcfc225ce | ||
|
|
1d608db223 | ||
|
|
c1cb5d9bc2 | ||
|
|
66f51474cd | ||
|
|
af0b16bc10 | ||
|
|
46d6c3c119 | ||
|
|
d3b8510602 | ||
|
|
97e0f30627 | ||
|
|
24676ddc8e | ||
|
|
92689a3328 | ||
|
|
b578269ecb | ||
|
|
d041a2b02a | ||
|
|
0253326b17 | ||
|
|
275c2cbc69 | ||
|
|
4bd6a273db | ||
|
|
34155d48e7 | ||
|
|
82db590192 | ||
|
|
70be55b78f | ||
|
|
7163aeaa6b | ||
|
|
99cd76bb35 | ||
|
|
f5fb1ec263 | ||
|
|
6916aebee4 | ||
|
|
65d213264f | ||
|
|
ee77147aff | ||
|
|
3b7b74fe86 | ||
|
|
3a2f052ce9 | ||
|
|
cf34d61971 | ||
|
|
2814a63b8f | ||
|
|
4bcab462dc | ||
|
|
6c93bb97c7 | ||
|
|
3c1993c463 | ||
|
|
7a57c306c3 | ||
|
|
32637199f5 | ||
|
|
e490bc35b8 | ||
|
|
496058cc15 | ||
|
|
4ee46673af | ||
|
|
5a46f4b87c | ||
|
|
875e8a2d06 | ||
|
|
e006a171c1 | ||
|
|
606706e8e0 | ||
|
|
ffc03ea1f6 | ||
|
|
b2e685262b | ||
|
|
5bfc736b61 | ||
|
|
2ebf99f591 | ||
|
|
7a17a2f343 | ||
|
|
4b5d343791 | ||
|
|
b19b01d323 | ||
|
|
d2dc5bf75f | ||
|
|
9b93200567 | ||
|
|
a878596572 | ||
|
|
9d50c05937 | ||
|
|
6196c261d3 | ||
|
|
85cec0dea1 | ||
|
|
07039b7619 | ||
|
|
cf05bd766f | ||
|
|
f05855d1d1 | ||
|
|
6f39d3743a | ||
|
|
7ed206af4a | ||
|
|
95daa7c313 | ||
|
|
17ecb92946 | ||
|
|
9ef9921f04 | ||
|
|
ac08bb92c1 | ||
|
|
53109037ec | ||
|
|
66de90d63e | ||
|
|
f3c7e44a3d | ||
|
|
3823993c39 | ||
|
|
36c53f956a | ||
|
|
58c652908a | ||
|
|
f4d887339e | ||
|
|
bde11234ea | ||
|
|
3449097f77 | ||
|
|
aec41eae39 | ||
|
|
3da3cbc63f | ||
|
|
3fc3122054 | ||
|
|
871de752e7 | ||
|
|
25d7b55459 | ||
|
|
4d8a8091b6 | ||
|
|
a17c1aafbd | ||
|
|
d1d6eec36e | ||
|
|
abec311bc9 | ||
|
|
3df9be04a8 | ||
|
|
016c9d1fac | ||
|
|
17f9509f71 | ||
|
|
b6c7434e92 | ||
|
|
47aa3c2664 | ||
|
|
e50b03f316 | ||
|
|
0065b5952b | ||
|
|
b35b586eda | ||
|
|
8b57fab71b | ||
|
|
badd34374d | ||
|
|
902431199c | ||
|
|
bdbb4834b0 | ||
|
|
07fc4da6fa | ||
|
|
e1815242cf | ||
|
|
d104ad5c8a | ||
|
|
69989c5ae5 | ||
|
|
9e996ef63c | ||
|
|
6ec9cc3dcf | ||
|
|
01fa96ced3 | ||
|
|
481b27cc49 | ||
|
|
c5df7e73c6 | ||
|
|
428088436d | ||
|
|
eec2c97595 | ||
|
|
f0529b9ef7 | ||
|
|
0c216b41c5 | ||
|
|
ac892e5476 | ||
|
|
38f62a571c | ||
|
|
507750d0a7 | ||
|
|
33a0ed9539 | ||
|
|
37cb860ebe | ||
|
|
bd74ac880e | ||
|
|
e81b76f445 | ||
|
|
c50c0e435b | ||
|
|
afd2db296c | ||
|
|
175b2cd483 | ||
|
|
716c5baea0 | ||
|
|
890474889a | ||
|
|
e596cd2bad | ||
|
|
d4641a4641 | ||
|
|
3e3409cee2 | ||
|
|
477f2b2aff | ||
|
|
000ff56278 | ||
|
|
7117220943 | ||
|
|
f820da257d | ||
|
|
de629f0fcc | ||
|
|
8f7e9b3cde | ||
|
|
4e79f147cf | ||
|
|
3482cd0949 | ||
|
|
701f2a1a41 | ||
|
|
79f5c6e584 | ||
|
|
02fddd3aac | ||
|
|
7816ed88f6 | ||
|
|
9c2d57b0dc | ||
|
|
6d9a0c3d63 | ||
|
|
6f647c58bf | ||
|
|
41375d5b05 | ||
|
|
11ce2b6ff3 | ||
|
|
cc7881e759 | ||
|
|
bf530d39d3 | ||
|
|
71e8df6354 | ||
|
|
cafd2a838b | ||
|
|
e16f368502 | ||
|
|
d38509a03d | ||
|
|
6550e22874 | ||
|
|
22193420c7 | ||
|
|
70827d4571 | ||
|
|
7d980f6cc1 | ||
|
|
67131489c8 | ||
|
|
ebf03a5434 | ||
|
|
8fda42c719 | ||
|
|
b17627b82d | ||
|
|
84ec1620a8 | ||
|
|
a87ae2a92b | ||
|
|
f35f45c7b3 | ||
|
|
c9a418dfc4 | ||
|
|
70be608a58 | ||
|
|
db311ab023 | ||
|
|
cac81636fb | ||
|
|
4b225a2e80 | ||
|
|
8aac1c7ba6 | ||
|
|
d513a2b9df | ||
|
|
204a418643 | ||
|
|
36039d8bdc | ||
|
|
49bd49b843 | ||
|
|
4679ff791d | ||
|
|
bfab755958 | ||
|
|
63aa17a001 | ||
|
|
db6194369d | ||
|
|
29c952fdaf | ||
|
|
637e285c52 | ||
|
|
d6ee5d963c | ||
|
|
97d02ec6e5 | ||
|
|
f5be205fc9 | ||
|
|
f2e0da9bb1 | ||
|
|
2ca852fc7d | ||
|
|
a64215bb25 | ||
|
|
6d975609c4 | ||
|
|
13b9c1fadb | ||
|
|
dcf396f1e3 | ||
|
|
debf9b77c1 | ||
|
|
d30f3fe0c5 | ||
|
|
7d0f9996e6 | ||
|
|
c263c8baee | ||
|
|
c61207c0ac | ||
|
|
ec5327b870 | ||
|
|
61d3c6f452 | ||
|
|
d777895135 | ||
|
|
846a74ef50 | ||
|
|
3901a12d78 | ||
|
|
f9c49d9973 | ||
|
|
08b04f84b7 | ||
|
|
f3a97ed59e | ||
|
|
01663fb90b | ||
|
|
97aec42fb2 | ||
|
|
05eaf17ef9 | ||
|
|
e4d3a74434 | ||
|
|
de6b172e0a | ||
|
|
348628329d | ||
|
|
38d5093b1d | ||
|
|
3014d0aa32 | ||
|
|
a418010baa | ||
|
|
329d75a2c1 | ||
|
|
2482416aef | ||
|
|
11d7b48d70 | ||
|
|
5cbf9363cf | ||
|
|
92531a8a86 | ||
|
|
c67655d402 | ||
|
|
edc614bf43 | ||
|
|
ded24ab61f | ||
|
|
b626e91d7c | ||
|
|
a68ea8c33e | ||
|
|
4fd815a46c | ||
|
|
0e180515a3 | ||
|
|
5dbae5df45 | ||
|
|
bcad75bddd | ||
|
|
78a0640832 | ||
|
|
05ea32948c | ||
|
|
2e11931d2b | ||
|
|
689b3e1d83 | ||
|
|
8ec672bd86 | ||
|
|
c096bf2325 | ||
|
|
a796cb105d | ||
|
|
e4ac2cc4e9 | ||
|
|
2ee208652f | ||
|
|
d0826259d1 | ||
|
|
3acbfb428b | ||
|
|
250bd20199 | ||
|
|
221e213292 | ||
|
|
1e48aecbfe | ||
|
|
7a6dc5b2f7 | ||
|
|
7f6999fee7 | ||
|
|
08c1bc68da | ||
|
|
930260aab5 | ||
|
|
96473f7f7d | ||
|
|
f620c85e3b | ||
|
|
f4a8f3d0d8 | ||
|
|
36725eeed9 | ||
|
|
ee7ee203e6 | ||
|
|
7a26dddbcb | ||
|
|
408c683a13 | ||
|
|
546cf61a2e | ||
|
|
a7496aa454 | ||
|
|
93cfd3d27d | ||
|
|
76ce22ef14 | ||
|
|
873997b48e | ||
|
|
03276eee9d | ||
|
|
cf5aa0534b | ||
|
|
cccf89e7bb | ||
|
|
2d4676160b | ||
|
|
6346d80ee7 | ||
|
|
e983ccf974 | ||
|
|
f0fe196872 | ||
|
|
85eaa5fc50 | ||
|
|
6a7732077a | ||
|
|
c1c0f99d65 | ||
|
|
ee2bfaff0d | ||
|
|
9370449d7e | ||
|
|
244a5a396e | ||
|
|
2396a53bad | ||
|
|
07a78731a5 | ||
|
|
4e2449dc9f | ||
|
|
f02067ea55 | ||
|
|
57a72cbb38 | ||
|
|
0baf1a49ef | ||
|
|
0879262bdb | ||
|
|
9a41d931e9 | ||
|
|
7c111a53e1 | ||
|
|
7209ed3fcd | ||
|
|
e85dffa9b4 | ||
|
|
0c3d6cd097 | ||
|
|
72c25a9936 | ||
|
|
5226c326f8 | ||
|
|
de2e3036c0 | ||
|
|
8adeb025a6 | ||
|
|
22ffb58649 | ||
|
|
278309fe55 | ||
|
|
bcbae1e406 | ||
|
|
1173134099 | ||
|
|
894993478f | ||
|
|
36f84a74f6 | ||
|
|
1479a9dbd8 | ||
|
|
2485f6117a | ||
|
|
0bbaaa8abd | ||
|
|
a82af02687 | ||
|
|
a5be1b4101 | ||
|
|
639c0e8d85 | ||
|
|
b863445492 | ||
|
|
8c4a41035b | ||
|
|
4a55ae4b91 | ||
|
|
30f683a192 | ||
|
|
25e0aaf33c | ||
|
|
3cd84c8adf | ||
|
|
096ce92866 | ||
|
|
57abe654b1 | ||
|
|
852da97d46 | ||
|
|
ba86ca5ef0 | ||
|
|
f2e325264f | ||
|
|
de366a1cb0 | ||
|
|
5f5cec5b58 | ||
|
|
2ccd5b7422 | ||
|
|
e38137822d | ||
|
|
a9fef9f6b0 | ||
|
|
f646d84559 | ||
|
|
6f6ffa2478 | ||
|
|
76326cb289 | ||
|
|
13a3f565b6 | ||
|
|
b0f2e084d8 | ||
|
|
fc78d27cc3 | ||
|
|
9b0d0edb61 | ||
|
|
6a5f8d3755 | ||
|
|
35c96ab61f | ||
|
|
8fd8007c96 | ||
|
|
621cf6b290 | ||
|
|
a5ce1df506 | ||
|
|
c784dd09c7 | ||
|
|
0f11acdd7f | ||
|
|
2149645895 | ||
|
|
fa6ed02297 | ||
|
|
4a2c6ed8b0 | ||
|
|
f67dfab128 | ||
|
|
c3b9cff578 | ||
|
|
9ba4f8c359 | ||
|
|
dd5a5b16f6 | ||
|
|
a1f9a95322 | ||
|
|
7572d2d6c8 | ||
|
|
58370d63dc | ||
|
|
6552a4cca1 | ||
|
|
dace5a9f9c | ||
|
|
90f32d38a2 | ||
|
|
619b7040da | ||
|
|
b75aee4df3 | ||
|
|
0c93e7bcb4 | ||
|
|
538dad2d30 | ||
|
|
797fa5c431 | ||
|
|
8ccbb8f2e3 | ||
|
|
b77ce99363 | ||
|
|
c7f73611ca | ||
|
|
2a1178b8a3 | ||
|
|
55ae908018 | ||
|
|
04ada85c0f | ||
|
|
17ccaeea75 | ||
|
|
1cdcfd6403 | ||
|
|
810cd84876 | ||
|
|
ca471899c1 | ||
|
|
b40edf1f3c | ||
|
|
32c339cabd | ||
|
|
3529cd3f4d | ||
|
|
a4d568f26e | ||
|
|
9e524fd557 | ||
|
|
b5c71c4fc3 | ||
|
|
aa8861a2cd | ||
|
|
a41918a81e | ||
|
|
33be2c2430 | ||
|
|
eb706417e6 | ||
|
|
01e11a61f8 | ||
|
|
b323bbd28e | ||
|
|
514e88bbf9 | ||
|
|
de6ed26152 | ||
|
|
b8cc9ea3c8 | ||
|
|
cc2ac8bfcd | ||
|
|
0e340a2679 | ||
|
|
c15e3914a6 | ||
|
|
ff81fbfd9a | ||
|
|
5317abb867 | ||
|
|
ac80b9e58f | ||
|
|
a25f139953 | ||
|
|
b457c8dea1 | ||
|
|
2e24567f8e | ||
|
|
9b90bc4d51 | ||
|
|
6fd0380e19 | ||
|
|
603ee05674 | ||
|
|
be15f5e54b | ||
|
|
ea409105ce | ||
|
|
969254d986 | ||
|
|
200cc17ef6 | ||
|
|
893119b064 | ||
|
|
3e10988978 | ||
|
|
53a764fc5b | ||
|
|
4cc195092f | ||
|
|
b7ef305b9f | ||
|
|
52896efc94 | ||
|
|
2c0448a19a | ||
|
|
aa524c65a0 | ||
|
|
609ca31815 | ||
|
|
8fc34bfe1b | ||
|
|
48fa902b1c | ||
|
|
cdd57e6610 | ||
|
|
1f5119785b | ||
|
|
90a3f6e1dd | ||
|
|
4ae4eae53d | ||
|
|
e99228c65d | ||
|
|
34249ff42c | ||
|
|
f9d37968d6 | ||
|
|
864b71822b | ||
|
|
bc3bd1267a | ||
|
|
5d22d8e456 | ||
|
|
db98602331 | ||
|
|
4eca473cd4 | ||
|
|
e6eedee22d | ||
|
|
a8174a34b5 | ||
|
|
3196af66ce | ||
|
|
dd593e3dc3 | ||
|
|
d4fe0470ae | ||
|
|
318c024589 | ||
|
|
bd8b669666 | ||
|
|
89baeeeb63 | ||
|
|
9fbec87eb0 | ||
|
|
a9a441b6de | ||
|
|
40b11ec1fc | ||
|
|
96e7120d12 | ||
|
|
2c14f71c3f | ||
|
|
5a7b2987b2 | ||
|
|
39075bf6b2 | ||
|
|
edac79f9bb | ||
|
|
b6335630e1 | ||
|
|
e6da75ea8f | ||
|
|
6d6dee1731 | ||
|
|
03630e045d | ||
|
|
67d77d448b | ||
|
|
3e41173f32 | ||
|
|
ead5a81916 | ||
|
|
3d92eb3833 | ||
|
|
8b88ddf07e | ||
|
|
fb03374041 | ||
|
|
1eee03451a | ||
|
|
337d005c78 | ||
|
|
612729a897 | ||
|
|
35cbb8826e | ||
|
|
deaeefd247 | ||
|
|
1f32d59aaf | ||
|
|
ec102a252d | ||
|
|
6d60416009 | ||
|
|
942b263f5f | ||
|
|
a006513cec | ||
|
|
7239068656 | ||
|
|
46a30e07d7 | ||
|
|
57b228d9ee | ||
|
|
7c301aa7ca | ||
|
|
9d051a136a | ||
|
|
0b4d644a50 | ||
|
|
30e8ddeb67 | ||
|
|
5d1e9a881f | ||
|
|
780a329ff1 | ||
|
|
a068aa5d20 | ||
|
|
4380a06b7e | ||
|
|
b1c1e5b89a | ||
|
|
5c12ae27d7 | ||
|
|
7807965690 | ||
|
|
67f57816fa | ||
|
|
6a56f15cc5 | ||
|
|
09bb62f0eb | ||
|
|
5fa96931f2 | ||
|
|
2f6ee9f829 | ||
|
|
74f83c02fe | ||
|
|
36bd4fae8e | ||
|
|
ed2bdbe230 | ||
|
|
c9b192e332 | ||
|
|
3a6213482f | ||
|
|
9984bbd720 | ||
|
|
161ac5e1ff | ||
|
|
2fd9cab348 | ||
|
|
3addad96d2 | ||
|
|
18a0cfa452 | ||
|
|
c5d6586b41 | ||
|
|
5e23631eeb | ||
|
|
692faadd91 | ||
|
|
89a8274246 | ||
|
|
d45dee8b35 | ||
|
|
7f3e6d217d | ||
|
|
cf126d6139 | ||
|
|
b12c2e4b8d | ||
|
|
f0c205fe0b | ||
|
|
e5da8c0ad2 | ||
|
|
92b543120b | ||
|
|
75111d37c6 | ||
|
|
d18001735f | ||
|
|
55f471756c | ||
|
|
825e496c9c | ||
|
|
26987c6eda | ||
|
|
bf8db289a3 | ||
|
|
0cd0d339e8 | ||
|
|
ea5fbd00e0 | ||
|
|
d85baa6036 | ||
|
|
b6d97fe354 | ||
|
|
cde08ff4ce | ||
|
|
e2f8bcdb6f | ||
|
|
077f950e13 | ||
|
|
c96c8e5872 | ||
|
|
5ef271ada8 | ||
|
|
ecf61d304a | ||
|
|
8053cca0ed | ||
|
|
50b13edbc0 | ||
|
|
e829ffda41 | ||
|
|
d7a234f7c2 | ||
|
|
c21885111e | ||
|
|
129765ea02 | ||
|
|
63b497d006 | ||
|
|
20f0a34cef | ||
|
|
8b6525ddc5 | ||
|
|
bf02948ab8 | ||
|
|
73d7b33d1d | ||
|
|
e50b0e86f4 | ||
|
|
50f0eaec4b | ||
|
|
dbe35c4f69 | ||
|
|
c3056b9ce6 | ||
|
|
60ea5fa82a | ||
|
|
0d3390e520 | ||
|
|
e8e42d9827 | ||
|
|
b016ea08f8 | ||
|
|
8e041c3c17 | ||
|
|
e3d2525994 | ||
|
|
e12a8dd4a8 | ||
|
|
7194cfe3ff | ||
|
|
fa04885513 | ||
|
|
51208c0cec | ||
|
|
d87bffc684 | ||
|
|
2f0d587ef0 | ||
|
|
3082858b54 | ||
|
|
b184f46bf9 | ||
|
|
b82cbbd72c | ||
|
|
554707273f | ||
|
|
e846b725f6 | ||
|
|
b924c0a70b | ||
|
|
0d6e89332e | ||
|
|
6ecf908ded | ||
|
|
5a525f21cc | ||
|
|
f623ac6362 | ||
|
|
b92dd457de | ||
|
|
e3644e1419 | ||
|
|
2f29818018 | ||
|
|
7a533afc1c | ||
|
|
84e09058b2 | ||
|
|
7f783e4370 | ||
|
|
1c181c50fc | ||
|
|
0e8b6d8478 | ||
|
|
8e08185318 | ||
|
|
6c1903d0b9 | ||
|
|
89c4771137 | ||
|
|
d1c8f2716b | ||
|
|
b78e0f328f | ||
|
|
ee1fd46fa6 | ||
|
|
01387c0dde | ||
|
|
2359ebcf7d | ||
|
|
1ebf50a848 | ||
|
|
de27e452e6 | ||
|
|
366efe3e82 | ||
|
|
acaedb41c1 | ||
|
|
78d3274b5b | ||
|
|
812cdb8f4a | ||
|
|
3e4bde1d39 | ||
|
|
0500d18d09 | ||
|
|
38c834bcda | ||
|
|
f3a1bba31d | ||
|
|
ea82684178 | ||
|
|
7e3d6a8121 | ||
|
|
2c35468403 | ||
|
|
96aec6562a | ||
|
|
aa8b23b12a | ||
|
|
0d87ec28eb | ||
|
|
f8192b0999 | ||
|
|
ef7b4fe014 | ||
|
|
a104a1f206 | ||
|
|
6706ade47c | ||
|
|
fcc5dd70ad | ||
|
|
c9b9c93034 | ||
|
|
bd4e464048 | ||
|
|
ad5b2e5ae2 | ||
|
|
164854c636 | ||
|
|
794d3c09fb | ||
|
|
202c4c0ae2 | ||
|
|
6041311718 | ||
|
|
9d8815b267 | ||
|
|
01cd881bc4 | ||
|
|
9faa1a476e | ||
|
|
291d9b2efa | ||
|
|
a7e88a71ca | ||
|
|
25b80e2bb8 | ||
|
|
92266bfd9b | ||
|
|
591c5a22c4 | ||
|
|
94eee9dfac | ||
|
|
efc0ab7d07 | ||
|
|
d7d90de791 | ||
|
|
2d1214fc37 | ||
|
|
60388751b7 | ||
|
|
535c0dcac3 | ||
|
|
368907c24a | ||
|
|
368ca3c82e | ||
|
|
24f69e92da | ||
|
|
8c02350f19 | ||
|
|
1b5a71910c | ||
|
|
d528fb728a | ||
|
|
4dc6ca0103 | ||
|
|
11417dd538 | ||
|
|
ca021275c4 | ||
|
|
97f04f4b70 | ||
|
|
b2d8ec6249 | ||
|
|
a4ac4a0ecc | ||
|
|
e6b3d3ba51 | ||
|
|
301941e4f0 | ||
|
|
44532cddc8 | ||
|
|
016f14190b | ||
|
|
4d45a81228 | ||
|
|
c9ca71da0c | ||
|
|
765d424a2c | ||
|
|
3c9f704ddd | ||
|
|
3d6146bb0e | ||
|
|
e6bb8ea92c | ||
|
|
551b68db1b | ||
|
|
952c928d82 | ||
|
|
e8cfd12bc7 | ||
|
|
0b3d4ea84c | ||
|
|
fbe730c4ee | ||
|
|
f353c9363a | ||
|
|
6fcc9fc0ed | ||
|
|
bc5644253d | ||
|
|
f6bd40b1b4 | ||
|
|
23987e920f | ||
|
|
79acf77aac | ||
|
|
7baf9acffa | ||
|
|
c6736ecd7e | ||
|
|
4ada7d0d35 | ||
|
|
d99ee34c2e | ||
|
|
3c3de0f067 | ||
|
|
2997a15b05 | ||
|
|
53d7b772ef | ||
|
|
c73fbb6159 | ||
|
|
48986a0def | ||
|
|
cbe212c99f | ||
|
|
165505f2aa | ||
|
|
79a5560240 | ||
|
|
4cf5970841 | ||
|
|
deed0e4114 | ||
|
|
32cf954805 | ||
|
|
a92cba8dc5 | ||
|
|
2d35cd8997 | ||
|
|
56437cd615 | ||
|
|
08f1b51073 | ||
|
|
304a801e98 | ||
|
|
034ec2cc92 | ||
|
|
843a394b85 | ||
|
|
a331ce31a2 | ||
|
|
00a62dc066 | ||
|
|
1deb4350f3 | ||
|
|
0d0e3181cf | ||
|
|
cfd7d8a871 | ||
|
|
9c0718a5ae | ||
|
|
47a3c62ff0 | ||
|
|
66d699dbe9 | ||
|
|
e7c4542aaf | ||
|
|
7ca40f417a | ||
|
|
e2444337a0 | ||
|
|
f68aefeeb2 | ||
|
|
4c4f3f4eef | ||
|
|
5ccadc68f4 | ||
|
|
15a927847b | ||
|
|
ed619f0dff | ||
|
|
2502207a1e | ||
|
|
a17c37e389 | ||
|
|
c98bc38356 | ||
|
|
49835d7157 | ||
|
|
a01a435290 | ||
|
|
45e1196a63 | ||
|
|
3716104876 | ||
|
|
4c40e5871e | ||
|
|
78421d1440 | ||
|
|
98b28c0075 | ||
|
|
ac78fa2444 | ||
|
|
e80a155816 | ||
|
|
13499f1418 | ||
|
|
598b778be2 | ||
|
|
fe09c4f503 | ||
|
|
1eb36f4f54 | ||
|
|
ef39cbb199 | ||
|
|
43a35e9249 | ||
|
|
1cd90dd680 | ||
|
|
90f59986ee | ||
|
|
97e68022bc | ||
|
|
874b91ef6d | ||
|
|
7cc0446351 | ||
|
|
4ededadca4 | ||
|
|
83c1aba563 | ||
|
|
a8d007a56e | ||
|
|
c4a062da2d | ||
|
|
ca1f8703e3 | ||
|
|
f964dff64d | ||
|
|
7f03a8195a | ||
|
|
242121228d | ||
|
|
34d2b8070b | ||
|
|
24189da574 | ||
|
|
d6f65516ad | ||
|
|
082c7b07c9 | ||
|
|
b73a5bbd4e | ||
|
|
c9524f205a | ||
|
|
9cecb243ff | ||
|
|
856611dbef | ||
|
|
1b7c538cec | ||
|
|
8c34f2d19d | ||
|
|
aed55c543b | ||
|
|
6081297a8c | ||
|
|
a7fb6c344f | ||
|
|
afe378e304 | ||
|
|
839c43c97f | ||
|
|
cff78e7695 | ||
|
|
747d98c78d | ||
|
|
cefd68bbb3 | ||
|
|
3e15f5664f | ||
|
|
0afcf64a58 | ||
|
|
a191bb30ce | ||
|
|
2caf283dfb | ||
|
|
fe58ecd8a6 | ||
|
|
7feae88601 | ||
|
|
3ceae5eec3 | ||
|
|
e2963757e6 | ||
|
|
2af58f4fdf | ||
|
|
1d43c18bf6 | ||
|
|
213990024b | ||
|
|
252962062b | ||
|
|
211b42a416 | ||
|
|
ac9bbcfe83 | ||
|
|
ab68e8acb1 | ||
|
|
3def95875a | ||
|
|
3774bec265 | ||
|
|
5d35573d89 | ||
|
|
6b79185cc6 | ||
|
|
58c0e3f16f | ||
|
|
74605eef8a | ||
|
|
833533ea5a | ||
|
|
e98a9b0e9b | ||
|
|
3756ab98ef | ||
|
|
6899f2f072 | ||
|
|
a03aa9c58f | ||
|
|
bbd554dd51 | ||
|
|
27137d8c7c | ||
|
|
5bba16f432 | ||
|
|
bb4f05e6c5 | ||
|
|
6c31ab914a | ||
|
|
f591c86aba | ||
|
|
8cab99a2ee | ||
|
|
ac25cdca38 | ||
|
|
dca5f0f5a6 | ||
|
|
dc988cdf45 | ||
|
|
326267521d | ||
|
|
e6253d2455 | ||
|
|
fa55b04fa0 | ||
|
|
eded6e0db2 | ||
|
|
1f9a3b6a8d | ||
|
|
ee3f9bf92d | ||
|
|
11631bf008 | ||
|
|
46da57d763 | ||
|
|
ce6935405d | ||
|
|
a12d15cde1 | ||
|
|
cbc058012e | ||
|
|
c630032d40 | ||
|
|
a7f2285e7d | ||
|
|
9d706ffc75 | ||
|
|
748c8d2f4e | ||
|
|
f8e8f46085 | ||
|
|
7964a535b2 | ||
|
|
0e35ba400c | ||
|
|
f920d52e08 | ||
|
|
ebe64a6c7f | ||
|
|
2672c011e5 | ||
|
|
63052c9d9e | ||
|
|
e27d114c6e | ||
|
|
1404dbed83 | ||
|
|
4c868c92e5 | ||
|
|
4cdb9f8b94 | ||
|
|
4ff430e49d | ||
|
|
4e949b38e9 | ||
|
|
c48679cc1a | ||
|
|
6f7c94efa5 | ||
|
|
24edd8cd6e | ||
|
|
3e61ee5832 | ||
|
|
38b14425a0 | ||
|
|
87a18985f1 | ||
|
|
6e5af5fb49 | ||
|
|
6b90ff364c | ||
|
|
96989ea74c | ||
|
|
90914f53e1 | ||
|
|
a98692b37c | ||
|
|
a843cf6d6b | ||
|
|
72736a6879 | ||
|
|
296bb35317 | ||
|
|
7adecdc5df | ||
|
|
23259c9e3f | ||
|
|
5770517a71 | ||
|
|
601b7ad1fc | ||
|
|
e79d778606 | ||
|
|
04dad48bc5 | ||
|
|
dd9c48196d | ||
|
|
db9cd7af52 | ||
|
|
893dc9e0e8 | ||
|
|
b172f4316e | ||
|
|
60e42bd350 | ||
|
|
272e33d320 | ||
|
|
0af9969e53 | ||
|
|
afbe6576d6 | ||
|
|
a61276c72e | ||
|
|
e43c2a7f23 | ||
|
|
06fe7d6a3f | ||
|
|
81ff3fc1d1 | ||
|
|
776ef4f43c | ||
|
|
e4edabddb9 | ||
|
|
028afec837 | ||
|
|
049c4cd61e | ||
|
|
b13a7bf1ab | ||
|
|
e278f27a61 | ||
|
|
f70a0e1945 | ||
|
|
26f85a75d2 | ||
|
|
da7c09f66e | ||
|
|
f5175bd4b2 | ||
|
|
cb7da732fe | ||
|
|
2200ab47d3 | ||
|
|
c537469638 | ||
|
|
f09836cc84 | ||
|
|
eaf51b2da4 | ||
|
|
66b3574d64 | ||
|
|
435d2bd66b | ||
|
|
ca330378d0 | ||
|
|
aa7efeacc4 | ||
|
|
0febdd831f | ||
|
|
99d5d7a6da | ||
|
|
533b820e32 | ||
|
|
cd7b9bf03d | ||
|
|
c97b456bce | ||
|
|
9a04665ad2 | ||
|
|
2d5a5fd90a | ||
|
|
7ed8092d8a | ||
|
|
7128fc608e | ||
|
|
b470bc691c | ||
|
|
d67626a6e1 | ||
|
|
10b146a358 | ||
|
|
641bf8a933 | ||
|
|
f0f168376a | ||
|
|
34594af2bd | ||
|
|
e686494545 | ||
|
|
6eb0acac4e | ||
|
|
8b0cf96c69 | ||
|
|
48376a2621 | ||
|
|
2c580552b4 | ||
|
|
95a625dcd4 | ||
|
|
3af8508c46 | ||
|
|
609fd065da | ||
|
|
b4afb9c8da | ||
|
|
3292edab39 | ||
|
|
754300465a | ||
|
|
5834504dd9 | ||
|
|
29a7763ce2 | ||
|
|
f19e0696ce | ||
|
|
872adfa333 | ||
|
|
428460ea46 | ||
|
|
96da221758 | ||
|
|
0cf7c22379 | ||
|
|
f78ef546a8 | ||
|
|
7558bef262 | ||
|
|
51b12ae55c | ||
|
|
c60323c28c | ||
|
|
d71b18d0e7 | ||
|
|
10e3aa4377 | ||
|
|
d1262f4c7f | ||
|
|
03aefa2cd5 | ||
|
|
41f8ce9660 | ||
|
|
2b41a44538 | ||
|
|
8ffb43b8e0 | ||
|
|
b39b835390 | ||
|
|
24a6ef9fd9 | ||
|
|
17967a9598 | ||
|
|
9dc93a602d | ||
|
|
b672e884d9 | ||
|
|
46bbb6485b | ||
|
|
b530c40486 | ||
|
|
5d1fdd703c | ||
|
|
706486b3b7 | ||
|
|
3a7b878847 | ||
|
|
2eb158f32b | ||
|
|
3fa66dac91 | ||
|
|
9a236be5d5 | ||
|
|
dd39ba7722 | ||
|
|
1b6847f0c7 | ||
|
|
3b8297f10c | ||
|
|
530fffc49d | ||
|
|
6461798850 | ||
|
|
e731e808a3 | ||
|
|
099575b9cf | ||
|
|
d79a33d514 | ||
|
|
6630882137 | ||
|
|
a723c0f137 | ||
|
|
54a6ec1d5c | ||
|
|
4e53232d9d | ||
|
|
91d0a124ca | ||
|
|
1228999214 | ||
|
|
718f67d339 | ||
|
|
6cc2927ade | ||
|
|
a96e9db8e5 | ||
|
|
ced1431b6b | ||
|
|
82fcb2a896 | ||
|
|
846d303345 | ||
|
|
8ab0d4d739 | ||
|
|
cf19731e6a | ||
|
|
f86a6a960b | ||
|
|
9e63e97f31 | ||
|
|
81b85839eb | ||
|
|
15ac2cf282 | ||
|
|
1c1b6c7732 | ||
|
|
29236b45d1 | ||
|
|
1e9a09e8f3 | ||
|
|
9031285357 | ||
|
|
03fd0452f3 | ||
|
|
e4adf28a48 | ||
|
|
9af28b9247 | ||
|
|
e9879d5db0 | ||
|
|
95f66ca5b0 | ||
|
|
b72d86604b | ||
|
|
97c03c7d15 | ||
|
|
f8f98394f4 | ||
|
|
ff0901bf0c | ||
|
|
66f2dc24b1 | ||
|
|
fd20bc5fd9 | ||
|
|
997daac4e6 | ||
|
|
d218851416 | ||
|
|
acf51993d7 | ||
|
|
02cb296050 | ||
|
|
df3bd24540 | ||
|
|
75887dc14c | ||
|
|
a50076fcb9 | ||
|
|
eeff4e2718 | ||
|
|
f065767560 | ||
|
|
7cbc2ac5a7 | ||
|
|
494292618b | ||
|
|
820727329d | ||
|
|
c51bffbd54 | ||
|
|
cad3214584 | ||
|
|
733448d041 | ||
|
|
c7b9f9aaae | ||
|
|
d0e6b9c015 | ||
|
|
0e83769729 | ||
|
|
da5a92746f | ||
|
|
551cc30e79 | ||
|
|
09edf6d16c | ||
|
|
7cc4041a35 | ||
|
|
5418c63468 | ||
|
|
269d5fa2d0 | ||
|
|
c130e58c46 | ||
|
|
2a8f734a19 | ||
|
|
1ddce5b3cb | ||
|
|
859577768c | ||
|
|
606b6b2b22 | ||
|
|
10749409f1 | ||
|
|
77727bc40c | ||
|
|
59fe65b705 | ||
|
|
5e0d287cda | ||
|
|
910b2432ce | ||
|
|
3b05f0e574 | ||
|
|
62e5aae150 | ||
|
|
2dbf8ffaa3 | ||
|
|
938f7efeba | ||
|
|
ab00747371 | ||
|
|
4c42ebfcff | ||
|
|
182b127c12 | ||
|
|
2f3dfb4404 | ||
|
|
3348c1050d | ||
|
|
d0f26f4110 | ||
|
|
b450764c68 | ||
|
|
b71ae1e055 | ||
|
|
35d41c1763 | ||
|
|
7cdabd67be | ||
|
|
0922e72e3d | ||
|
|
f2582af4a3 | ||
|
|
61124e4619 | ||
|
|
60efb731fe | ||
|
|
96357adbe7 | ||
|
|
74c077b3ae | ||
|
|
af9dc9f510 | ||
|
|
abb6323d5e | ||
|
|
8fcec2a0b2 | ||
|
|
69397ee269 | ||
|
|
770d5a7557 | ||
|
|
58c11879c5 | ||
|
|
d14a85d644 | ||
|
|
22ea86dad5 | ||
|
|
cd75f0c384 | ||
|
|
8d9df97208 | ||
|
|
d87b423044 | ||
|
|
1877c1b2a8 | ||
|
|
739242a4f5 | ||
|
|
398d8fc9bb | ||
|
|
74a1ef8d9b | ||
|
|
3357de226b | ||
|
|
270936bce1 | ||
|
|
7021b19039 | ||
|
|
17491235cb | ||
|
|
fd1aa0893c | ||
|
|
262f906322 | ||
|
|
d58db71163 | ||
|
|
9e9efbe40b | ||
|
|
4e8acabf44 | ||
|
|
e0b585ddd3 | ||
|
|
ef5ef2f76a | ||
|
|
b1d5af7bd3 | ||
|
|
efe345db5e | ||
|
|
d6ebff0b78 | ||
|
|
f6afdc70cf | ||
|
|
0358960400 | ||
|
|
5a1e09073d | ||
|
|
fb6ce6eb0b | ||
|
|
435fbc9e26 | ||
|
|
01f577212c | ||
|
|
a5d1f2964b | ||
|
|
33caa024d2 | ||
|
|
c7fc71a66e | ||
|
|
1dba15f03b | ||
|
|
c3e7e0c834 | ||
|
|
456cb01982 | ||
|
|
38fb2ca283 | ||
|
|
b5201d2b38 | ||
|
|
9ca395c9ba | ||
|
|
d95e2170c5 | ||
|
|
676ded84ac | ||
|
|
dcef099aca | ||
|
|
1c0d763f70 | ||
|
|
a7e2399621 | ||
|
|
a3345217c2 | ||
|
|
c707c9438b | ||
|
|
bd0bdda5f2 | ||
|
|
e9d24e0086 | ||
|
|
686d6f8aec | ||
|
|
78cbae1061 | ||
|
|
4021f6954d | ||
|
|
8cdd66a1db | ||
|
|
9266183e95 | ||
|
|
b6e474908f | ||
|
|
7a088181cc | ||
|
|
8aa0295c9e | ||
|
|
49dffc9f43 | ||
|
|
74dfc929df | ||
|
|
80239f7c8a | ||
|
|
49e0889b63 | ||
|
|
e968bf51e3 | ||
|
|
4eb4837052 | ||
|
|
ded1a24668 | ||
|
|
3fa2ca3789 | ||
|
|
486f4fa260 | ||
|
|
ecc1b1262a | ||
|
|
343ebd3d7b | ||
|
|
46975e4b77 | ||
|
|
081a24d973 | ||
|
|
b131832876 | ||
|
|
a01d5c6f1e | ||
|
|
9de8e78460 | ||
|
|
b07c5fe0cb | ||
|
|
08e4ff1e85 | ||
|
|
d9981fc309 | ||
|
|
d883fc2c79 | ||
|
|
7e676e35e4 | ||
|
|
c40df12e05 | ||
|
|
b46b157dbc | ||
|
|
e749b67774 | ||
|
|
4ad6bb1b77 | ||
|
|
0b3b8ba09e | ||
|
|
0c81502532 | ||
|
|
ef3da7d14d | ||
|
|
53d3a31574 | ||
|
|
a2a7adfde8 | ||
|
|
73b242a611 | ||
|
|
9ed00c4266 | ||
|
|
36232cd771 | ||
|
|
87863402ea | ||
|
|
b4e4f002f2 | ||
|
|
9d101a5275 | ||
|
|
3e50bf13e4 | ||
|
|
da946d5657 | ||
|
|
16a1ffc40e | ||
|
|
b4c034e729 | ||
|
|
cb61706968 | ||
|
|
17bdd7aa91 | ||
|
|
0f3551e9c7 | ||
|
|
4a5898a458 | ||
|
|
3aa2521c37 | ||
|
|
5f6d20ad82 | ||
|
|
4bc8aae6bb | ||
|
|
d582a980d7 | ||
|
|
1513f61522 | ||
|
|
103d4aa3a4 | ||
|
|
303ad629fc | ||
|
|
32cef3bdbb | ||
|
|
f45ea99192 | ||
|
|
78690fb9ed | ||
|
|
f67eb1897a | ||
|
|
285f9446b4 | ||
|
|
95a7d8648f | ||
|
|
b07eb8c00d | ||
|
|
40cb396a6c | ||
|
|
87ab0bfb62 | ||
|
|
c4f50417d5 | ||
|
|
0ca1b98689 | ||
|
|
c2427cea6b | ||
|
|
7ce35bac34 | ||
|
|
7bd41d9b48 | ||
|
|
5ec34cb249 | ||
|
|
4024911219 | ||
|
|
acea1b4116 | ||
|
|
ec3542dab8 | ||
|
|
51cf68c11f | ||
|
|
7f1dc27ee3 | ||
|
|
381dca62d1 | ||
|
|
431a7b834a | ||
|
|
0c460bc3dd | ||
|
|
7e91be9e38 | ||
|
|
d042899a06 | ||
|
|
891115f6fd | ||
|
|
8ce52d834d | ||
|
|
b6ea440d70 | ||
|
|
a3125d53cb | ||
|
|
a7e8b3bcb7 | ||
|
|
c4dfe6b8cb | ||
|
|
90e86767d8 | ||
|
|
30f7be3fd4 | ||
|
|
313b46ecc1 | ||
|
|
367f89ef1f | ||
|
|
32ba19d591 | ||
|
|
5d945372d4 | ||
|
|
736b888608 | ||
|
|
fc03912eef | ||
|
|
0864092670 | ||
|
|
400f7871d2 | ||
|
|
0ce207bc2f | ||
|
|
8c85053002 | ||
|
|
a453c61aa5 | ||
|
|
5ad6f5bba3 | ||
|
|
68b91149f2 | ||
|
|
c50b8181a0 | ||
|
|
1db690953b | ||
|
|
cef1e1aafa | ||
|
|
d29667ed99 | ||
|
|
d31c2a2f2a | ||
|
|
e4a86687e2 | ||
|
|
2d9eee74c5 | ||
|
|
0668f8aebe | ||
|
|
330d7beb60 | ||
|
|
77f0243446 | ||
|
|
2c7fa08503 | ||
|
|
998199085e | ||
|
|
f9cf015e20 | ||
|
|
97677113e3 | ||
|
|
1f7d367afc | ||
|
|
1846b8b4ae | ||
|
|
3bedf3ba36 | ||
|
|
4352e985df | ||
|
|
e1936fb938 | ||
|
|
de815a7305 | ||
|
|
bd3f24f160 | ||
|
|
8f6062317f | ||
|
|
8f63d828af | ||
|
|
fc2fac9ca4 | ||
|
|
cf13cef475 | ||
|
|
485ae6f531 | ||
|
|
398421367c | ||
|
|
8832051f96 | ||
|
|
ce80469ecc | ||
|
|
12f2b29ac7 | ||
|
|
7b7ee1fe63 | ||
|
|
baee6032c6 | ||
|
|
deae140a6e | ||
|
|
ca90159fce | ||
|
|
03e287f2c1 | ||
|
|
b79aebe284 | ||
|
|
a21600984d | ||
|
|
8b09a5c1ef | ||
|
|
66ac072870 | ||
|
|
c073a2c529 | ||
|
|
cedf113b54 | ||
|
|
571cab88ee | ||
|
|
68c5ed6097 | ||
|
|
85efb8e1b6 | ||
|
|
00c3487dff | ||
|
|
cec73c5217 | ||
|
|
8f1c7eb737 | ||
|
|
0dd10483c9 | ||
|
|
a0c447cece | ||
|
|
7cf928e94c | ||
|
|
8caf6efe72 | ||
|
|
a9fec942ff | ||
|
|
00cbc81331 | ||
|
|
4e3af5c601 | ||
|
|
632dda526a | ||
|
|
c858240c01 | ||
|
|
1fb70e67ee | ||
|
|
b533cf8480 | ||
|
|
51fd3af446 | ||
|
|
f3c3fea228 | ||
|
|
29574a6385 | ||
|
|
5c96b8d848 | ||
|
|
2c38fac9b1 | ||
|
|
0b88415247 | ||
|
|
9b25845258 | ||
|
|
49973ff32b | ||
|
|
714f63d0d3 |
17
.cspell/custom-words.txt
Normal file
17
.cspell/custom-words.txt
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
# Custom words
|
||||||
|
fullscreen
|
||||||
|
gamepad
|
||||||
|
gantt
|
||||||
|
kanban
|
||||||
|
pilcrow
|
||||||
|
squircle
|
||||||
|
strikethrough
|
||||||
|
touchpad
|
||||||
|
ungroup
|
||||||
|
pilcrow
|
||||||
|
toc
|
||||||
|
|
||||||
|
# Brands
|
||||||
|
codepen
|
||||||
|
codesandbox
|
||||||
|
dribbble
|
||||||
@@ -3,3 +3,8 @@ build
|
|||||||
coverage
|
coverage
|
||||||
lib
|
lib
|
||||||
tests
|
tests
|
||||||
|
node_modules
|
||||||
|
.eslintrc.js
|
||||||
|
docs/images
|
||||||
|
docs/**/examples/
|
||||||
|
packages/lucide-react/dynamicIconImports.js
|
||||||
|
|||||||
75
.eslintrc.js
Normal file
75
.eslintrc.js
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
const DEFAULT_ATTRS = require('./tools/build-icons/render/default-attrs.json');
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
root: true,
|
||||||
|
env: {
|
||||||
|
browser: true,
|
||||||
|
node: true,
|
||||||
|
},
|
||||||
|
extends: ['airbnb-base', 'prettier'],
|
||||||
|
plugins: ['import', '@html-eslint'],
|
||||||
|
rules: {
|
||||||
|
'no-console': 'off',
|
||||||
|
'no-param-reassign': 'off',
|
||||||
|
'no-shadow': 'off',
|
||||||
|
'no-use-before-define': 'off',
|
||||||
|
'import/no-extraneous-dependencies': [
|
||||||
|
'error',
|
||||||
|
{
|
||||||
|
devDependencies: ['**/*.test.js', '**/*.spec.js', '**/scripts/**'],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
'import/extensions': [
|
||||||
|
'error',
|
||||||
|
{
|
||||||
|
pattern: {
|
||||||
|
mjs: 'always',
|
||||||
|
json: 'always',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
parserOptions: {
|
||||||
|
tsconfigRootDir: __dirname,
|
||||||
|
project: ['./docs/tsconfig.json', './packages/*/tsconfig.json'],
|
||||||
|
ecmaVersion: 'latest',
|
||||||
|
sourceType: 'module',
|
||||||
|
},
|
||||||
|
overrides: [
|
||||||
|
{
|
||||||
|
files: ['./icons/*.svg'],
|
||||||
|
parser: '@html-eslint/parser',
|
||||||
|
rules: {
|
||||||
|
'@html-eslint/require-doctype': 'off',
|
||||||
|
'@html-eslint/no-duplicate-attrs': 'error',
|
||||||
|
'@html-eslint/no-inline-styles': 'error',
|
||||||
|
'@html-eslint/require-attrs': [
|
||||||
|
'error',
|
||||||
|
...Object.entries(DEFAULT_ATTRS).map(([attr, value]) => ({
|
||||||
|
tag: 'svg',
|
||||||
|
attr,
|
||||||
|
value: String(value),
|
||||||
|
})),
|
||||||
|
],
|
||||||
|
'@html-eslint/indent': ['error', 2],
|
||||||
|
'@html-eslint/no-multiple-empty-lines': ['error', { max: 0 }],
|
||||||
|
'@html-eslint/no-extra-spacing-attrs': [
|
||||||
|
'error',
|
||||||
|
{
|
||||||
|
enforceBeforeSelfClose: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
'@html-eslint/require-closing-tags': [
|
||||||
|
'error',
|
||||||
|
{
|
||||||
|
selfClosing: 'always',
|
||||||
|
allowSelfClosingCustom: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
'@html-eslint/element-newline': 'error',
|
||||||
|
'@html-eslint/no-trailing-spaces': 'error',
|
||||||
|
'@html-eslint/quotes': 'error',
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
{
|
|
||||||
"env": {
|
|
||||||
"browser": true,
|
|
||||||
"node": true
|
|
||||||
},
|
|
||||||
"extends": ["airbnb-base", "prettier"],
|
|
||||||
"plugins": ["import", "prettier"],
|
|
||||||
"rules": {
|
|
||||||
"no-console": "off",
|
|
||||||
"no-param-reassign": "off",
|
|
||||||
"no-shadow": "off",
|
|
||||||
"no-use-before-define": "off",
|
|
||||||
"prettier/prettier": [
|
|
||||||
"error",
|
|
||||||
{
|
|
||||||
"singleQuote": true,
|
|
||||||
"trailingComma": "all"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
2
.github/FUNDING.yml
vendored
Normal file
2
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# These are supported funding model platforms
|
||||||
|
open_collective: lucide-icons
|
||||||
49
.github/ISSUE_TEMPLATE/01_icon_request.yml
vendored
Normal file
49
.github/ISSUE_TEMPLATE/01_icon_request.yml
vendored
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
name: Icon request
|
||||||
|
description: Suggest a new icon for this project
|
||||||
|
labels: ['🙌 icon request']
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Before submitting an icon request check if it has already been requested. If there is an open request, please add a 👍.
|
||||||
|
|
||||||
|
**Important note**: No new brand logos are allowed, see https://github.com/lucide-icons/lucide/issues/670.
|
||||||
|
Existing brand icons will also be phased out. For brand icons, consider using https://simpleicons.org, which offers purpose-built SVGs that are also on a 24×24px grid.
|
||||||
|
- type: input
|
||||||
|
id: name
|
||||||
|
attributes:
|
||||||
|
label: Icon name
|
||||||
|
description: What should this icon depict? For multiple icons, provide a comma-separated list.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: use-cases
|
||||||
|
attributes:
|
||||||
|
label: Use cases
|
||||||
|
description: Why do you need this icon? Include at least two real-life use cases per requested icon, avoiding generic descriptions like "it's a car icon".
|
||||||
|
placeholder: e.g. I need a star icon to use in my rating system.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: design-ideas
|
||||||
|
attributes:
|
||||||
|
label: Design ideas
|
||||||
|
description: What should this icon look like? Provide simple, minimalistic icon examples from other sets or your own drafts to help us visualize your request.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: checkboxes
|
||||||
|
id: checklist
|
||||||
|
attributes:
|
||||||
|
label: Checklist
|
||||||
|
description: Please review the following checklist before submitting your request.
|
||||||
|
options:
|
||||||
|
- label: I have searched if someone has submitted a similar issue before and there weren't any. (Please make sure to also search closed issues, as this issue might already have been resolved.)
|
||||||
|
required: true
|
||||||
|
- label: I have searched existing icons to make sure it does not already exist and I didn't find any.
|
||||||
|
required: true
|
||||||
|
- label: I am not requesting a brand logo and the art is not protected by copyright.
|
||||||
|
required: true
|
||||||
|
- label: I am not requesting an icon that includes religious, political imagery or hate symbols.
|
||||||
|
required: true
|
||||||
|
- label: I have provided appropriate use cases for the icon(s) requested.
|
||||||
|
required: true
|
||||||
103
.github/ISSUE_TEMPLATE/02_bug_report.yml
vendored
Normal file
103
.github/ISSUE_TEMPLATE/02_bug_report.yml
vendored
Normal file
@@ -0,0 +1,103 @@
|
|||||||
|
name: Bug report
|
||||||
|
description: Create a report to help us improve
|
||||||
|
labels: ['🐛 bug']
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Before reporting an issue, please search to see if someone has filed a similar issue before. If there is already an open issue, please add a 👍 and/or leave a comment with additional information.
|
||||||
|
- type: checkboxes
|
||||||
|
id: packages
|
||||||
|
attributes:
|
||||||
|
label: Package
|
||||||
|
description: Which Lucide packages are affected? You may select more than one.
|
||||||
|
options:
|
||||||
|
- label: lucide
|
||||||
|
- label: lucide-angular
|
||||||
|
- label: lucide-flutter
|
||||||
|
- label: lucide-preact
|
||||||
|
- label: lucide-react
|
||||||
|
- label: lucide-react-native
|
||||||
|
- label: lucide-solid
|
||||||
|
- label: lucide-svelte
|
||||||
|
- label: lucide-vue
|
||||||
|
- label: lucide-vue-next
|
||||||
|
- label: Figma plugin
|
||||||
|
- label: source/main
|
||||||
|
- label: other/not relevant
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: input
|
||||||
|
id: version
|
||||||
|
attributes:
|
||||||
|
label: Version
|
||||||
|
description: What version of Lucide are you running?
|
||||||
|
placeholder: e.g. 0.289.1
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: checkboxes
|
||||||
|
id: can-reproduce-in-latest-version
|
||||||
|
attributes:
|
||||||
|
label: Can you reproduce this in the latest version?
|
||||||
|
description: i.e. after running `npm install lucide-react@latest`
|
||||||
|
options:
|
||||||
|
- label: 'Yes'
|
||||||
|
- label: 'No'
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: checkboxes
|
||||||
|
id: browsers
|
||||||
|
attributes:
|
||||||
|
label: Browser
|
||||||
|
description: In which browser(s) are you experiencing the issue? You may select more than one.
|
||||||
|
options:
|
||||||
|
- label: Chrome/Chromium
|
||||||
|
- label: Firefox
|
||||||
|
- label: Safari
|
||||||
|
- label: Edge
|
||||||
|
- label: iOS Safari
|
||||||
|
- label: Opera
|
||||||
|
- label: Other/not relevant
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: checkboxes
|
||||||
|
id: operating-systems
|
||||||
|
attributes:
|
||||||
|
label: Operating system
|
||||||
|
description: In which operating systems a you experiencing the issue? You may select more than one.
|
||||||
|
options:
|
||||||
|
- label: Windows
|
||||||
|
- label: Linux
|
||||||
|
- label: macOS
|
||||||
|
- label: ChromeOS
|
||||||
|
- label: iOS
|
||||||
|
- label: Android
|
||||||
|
- label: Other/not relevant
|
||||||
|
- type: textarea
|
||||||
|
id: description
|
||||||
|
attributes:
|
||||||
|
label: Description
|
||||||
|
description: Try to describe in detail the problem you're running into and provide additional context about your working environment if necessary.
|
||||||
|
placeholder: e.g. When I do X, Y happens instead of Z
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: steps-to-reproduce
|
||||||
|
attributes:
|
||||||
|
label: Steps to reproduce
|
||||||
|
description: Please provide a detailed guide on how this issue can be reproduced or a live example with a working reproduction on Codesandbox, JSFiddle or similar.
|
||||||
|
placeholder: |
|
||||||
|
1. Import `check` icon
|
||||||
|
2. Add to a React component/view
|
||||||
|
3. Run the react app
|
||||||
|
4. Notice that the `check` isn't rendering correctly which seems a encoding problem
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: checkboxes
|
||||||
|
id: checklist
|
||||||
|
attributes:
|
||||||
|
label: Checklist
|
||||||
|
description: Please review the following checklist before submitting your issue.
|
||||||
|
options:
|
||||||
|
- label: I have searched if someone has submitted a similar issue before and there weren't any. (Please make sure to also search closed issues, as this issue might already have been resolved.)
|
||||||
|
required: true
|
||||||
65
.github/ISSUE_TEMPLATE/03_bug_report_site.yml
vendored
Normal file
65
.github/ISSUE_TEMPLATE/03_bug_report_site.yml
vendored
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
name: lucide.dev bug report
|
||||||
|
description: Help us improve the Lucide site
|
||||||
|
labels: ['🐛 bug', '🌍 site']
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Before reporting an issue, please search to see if someone has filed a similar issue before. If there is already an open issue, please add a 👍 and/or leave a comment with additional information.
|
||||||
|
- type: checkboxes
|
||||||
|
id: browsers
|
||||||
|
attributes:
|
||||||
|
label: Browser
|
||||||
|
description: In which browser(s) are you experiencing the issue? You may select more than one.
|
||||||
|
options:
|
||||||
|
- label: Chrome/Chromium
|
||||||
|
- label: Firefox
|
||||||
|
- label: Safari
|
||||||
|
- label: Edge
|
||||||
|
- label: iOS Safari
|
||||||
|
- label: Opera
|
||||||
|
- label: Other/not relevant
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
- type: checkboxes
|
||||||
|
id: operating-systems
|
||||||
|
attributes:
|
||||||
|
label: Operating system
|
||||||
|
description: In which operating systems are you experiencing the issue? You may select more than one.
|
||||||
|
options:
|
||||||
|
- label: Windows
|
||||||
|
- label: Linux
|
||||||
|
- label: macOS
|
||||||
|
- label: ChromeOS
|
||||||
|
- label: iOS
|
||||||
|
- label: Android
|
||||||
|
- label: Other/not relevant
|
||||||
|
- type: textarea
|
||||||
|
id: description
|
||||||
|
attributes:
|
||||||
|
label: Description
|
||||||
|
description: Try to describe in detail the problem you're running into and provide additional context about your working environment if necessary.
|
||||||
|
placeholder: e.g. When I do X, Y happens instead of Z
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: stepsToReproduce
|
||||||
|
attributes:
|
||||||
|
label: Steps to reproduce
|
||||||
|
description: Please provide a detailed guide on how this issue can be reproduced.
|
||||||
|
placeholder: |
|
||||||
|
1. I click on an icon
|
||||||
|
2. I click on `Copy SVG` in the drawer
|
||||||
|
3. I paste from the clipboard
|
||||||
|
4. A base64 encoded data URI is inserted.
|
||||||
|
...
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: checkboxes
|
||||||
|
id: checklist
|
||||||
|
attributes:
|
||||||
|
label: Checklist
|
||||||
|
description: Please review the following checklist before submitting your issue.
|
||||||
|
options:
|
||||||
|
- label: I have searched if someone has submitted a similar issue before and there weren't any. (Please make sure to also search closed issues, as this issue might already have been resolved.)
|
||||||
|
required: true
|
||||||
53
.github/ISSUE_TEMPLATE/04_feature_request.yml
vendored
Normal file
53
.github/ISSUE_TEMPLATE/04_feature_request.yml
vendored
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
name: Feature request
|
||||||
|
description: Share with us your ideas on how Lucide could be improved upon.
|
||||||
|
labels: ['💡 idea']
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Before submitting a new feature request, please search to see if someone has filed a similar request before. If there is already an open issue, please add a 👍 and/or leave a comment with additional information.
|
||||||
|
- type: checkboxes
|
||||||
|
id: packages
|
||||||
|
attributes:
|
||||||
|
label: Package
|
||||||
|
description: Which Lucide project do you wish this feature were added to? You may select more than one.
|
||||||
|
options:
|
||||||
|
- label: lucide
|
||||||
|
- label: lucide-angular
|
||||||
|
- label: lucide-flutter
|
||||||
|
- label: lucide-preact
|
||||||
|
- label: lucide-react
|
||||||
|
- label: lucide-react-native
|
||||||
|
- label: lucide-solid
|
||||||
|
- label: lucide-svelte
|
||||||
|
- label: lucide-vue
|
||||||
|
- label: lucide-vue-next
|
||||||
|
- label: Figma plugin
|
||||||
|
- label: all JS packages
|
||||||
|
- label: site
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: description
|
||||||
|
attributes:
|
||||||
|
label: Description
|
||||||
|
description: Try to describe in detail the feature you wish existed.
|
||||||
|
placeholder: e.g. I want to be able to set extra CSS classes on icon components.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: textarea
|
||||||
|
id: use-cases
|
||||||
|
attributes:
|
||||||
|
label: Use cases
|
||||||
|
description: Why do you need this feature? Provide real-life use cases as to why this feature will be useful for others.
|
||||||
|
placeholder: e.g. I could use the extra classes to add animation or global custom styling to some icons.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
- type: checkboxes
|
||||||
|
id: checklist
|
||||||
|
attributes:
|
||||||
|
label: Checklist
|
||||||
|
description: Please check the following items before submitting your issue.
|
||||||
|
options:
|
||||||
|
- label: I have searched the existing issues to make sure this bug has not already been reported.
|
||||||
|
required: true
|
||||||
68
.github/ISSUE_TEMPLATE/bug_report.md
vendored
68
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@@ -1,68 +0,0 @@
|
|||||||
---
|
|
||||||
name: Bug report
|
|
||||||
about: Create a report to help us improve
|
|
||||||
labels: bug
|
|
||||||
---
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Before reporting an issue, please search to see if someone has filed a similar issue before. If there is already an open issue, please add a 👍 and/or leave a comment with additional information.
|
|
||||||
-->
|
|
||||||
|
|
||||||
## Prerequisites
|
|
||||||
|
|
||||||
* Version:
|
|
||||||
* Are you running from source/master:
|
|
||||||
* Are you using a released build:
|
|
||||||
* Operating system:
|
|
||||||
* Bits:
|
|
||||||
|
|
||||||
## Step to reproduce
|
|
||||||
|
|
||||||
*(Type here)*
|
|
||||||
|
|
||||||
### Actual behavior
|
|
||||||
|
|
||||||
## Any message or error
|
|
||||||
|
|
||||||
*(Type here)*
|
|
||||||
|
|
||||||
## Resources
|
|
||||||
|
|
||||||
* Links
|
|
||||||
* Screenshots
|
|
||||||
|
|
||||||
|
|
||||||
Here is what a great bug report would look like:
|
|
||||||
|
|
||||||
```
|
|
||||||
## Prerequisites
|
|
||||||
|
|
||||||
Version: Release v3.1.0
|
|
||||||
Running from: Import using webpack
|
|
||||||
Operating system: Mac OSX
|
|
||||||
Bits: 64 bits
|
|
||||||
|
|
||||||
## Step to reproduce
|
|
||||||
|
|
||||||
- Import `check` icon
|
|
||||||
- Add to a React component/view
|
|
||||||
- Run the react app
|
|
||||||
- Notice that the `check` isn't rendering correctly which seems a encoding problem
|
|
||||||
|
|
||||||
### Actual behavior:
|
|
||||||
|
|
||||||
- Import `check` icon
|
|
||||||
- Add to a React component/view
|
|
||||||
- Run the react app
|
|
||||||
- Check is displayed with correct encoding (e.g UTF-8)
|
|
||||||
|
|
||||||
## Any message or error
|
|
||||||
|
|
||||||
No console output
|
|
||||||
...
|
|
||||||
|
|
||||||
## Resources
|
|
||||||
|
|
||||||
No resources
|
|
||||||
...
|
|
||||||
```
|
|
||||||
15
.github/ISSUE_TEMPLATE/icon_request.md
vendored
15
.github/ISSUE_TEMPLATE/icon_request.md
vendored
@@ -1,15 +0,0 @@
|
|||||||
---
|
|
||||||
name: Icon request
|
|
||||||
about: Suggest an new icon for this project
|
|
||||||
labels: "icon request"
|
|
||||||
---
|
|
||||||
|
|
||||||
<!--
|
|
||||||
Before creating an icon request, please search to see if someone has requested the icon already. If there is an open request, please add a 👍.
|
|
||||||
-->
|
|
||||||
|
|
||||||
## Icon Request
|
|
||||||
|
|
||||||
* Icon name:
|
|
||||||
* Use case:
|
|
||||||
* Screenshots of similar icons:
|
|
||||||
44
.github/actions/build-and-test.yml
vendored
Normal file
44
.github/actions/build-and-test.yml
vendored
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
name: 'Build and Test'
|
||||||
|
description: 'Builds and test a package'
|
||||||
|
|
||||||
|
inputs:
|
||||||
|
name:
|
||||||
|
description: “Name of the package”
|
||||||
|
required: true
|
||||||
|
|
||||||
|
runs:
|
||||||
|
using: 'composite'
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 16
|
||||||
|
|
||||||
|
- uses: pnpm/action-setup@v2
|
||||||
|
name: Install pnpm
|
||||||
|
id: pnpm-install
|
||||||
|
with:
|
||||||
|
version: 8
|
||||||
|
run_install: false
|
||||||
|
|
||||||
|
- name: Get pnpm store directory
|
||||||
|
id: pnpm-cache
|
||||||
|
run: |
|
||||||
|
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- uses: actions/cache@v3
|
||||||
|
name: Setup pnpm cache
|
||||||
|
with:
|
||||||
|
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
|
||||||
|
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-pnpm-store-
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pnpm install --filter lucide-preact
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: pnpm --filter lucide-preact build
|
||||||
|
|
||||||
|
- name: Test
|
||||||
|
run: pnpm --filter lucide-preact test
|
||||||
41
.github/actions/check-icons.yml
vendored
Normal file
41
.github/actions/check-icons.yml
vendored
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
name: 'Check icons'
|
||||||
|
description: 'Cross-checks icon and category references in JSON descriptors'
|
||||||
|
|
||||||
|
inputs:
|
||||||
|
name:
|
||||||
|
description: “Name of the package”
|
||||||
|
required: true
|
||||||
|
|
||||||
|
runs:
|
||||||
|
using: 'composite'
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 16
|
||||||
|
|
||||||
|
- uses: pnpm/action-setup@v2
|
||||||
|
name: Install pnpm
|
||||||
|
id: pnpm-install
|
||||||
|
with:
|
||||||
|
version: 8
|
||||||
|
run_install: false
|
||||||
|
|
||||||
|
- name: Get pnpm store directory
|
||||||
|
id: pnpm-cache
|
||||||
|
run: |
|
||||||
|
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- uses: actions/cache@v3
|
||||||
|
name: Setup pnpm cache
|
||||||
|
with:
|
||||||
|
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
|
||||||
|
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
|
||||||
|
restore-keys: |
|
||||||
|
${{ runner.os }}-pnpm-store-
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pnpm install --filter .
|
||||||
|
|
||||||
|
- name: Check icons and categories
|
||||||
|
run: pnpm checkIcons
|
||||||
92
.github/labeler.yml
vendored
Normal file
92
.github/labeler.yml
vendored
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
# For changed dependencies
|
||||||
|
📦 dependencies:
|
||||||
|
- changed-files:
|
||||||
|
- any-glob-to-any-file:
|
||||||
|
- pnpm-lock.yaml
|
||||||
|
|
||||||
|
# For changes in documentation
|
||||||
|
📖 documentation:
|
||||||
|
- changed-files:
|
||||||
|
- any-glob-to-any-file:
|
||||||
|
- docs/*.md
|
||||||
|
- docs/**/*.md
|
||||||
|
|
||||||
|
# For changes in the site, but not markdown files
|
||||||
|
🌍 site:
|
||||||
|
- changed-files:
|
||||||
|
- any-glob-to-any-file:
|
||||||
|
- 'docs/**'
|
||||||
|
|
||||||
|
# For changes in the metadata
|
||||||
|
🫧 metadata:
|
||||||
|
- changed-files:
|
||||||
|
- any-glob-to-any-file:
|
||||||
|
- 'icons/*.json'
|
||||||
|
- categories/*
|
||||||
|
|
||||||
|
# For changes or added icons
|
||||||
|
🎨 icon:
|
||||||
|
- changed-files:
|
||||||
|
- any-glob-to-any-file:
|
||||||
|
- 'icons/*.svg'
|
||||||
|
|
||||||
|
# For changes in the lucide package
|
||||||
|
🧳 lucide package:
|
||||||
|
- changed-files:
|
||||||
|
- any-glob-to-any-file:
|
||||||
|
- 'packages/lucide/*'
|
||||||
|
|
||||||
|
# For changes in the lucide React package
|
||||||
|
⚛️ react package:
|
||||||
|
- changed-files:
|
||||||
|
- any-glob-to-any-file:
|
||||||
|
- 'packages/lucide-react/*'
|
||||||
|
|
||||||
|
# For changes in the lucide React Native package
|
||||||
|
⚛️ react native package:
|
||||||
|
- changed-files:
|
||||||
|
- any-glob-to-any-file:
|
||||||
|
- 'packages/lucide-react-native/*'
|
||||||
|
|
||||||
|
# For changes in the lucide vue packages
|
||||||
|
💎 vue package:
|
||||||
|
- changed-files:
|
||||||
|
- any-glob-to-any-file:
|
||||||
|
- 'packages/lucide-vue/*'
|
||||||
|
- 'packages/lucide-vue-next/*'
|
||||||
|
|
||||||
|
# For changes in the lucide angular package
|
||||||
|
🅰️ angular package:
|
||||||
|
- changed-files:
|
||||||
|
- any-glob-to-any-file:
|
||||||
|
- 'packages/lucide-angular/*'
|
||||||
|
|
||||||
|
# For changes in the lucide preact package
|
||||||
|
⚛️ preact package:
|
||||||
|
- changed-files:
|
||||||
|
- any-glob-to-any-file:
|
||||||
|
- 'packages/lucide-preact/*'
|
||||||
|
|
||||||
|
# For changes in the lucide svelte package
|
||||||
|
🧣 svelte package:
|
||||||
|
- changed-files:
|
||||||
|
- any-glob-to-any-file:
|
||||||
|
- 'packages/lucide-svelte/*'
|
||||||
|
|
||||||
|
# For changes in the lucide solid package
|
||||||
|
🪝 solid package:
|
||||||
|
- changed-files:
|
||||||
|
- any-glob-to-any-file:
|
||||||
|
- 'packages/lucide-solid/*'
|
||||||
|
|
||||||
|
# For changes in the lucide static package
|
||||||
|
🪨 static package:
|
||||||
|
- changed-files:
|
||||||
|
- any-glob-to-any-file:
|
||||||
|
- 'packages/lucide-static/*'
|
||||||
|
|
||||||
|
# For changes in the lucide flutter package
|
||||||
|
🏹 flutter package:
|
||||||
|
- changed-files:
|
||||||
|
- any-glob-to-any-file:
|
||||||
|
- 'packages/lucide-flutter/*'
|
||||||
55
.github/pull_request_template.md
vendored
Normal file
55
.github/pull_request_template.md
vendored
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
<!-- Thank you for contributing! -->
|
||||||
|
|
||||||
|
<!-- Insert `closes #issueNumber` here if merging this PR will resolve an existing issue -->
|
||||||
|
|
||||||
|
## What is the purpose of this pull request?
|
||||||
|
<!-- Please choose one of the following, and put an "x" next to it. -->
|
||||||
|
- [ ] New Icon
|
||||||
|
- [ ] Bug fix
|
||||||
|
- [ ] New Feature
|
||||||
|
- [ ] Documentation update
|
||||||
|
- [ ] Other:
|
||||||
|
|
||||||
|
### Description
|
||||||
|
<!-- Please insert your description here and provide info about the "what" this PR is contribution -->
|
||||||
|
|
||||||
|
### Icon use case <!-- ONLY for new icons, remove this part if not icon PR -->
|
||||||
|
<!-- What is the purpose of this icon? For each icon added, please insert at least two real life use cases (the more the better). Text like "it's a car icon" is not accepted. -->
|
||||||
|
|
||||||
|
### Alternative icon designs <!-- ONLY for new icons, remove this part if not icon PR -->
|
||||||
|
<!-- If you have any alternative icon designs, please attach them here. -->
|
||||||
|
|
||||||
|
## Icon Design Checklist <!-- ONLY for new icons, remove this part if not icon PR -->
|
||||||
|
|
||||||
|
### Concept <!-- ONLY for new icons -->
|
||||||
|
<!-- All of these requirements must be fulfilled. -->
|
||||||
|
- [ ] I have provided valid use cases for each icon.
|
||||||
|
- [ ] I have not added any a brand or logo icon.
|
||||||
|
- [ ] I have not used any hate symbols.
|
||||||
|
- [ ] I have not included any religious or political imagery.
|
||||||
|
|
||||||
|
### Author, credits & license<!-- ONLY for new icons. -->
|
||||||
|
<!-- Please choose one of the following, and put an "x" next to it. -->
|
||||||
|
- [ ] The icons are solely my own creation.
|
||||||
|
- [ ] The icons were originally created in #<issueNumber> by @<githubUser>
|
||||||
|
- [ ] I've based them on the following Lucide icons: <!-- provide the list of icons -->
|
||||||
|
- [ ] I've based them on the following design: <!-- provide source URL and license permitting use -->
|
||||||
|
|
||||||
|
### Naming <!-- ONLY for new icons -->
|
||||||
|
<!-- All of these requirements must be fulfilled. -->
|
||||||
|
- [ ] I've read and followed the [naming conventions](https://lucide.dev/guide/design/icon-design-guide#naming-conventions)
|
||||||
|
- [ ] I've named icons by what they are rather than their use case.
|
||||||
|
- [ ] I've provided meta JSON files in `icons/[iconName].json`.
|
||||||
|
|
||||||
|
### Design <!-- ONLY for new icons -->
|
||||||
|
<!-- All of these requirements must be fulfilled. -->
|
||||||
|
- [ ] I've read and followed the [icon design guidelines](https://lucide.dev/guide/design/icon-design-guide)
|
||||||
|
- [ ] I've made sure that the icons look sharp on low DPI displays.
|
||||||
|
- [ ] I've made sure that the icons look consistent with the icon set in size, optical volume and density.
|
||||||
|
- [ ] I've made sure that the icons are visually centered.
|
||||||
|
- [ ] I've correctly optimized all icons to three points of precision.
|
||||||
|
|
||||||
|
## Before Submitting <!-- For every PR! -->
|
||||||
|
<!-- All of these requirements must be fulfilled. -->
|
||||||
|
- [ ] I've read the [Contribution Guidelines](https://github.com/lucide-icons/lucide/blob/main/CONTRIBUTING.md).
|
||||||
|
- [ ] I've checked if there was an existing PR that solves the same issue.
|
||||||
73
.github/workflows/ci.yml
vendored
Normal file
73
.github/workflows/ci.yml
vendored
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
name: Continuous integration icons
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
paths:
|
||||||
|
- icons/**/*.svg
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
create-release:
|
||||||
|
if: github.repository == 'lucide-icons/lucide'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
VERSION: ${{ steps.new-version.outputs.NEW_VERSION }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: pnpm/action-setup@v2
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 18
|
||||||
|
cache: 'pnpm'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
- name: Fetch tags
|
||||||
|
run: git fetch --all --tags
|
||||||
|
|
||||||
|
- name: Get latest tag
|
||||||
|
id: latest-tag
|
||||||
|
run: echo "LATEST_TAG=$(git describe --tags `git rev-list --tags --max-count=1`)" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Check if we can patch
|
||||||
|
run: .github/workflows/version-up.sh --minor
|
||||||
|
|
||||||
|
- name: Create new version
|
||||||
|
id: new-version
|
||||||
|
run: echo "NEW_VERSION=$(.github/workflows/version-up.sh --minor)" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Create change log
|
||||||
|
id: change-log
|
||||||
|
run: |
|
||||||
|
CHANGE_LOG=$(pnpm run generate:changelog --old-tag=${{ steps.latest-tag.outputs.LATEST_TAG }})
|
||||||
|
CHANGE_LOG=$(tail -n +5 <<< $CHANGE_LOG)
|
||||||
|
echo $CHANGE_LOG
|
||||||
|
EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64)
|
||||||
|
echo "CHANGE_LOG<<$EOF" >> $GITHUB_OUTPUT
|
||||||
|
echo "$CHANGE_LOG" >> $GITHUB_OUTPUT
|
||||||
|
echo "$EOF" >> $GITHUB_OUTPUT
|
||||||
|
env:
|
||||||
|
GITHUB_API_KEY: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Check output
|
||||||
|
run: |
|
||||||
|
echo '${{ steps.new-version.outputs.NEW_VERSION }}'
|
||||||
|
echo '${{ steps.change-log.outputs.CHANGE_LOG }}'
|
||||||
|
|
||||||
|
- name: Create Release
|
||||||
|
uses: softprops/action-gh-release@v1
|
||||||
|
with:
|
||||||
|
tag_name: ${{ steps.new-version.outputs.NEW_VERSION }}
|
||||||
|
name: New icons ${{ steps.new-version.outputs.NEW_VERSION }}
|
||||||
|
body: ${{ steps.change-log.outputs.CHANGE_LOG }}
|
||||||
|
|
||||||
|
start-release:
|
||||||
|
if: github.repository == 'lucide-icons/lucide'
|
||||||
|
needs: create-release
|
||||||
|
uses: './.github/workflows/release.yml'
|
||||||
|
secrets: inherit
|
||||||
|
with:
|
||||||
|
version: ${{ needs.create-release.outputs.VERSION }}
|
||||||
35
.github/workflows/close-issue-with-banned-phrases.yml
vendored
Normal file
35
.github/workflows/close-issue-with-banned-phrases.yml
vendored
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
name: Close Issue with Banned Phrases
|
||||||
|
|
||||||
|
on:
|
||||||
|
issues:
|
||||||
|
types: [opened]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
block_phrases:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
issues: write
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Check for blocked phrases in issue title
|
||||||
|
run: |
|
||||||
|
ISSUE_TITLE=$(jq -r '.issue.title' "$GITHUB_EVENT_PATH")
|
||||||
|
BLOCKED_PHRASES=("twitter" "whatsapp" "logo" "google" "tiktok" "facebook" "slack" "discord" "bluesky")
|
||||||
|
|
||||||
|
# Check title and body for blocked phrases
|
||||||
|
for PHRASE in "${BLOCKED_PHRASES[@]}"
|
||||||
|
do
|
||||||
|
if echo "$ISSUE_TITLE" | grep -i "$PHRASE"; then
|
||||||
|
gh issue close ${{ github.event.issue.number }} --reason "not planned" --comment "This looks like a duplicate, use the [search](https://github.com/lucide-icons/lucide/issues?q=is%3Aissue+$PHRASE) to find similar issues.
|
||||||
|
|
||||||
|
Read more about brand guideline rules at [We're not accepting new Brand icons #670](https://github.com/lucide-icons/lucide/issues/670).
|
||||||
|
|
||||||
|
Always happy to help on [Discord](https://discord.gg/EH6nSts)."
|
||||||
|
gh issue lock ${{ github.event.issue.number }} --reason spam
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ github.token }}
|
||||||
20
.github/workflows/close-stale-prs.yml
vendored
Normal file
20
.github/workflows/close-stale-prs.yml
vendored
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
name: Close stale issues and PR
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: '45 1 * * *'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
stale:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
pull-requests: write
|
||||||
|
steps:
|
||||||
|
- uses: actions/stale@v9
|
||||||
|
with:
|
||||||
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
stale-pr-message: This PR is stale because it has been open 45 days with no activity. Remove stale label or comment or this will be closed in 5 days.
|
||||||
|
close-pr-message: This PR was closed because it has been stalled for 5 days with no activity.
|
||||||
|
close-pr-label: 🧶 stale
|
||||||
|
days-before-stale: 30
|
||||||
|
days-before-issue-stale: -1
|
||||||
|
days-before-close: -1
|
||||||
48
.github/workflows/font.yml
vendored
48
.github/workflows/font.yml
vendored
@@ -1,48 +0,0 @@
|
|||||||
name: Build Lucide
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [ master ]
|
|
||||||
|
|
||||||
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
|
|
||||||
jobs:
|
|
||||||
Build:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Clone 'Lucide'
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
|
|
||||||
- name: Install FontForge
|
|
||||||
run: sudo apt-get install zlib1g-dev fontforge woff2
|
|
||||||
|
|
||||||
- name: Clone sfnt2woff-zopfli repo
|
|
||||||
run: git clone https://github.com/bramstein/sfnt2woff-zopfli.git sfnt2woff-zopfli
|
|
||||||
|
|
||||||
- name: Install and move sfnt2woff-zopfli
|
|
||||||
run: |
|
|
||||||
cd sfnt2woff-zopfli
|
|
||||||
make
|
|
||||||
sudo mv sfnt2woff-zopfli /usr/local/bin/sfnt2woff
|
|
||||||
|
|
||||||
- name: Clone woff2
|
|
||||||
run: git clone --recursive https://github.com/google/woff2.git
|
|
||||||
|
|
||||||
- name: Install woff2
|
|
||||||
run: |
|
|
||||||
cd woff2
|
|
||||||
sudo make clean all
|
|
||||||
sudo mv woff2_compress /usr/local/bin/ && sudo mv woff2_decompress /usr/local/bin/
|
|
||||||
|
|
||||||
- name: Install Font Custom dependency
|
|
||||||
run: sudo gem install fontcustom
|
|
||||||
|
|
||||||
- name: Build 'Lucide'
|
|
||||||
run: echo "Building Featherity font" && fontcustom compile ./icons -h -n Featherity -o build -F
|
|
||||||
|
|
||||||
- name: Zip 'Lucide'
|
|
||||||
run: zip -r Featherity.zip build
|
|
||||||
|
|
||||||
- name: 'Upload to Artifacts'
|
|
||||||
uses: actions/upload-artifact@v1.0.0
|
|
||||||
with:
|
|
||||||
name: Lucide
|
|
||||||
path: build
|
|
||||||
12
.github/workflows/labeler.yml
vendored
Normal file
12
.github/workflows/labeler.yml
vendored
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
name: 'Pull Request Labeler'
|
||||||
|
on:
|
||||||
|
- pull_request_target
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
triage:
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
pull-requests: write
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/labeler@v5
|
||||||
23
.github/workflows/linting.yml
vendored
Normal file
23
.github/workflows/linting.yml
vendored
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
name: Linting
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- '**'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
linting:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: pnpm/action-setup@v2
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 18
|
||||||
|
cache: 'pnpm'
|
||||||
|
|
||||||
|
- name: Install Dependencies
|
||||||
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
- name: Run Linter
|
||||||
|
run: pnpm lint
|
||||||
41
.github/workflows/lucide-angular.yml
vendored
Normal file
41
.github/workflows/lucide-angular.yml
vendored
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
name: Lucide Angular checks
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- packages/lucide-angular/**
|
||||||
|
- tools/build-icons/**
|
||||||
|
- pnpm-lock.yaml
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: pnpm/action-setup@v2
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 18
|
||||||
|
cache: 'pnpm'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: pnpm --filter lucide-angular build
|
||||||
|
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: pnpm/action-setup@v2
|
||||||
|
- uses: actions/setup-node@v3.8.1
|
||||||
|
with:
|
||||||
|
node-version: 18
|
||||||
|
cache: 'pnpm'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
- name: Test
|
||||||
|
run: pnpm --filter lucide-angular test
|
||||||
34
.github/workflows/lucide-font.yml
vendored
Normal file
34
.github/workflows/lucide-font.yml
vendored
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
name: Lucide font checks
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- icons/**
|
||||||
|
- tools/build-font/**
|
||||||
|
- pnpm-lock.yaml
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
lucide-font:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: pnpm/action-setup@v2
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 18
|
||||||
|
cache: 'pnpm'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
- name: Outline svg Icons
|
||||||
|
run: pnpm build:outline-icons
|
||||||
|
|
||||||
|
- name: Create font in ./lucide-font
|
||||||
|
run: pnpm build:font
|
||||||
|
|
||||||
|
- name: 'Upload to Artifacts'
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: lucide-font
|
||||||
|
path: lucide-font
|
||||||
27
.github/workflows/lucide-preact.yml
vendored
Normal file
27
.github/workflows/lucide-preact.yml
vendored
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
name: Lucide Preact Checks
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- packages/lucide-preact/**
|
||||||
|
- packages/shared/**
|
||||||
|
- tools/build-icons/**
|
||||||
|
- tools/rollup-plugins/**
|
||||||
|
- pnpm-lock.yaml
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
lucide-preact:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: pnpm/action-setup@v2
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 18
|
||||||
|
cache: 'pnpm'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
- name: Test
|
||||||
|
run: pnpm --filter lucide-preact test
|
||||||
27
.github/workflows/lucide-react-native.yml
vendored
Normal file
27
.github/workflows/lucide-react-native.yml
vendored
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
name: Lucide React Native checks
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- packages/lucide-react-native/**
|
||||||
|
- packages/shared/**
|
||||||
|
- tools/build-icons/**
|
||||||
|
- tools/rollup-plugins/**
|
||||||
|
- pnpm-lock.yaml
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
lucide-react-native:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: pnpm/action-setup@v2
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 18
|
||||||
|
cache: 'pnpm'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
- name: Test
|
||||||
|
run: pnpm --filter lucide-react-native test
|
||||||
44
.github/workflows/lucide-react.yml
vendored
Normal file
44
.github/workflows/lucide-react.yml
vendored
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
name: Lucide React Checks
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- packages/lucide-react/**
|
||||||
|
- packages/shared/**
|
||||||
|
- tools/build-icons/**
|
||||||
|
- tools/rollup-plugins/**
|
||||||
|
- scripts/generateNextJSAliases.mjs
|
||||||
|
- pnpm-lock.yaml
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: pnpm/action-setup@v2
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 18
|
||||||
|
cache: 'pnpm'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: pnpm --filter lucide-react build
|
||||||
|
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: pnpm/action-setup@v2
|
||||||
|
- uses: actions/setup-node@v3.8.1
|
||||||
|
with:
|
||||||
|
node-version: 18
|
||||||
|
cache: 'pnpm'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
- name: Test
|
||||||
|
run: pnpm --filter lucide-react test
|
||||||
24
.github/workflows/lucide-shared.yml
vendored
Normal file
24
.github/workflows/lucide-shared.yml
vendored
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
name: Lucide Shared Checks
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- packages/shared/**
|
||||||
|
- pnpm-lock.yaml
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: pnpm/action-setup@v2
|
||||||
|
- uses: actions/setup-node@v3.8.1
|
||||||
|
with:
|
||||||
|
node-version: 18
|
||||||
|
cache: 'pnpm'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
- name: Test
|
||||||
|
run: pnpm --filter lucide-react test
|
||||||
43
.github/workflows/lucide-solid.yml
vendored
Normal file
43
.github/workflows/lucide-solid.yml
vendored
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
name: Lucide Solid Checks
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- packages/lucide-solid/**
|
||||||
|
- packages/shared/**
|
||||||
|
- tools/build-icons/**
|
||||||
|
- tools/rollup-plugins/**
|
||||||
|
- pnpm-lock.yaml
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: pnpm/action-setup@v2
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 18
|
||||||
|
cache: 'pnpm'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: pnpm --filter lucide-solid build
|
||||||
|
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: pnpm/action-setup@v2
|
||||||
|
- uses: actions/setup-node@v3.8.1
|
||||||
|
with:
|
||||||
|
node-version: 18
|
||||||
|
cache: 'pnpm'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
- name: Test
|
||||||
|
run: pnpm --filter lucide-solid test
|
||||||
25
.github/workflows/lucide-static.yml
vendored
Normal file
25
.github/workflows/lucide-static.yml
vendored
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
name: Lucide Static checks
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- packages/lucide-static/**
|
||||||
|
- tools/build-icons/**
|
||||||
|
- pnpm-lock.yaml
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
lucide-static:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: pnpm/action-setup@v2
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 18
|
||||||
|
cache: 'pnpm'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: pnpm --filter lucide-static build
|
||||||
43
.github/workflows/lucide-svelte.yml
vendored
Normal file
43
.github/workflows/lucide-svelte.yml
vendored
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
name: Lucide Svelte checks
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- packages/lucide-svelte/**
|
||||||
|
- packages/shared/**
|
||||||
|
- tools/build-icons/**
|
||||||
|
- tools/rollup-plugins/**
|
||||||
|
- pnpm-lock.yaml
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: pnpm/action-setup@v2
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 18
|
||||||
|
cache: 'pnpm'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: pnpm --filter lucide-svelte build
|
||||||
|
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: pnpm/action-setup@v2
|
||||||
|
- uses: actions/setup-node@v3.8.1
|
||||||
|
with:
|
||||||
|
node-version: 18
|
||||||
|
cache: 'pnpm'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
- name: Test
|
||||||
|
run: pnpm --filter lucide-svelte test
|
||||||
43
.github/workflows/lucide-vue-next.yml
vendored
Normal file
43
.github/workflows/lucide-vue-next.yml
vendored
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
name: Lucide Vue Next checks
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- packages/lucide-vue-next/**
|
||||||
|
- packages/shared/**
|
||||||
|
- tools/build-icons/**
|
||||||
|
- tools/rollup-plugins/**
|
||||||
|
- pnpm-lock.yaml
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: pnpm/action-setup@v2
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 18
|
||||||
|
cache: 'pnpm'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: pnpm --filter lucide-vue-next build
|
||||||
|
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: pnpm/action-setup@v2
|
||||||
|
- uses: actions/setup-node@v3.8.1
|
||||||
|
with:
|
||||||
|
node-version: 18
|
||||||
|
cache: 'pnpm'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
- name: Test
|
||||||
|
run: pnpm --filter lucide-vue-next test
|
||||||
43
.github/workflows/lucide-vue.yml
vendored
Normal file
43
.github/workflows/lucide-vue.yml
vendored
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
name: Lucide Vue checks
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- packages/lucide-vue/**
|
||||||
|
- packages/shared/**
|
||||||
|
- tools/build-icons/**
|
||||||
|
- tools/rollup-plugins/**
|
||||||
|
- pnpm-lock.yaml
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: pnpm/action-setup@v2
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 18
|
||||||
|
cache: 'pnpm'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: pnpm --filter lucide-vue build
|
||||||
|
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: pnpm/action-setup@v2
|
||||||
|
- uses: actions/setup-node@v3.8.1
|
||||||
|
with:
|
||||||
|
node-version: 18
|
||||||
|
cache: 'pnpm'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
- name: Test
|
||||||
|
run: pnpm --filter lucide-vue test
|
||||||
42
.github/workflows/lucide.yml
vendored
Normal file
42
.github/workflows/lucide.yml
vendored
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
name: Lucide checks
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- packages/lucide/**
|
||||||
|
- tools/build-icons/**
|
||||||
|
- tools/rollup-plugins/**
|
||||||
|
- pnpm-lock.yaml
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: pnpm/action-setup@v2
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 18
|
||||||
|
cache: 'pnpm'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: pnpm --filter lucide build
|
||||||
|
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- uses: pnpm/action-setup@v2
|
||||||
|
- uses: actions/setup-node@v3.8.1
|
||||||
|
with:
|
||||||
|
node-version: 18
|
||||||
|
cache: 'pnpm'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
- name: Test
|
||||||
|
run: pnpm --filter lucide test
|
||||||
123
.github/workflows/pull-request.yml
vendored
Normal file
123
.github/workflows/pull-request.yml
vendored
Normal file
@@ -0,0 +1,123 @@
|
|||||||
|
name: Add Changed Icons comment
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request_target:
|
||||||
|
paths:
|
||||||
|
- 'icons/*'
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
- fix-icon-preview
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
lint-filenames:
|
||||||
|
if: github.repository == 'lucide-icons/lucide'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
ref: refs/pull/${{ github.event.pull_request.number }}/merge
|
||||||
|
- name: Get changed files
|
||||||
|
id: changed-files
|
||||||
|
uses: tj-actions/changed-files@v41
|
||||||
|
with:
|
||||||
|
files: icons/*
|
||||||
|
- name: Generate annotations
|
||||||
|
run: node ./scripts/lintFilenames.mjs
|
||||||
|
env:
|
||||||
|
CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
|
||||||
|
|
||||||
|
lint-contributors:
|
||||||
|
if: github.repository == 'lucide-icons/lucide'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
ref: refs/pull/${{ github.event.pull_request.number }}/merge
|
||||||
|
- name: Get changed files
|
||||||
|
id: changed-files
|
||||||
|
uses: tj-actions/changed-files@v41
|
||||||
|
with:
|
||||||
|
files: icons/*
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
- name: Install simple-git (safer and faster than installing all deps)
|
||||||
|
run: npm install simple-git
|
||||||
|
- name: Generate annotations
|
||||||
|
run: node ./scripts/updateContributors.mjs
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
FETCH_DEPTH: ${{ github.event.pull_request.commits }}
|
||||||
|
CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
|
||||||
|
- name: Generate annotations
|
||||||
|
env:
|
||||||
|
ANNOTATION_SEVERITY: notice
|
||||||
|
ANNOTATION_TITLE: Contributors have changed!
|
||||||
|
ANNOTATION_DESCRIPTION: Don't add people who have only performed automatic optimizations.
|
||||||
|
run: |
|
||||||
|
git diff --unified=0 -- icons/*.json | # diff icon metadata (unified=0 gives the correct chunk line number)
|
||||||
|
perl -ne '/^(\+|- |@)/ && print' | # get chunks (lines that start with "+++", "@@", "+ ", "- ")
|
||||||
|
perl -pe 's/\n/%0A/' | # url encode line breaks (\n -> %0A)
|
||||||
|
perl -pe 's/%0A(\+\+\+ b\/)/\n\1/g' | # split chunks(one chunk per line)
|
||||||
|
perl -pe "s/\+\+\+ b\/([^@]*)%0A@@ -(\d+)[^\s]* \+(\d+)[^@]*@@(.*)/::$ANNOTATION_SEVERITY file=\1,line=\2,endLine=\3,title=$ANNOTATION_TITLE::$ANNOTATION_DESCRIPTION%0A\4/"
|
||||||
|
# Example for the previous substitution
|
||||||
|
# input: +++ b/icons/accessibility.json%0A@@ -2,0 +3 @@%0A+ "contributors": ["hi"],%0A@@ -13 +14 @@%0A+}%0A
|
||||||
|
# output: ::$ANNOTATION_SEVERITY file=icons/accessibility.json,line=2,endLine=3,title=$ANNOTATION_TITLE::$ANNOTATION_DESCRIPTION%0A%0A+ "contributors": ["hi"],%0A@@ -13 +14 @@%0A+}%0A
|
||||||
|
|
||||||
|
lint-aliases:
|
||||||
|
name: Check Uniqueness of Aliases
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Check Uniqueness of Aliases
|
||||||
|
run: "! cat <(printf \"%s\\n\" icons/*.json | while read -r name; do basename \"$name\" .json; done) <(jq -cr 'select(.aliases) | .aliases[] | if type==\"string\" then . else .name end' icons/*.json) | sort | uniq -c | grep -ve '^\\s*1 '"
|
||||||
|
|
||||||
|
generate-changed-icons-comment:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
pull-requests: write
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
ref: refs/pull/${{ github.event.pull_request.number }}/merge
|
||||||
|
|
||||||
|
- name: Get changed files
|
||||||
|
id: changed-files
|
||||||
|
uses: tj-actions/changed-files@v41
|
||||||
|
with:
|
||||||
|
files: icons/*.svg
|
||||||
|
|
||||||
|
- name: Find Comment
|
||||||
|
uses: peter-evans/find-comment@v2
|
||||||
|
id: pr-comment
|
||||||
|
with:
|
||||||
|
issue-number: ${{ github.event.pull_request.number }}
|
||||||
|
comment-author: 'github-actions[bot]'
|
||||||
|
body-includes: Added or changed icons
|
||||||
|
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
- name: Install svgson for code preview (safer and faster than installing all deps)
|
||||||
|
run: npm install svgson
|
||||||
|
|
||||||
|
- name: Generate comment markup
|
||||||
|
run: node ./scripts/generateChangedIconsCommentMarkup.mjs >> comment-markup.md
|
||||||
|
id: comment-markup
|
||||||
|
env:
|
||||||
|
CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
|
||||||
|
|
||||||
|
- name: Create or update comment
|
||||||
|
uses: peter-evans/create-or-update-comment@v3
|
||||||
|
with:
|
||||||
|
comment-id: ${{ steps.pr-comment.outputs.comment-id }}
|
||||||
|
issue-number: ${{ github.event.pull_request.number }}
|
||||||
|
body-path: ./comment-markup.md
|
||||||
|
edit-mode: replace
|
||||||
159
.github/workflows/release.yml
vendored
Normal file
159
.github/workflows/release.yml
vendored
Normal file
@@ -0,0 +1,159 @@
|
|||||||
|
name: Release Packages
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
tags:
|
||||||
|
- 'v*'
|
||||||
|
|
||||||
|
workflow_call:
|
||||||
|
inputs:
|
||||||
|
version:
|
||||||
|
required: true
|
||||||
|
description: Version
|
||||||
|
type: string
|
||||||
|
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
version:
|
||||||
|
description: Version
|
||||||
|
required: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
pre-release:
|
||||||
|
if: github.repository == 'lucide-icons/lucide' && contains('["ericfennis", "karsa-mistmere"]', github.actor)
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
outputs:
|
||||||
|
VERSION: ${{ steps.get_version.outputs.VERSION }}
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Get the version
|
||||||
|
id: get_version
|
||||||
|
run: |
|
||||||
|
echo $VERSION_REF
|
||||||
|
echo "VERSION=${VERSION_REF/refs\/tags\/\v}" >> $GITHUB_OUTPUT
|
||||||
|
env:
|
||||||
|
VERSION_REF: ${{ inputs.version || github.event.inputs.version || github.ref }}
|
||||||
|
|
||||||
|
release:
|
||||||
|
if: github.repository == 'lucide-icons/lucide'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: pre-release
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
package:
|
||||||
|
[
|
||||||
|
'lucide',
|
||||||
|
'lucide-react',
|
||||||
|
'lucide-react-native',
|
||||||
|
'lucide-vue',
|
||||||
|
'lucide-vue-next',
|
||||||
|
'lucide-angular',
|
||||||
|
'lucide-preact',
|
||||||
|
'lucide-solid',
|
||||||
|
'lucide-svelte',
|
||||||
|
]
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: pnpm/action-setup@v2
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 18
|
||||||
|
cache: 'pnpm'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
- name: Set Auth Token
|
||||||
|
run: npm config set //registry.npmjs.org/:_authToken ${{ inputs.NPM_TOKEN || secrets.NPM_TOKEN }}
|
||||||
|
|
||||||
|
- name: Set new version
|
||||||
|
run: pnpm --filter ${{ matrix.package }} version --new-version ${{ needs.pre-release.outputs.VERSION }} --no-git-tag-version
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: pnpm --filter ${{ matrix.package }} build
|
||||||
|
|
||||||
|
- name: Test
|
||||||
|
run: pnpm --filter ${{ matrix.package }} test
|
||||||
|
|
||||||
|
- name: Publish
|
||||||
|
run: pnpm --filter ${{ matrix.package }} publish --no-git-checks --ignore-scripts
|
||||||
|
|
||||||
|
lucide-static:
|
||||||
|
if: github.repository == 'lucide-icons/lucide'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: [pre-release, lucide-font]
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: actions/download-artifact@v3
|
||||||
|
- uses: pnpm/action-setup@v2
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 18
|
||||||
|
cache: 'pnpm'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
- name: Set Auth Token
|
||||||
|
run: npm config set //registry.npmjs.org/:_authToken ${{ secrets.NPM_TOKEN }}
|
||||||
|
|
||||||
|
- name: Set new version
|
||||||
|
run: pnpm --filter lucide-static version --new-version ${{ needs.pre-release.outputs.VERSION }} --no-git-tag-version
|
||||||
|
|
||||||
|
- name: Move Font
|
||||||
|
run: cp -r lucide-font packages/lucide-static/font
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: pnpm --filter lucide-static build
|
||||||
|
|
||||||
|
- name: Publish
|
||||||
|
run: pnpm --filter lucide-static publish --no-git-checks
|
||||||
|
|
||||||
|
lucide-font:
|
||||||
|
if: github.repository == 'lucide-icons/lucide'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: pre-release
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: pnpm/action-setup@v2
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 18
|
||||||
|
cache: 'pnpm'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
- name: Outline svg Icons
|
||||||
|
run: pnpm build:outline-icons
|
||||||
|
|
||||||
|
- name: Create font in ./lucide-font
|
||||||
|
run: pnpm build:font
|
||||||
|
|
||||||
|
- name: 'Upload to Artifacts'
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
name: lucide-font
|
||||||
|
path: lucide-font
|
||||||
|
|
||||||
|
post-release:
|
||||||
|
if: github.repository == 'lucide-icons/lucide'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
needs: [pre-release, lucide-font]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: actions/download-artifact@v3
|
||||||
|
- name: Zip font and icons
|
||||||
|
run: |
|
||||||
|
zip -r lucide-font-${{ needs.pre-release.outputs.VERSION }}.zip lucide-font
|
||||||
|
zip -r lucide-icons-${{ needs.pre-release.outputs.VERSION }}.zip icons
|
||||||
|
|
||||||
|
- name: Release zip and fonts
|
||||||
|
uses: softprops/action-gh-release@v1
|
||||||
|
with:
|
||||||
|
tag_name: ${{ needs.pre-release.outputs.VERSION }}
|
||||||
|
files: |
|
||||||
|
lucide-font-${{ needs.pre-release.outputs.VERSION }}.zip
|
||||||
|
lucide-icons-${{ needs.pre-release.outputs.VERSION }}.zip
|
||||||
284
.github/workflows/version-up.sh
vendored
Executable file
284
.github/workflows/version-up.sh
vendored
Executable file
@@ -0,0 +1,284 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
## Copyright (C) 2017, Oleksandr Kucherenko
|
||||||
|
## Last revisit: 2017-09-29
|
||||||
|
|
||||||
|
## get highest version tag for all branches
|
||||||
|
function highest_tag(){
|
||||||
|
local TAG=$(git describe --tags `git rev-list --tags --max-count=1`)
|
||||||
|
echo "$TAG"
|
||||||
|
}
|
||||||
|
|
||||||
|
## extract current branch name
|
||||||
|
function current_branch(){
|
||||||
|
## expected: heads/{branch_name}
|
||||||
|
## expected: {branch_name}
|
||||||
|
local BRANCH=$(git rev-parse --abbrev-ref HEAD | cut -d"/" -f2)
|
||||||
|
echo "$BRANCH"
|
||||||
|
}
|
||||||
|
|
||||||
|
## get latest/head commit hash number
|
||||||
|
function head_hash(){
|
||||||
|
local COMMIT_HASH=$(git rev-parse --verify HEAD)
|
||||||
|
echo "$COMMIT_HASH"
|
||||||
|
}
|
||||||
|
|
||||||
|
## extract tag commit hash code, tag name provided by argument
|
||||||
|
function tag_hash(){
|
||||||
|
local TAG_HASH=$(git log -1 --format=format:"%H" $1 2>/dev/null | tail -n1)
|
||||||
|
echo "$TAG_HASH"
|
||||||
|
}
|
||||||
|
|
||||||
|
## get latest revision number
|
||||||
|
function latest_revision(){
|
||||||
|
local REV=$(git rev-list --count HEAD 2>/dev/null)
|
||||||
|
echo "$REV"
|
||||||
|
}
|
||||||
|
|
||||||
|
## parse last found tag, extract it PARTS
|
||||||
|
function parse_last(){
|
||||||
|
local position=$(($1-1))
|
||||||
|
|
||||||
|
# two parts found only
|
||||||
|
local SUBS=( ${PARTS[$position]//-/ } )
|
||||||
|
#echo ${SUBS[@]}, size: ${#SUBS}
|
||||||
|
|
||||||
|
# found NUMBER
|
||||||
|
PARTS[$position]=${SUBS[0]}
|
||||||
|
#echo ${PARTS[@]}
|
||||||
|
|
||||||
|
# found SUFFIX
|
||||||
|
if [[ ${#SUBS} -ge 1 ]]; then
|
||||||
|
PARTS[4]=${SUBS[1],,} #lowercase
|
||||||
|
#echo ${PARTS[@]}, ${SUBS[@]}
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
## increment REVISION part, don't touch STAGE
|
||||||
|
function increment_revision(){
|
||||||
|
PARTS[3]=$(( PARTS[3] + 1 ))
|
||||||
|
IS_DIRTY=1
|
||||||
|
}
|
||||||
|
|
||||||
|
## increment PATCH part, reset all other lower PARTS, don't touch STAGE
|
||||||
|
function increment_patch(){
|
||||||
|
PARTS[2]=$(( PARTS[2] + 1 ))
|
||||||
|
PARTS[3]=0
|
||||||
|
IS_DIRTY=1
|
||||||
|
}
|
||||||
|
|
||||||
|
## increment MINOR part, reset all other lower PARTS, don't touch STAGE
|
||||||
|
function increment_minor(){
|
||||||
|
PARTS[1]=$(( PARTS[1] + 1 ))
|
||||||
|
PARTS[2]=0
|
||||||
|
PARTS[3]=0
|
||||||
|
IS_DIRTY=1
|
||||||
|
}
|
||||||
|
|
||||||
|
## increment MAJOR part, reset all other lower PARTS, don't touch STAGE
|
||||||
|
function incremet_major(){
|
||||||
|
PARTS[0]="v$(( PARTS[0] + 1 ))"
|
||||||
|
PARTS[1]=0
|
||||||
|
PARTS[2]=0
|
||||||
|
PARTS[3]=0
|
||||||
|
IS_DIRTY=1
|
||||||
|
}
|
||||||
|
|
||||||
|
## increment the number only of last found PART: REVISION --> PATCH --> MINOR. don't touch STAGE
|
||||||
|
function increment_last_found(){
|
||||||
|
if [[ "${#PARTS[3]}" == 0 || "${PARTS[3]}" == "0" ]]; then
|
||||||
|
if [[ "${#PARTS[2]}" == 0 || "${PARTS[2]}" == "0" ]]; then
|
||||||
|
increment_minor
|
||||||
|
else
|
||||||
|
increment_patch
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
increment_revision
|
||||||
|
fi
|
||||||
|
|
||||||
|
# stage part is not EMPTY
|
||||||
|
if [[ "${#PARTS[4]}" != 0 ]]; then
|
||||||
|
IS_SHIFT=1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
## compose version from PARTS
|
||||||
|
function compose(){
|
||||||
|
MAJOR="${PARTS[0]}"
|
||||||
|
MINOR=".${PARTS[1]}"
|
||||||
|
PATCH=".${PARTS[2]}"
|
||||||
|
REVISION=".${PARTS[3]}"
|
||||||
|
SUFFIX="-${PARTS[4]}"
|
||||||
|
|
||||||
|
if [[ "${#PATCH}" == 1 ]]; then # if empty {PATCH}
|
||||||
|
PATCH=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "${#REVISION}" == 1 ]]; then # if empty {REVISION}
|
||||||
|
REVISION=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "${PARTS[3]}" == "0" ]]; then # if revision is ZERO
|
||||||
|
REVISION=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
# shrink patch and revision
|
||||||
|
if [[ -z "${REVISION// }" ]]; then
|
||||||
|
if [[ "${PARTS[2]}" == "0" ]]; then
|
||||||
|
PATCH=".0"
|
||||||
|
fi
|
||||||
|
else # revision is not EMPTY
|
||||||
|
if [[ "${#PATCH}" == 0 ]]; then
|
||||||
|
PATCH=".0"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# remove suffix if we don't have a alpha/beta/rc
|
||||||
|
if [[ "${#SUFFIX}" == 1 ]]; then
|
||||||
|
SUFFIX=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
echo "${MAJOR}${MINOR}${PATCH}${REVISION}${SUFFIX}" #full format
|
||||||
|
}
|
||||||
|
|
||||||
|
# initial version used for repository without tags
|
||||||
|
INIT_VERSION=0.0.0.0-alpha
|
||||||
|
|
||||||
|
# do GIT data extracting
|
||||||
|
TAG=$(highest_tag)
|
||||||
|
REVISION=$(latest_revision)
|
||||||
|
BRANCH=$(current_branch)
|
||||||
|
TAG_HASH=$(tag_hash $TAG)
|
||||||
|
HEAD_HASH=$(head_hash)
|
||||||
|
|
||||||
|
# if tag and branch commit hashes are different, than print info about that
|
||||||
|
#echo $HEAD_HASH vs $TAG_HASH
|
||||||
|
if [[ "$@" == "" ]]; then
|
||||||
|
if [[ "$TAG_HASH" == "$HEAD_HASH" ]]; then
|
||||||
|
echo "Tag $TAG and HEAD are aligned. We will stay on the TAG version."
|
||||||
|
echo ""
|
||||||
|
NO_ARGS_VALUE='--stay'
|
||||||
|
else
|
||||||
|
PATTERN="^[0-9]+.[0-9]+(.[0-9]+)*(-(alpha|beta|rc))*$"
|
||||||
|
|
||||||
|
if [[ "$BRANCH" =~ $PATTERN ]]; then
|
||||||
|
echo "Detected version branch '$BRANCH'. We will auto-increment the last version PART."
|
||||||
|
echo ""
|
||||||
|
NO_ARGS_VALUE='--default'
|
||||||
|
else
|
||||||
|
echo "Detected branch name '$BRANCH' than does not match version pattern. We will increase MINOR."
|
||||||
|
echo ""
|
||||||
|
NO_ARGS_VALUE='--minor'
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
#
|
||||||
|
# {MAJOR}.{MINOR}[.{PATCH}[.{REVISION}][-(.*)]
|
||||||
|
#
|
||||||
|
# Suffix: alpha, beta, rc
|
||||||
|
# No Suffix --> {NEW_VERSION}-alpha
|
||||||
|
# alpha --> beta
|
||||||
|
# beta --> rc
|
||||||
|
# rc --> {VERSION}
|
||||||
|
#
|
||||||
|
PARTS=( ${TAG//./ } )
|
||||||
|
parse_last ${#PARTS[@]} # array size as argument
|
||||||
|
#echo ${PARTS[@]}
|
||||||
|
|
||||||
|
# if no parameters than emulate --default parameter
|
||||||
|
if [[ "$@" == "" ]]; then
|
||||||
|
set -- $NO_ARGS_VALUE
|
||||||
|
fi
|
||||||
|
|
||||||
|
# parse input parameters
|
||||||
|
for i in "$@"
|
||||||
|
do
|
||||||
|
key="$i"
|
||||||
|
|
||||||
|
case $key in
|
||||||
|
-a|--alpha) # switched to ALPHA
|
||||||
|
PARTS[4]="alpha"
|
||||||
|
IS_SHIFT=1
|
||||||
|
;;
|
||||||
|
-b|--beta) # switched to BETA
|
||||||
|
PARTS[4]="beta"
|
||||||
|
IS_SHIFT=1
|
||||||
|
;;
|
||||||
|
-c|--release-candidate) # switched to RC
|
||||||
|
PARTS[4]="rc"
|
||||||
|
IS_SHIFT=1
|
||||||
|
;;
|
||||||
|
-r|--release) # switched to RELEASE
|
||||||
|
PARTS[4]=""
|
||||||
|
IS_SHIFT=1
|
||||||
|
;;
|
||||||
|
-p|--patch) # increment of PATCH
|
||||||
|
increment_patch
|
||||||
|
;;
|
||||||
|
-e|--revision) # increment of REVISION
|
||||||
|
increment_revision
|
||||||
|
;;
|
||||||
|
-g|--git-revision) # use git revision number as a revision part§
|
||||||
|
PARTS[3]=$(( REVISION ))
|
||||||
|
IS_DIRTY=1
|
||||||
|
;;
|
||||||
|
-i|--minor) # increment of MINOR by default
|
||||||
|
increment_minor
|
||||||
|
;;
|
||||||
|
--default) # stay on the same stage, but increment only last found PART of version code
|
||||||
|
increment_last_found
|
||||||
|
;;
|
||||||
|
-m|--major) # increment of MAJOR
|
||||||
|
incremet_major
|
||||||
|
;;
|
||||||
|
-s|--stay) # extract version info
|
||||||
|
IS_DIRTY=1
|
||||||
|
NO_APPLY_MSG=1
|
||||||
|
;;
|
||||||
|
-t|--tag-only) # extract version info
|
||||||
|
TAG_ONLY=1
|
||||||
|
;;
|
||||||
|
--apply)
|
||||||
|
DO_APPLY=1
|
||||||
|
;;
|
||||||
|
-h|--help)
|
||||||
|
help
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
# detected shift, but no increment
|
||||||
|
if [[ "$IS_SHIFT" == "1" ]]; then
|
||||||
|
# temporary disable stage shift
|
||||||
|
stage=${PARTS[4]}
|
||||||
|
PARTS[4]=''
|
||||||
|
|
||||||
|
# detect first run on repository, INIT_VERSION was used
|
||||||
|
if [[ "$(compose)" == "0.0" ]]; then
|
||||||
|
increment_minor
|
||||||
|
fi
|
||||||
|
|
||||||
|
PARTS[4]=$stage
|
||||||
|
fi
|
||||||
|
|
||||||
|
# no increment applied yet and no shift of state, do minor increase
|
||||||
|
if [[ "$IS_DIRTY$IS_SHIFT" == "" ]]; then
|
||||||
|
increment_minor
|
||||||
|
fi
|
||||||
|
|
||||||
|
compose
|
||||||
|
|
||||||
|
# is proposed tag in conflict with any other TAG
|
||||||
|
PROPOSED_HASH=$(tag_hash $(compose))
|
||||||
|
if [[ "${#PROPOSED_HASH}" -gt 0 && "$NO_APPLY_MSG" == "" ]]; then
|
||||||
|
echo -e "\033[31mERROR:\033[0m "
|
||||||
|
echo -e "\033[31mERROR:\033[0m Found conflict with existing tag \033[32m$(compose)\033[0m / $PROPOSED_HASH"
|
||||||
|
echo -e "\033[31mERROR:\033[0m Only manual resolving is possible now."
|
||||||
|
echo -e "\033[31mERROR:\033[0m "
|
||||||
|
echo -e "\033[31mERROR:\033[0m To Resolve try to add --revision or --patch modifier."
|
||||||
|
echo -e "\033[31mERROR:\033[0m "
|
||||||
|
echo ""
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
39
.gitignore
vendored
39
.gitignore
vendored
@@ -1,12 +1,49 @@
|
|||||||
.DS_Store
|
.DS_Store
|
||||||
|
.idea
|
||||||
.next
|
.next
|
||||||
|
.obsidian
|
||||||
.now
|
.now
|
||||||
|
.idea
|
||||||
node_modules
|
node_modules
|
||||||
dist
|
dist
|
||||||
build
|
build
|
||||||
/lib
|
|
||||||
sandbox
|
sandbox
|
||||||
stash
|
stash
|
||||||
coverage
|
coverage
|
||||||
stats
|
stats
|
||||||
*.log
|
*.log
|
||||||
|
outlined
|
||||||
|
packages/**/src/icons/*.js
|
||||||
|
packages/**/src/icons/*.ts
|
||||||
|
packages/**/src/icons/*.tsx
|
||||||
|
packages/**/src/aliases/*.ts
|
||||||
|
packages/**/src/aliases.ts
|
||||||
|
!packages/**/src/aliases/index.ts
|
||||||
|
packages/**/src/dynamicIconImports.ts
|
||||||
|
packages/**/DynamicIcon.d.ts
|
||||||
|
packages/**/dynamicIconImports.js
|
||||||
|
packages/**/dynamicIconImports.d.ts
|
||||||
|
packages/**/dynamicIconImports.js.map
|
||||||
|
packages/**/dynamic.d.ts
|
||||||
|
packages/**/dynamic.mjs.map
|
||||||
|
packages/**/dynamic.mjs
|
||||||
|
packages/**/LICENSE
|
||||||
|
categories.json
|
||||||
|
tags.json
|
||||||
|
.vercel
|
||||||
|
|
||||||
|
# docs
|
||||||
|
docs/.vitepress/cache
|
||||||
|
docs/.vitepress/dist
|
||||||
|
docs/.vitepress/.temp
|
||||||
|
docs/.vitepress/data/iconNodes
|
||||||
|
docs/.vitepress/data/iconMetaData.ts
|
||||||
|
docs/.vitepress/data/releaseMetaData.json
|
||||||
|
docs/.vitepress/data/releaseMetaData
|
||||||
|
docs/.vitepress/data/categoriesData.json
|
||||||
|
docs/.vitepress/data/iconDetails
|
||||||
|
docs/.vitepress/data/relatedIcons.json
|
||||||
|
docs/.vercel
|
||||||
|
docs/.nitro
|
||||||
|
.gitignore
|
||||||
|
|
||||||
|
|||||||
5
.husky/pre-commit
Executable file
5
.husky/pre-commit
Executable file
@@ -0,0 +1,5 @@
|
|||||||
|
#!/usr/bin/env sh
|
||||||
|
. "$(dirname -- "$0")/_/husky.sh"
|
||||||
|
|
||||||
|
pnpm lint-staged
|
||||||
|
pnpm checkIcons
|
||||||
10
.npmignore
10
.npmignore
@@ -4,4 +4,12 @@ stats
|
|||||||
node_modules
|
node_modules
|
||||||
tests
|
tests
|
||||||
scripts
|
scripts
|
||||||
site
|
src
|
||||||
|
build
|
||||||
|
babel.config.js
|
||||||
|
categories.json
|
||||||
|
jest.config.js
|
||||||
|
netlify.toml
|
||||||
|
rollup.config.js
|
||||||
|
rollup.plugins.js
|
||||||
|
tags.json
|
||||||
|
|||||||
23
.prettierignore
Normal file
23
.prettierignore
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
pnpm-lock.yaml
|
||||||
|
|
||||||
|
# docs examples
|
||||||
|
docs/**/examples/
|
||||||
|
docs/.vitepress/.temp
|
||||||
|
docs/.vitepress/cache
|
||||||
|
docs/.vitepress/data
|
||||||
|
docs/.nitro
|
||||||
|
|
||||||
|
# lucide-angular
|
||||||
|
packages/lucide-angular/.angular/cache
|
||||||
|
|
||||||
|
# lucide-static
|
||||||
|
packages/lucide-static/icons
|
||||||
|
packages/lucide-static/lib
|
||||||
|
packages/lucide-static/sprite.svg
|
||||||
|
packages/lucide-static/tags.json
|
||||||
|
packages/lucide-static/icon-nodes.json
|
||||||
|
packages/lucide-static/font
|
||||||
|
|
||||||
|
# lucide-svelte
|
||||||
|
packages/lucide-svelte/src/icons/*.svelte
|
||||||
|
packages/lucide-svelte/.svelte-kit
|
||||||
15
.vscode/launch.json
vendored
Normal file
15
.vscode/launch.json
vendored
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
// Use IntelliSense to learn about possible attributes.
|
||||||
|
// Hover to view descriptions of existing attributes.
|
||||||
|
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"type": "pwa-chrome",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "Launch Chrome against localhost",
|
||||||
|
"url": "http://localhost:8080",
|
||||||
|
"webRoot": "${workspaceFolder}"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
6
.vscode/settings.json
vendored
Normal file
6
.vscode/settings.json
vendored
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"cSpell.words": ["devs", "preact", "Preact"],
|
||||||
|
"eslint.enable": true,
|
||||||
|
"eslint.validate": ["javascript", "svg"],
|
||||||
|
"svg.preview.background": "transparent"
|
||||||
|
}
|
||||||
95
.vscode/svg.code-snippets
vendored
Normal file
95
.vscode/svg.code-snippets
vendored
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
{
|
||||||
|
"Lucide SVG": {
|
||||||
|
"scope": "xml",
|
||||||
|
"description": "Base SVG with Lucide attributes.",
|
||||||
|
"prefix": [
|
||||||
|
"svg",
|
||||||
|
"lucide"
|
||||||
|
],
|
||||||
|
"body": [
|
||||||
|
"<svg",
|
||||||
|
" xmlns=\"http://www.w3.org/2000/svg\"",
|
||||||
|
" width=\"24\"",
|
||||||
|
" height=\"24\"",
|
||||||
|
" viewBox=\"0 0 24 24\"",
|
||||||
|
" fill=\"none\"",
|
||||||
|
" stroke=\"currentColor\"",
|
||||||
|
" stroke-width=\"2\"",
|
||||||
|
" stroke-linecap=\"round\"",
|
||||||
|
" stroke-linejoin=\"round\"",
|
||||||
|
">",
|
||||||
|
" $0",
|
||||||
|
"</svg>"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Rectangle": {
|
||||||
|
"scope": "xml",
|
||||||
|
"description": "SVG `rect`angle, with Lucide defaults.",
|
||||||
|
"prefix": [
|
||||||
|
"rect",
|
||||||
|
"<rect"
|
||||||
|
],
|
||||||
|
"body": "<rect width=\"${1:20}\" height=\"${2:12}\" x=\"${3:2}\" y=\"${4:6}\" rx=\"${5|2,1|}\"/>"
|
||||||
|
},
|
||||||
|
"Square": {
|
||||||
|
"scope": "xml",
|
||||||
|
"description": "SVG square `rect`angle, with Lucide defaults.",
|
||||||
|
"prefix": [
|
||||||
|
"square",
|
||||||
|
"rect",
|
||||||
|
"<rect",
|
||||||
|
"tile"
|
||||||
|
],
|
||||||
|
"body": "<rect width=\"${1:18}\" height=\"$1\" x=\"${2:3}\" y=\"${3:$2}\" rx=\"${4|2,1|}\" />"
|
||||||
|
},
|
||||||
|
"Circle": {
|
||||||
|
"scope": "xml",
|
||||||
|
"description": "SVG `circle`, with Lucide defaults.",
|
||||||
|
"prefix": [
|
||||||
|
"circle",
|
||||||
|
"<circle"
|
||||||
|
],
|
||||||
|
"body": "<circle cx=\"${2:12}\" cy=\"${3:$2}\" r=\"${1|10,2,.5\" fill=\"currentColor|}\" />"
|
||||||
|
},
|
||||||
|
"Ellipse": {
|
||||||
|
"scope": "xml",
|
||||||
|
"description": "SVG `ellipse`.",
|
||||||
|
"prefix": [
|
||||||
|
"ellipse",
|
||||||
|
"<ellipse"
|
||||||
|
],
|
||||||
|
"body": "<ellipse cx=\"${3:12}\" cy=\"${4:$3}\" rx=\"${1:10}\" ry=\"${2:$1}\" />"
|
||||||
|
},
|
||||||
|
"Path": {
|
||||||
|
"scope": "xml",
|
||||||
|
"description": "SVG custom `path`.",
|
||||||
|
"prefix": [
|
||||||
|
"path",
|
||||||
|
"<path",
|
||||||
|
"polyline",
|
||||||
|
"<polyline",
|
||||||
|
"polygon",
|
||||||
|
"<polygon"
|
||||||
|
],
|
||||||
|
"body": "<path d=\"${1|M,m|}$0\" />"
|
||||||
|
},
|
||||||
|
"Line": {
|
||||||
|
"scope": "xml",
|
||||||
|
"description": "SVG `path`, preffered to `line` in Lucide.",
|
||||||
|
"prefix": [
|
||||||
|
"line",
|
||||||
|
"<line",
|
||||||
|
"minus"
|
||||||
|
],
|
||||||
|
"body": "<path d=\"M${3:5} ${4:12}${1|h,v|}${2:14}\" />"
|
||||||
|
},
|
||||||
|
"Dot": {
|
||||||
|
"scope": "xml",
|
||||||
|
"description": "SVG small dot, within the Lucide guidelines.",
|
||||||
|
"prefix": [
|
||||||
|
"dot",
|
||||||
|
"."
|
||||||
|
],
|
||||||
|
"body": "<path d=\"M ${1:12} ${2:$1}h.01\" />"
|
||||||
|
}
|
||||||
|
}
|
||||||
177
CONTRIBUTING.md
177
CONTRIBUTING.md
@@ -1,24 +1,193 @@
|
|||||||
|
|
||||||
# Contribution Guidelines
|
# Contribution Guidelines
|
||||||
|
|
||||||
:+1::tada: First off, thanks for taking the time to contribute! :tada::+1:
|
:+1::tada: First off, thanks for taking the time to contribute! :tada::+1:
|
||||||
|
|
||||||
The following is a set of guidelines for contributing to Featherity. Feel free to propose changes to this document in a pull request.
|
The following is a set of guidelines for contributing to Lucide. Feel free to propose changes to this document in a pull request.
|
||||||
|
|
||||||
## Pull Requests
|
## Pull Requests
|
||||||
|
|
||||||
Feel free to open a pull-request to contribute to this project.
|
Feel free to open a pull-request to contribute to this project.
|
||||||
|
|
||||||
**Working on your first Pull Request?** You can learn how from this *free* series
|
**Working on your first Pull Request?** You can learn how from this *free* series
|
||||||
[How to Contribute to an Open Source Project on GitHub](https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github)
|
[How to Contribute to an Open Source Project on GitHub](https://app.egghead.io/playlists/how-to-contribute-to-an-open-source-project-on-github)
|
||||||
|
|
||||||
Guidelines for pull requests:
|
Guidelines for pull requests:
|
||||||
|
|
||||||
- __Make your commit messages as descriptive as possible.__ Include as much information as you can. Explain anything that the file diffs themselves won’t make apparent.
|
- __Make your commit messages as descriptive as possible.__ Include as much information as you can. Explain anything that the file diffs themselves won’t make apparent.
|
||||||
- __Document your pull request__. Explain your fix, link to the relevant issue, add screenshots when adding new icons.
|
- __Document your pull request__. Explain your fix, link to the relevant issue, add screenshots when adding new icons.
|
||||||
- __Make sure the target of your pull request is the relevant branch__. Most of bugfix or new feature should go to the `master` branch.
|
- __Make sure the target of your pull request is the relevant branch__. Most of bugfix or new feature should go to the `main` branch.
|
||||||
- __Include only related work__. If your pull request has unrelated commit, it won't be accepted.
|
- __Include only related work__. If your pull request has unrelated commit, it won't be accepted.
|
||||||
|
|
||||||
|
### Pull Requests Including Icons
|
||||||
|
|
||||||
|
#### Guidelines
|
||||||
|
|
||||||
|
Please make sure you follow the icon guidelines, that should be followed to keep quality and consistency when making icons for Lucide.
|
||||||
|
|
||||||
|
Read it here: [ICON_GUIDELINES](https://lucide.dev/docs/icon-design-guide).
|
||||||
|
|
||||||
|
### Editor guides
|
||||||
|
|
||||||
|
Here you can find instructions on how to implement the guidelines with different vector graphics editors:
|
||||||
|
|
||||||
|
#### [Adobe Illustrator Guide](https://lucide.dev/docs/illustrator-guide)
|
||||||
|
|
||||||
|
You can also [download an Adobe Illustrator template](https://github.com/lucide-icons/lucide/blob/main/docs/public/templates/illustrator_template.ai).
|
||||||
|
|
||||||
|
#### [Inkscape Guide](https://lucide.dev/docs/inkscape-guide)
|
||||||
|
|
||||||
|
#### [Figma Guide](https://lucide.dev/docs/figma-guide)
|
||||||
|
|
||||||
|
#### [Affinity Designer Guide](https://lucide.dev/guide/design/affinity-designer-guide)
|
||||||
|
|
||||||
|
### Submitting Multiple Icons
|
||||||
|
|
||||||
|
If you want submit multiple icons, please separate the icons and group them. That makes reviewing the icons easier and keep the thread clean and scoped.
|
||||||
|
So don't submit multiple icons in one PR that have noting to do with each other.
|
||||||
|
So for example don't create one PR with icons: `arrow-up`, `bicycle`, `arrow-down`.
|
||||||
|
Seperate them by two PRs; 'pr-01' `arrow`, `arrow-down` and 'pr-02' `bicycle`.
|
||||||
|
|
||||||
## Icon Requests
|
## Icon Requests
|
||||||
|
|
||||||
Before creating an icon request, please search to see if someone has requested the icon already. If there is an open request, please add a :+1:.
|
Before creating an icon request, please search to see if someone has requested the icon already. If there is an open request, please add a :+1:.
|
||||||
|
|
||||||
If the icon has not already been requested, [create an issue](https://github.com/lucide-icons/lucide/issues/new?title=Icon%20Request:) with a title of `Icon request: <icon name>` and add as much information as possible.
|
If the icon has not already been requested, [create an icon request issue](https://github.com/lucide-icons/lucide/issues/new?assignees=&labels=%F0%9F%99%8C+icon+request&projects=&template=01_icon_request.yml) and add as much information as possible.
|
||||||
|
|
||||||
|
### Icon Requests from Feather
|
||||||
|
|
||||||
|
If you are a designer who wants to contribute to Lucide but you don't know what icons to work on, then have a look at the Requests from Feather. All open, unfinished and valid requests can be found in [Feather Icon Requests](https://github.com/lucide-icons/lucide/issues/119).
|
||||||
|
|
||||||
|
## Development
|
||||||
|
|
||||||
|
You will need minimum version of [Nodejs 16.4+](https://nodejs.org)
|
||||||
|
For package management you will need [PNPM](https://pnpm.io/installation).
|
||||||
|
For flutter package development, you need [Flutter 1.17+](https://docs.flutter.dev/get-started/install).
|
||||||
|
|
||||||
|
After cloning the project you need to run:
|
||||||
|
|
||||||
|
```sh
|
||||||
|
pnpm install # Install dependencies, including the workspace packages
|
||||||
|
```
|
||||||
|
|
||||||
|
### Packages -> PNPM Workspaces
|
||||||
|
|
||||||
|
To distribute different packages we use [PNPM workspaces](https://pnpm.io/workspaces). Before you start make sure you are familiar with this concept. The concept of working in workspaces is created by Yarn, they have a well written introduction: [yarn workspaces](https://classic.yarnpkg.com/en/docs/workspaces).
|
||||||
|
|
||||||
|
The configured directory for workspaces is the [packages](https://github.com/lucide-icons/lucide/tree/main/packages) directory, located in the root directory. There you will find all the current packages from lucide.
|
||||||
|
There are more workspaces defined, see [`pnpm-workspace.yaml`](https://github.com/lucide-icons/lucide/blob/main/pnpm-workspace.yaml).
|
||||||
|
|
||||||
|
> Note: One package is not managed by pnpm: **lucide-flutter**, this package is written in Dart and used pub for publishing.
|
||||||
|
|
||||||
|
### Generated Code
|
||||||
|
|
||||||
|
For icons we use one single source of truth the icons svgs located in the icons directory. To distribute icons to the packages we generate code including: icon files with svg paths, index files with imports, and types files. Depending on the use case other necessary code will be generated.
|
||||||
|
|
||||||
|
The commands for generating this code you will read in the next chapter.
|
||||||
|
|
||||||
|
### Commonly used scripts
|
||||||
|
|
||||||
|
#### Building
|
||||||
|
|
||||||
|
The build script includes multiple subcommands to: clean the dist directory, generate icon files, generate types files, and build/transpile code for each build format.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
pnpm [package-name] build
|
||||||
|
|
||||||
|
#example:
|
||||||
|
|
||||||
|
pnpm lucide-react build
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Testing
|
||||||
|
|
||||||
|
Run unit tests with jest for each package to make sure all the package apis still works as expected.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
pnpm [package-name] test
|
||||||
|
|
||||||
|
#example:
|
||||||
|
|
||||||
|
pnpm lucide-vue test
|
||||||
|
```
|
||||||
|
|
||||||
|
Recommended to run the test watcher when making changes.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
pnpm [package-name] test:watch
|
||||||
|
|
||||||
|
#example:
|
||||||
|
|
||||||
|
pnpm lucide-preact test:watch
|
||||||
|
```
|
||||||
|
|
||||||
|
### Unit Testing
|
||||||
|
|
||||||
|
When adding new features to for example the icon component for a framework. It is required to have this covered with some unit tests.
|
||||||
|
|
||||||
|
### Local Testing
|
||||||
|
|
||||||
|
To test changes in a local project, you can use `yarn link`, `npm link`, `bun link` or `pnpm link` to link the package. Before you do this make sure you builded the package first.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
# in packages/lucide-react
|
||||||
|
|
||||||
|
npm run build &&
|
||||||
|
npm link
|
||||||
|
|
||||||
|
# in your local project
|
||||||
|
|
||||||
|
npm link lucide-react
|
||||||
|
```
|
||||||
|
|
||||||
|
## Project Structure
|
||||||
|
|
||||||
|
Root directories
|
||||||
|
|
||||||
|
```sh
|
||||||
|
lucide
|
||||||
|
├── docs
|
||||||
|
│ ├── guide
|
||||||
|
├── icons
|
||||||
|
├── packages
|
||||||
|
└── scripts
|
||||||
|
```
|
||||||
|
|
||||||
|
### Docs
|
||||||
|
|
||||||
|
The lucide.dev website is using [vitepress](https://vitepress.dev/) to generate the static website. The markdown files are located in the docs directory.
|
||||||
|
|
||||||
|
### Guides
|
||||||
|
|
||||||
|
Detailed documentation about: installation, guides, packages, design guides etc.
|
||||||
|
|
||||||
|
### Icons
|
||||||
|
|
||||||
|
All the icons of lucide in SVG format. These will be used as source for all the packages and other distributions for the lucide icons.
|
||||||
|
|
||||||
|
### packages
|
||||||
|
|
||||||
|
Includes all the (npm) packages of lucide.
|
||||||
|
|
||||||
|
> Note: One package is not managed by pnpm: **lucide-flutter**, this package is written in Dart and used pub for publishing.
|
||||||
|
|
||||||
|
### scripts
|
||||||
|
|
||||||
|
Includes usefully scripts to automate certain jobs. Big part of the scripts is the template generation, for example it generates icon components for all the packages. These scripts are usually executed from the "scripts" section in the package.json.
|
||||||
|
|
||||||
|
## Documentation
|
||||||
|
|
||||||
|
The documentation files are located in the [docs](https://github.com/lucide-icons/lucide/tree/main/docs) directory. All these markdown files will be loaded in the build of the lucide.dev website.
|
||||||
|
|
||||||
|
Feel free to write, adjust or add new markdown files to improve our documentation.
|
||||||
|
|
||||||
|
## Support
|
||||||
|
|
||||||
|
If you need any help or have problems with you contribution. Please don't hesitate to contact the Lucide Community, you can find us on [Github](https://github.com/lucide-icons/lucide) and [Discord](https://discord.gg/EH6nSts).
|
||||||
|
|
||||||
|
## Credits
|
||||||
|
|
||||||
|
Thank you to all the people who already contributed to Lucide!
|
||||||
|
|
||||||
|
<a href="https://github.com/lucide-icons/lucide/graphs/contributors">
|
||||||
|
<img src="https://opencollective.com/lucide-icons/contributors.svg?width=890" /></a>
|
||||||
|
|||||||
2
LICENSE
2
LICENSE
@@ -1,6 +1,6 @@
|
|||||||
ISC License
|
ISC License
|
||||||
|
|
||||||
Copyright (c) 2020, Lucide Contributors
|
Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2022 as part of Feather (MIT). All other copyright (c) for Lucide are held by Lucide Contributors 2022.
|
||||||
|
|
||||||
Permission to use, copy, modify, and/or distribute this software for any
|
Permission to use, copy, modify, and/or distribute this software for any
|
||||||
purpose with or without fee is hereby granted, provided that the above
|
purpose with or without fee is hereby granted, provided that the above
|
||||||
|
|||||||
205
README.md
205
README.md
@@ -1,151 +1,60 @@
|
|||||||
|
<p align="center">
|
||||||
|
<a href="https://github.com/lucide-icons/lucide#gh-light-mode-only">
|
||||||
|
<img src="https://lucide.dev/lucide-logo-repo.svg#gh-light-mode-only" alt="Lucide - Beautiful & consistent icon toolkit made by the community. Open-source project and a fork of Feather Icons." width="480">
|
||||||
|
</a>
|
||||||
|
<a href="https://github.com/lucide-icons/lucide#gh-dark-mode-only">
|
||||||
|
<img src="https://lucide.dev/lucide-logo-repo-dark.svg#gh-dark-mode-only" alt="Lucide - Beautiful & consistent icon toolkit made by the community. Open-source project and a fork of Feather Icons." width="480">
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
<p align="center">
|
||||||
|
<a href="https://github.com/lucide-icons/lucide/blob/main/LICENSE"><img src="https://img.shields.io/npm/l/lucide" alt="license"></a>
|
||||||
|
<a href="https://www.figma.com/community/plugin/939567362549682242/Lucide-Icons"><img src="https://img.shields.io/badge/Figma-F24E1E?logo=figma&logoColor=white" alt="figma installs"></a>
|
||||||
|
<a href="https://github.com/lucide-icons/lucide/actions/workflows/release.yml"><img src="https://github.com/lucide-icons/lucide/actions/workflows/release.yml/badge.svg" alt="build status"></a>
|
||||||
|
<a href="https://discord.gg/EH6nSts"><img src="https://img.shields.io/discord/723074157486800936?label=chat&logo=discord&logoColor=%23ffffff&colorB=%237289DA" alt="discord chat"></a>
|
||||||
|
</p>
|
||||||
|
<p align="center">
|
||||||
|
<a href="https://lucide.dev/icons/">Icons</a>
|
||||||
|
·
|
||||||
|
<a href="https://lucide.dev/guide/">Guide</a>
|
||||||
|
·
|
||||||
|
<a href="https://lucide.dev/packages">Packages</a>
|
||||||
|
·
|
||||||
|
<a href="https://lucide.dev/license">License</a>
|
||||||
|
·
|
||||||
|
<a href="https://lucide.dev/showcase">Showcase</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
# Lucide
|
# Lucide
|
||||||
|
|
||||||

|
Lucide is an open-source icon library that provides 1000+ vector (svg) files for displaying icons and symbols in digital and non-digital projects. The library aims to make it easier for designers and developers to incorporate icons into their projects by providing several official [packages](https://lucide.dev/packages) to make it easier to use these icons in your project.
|
||||||
[](https://www.npmjs.com/package/lucide)
|
|
||||||
[](https://discord.gg/EH6nSts)
|
|
||||||
|
|
||||||
## What is Lucide?
|
## Packages
|
||||||
|
|
||||||
Lucide is a community-run fork of [Feather Icons](https://github.com/feathericons/feather), open for anyone to contribute icons.
|
| Logo | Package | Version | Downloads | Links |
|
||||||
|
| ---- | ------- | ------- | --------- | ----- |
|
||||||
## Table of Contents
|
| <img src="https://lucide.dev/framework-logos/js.svg" alt="JS logo" width="48"> | **`lucide`** | [](https://www.npmjs.com/package/lucide) |  | [Docs](https://lucide.dev/guide/packages/lucide) · [Source](./packages/lucide) |
|
||||||
|
| <img src="https://lucide.dev/framework-logos/react.svg" alt="React logo" width="48"> | **`lucide-react`** | [](https://www.npmjs.com/package/lucide-react) |  | [Docs](https://lucide.dev/guide/packages/lucide-react) · [Source](./packages/lucide-react) |
|
||||||
* [Usage](#usage)
|
| <img src="https://lucide.dev/framework-logos/vue.svg" alt="Vue logo" width="48"> | **`lucide-vue-next`** | [](https://www.npmjs.com/package/lucide-vue-next) |  | [Docs](https://lucide.dev/guide/packages/lucide-vue-next) · [Source](./packages/lucide-vue-next) |
|
||||||
* [Figma](#figma)
|
| <img src="https://lucide.dev/framework-logos/svelte.svg" alt="Svelte logo" width="48"> | **`lucide-svelte`** | [](https://www.npmjs.com/package/lucide-svelte) |  | [Docs](https://lucide.dev/guide/packages/lucide-svelte) · [Source](./packages/lucide-svelte) |
|
||||||
* [Contributing](#contributing)
|
| <img src="https://lucide.dev/framework-logos/solid.svg" alt="Solid logo" width="48"> | **`lucide-solid`** | [](https://www.npmjs.com/package/lucide-solid) |  | [Docs](https://lucide.dev/guide/packages/lucide-solid) · [Source](./packages/lucide-solid) |
|
||||||
* [License](#license)
|
| <img src="https://lucide.dev/framework-logos/preact.svg" alt="Preact logo" width="48"> | **`lucide-preact`** | [](https://www.npmjs.com/package/lucide-preact) |  | [Docs](https://lucide.dev/guide/packages/lucide-preact) · [Source](./packages/lucide-preact) |
|
||||||
|
| <img src="https://lucide.dev/framework-logos/react-native.svg" alt="React Native logo" width="48"> | **`lucide-react-native`** | [](https://www.npmjs.com/package/lucide-react-native) |  | [Docs](https://lucide.dev/guide/packages/lucide-react-native) · [Source](./packages/lucide-react-native) |
|
||||||
## Installation
|
| <img src="https://lucide.dev/framework-logos/angular.svg" alt="Angular logo" width="48"> | **`lucide-angular`** | [](https://www.npmjs.com/package/lucide-angular) |  | [Docs](https://lucide.dev/guide/packages/lucide-angular) · [Source](./packages/lucide-angular) |
|
||||||
|
| <img src="https://lucide.dev/framework-logos/svg.svg" alt="SVG logo" width="48"> | **`lucide-static`** | [](https://www.npmjs.com/package/lucide-static) |  | [Docs](https://lucide.dev/guide/packages/lucide-static) · [Source](./packages/lucide-static) |
|
||||||
### Package Managers
|
|
||||||
|
|
||||||
``` bash
|
|
||||||
npm install lucide
|
|
||||||
#or
|
|
||||||
yarn add lucide
|
|
||||||
```
|
|
||||||
|
|
||||||
### CDN
|
|
||||||
|
|
||||||
``` html
|
|
||||||
<!-- Development version -->
|
|
||||||
<script src="https://unpkg.com/lucide@latest/dist/umd/lucide.js"></script>
|
|
||||||
|
|
||||||
<!-- Production version -->
|
|
||||||
<script src="https://unpkg.com/lucide@latest"></script>
|
|
||||||
```
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
At its core, Lucide is a collection of [SVG](https://svgontheweb.com/#svg) files. This means that you can use Feather icons in all the same ways you can use SVGs (e.g. `img`, `background-image`, `inline`, `object`, `embed`, `iframe`). Here's a helpful article detailing the many ways SVGs can be used on the web: [SVG on the Web – Implementation Options](https://svgontheweb.com/#implementation)
|
|
||||||
|
|
||||||
The following are additional ways you can use Lucide.
|
|
||||||
With the Javascript library you can easily incorporate the icon you want in your webpage.
|
|
||||||
|
|
||||||
### With unpkg
|
|
||||||
|
|
||||||
Here is a complete example with unpkg
|
|
||||||
|
|
||||||
```html
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<body>
|
|
||||||
<i icon-name="volume-2" class="my-class"></i>
|
|
||||||
<i icon-name="x"></i>
|
|
||||||
<i icon-name="menu"></i>
|
|
||||||
|
|
||||||
<script src="https://unpkg.com/lucide@latest"></script>
|
|
||||||
<script>
|
|
||||||
lucide.createIcons();
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
```
|
|
||||||
|
|
||||||
### With ESModules
|
|
||||||
|
|
||||||
To reduce bundle size, lucide is build to be fully threeshakeble.
|
|
||||||
The `createIcons` function will search for HTMLElements with the attribute `icon-name` and replace it with the svg from the given icon name.
|
|
||||||
|
|
||||||
```html
|
|
||||||
<!-- Your HTML file -->
|
|
||||||
<i icon-name="menu"></i>
|
|
||||||
```
|
|
||||||
|
|
||||||
```js
|
|
||||||
import { createIcons, icons } from 'lucide';
|
|
||||||
|
|
||||||
// Caustion, this will import all the icons and bundle them.
|
|
||||||
createIcons({icons});
|
|
||||||
|
|
||||||
// Recommended way, to include only the icons you need.
|
|
||||||
import { createIcons, Menu, ArrowRight, Globe } from 'lucide';
|
|
||||||
|
|
||||||
createIcons({
|
|
||||||
icons: {
|
|
||||||
Menu,
|
|
||||||
ArrowRight,
|
|
||||||
Globe,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Additional Options
|
|
||||||
|
|
||||||
In the `createIcons` function you can pass some extra parameters to adjust the `nameAttr` or add custom attributes like for example classes.
|
|
||||||
|
|
||||||
Here is a full example:
|
|
||||||
|
|
||||||
```js
|
|
||||||
import { createIcons } from 'lucide';
|
|
||||||
|
|
||||||
createIcons({
|
|
||||||
attrs: {
|
|
||||||
class: ['my-custom-class', 'icon'],
|
|
||||||
'stroke-width': 1,
|
|
||||||
stroke: '#333',
|
|
||||||
},
|
|
||||||
nameAttr: 'icon-name', // atrribute for the icon name.
|
|
||||||
});
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Threeshake the library, only use the icons you use
|
|
||||||
|
|
||||||
```js
|
|
||||||
import { createIcons, Menu, ArrowRight, Globe } from 'lucide';
|
|
||||||
|
|
||||||
createIcons({
|
|
||||||
icons: {
|
|
||||||
Menu,
|
|
||||||
ArrowRight,
|
|
||||||
Globe,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Custom Element binding
|
|
||||||
|
|
||||||
```js
|
|
||||||
import { createElement, Menu } from 'lucide';
|
|
||||||
|
|
||||||
const menuIcon = createElement(Menu); // Returns HTMLElement (svg)
|
|
||||||
|
|
||||||
// set custom attributes with browser native functions
|
|
||||||
menuIcon.setAttribute('stroke', '#333');
|
|
||||||
menuIcon.classList.add('my-icon-class');
|
|
||||||
|
|
||||||
// Append HTMLElement in webpage
|
|
||||||
const myApp = document.getElementById('app');
|
|
||||||
myApp.appendChild(menuIcon);
|
|
||||||
```
|
|
||||||
|
|
||||||
### Figma
|
### Figma
|
||||||
|
|
||||||
You can use the components from [this Figma file](https://www.figma.com/file/g0UipfQlRfGrntKPxZknM7/Featherity).
|
The lucide figma plugin.
|
||||||
|
|
||||||
|
Visit [Figma community page](https://www.figma.com/community/plugin/939567362549682242/Lucide-Icons) to install the plugin.
|
||||||
|
|
||||||
|
<img width="420" src="https://www.figma.com/community/plugin/939567362549682242/thumbnail" alt="Figma Lucide Cover">
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
For more info on how to contribute please see the [contribution guidelines](https://github.com/lucide-icons/lucide/blob/master/CONTRIBUTING.md).
|
For more info on how to contribute please see the [contribution guidelines](https://github.com/lucide-icons/lucide/blob/main/CONTRIBUTING.md).
|
||||||
|
|
||||||
Caught a mistake or want to contribute to the documentation? [Edit this page on Github](https://github.com/lucide-icons/lucide/blob/master/README.md)
|
Caught a mistake or want to contribute to the documentation? [Edit this page on Github](https://github.com/lucide-icons/lucide/blob/main/README.md)
|
||||||
|
|
||||||
## Community
|
## Community
|
||||||
|
|
||||||
@@ -153,4 +62,24 @@ Join the community on our [Discord](https://discord.gg/EH6nSts) server!
|
|||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
Lucide is licensed under the [ISC License](https://github.com/lucide-icons/lucide/blob/master/LICENSE).
|
Lucide is totally free for commercial use and personal use, this software is licensed under the [ISC License](https://github.com/lucide-icons/lucide/blob/main/LICENSE).
|
||||||
|
|
||||||
|
## Credits
|
||||||
|
|
||||||
|
Thank you to all the people who contributed to Lucide!
|
||||||
|
|
||||||
|
<a href="https://github.com/lucide-icons/lucide/graphs/contributors">
|
||||||
|
<img src="https://opencollective.com/lucide-icons/contributors.svg?width=890" /></a>
|
||||||
|
|
||||||
|
## Sponsors
|
||||||
|
|
||||||
|
<a href="https://vercel.com?utm_source=lucide&utm_campaign=oss">
|
||||||
|
<img src="docs/public/vercel.svg" alt="Powered by Vercel" width="200" />
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a href="https://www.digitalocean.com/?refcode=b0877a2caebd&utm_campaign=Referral_Invite&utm_medium=Referral_Program&utm_source=badge"><img src="docs/public/digitalocean.svg" width="200" alt="DigitalOcean Referral Badge" /></a>
|
||||||
|
|
||||||
|
### Awesome backers 🍺
|
||||||
|
|
||||||
|
<a href="https://www.scipress.io?utm_source=lucide"><img src="docs/public/sponsors/scipress.svg" width="180" alt="Scipress sponsor badge" /></a>
|
||||||
|
<a href="https://github.com/pdfme/pdfme"><img src="docs/public/sponsors/pdfme.svg" width="180" alt="pdfme sponsor badge" /></a>
|
||||||
|
|||||||
@@ -1,27 +0,0 @@
|
|||||||
module.exports = {
|
|
||||||
presets: [
|
|
||||||
[
|
|
||||||
'@babel/env',
|
|
||||||
{
|
|
||||||
loose: true,
|
|
||||||
modules: false,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
],
|
|
||||||
env: {
|
|
||||||
test: {
|
|
||||||
presets: ['@babel/env'],
|
|
||||||
plugins: ['@babel/plugin-transform-runtime'],
|
|
||||||
},
|
|
||||||
dev: {
|
|
||||||
plugins: [
|
|
||||||
[
|
|
||||||
'transform-inline-environment-variables',
|
|
||||||
{
|
|
||||||
include: ['NODE_ENV'],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
|
||||||
5
categories/accessibility.json
Normal file
5
categories/accessibility.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "Accessibility",
|
||||||
|
"icon": "accessibility"
|
||||||
|
}
|
||||||
5
categories/account.json
Normal file
5
categories/account.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "Accounts & access",
|
||||||
|
"icon": "user"
|
||||||
|
}
|
||||||
5
categories/animals.json
Normal file
5
categories/animals.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "Animals",
|
||||||
|
"icon": "dog"
|
||||||
|
}
|
||||||
5
categories/arrows.json
Normal file
5
categories/arrows.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "Arrows",
|
||||||
|
"icon": "arrow-left-right"
|
||||||
|
}
|
||||||
5
categories/brands.json
Normal file
5
categories/brands.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "Brands",
|
||||||
|
"icon": "facebook"
|
||||||
|
}
|
||||||
5
categories/buildings.json
Normal file
5
categories/buildings.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "Buildings",
|
||||||
|
"icon": "building"
|
||||||
|
}
|
||||||
5
categories/charts.json
Normal file
5
categories/charts.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "Charts",
|
||||||
|
"icon": "chart-pie"
|
||||||
|
}
|
||||||
5
categories/communication.json
Normal file
5
categories/communication.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "Communication",
|
||||||
|
"icon": "message-circle"
|
||||||
|
}
|
||||||
5
categories/connectivity.json
Normal file
5
categories/connectivity.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "Connectivity",
|
||||||
|
"icon": "wifi"
|
||||||
|
}
|
||||||
5
categories/cursors.json
Normal file
5
categories/cursors.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "Cursors",
|
||||||
|
"icon": "mouse-pointer-2"
|
||||||
|
}
|
||||||
5
categories/design.json
Normal file
5
categories/design.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "Design",
|
||||||
|
"icon": "palette"
|
||||||
|
}
|
||||||
5
categories/development.json
Normal file
5
categories/development.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "Coding & development",
|
||||||
|
"icon": "code-xml"
|
||||||
|
}
|
||||||
5
categories/devices.json
Normal file
5
categories/devices.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "Devices",
|
||||||
|
"icon": "smartphone"
|
||||||
|
}
|
||||||
5
categories/emoji.json
Normal file
5
categories/emoji.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "Emoji",
|
||||||
|
"icon": "smile"
|
||||||
|
}
|
||||||
5
categories/files.json
Normal file
5
categories/files.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "File icons",
|
||||||
|
"icon": "panels-top-left"
|
||||||
|
}
|
||||||
5
categories/finance.json
Normal file
5
categories/finance.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "Finance",
|
||||||
|
"icon": "piggy-bank"
|
||||||
|
}
|
||||||
5
categories/food-beverage.json
Normal file
5
categories/food-beverage.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "Food & beverage",
|
||||||
|
"icon": "coffee"
|
||||||
|
}
|
||||||
5
categories/gaming.json
Normal file
5
categories/gaming.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "Gaming",
|
||||||
|
"icon": "gamepad-2"
|
||||||
|
}
|
||||||
5
categories/home.json
Normal file
5
categories/home.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "Home",
|
||||||
|
"icon": "house"
|
||||||
|
}
|
||||||
5
categories/layout.json
Normal file
5
categories/layout.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "Layout",
|
||||||
|
"icon": "panels-top-left"
|
||||||
|
}
|
||||||
5
categories/mail.json
Normal file
5
categories/mail.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "Mail",
|
||||||
|
"icon": "mail"
|
||||||
|
}
|
||||||
5
categories/math.json
Normal file
5
categories/math.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "Mathematics",
|
||||||
|
"icon": "divide"
|
||||||
|
}
|
||||||
5
categories/medical.json
Normal file
5
categories/medical.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "Medical",
|
||||||
|
"icon": "heart"
|
||||||
|
}
|
||||||
5
categories/multimedia.json
Normal file
5
categories/multimedia.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "Multimedia",
|
||||||
|
"icon": "circle-play"
|
||||||
|
}
|
||||||
5
categories/nature.json
Normal file
5
categories/nature.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "Nature",
|
||||||
|
"icon": "sprout"
|
||||||
|
}
|
||||||
5
categories/navigation.json
Normal file
5
categories/navigation.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "Navigation",
|
||||||
|
"icon": "compass"
|
||||||
|
}
|
||||||
5
categories/notifications.json
Normal file
5
categories/notifications.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "Notification",
|
||||||
|
"icon": "triangle-alert"
|
||||||
|
}
|
||||||
5
categories/people.json
Normal file
5
categories/people.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "People",
|
||||||
|
"icon": "person-standing"
|
||||||
|
}
|
||||||
5
categories/photography.json
Normal file
5
categories/photography.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "Photography",
|
||||||
|
"icon": "camera"
|
||||||
|
}
|
||||||
5
categories/science.json
Normal file
5
categories/science.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "Science",
|
||||||
|
"icon": "flask-conical"
|
||||||
|
}
|
||||||
5
categories/seasons.json
Normal file
5
categories/seasons.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "Seasons",
|
||||||
|
"icon": "leaf"
|
||||||
|
}
|
||||||
5
categories/security.json
Normal file
5
categories/security.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "Security",
|
||||||
|
"icon": "shield"
|
||||||
|
}
|
||||||
5
categories/shapes.json
Normal file
5
categories/shapes.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "Shapes",
|
||||||
|
"icon": "triangle"
|
||||||
|
}
|
||||||
5
categories/shopping.json
Normal file
5
categories/shopping.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "Shopping",
|
||||||
|
"icon": "shopping-bag"
|
||||||
|
}
|
||||||
5
categories/social.json
Normal file
5
categories/social.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "Social",
|
||||||
|
"icon": "thumbs-up"
|
||||||
|
}
|
||||||
5
categories/sports.json
Normal file
5
categories/sports.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "Sports",
|
||||||
|
"icon": "type"
|
||||||
|
}
|
||||||
5
categories/sustainability.json
Normal file
5
categories/sustainability.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "Sustainability",
|
||||||
|
"icon": "recycle"
|
||||||
|
}
|
||||||
5
categories/text.json
Normal file
5
categories/text.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "Text formatting",
|
||||||
|
"icon": "type"
|
||||||
|
}
|
||||||
5
categories/time.json
Normal file
5
categories/time.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "Time & calendar",
|
||||||
|
"icon": "calendar"
|
||||||
|
}
|
||||||
5
categories/tools.json
Normal file
5
categories/tools.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "Tools",
|
||||||
|
"icon": "hammer"
|
||||||
|
}
|
||||||
5
categories/transportation.json
Normal file
5
categories/transportation.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "Transportation",
|
||||||
|
"icon": "train-front"
|
||||||
|
}
|
||||||
5
categories/travel.json
Normal file
5
categories/travel.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "Travel",
|
||||||
|
"icon": "backpack"
|
||||||
|
}
|
||||||
5
categories/weather.json
Normal file
5
categories/weather.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../category.schema.json",
|
||||||
|
"title": "Weather",
|
||||||
|
"icon": "cloud-sun"
|
||||||
|
}
|
||||||
35
category.schema.json
Normal file
35
category.schema.json
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
{
|
||||||
|
"$id": "https://lucide.dev/category.schema.json",
|
||||||
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
||||||
|
"$vocabulary": {
|
||||||
|
"https://json-schema.org/draft/2020-12/vocab/core": true,
|
||||||
|
"https://json-schema.org/draft/2020-12/vocab/applicator": true,
|
||||||
|
"https://json-schema.org/draft/2020-12/vocab/unevaluated": true,
|
||||||
|
"https://json-schema.org/draft/2020-12/vocab/validation": true,
|
||||||
|
"https://json-schema.org/draft/2020-12/vocab/meta-data": true,
|
||||||
|
"https://json-schema.org/draft/2020-12/vocab/format-annotation": true,
|
||||||
|
"https://json-schema.org/draft/2020-12/vocab/content": true
|
||||||
|
},
|
||||||
|
"title": "Lucide Icons category schema",
|
||||||
|
"type": "object",
|
||||||
|
"additionalProperties": false,
|
||||||
|
"required": ["$schema", "icon", "title"],
|
||||||
|
"properties": {
|
||||||
|
"$schema": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"description": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"icon": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"title": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"weight": {
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"description": "A JSON Schema for categories defined by Lucide Icons."
|
||||||
|
}
|
||||||
0
comment-markup.md
Normal file
0
comment-markup.md
Normal file
10
cspell.json
Normal file
10
cspell.json
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"dictionaries": ["en-us", "custom-words"],
|
||||||
|
"dictionaryDefinitions": [
|
||||||
|
{
|
||||||
|
"name": "custom-words",
|
||||||
|
"path": "./.cspell/custom-words.txt",
|
||||||
|
"addWords": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
10
docs/.vitepress/api/categories/index.get.ts
Normal file
10
docs/.vitepress/api/categories/index.get.ts
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
import iconMetaData from '../../data/iconMetaData';
|
||||||
|
|
||||||
|
export default eventHandler((event) => {
|
||||||
|
setResponseHeader(event, 'Cache-Control', 'public, max-age=86400');
|
||||||
|
setResponseHeader(event, 'Access-Control-Allow-Origin', '*');
|
||||||
|
|
||||||
|
return Object.fromEntries(
|
||||||
|
Object.entries(iconMetaData).map(([name, { categories }]) => [name, categories]),
|
||||||
|
);
|
||||||
|
});
|
||||||
40
docs/.vitepress/api/figma/data.ts
Normal file
40
docs/.vitepress/api/figma/data.ts
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
import iconNodes from '../../data/iconNodes/index.ts';
|
||||||
|
import { IconNodeWithKeys } from '../../theme/types';
|
||||||
|
import iconMetaData from '../../data/iconMetaData';
|
||||||
|
import releaseMeta from '../../data/releaseMetaData.json';
|
||||||
|
import categories from '../../data/categoriesData.json';
|
||||||
|
|
||||||
|
const dataResponse = {
|
||||||
|
icons: Object.entries(iconNodes).reduce((acc, [name, iconNode]) => {
|
||||||
|
const newIconNode = (iconNode as IconNodeWithKeys).map(([name, { key, ...attrs }]) => {
|
||||||
|
return [name, attrs];
|
||||||
|
});
|
||||||
|
|
||||||
|
acc[name] = {
|
||||||
|
iconNode: newIconNode,
|
||||||
|
aliases: (iconMetaData[name]?.aliases ?? []).map((alias) =>
|
||||||
|
typeof alias === 'string' ? alias : alias.name,
|
||||||
|
),
|
||||||
|
tags: iconMetaData[name].tags ?? [],
|
||||||
|
categories: iconMetaData[name].categories ?? [],
|
||||||
|
...releaseMeta[name],
|
||||||
|
};
|
||||||
|
|
||||||
|
return acc;
|
||||||
|
}, {}),
|
||||||
|
aliases: Object.entries(iconNodes).reduce((acc, [name]) => {
|
||||||
|
for (const alias of iconMetaData[name]?.aliases ?? []) {
|
||||||
|
acc[typeof alias === 'string' ? alias : alias.name] = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
return acc;
|
||||||
|
}, {}),
|
||||||
|
categories,
|
||||||
|
};
|
||||||
|
|
||||||
|
export default eventHandler((event) => {
|
||||||
|
setResponseHeader(event, 'Cache-Control', 'public, max-age=86400');
|
||||||
|
setResponseHeader(event, 'Access-Control-Allow-Origin', '*');
|
||||||
|
|
||||||
|
return dataResponse;
|
||||||
|
});
|
||||||
56
docs/.vitepress/api/gh-icon/[...data].get.ts
Normal file
56
docs/.vitepress/api/gh-icon/[...data].get.ts
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
import { eventHandler, setResponseHeader, defaultContentType } from 'h3';
|
||||||
|
import { renderToString, renderToStaticMarkup } from 'react-dom/server';
|
||||||
|
import { createElement } from 'react';
|
||||||
|
import SvgPreview from '../../lib/SvgPreview/index.tsx';
|
||||||
|
import iconNodes from '../../data/iconNodes';
|
||||||
|
import createLucideIcon from 'lucide-react/src/createLucideIcon';
|
||||||
|
import Backdrop from '../../lib/SvgPreview/Backdrop.tsx';
|
||||||
|
|
||||||
|
export default eventHandler((event) => {
|
||||||
|
const { params } = event.context;
|
||||||
|
|
||||||
|
const pathData = params.data.split('/');
|
||||||
|
const data = pathData.at(-1).slice(0, -4);
|
||||||
|
const [name] = pathData;
|
||||||
|
|
||||||
|
const src = Buffer.from(data, 'base64')
|
||||||
|
.toString('utf8')
|
||||||
|
.replaceAll('\n', '')
|
||||||
|
.replace(/<svg[^>]*>|<\/svg>/g, '');
|
||||||
|
|
||||||
|
const children = [];
|
||||||
|
|
||||||
|
// Finds the longest matching icon to be use as the backdrop.
|
||||||
|
// For `square-dashed-bottom-code` it suggests `square-dashed-bottom-code`.
|
||||||
|
// For `square-dashed-bottom-i-dont-exist` it suggests `square-dashed-bottom`.
|
||||||
|
const backdropName = name
|
||||||
|
.split('-')
|
||||||
|
.map((_, idx, arr) => arr.slice(0, idx + 1).join('-'))
|
||||||
|
.reverse()
|
||||||
|
.find((groupName) => groupName in iconNodes);
|
||||||
|
if (!(name in iconNodes) && backdropName) {
|
||||||
|
const iconNode = iconNodes[backdropName];
|
||||||
|
|
||||||
|
const LucideIcon = createLucideIcon(backdropName, iconNode);
|
||||||
|
const svg = renderToStaticMarkup(createElement(LucideIcon));
|
||||||
|
const backdropString = svg.replaceAll('\n', '').replace(/<svg[^>]*>|<\/svg>/g, '');
|
||||||
|
|
||||||
|
children.push(
|
||||||
|
createElement(Backdrop, {
|
||||||
|
backdropString,
|
||||||
|
src,
|
||||||
|
color: '#777',
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const svg = Buffer.from(
|
||||||
|
// We can't use jsx here, is not supported here by nitro.
|
||||||
|
renderToString(createElement(SvgPreview, { src, showGrid: true }, children)),
|
||||||
|
).toString('utf8');
|
||||||
|
|
||||||
|
defaultContentType(event, 'image/svg+xml');
|
||||||
|
setResponseHeader(event, 'Cache-Control', 'public,max-age=31536000');
|
||||||
|
|
||||||
|
return svg;
|
||||||
|
});
|
||||||
37
docs/.vitepress/api/gh-icon/diff/[...data].get.ts
Normal file
37
docs/.vitepress/api/gh-icon/diff/[...data].get.ts
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
import { eventHandler, setResponseHeader, defaultContentType } from 'h3';
|
||||||
|
import { renderToString, renderToStaticMarkup } from 'react-dom/server';
|
||||||
|
import { createElement } from 'react';
|
||||||
|
import Diff from '../../../lib/SvgPreview/Diff.tsx';
|
||||||
|
import iconNodes from '../../../data/iconNodes';
|
||||||
|
import createLucideIcon from 'lucide-react/src/createLucideIcon';
|
||||||
|
|
||||||
|
export default eventHandler((event) => {
|
||||||
|
const { params } = event.context;
|
||||||
|
|
||||||
|
const pathData = params.data.split('/');
|
||||||
|
const data = pathData.at(-1).slice(0, -4);
|
||||||
|
const [name] = pathData;
|
||||||
|
|
||||||
|
const newSrc = Buffer.from(data, 'base64')
|
||||||
|
.toString('utf8')
|
||||||
|
.replaceAll('\n', '')
|
||||||
|
.replace(/<svg[^>]*>|<\/svg>/g, '');
|
||||||
|
|
||||||
|
const children = [];
|
||||||
|
|
||||||
|
const oldSrc = iconNodes[name]
|
||||||
|
? renderToStaticMarkup(createElement(createLucideIcon(name, iconNodes[name])))
|
||||||
|
.replaceAll('\n', '')
|
||||||
|
.replace(/<svg[^>]*>|<\/svg>/g, '')
|
||||||
|
: '';
|
||||||
|
|
||||||
|
const svg = Buffer.from(
|
||||||
|
// We can't use jsx here, is not supported here by nitro.
|
||||||
|
renderToString(createElement(Diff, { oldSrc, newSrc, showGrid: true }, children)),
|
||||||
|
).toString('utf8');
|
||||||
|
|
||||||
|
defaultContentType(event, 'image/svg+xml');
|
||||||
|
setResponseHeader(event, 'Cache-Control', 'public,max-age=31536000');
|
||||||
|
|
||||||
|
return svg;
|
||||||
|
});
|
||||||
73
docs/.vitepress/api/gh-icon/dpi/[...data].get.ts
Normal file
73
docs/.vitepress/api/gh-icon/dpi/[...data].get.ts
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
import { eventHandler, setResponseHeader, defaultContentType } from 'h3';
|
||||||
|
import { Resvg, initWasm } from '@resvg/resvg-wasm';
|
||||||
|
import wasm from './loadWasm';
|
||||||
|
|
||||||
|
var initializedResvg = initWasm(wasm);
|
||||||
|
|
||||||
|
export default eventHandler(async (event) => {
|
||||||
|
const { params = {} } = event.context;
|
||||||
|
await initializedResvg;
|
||||||
|
|
||||||
|
const imageSize = 96;
|
||||||
|
const [iconSizeString, svgData] = params.data.split('/');
|
||||||
|
const iconSize = parseInt(iconSizeString, 10);
|
||||||
|
const data = svgData.slice(0, -4);
|
||||||
|
|
||||||
|
const src = Buffer.from(data, 'base64').toString('utf8');
|
||||||
|
const svg = (src.includes('<svg') ? src : `<svg>${src}</svg>`)
|
||||||
|
.replace(/(\r\n|\n|\r)/gm, '')
|
||||||
|
.replace(
|
||||||
|
/<svg[^>]*/,
|
||||||
|
`<svg
|
||||||
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
|
width="${iconSize}"
|
||||||
|
height="${iconSize}"
|
||||||
|
viewBox="0 0 24 24"
|
||||||
|
fill="none"
|
||||||
|
stroke="#fff"
|
||||||
|
stroke-width="2"
|
||||||
|
stroke-linecap="round"
|
||||||
|
stroke-linejoin="round"
|
||||||
|
`,
|
||||||
|
);
|
||||||
|
|
||||||
|
const resvg = new Resvg(svg, { background: '#000' });
|
||||||
|
const pngData = resvg.render();
|
||||||
|
const pngBuffer = Buffer.from(pngData.asPng());
|
||||||
|
|
||||||
|
defaultContentType(event, 'image/svg+xml');
|
||||||
|
setResponseHeader(event, 'Cache-Control', 'public,max-age=31536000');
|
||||||
|
|
||||||
|
return `
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="${imageSize}" height="${imageSize}" viewBox="0 0 ${imageSize} ${imageSize}">
|
||||||
|
<style>
|
||||||
|
@media screen and (prefers-color-scheme: light) {
|
||||||
|
#fallback-background { fill: transparent; }
|
||||||
|
}
|
||||||
|
@media screen and (prefers-color-scheme: dark) {
|
||||||
|
#fallback-background { fill: transparent; }
|
||||||
|
rect { fill: #fff; }
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
<mask id="mask">
|
||||||
|
<image
|
||||||
|
width="${imageSize}"
|
||||||
|
height="${imageSize}"
|
||||||
|
href="data:image/png;base64,${pngBuffer.toString('base64')}"
|
||||||
|
image-rendering="pixelated"
|
||||||
|
/>
|
||||||
|
</mask>
|
||||||
|
<rect
|
||||||
|
id="fallback-background"
|
||||||
|
width="${imageSize}"
|
||||||
|
height="${imageSize}" ry="${imageSize / 24}"
|
||||||
|
fill="#fff"
|
||||||
|
/>
|
||||||
|
<rect
|
||||||
|
width="${imageSize}"
|
||||||
|
height="${imageSize}"
|
||||||
|
fill="#000"
|
||||||
|
mask="url(#mask)"
|
||||||
|
/>
|
||||||
|
</svg>`;
|
||||||
|
});
|
||||||
15
docs/.vitepress/api/gh-icon/dpi/loadWasm.ts
Normal file
15
docs/.vitepress/api/gh-icon/dpi/loadWasm.ts
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
import fs from 'fs';
|
||||||
|
import module from 'node:module';
|
||||||
|
/* WASM_IMPORT */
|
||||||
|
|
||||||
|
let wasm;
|
||||||
|
|
||||||
|
if (process.env.NODE_ENV === 'development') {
|
||||||
|
const require = module.createRequire(import.meta.url);
|
||||||
|
|
||||||
|
wasm = fs.readFileSync(require.resolve('@resvg/resvg-wasm/index_bg.wasm'));
|
||||||
|
} else {
|
||||||
|
wasm = resvg_wasm;
|
||||||
|
}
|
||||||
|
|
||||||
|
export default wasm;
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user