Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1173134099 | ||
|
|
894993478f | ||
|
|
36f84a74f6 | ||
|
|
1479a9dbd8 | ||
|
|
2485f6117a | ||
|
|
0bbaaa8abd | ||
|
|
a82af02687 | ||
|
|
a5be1b4101 |
@@ -1,4 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
pnpm run checkIcons
|
||||
exit $?
|
||||
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@v3
|
||||
- uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 16
|
||||
|
||||
- uses: pnpm/action-setup@v2.0.1
|
||||
name: Install pnpm
|
||||
id: pnpm-install
|
||||
with:
|
||||
version: 7
|
||||
run_install: false
|
||||
|
||||
- name: Get pnpm store directory
|
||||
id: pnpm-cache
|
||||
run: |
|
||||
echo "::set-output name=pnpm_cache_dir::$(pnpm store path)"
|
||||
|
||||
- uses: actions/cache@v3
|
||||
name: Setup pnpm cache
|
||||
with:
|
||||
path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }}
|
||||
key: ${{ runner.os }}-lucide-preact-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-lucide-preact-pnpm-store-
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install --filter .
|
||||
|
||||
- name: Check icons and categories
|
||||
run: pnpm checkIcons
|
||||
5
.husky/pre-commit
Executable file
@@ -0,0 +1,5 @@
|
||||
#!/usr/bin/env sh
|
||||
. "$(dirname -- "$0")/_/husky.sh"
|
||||
|
||||
pnpm lint-staged
|
||||
pnpm checkIcons
|
||||
@@ -20,7 +20,7 @@
|
||||
"type": "string"
|
||||
},
|
||||
"icon": {
|
||||
"$ref": "#/$defs/types/icon-reference"
|
||||
"type": "string"
|
||||
},
|
||||
"weight": {
|
||||
"type": "integer"
|
||||
|
||||
12
icons/construction.json
Normal file
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"tags": [
|
||||
"roadwork",
|
||||
"maintenance",
|
||||
"blockade",
|
||||
"barricade"
|
||||
],
|
||||
"categories": [
|
||||
"development"
|
||||
]
|
||||
}
|
||||
20
icons/construction.svg
Normal file
@@ -0,0 +1,20 @@
|
||||
<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"
|
||||
>
|
||||
<path d="M21 6H3C2.44772 6 2 6.44772 2 7V13C2 13.5523 2.44772 14 3 14H21C21.5523 14 22 13.5523 22 13V7C22 6.44772 21.5523 6 21 6Z"/>
|
||||
<path d="M17 14V21" />
|
||||
<path d="M7 14V21" />
|
||||
<path d="M17 3V6" />
|
||||
<path d="M7 3V6" />
|
||||
<path d="M2.5 6.5L10 14" />
|
||||
<path d="M8 6L16 14" />
|
||||
<path d="M14 6L21.5 13.5" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 524 B |
10
icons/filter-x.json
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"tags": [
|
||||
"funnel",
|
||||
"hopper"
|
||||
],
|
||||
"categories": [
|
||||
"layout"
|
||||
]
|
||||
}
|
||||
15
icons/filter-x.svg
Normal file
@@ -0,0 +1,15 @@
|
||||
<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"
|
||||
>
|
||||
<path d="m13.013 3h-11.013l8 9.46v6.54l4 2v-8.54l0.89973-1.0554" />
|
||||
<path d="m22 3-5 5" />
|
||||
<path d="m17 3 5 5" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 328 B |
14
icons/helping-hand.json
Normal file
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"tags": [
|
||||
"agreement",
|
||||
"help",
|
||||
"proposal",
|
||||
"charity",
|
||||
"begging",
|
||||
"terms"
|
||||
],
|
||||
"categories": [
|
||||
"emoji"
|
||||
]
|
||||
}
|
||||
14
icons/helping-hand.svg
Normal file
@@ -0,0 +1,14 @@
|
||||
<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"
|
||||
>
|
||||
<path d="m3 15 5.12-5.12A3 3 0 0 1 10.24 9H13a2 2 0 1 1 0 4h-2.5m4-.68 4.17-4.89a1.88 1.88 0 0 1 2.92 2.36l-4.2 5.94A3 3 0 0 1 14.96 17H9.83a2 2 0 0 0-1.42.59L7 19" />
|
||||
<path d="m2 14 6 6" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 403 B |
@@ -10,6 +10,6 @@
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M18 6H5a2 2 0 0 0-2 2v3a2 2 0 0 0 2 2h13l4-3.5L18 6Z" />
|
||||
<path d="M12 13v9" />
|
||||
<path d="M12 2v4" />
|
||||
<path d="M12 13v8" />
|
||||
<path d="M12 3v3" />
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 323 B After Width: | Height: | Size: 323 B |
10
icons/split-square-horizontal.json
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"tags": [
|
||||
"split",
|
||||
"divide"
|
||||
],
|
||||
"categories": [
|
||||
"layout"
|
||||
]
|
||||
}
|
||||
14
icons/split-square-horizontal.svg
Normal file
@@ -0,0 +1,14 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
stroke-width="2"
|
||||
>
|
||||
<path d="M 8,19 H 5 C 4,19 3,18 3,17 V 7 C 3,6 4,5 5,5 h 3" />
|
||||
<path d="m 16,5 h 3 c 1,0 2,1 2,2 v 10 c 0,1 -1,2 -2,2 h -3" />
|
||||
<line x1="12" y1="4" x2="12" y2="20" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 359 B |
10
icons/split-square-vertical.json
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"tags": [
|
||||
"split",
|
||||
"divide"
|
||||
],
|
||||
"categories": [
|
||||
"layout"
|
||||
]
|
||||
}
|
||||
15
icons/split-square-vertical.svg
Normal file
@@ -0,0 +1,15 @@
|
||||
<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"
|
||||
>
|
||||
<path d="M 5,8 V 5 C 5,4 6,3 7,3 h 10 c 1,0 2,1 2,2 v 3" />
|
||||
<path d="m 19,16 v 3 c 0,1 -1,2 -2,2 H 7 C 6,21 5,20 5,19 v -3" />
|
||||
<line x1="4" y1="12" x2="20" y2="12" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 381 B |
@@ -24,7 +24,8 @@
|
||||
"categories2icons": "node scripts/migrateCategoriesToIcons.mjs --presets @babel/env",
|
||||
"generate:changelog": "node ./scripts/generateChangelog.mjs",
|
||||
"postinstall": "husky install",
|
||||
"lint": "eslint --ext .ts,.js,.mjs ./{packages/lucide,scripts}"
|
||||
"lint": "eslint --ext .ts,.js,.mjs ./{packages/lucide,scripts}",
|
||||
"prepare": "husky install"
|
||||
},
|
||||
"devDependencies": {
|
||||
"eslint": "^8.26.0",
|
||||
@@ -40,11 +41,6 @@
|
||||
"svgo": "^3.0.0",
|
||||
"svgson": "^5.2.1"
|
||||
},
|
||||
"husky": {
|
||||
"hooks": {
|
||||
"pre-commit": "lint-staged"
|
||||
}
|
||||
},
|
||||
"lint-staged": {
|
||||
"icons/*.svg": "node ./scripts/optimizeStagedSvgs.mjs"
|
||||
},
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "lucide-angular",
|
||||
"description": "A Lucide icon library package for Angular applications",
|
||||
"version": "0.114.0",
|
||||
"version": "0.116.0",
|
||||
"author": "SMAH1",
|
||||
"license": "ISC",
|
||||
"homepage": "https://lucide.dev",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
name: lucide_icons
|
||||
description: A Lucide icon library package for Flutter applications. Fork of Feather Icons, open for anyone to contribute icons.
|
||||
version: 0.114.0
|
||||
version: 0.116.0
|
||||
homepage: https://lucide.dev
|
||||
repository: https://github.com/lucide-icons/lucide
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "lucide-preact",
|
||||
"description": "A Lucide icon library package for Preact applications",
|
||||
"version": "0.114.0",
|
||||
"version": "0.116.0",
|
||||
"license": "ISC",
|
||||
"homepage": "https://lucide.dev",
|
||||
"bugs": "https://github.com/lucide-icons/lucide/issues",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "lucide-react-native",
|
||||
"description": "A Lucide icon library package for React Native applications",
|
||||
"version": "0.114.0",
|
||||
"version": "0.116.0",
|
||||
"license": "ISC",
|
||||
"homepage": "https://lucide.dev",
|
||||
"bugs": "https://github.com/lucide-icons/lucide/issues",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "lucide-react",
|
||||
"description": "A Lucide icon library package for React applications",
|
||||
"version": "0.114.0",
|
||||
"version": "0.116.0",
|
||||
"license": "ISC",
|
||||
"homepage": "https://lucide.dev",
|
||||
"bugs": "https://github.com/lucide-icons/lucide/issues",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "lucide-svelte",
|
||||
"description": "A Lucide icon library package for Svelte applications",
|
||||
"version": "0.114.0",
|
||||
"version": "0.116.0",
|
||||
"license": "ISC",
|
||||
"homepage": "https://lucide.dev",
|
||||
"bugs": "https://github.com/lucide-icons/lucide/issues",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "lucide-vue-next",
|
||||
"version": "0.114.0",
|
||||
"version": "0.116.0",
|
||||
"author": "Eric Fennis",
|
||||
"description": "A Lucide icon library package for Vue 3 applications",
|
||||
"license": "ISC",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "lucide-vue",
|
||||
"version": "0.114.0",
|
||||
"version": "0.116.0",
|
||||
"author": "Eric Fennis",
|
||||
"description": "A Lucide icon library package for Vue 2 applications",
|
||||
"license": "ISC",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "lucide",
|
||||
"description": "A Lucide icon library package for web and javascript applications.",
|
||||
"version": "0.114.0",
|
||||
"version": "0.116.0",
|
||||
"license": "ISC",
|
||||
"homepage": "https://lucide.dev",
|
||||
"bugs": "https://github.com/lucide-icons/lucide/issues",
|
||||
|
||||
187
pnpm-lock.yaml
generated
@@ -375,6 +375,7 @@ importers:
|
||||
'@next/eslint-plugin-next': ^12.2.5
|
||||
'@next/mdx': ^11.0.0
|
||||
'@svgr/webpack': ^6.3.1
|
||||
'@swc/core': ^1.3.35
|
||||
'@testing-library/dom': ^7.31.2
|
||||
'@testing-library/jest-dom': ^5.16.5
|
||||
'@testing-library/react': ^11.2.7
|
||||
@@ -400,6 +401,7 @@ importers:
|
||||
lucide-react: ^0.94.0
|
||||
next: '12'
|
||||
next-mdx-remote: ^3.0.2
|
||||
node-fetch: '2'
|
||||
prettier: ^2.3.2
|
||||
prism-react-renderer: ^1.2.1
|
||||
react: 17.0.2
|
||||
@@ -437,6 +439,7 @@ importers:
|
||||
svgson: 5.2.1
|
||||
devDependencies:
|
||||
'@next/eslint-plugin-next': 12.2.5
|
||||
'@swc/core': 1.3.35
|
||||
'@testing-library/dom': 7.31.2
|
||||
'@testing-library/jest-dom': 5.16.5
|
||||
'@testing-library/react': 11.2.7_sfoxds7t5ydpegc3knd667wn6m
|
||||
@@ -452,9 +455,10 @@ importers:
|
||||
eslint: 8.22.0
|
||||
eslint-config-prettier: 8.5.0_eslint@8.22.0
|
||||
jest: 26.6.3_ts-node@10.9.1
|
||||
node-fetch: 2.6.7
|
||||
prettier: 2.7.1
|
||||
react-test-renderer: 17.0.2_react@17.0.2
|
||||
ts-node: 10.9.1_gqqbkana4qauswgj6o2wzoub7a
|
||||
ts-node: 10.9.1_iuagarv54md6u2z4nbxsm6bl6u
|
||||
tslib: 2.4.0
|
||||
typescript: 4.8.4
|
||||
|
||||
@@ -9112,6 +9116,113 @@ packages:
|
||||
- supports-color
|
||||
dev: false
|
||||
|
||||
/@swc/core-darwin-arm64/1.3.35:
|
||||
resolution: {integrity: sha512-zQUFkHx4gZpu0uo2IspvPnKsz8bsdXd5bC33xwjtoAI1cpLerDyqo4v2zIahEp+FdKZjyVsLHtfJiQiA1Qka3A==}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@swc/core-darwin-x64/1.3.35:
|
||||
resolution: {integrity: sha512-oOSkSGWtALovaw22lNevKD434OQTPf8X+dVPvPMrJXJpJ34dWDlFWpLntoc+arvKLNZ7LQmTuk8rR1hkrAY7cw==}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@swc/core-linux-arm-gnueabihf/1.3.35:
|
||||
resolution: {integrity: sha512-Yie8k00O6O8BCATS/xeKStquV4OYSskUGRDXBQVDw1FrE23PHaSeHCgg4q6iNZjJzXCOJbaTCKnYoIDn9DMf7A==}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@swc/core-linux-arm64-gnu/1.3.35:
|
||||
resolution: {integrity: sha512-Zlv3WHa/4x2p51HSvjUWXHfSe1Gl2prqImUZJc8NZOlj75BFzVuR0auhQ+LbwvIQ3gaA1LODX9lyS9wXL3yjxA==}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@swc/core-linux-arm64-musl/1.3.35:
|
||||
resolution: {integrity: sha512-u6tCYsrSyZ8U+4jLMA/O82veBfLy2aUpn51WxQaeH7wqZGy9TGSJXoO8vWxARQ6b72vjsnKDJHP4MD8hFwcctg==}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@swc/core-linux-x64-gnu/1.3.35:
|
||||
resolution: {integrity: sha512-Dtxf2IbeH7XlNhP1Qt2/MvUPkpEbn7hhGfpSRs4ot8D3Vf5QEX4S/QtC1OsFWuciiYgHAT1Ybjt4xZic9DSkmA==}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@swc/core-linux-x64-musl/1.3.35:
|
||||
resolution: {integrity: sha512-4XavNJ60GprjpTiESCu5daJUnmErixPAqDitJSMu4TV32LNIE8G00S9pDLXinDTW1rgcGtQdq1NLkNRmwwovtg==}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@swc/core-win32-arm64-msvc/1.3.35:
|
||||
resolution: {integrity: sha512-dNGfKCUSX2M4qVyaS80Lyos0FkXyHRCvrdQ2Y4Hrg3FVokiuw3yY6fLohpUfQ5ws3n2A39dh7jGDeh34+l0sGA==}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@swc/core-win32-ia32-msvc/1.3.35:
|
||||
resolution: {integrity: sha512-ChuPSrDR+JBf7S7dEKPicnG8A3bM0uWPsW2vG+V2wH4iNfNxKVemESHosmYVeEZXqMpomNMvLyeHep1rjRsc0Q==}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [ia32]
|
||||
os: [win32]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@swc/core-win32-x64-msvc/1.3.35:
|
||||
resolution: {integrity: sha512-/RvphT4WfuGfIK84Ha0dovdPrKB1bW/mc+dtdmhv2E3EGkNc5FoueNwYmXWRimxnU7X0X7IkcRhyKB4G5DeAmg==}
|
||||
engines: {node: '>=10'}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
requiresBuild: true
|
||||
dev: true
|
||||
optional: true
|
||||
|
||||
/@swc/core/1.3.35:
|
||||
resolution: {integrity: sha512-KmiBin0XSVzJhzX19zTiCqmLslZ40Cl7zqskJcTDeIrRhfgKdiAsxzYUanJgMJIRjYtl9Kcg1V/Ip2o2wL8v3w==}
|
||||
engines: {node: '>=10'}
|
||||
requiresBuild: true
|
||||
optionalDependencies:
|
||||
'@swc/core-darwin-arm64': 1.3.35
|
||||
'@swc/core-darwin-x64': 1.3.35
|
||||
'@swc/core-linux-arm-gnueabihf': 1.3.35
|
||||
'@swc/core-linux-arm64-gnu': 1.3.35
|
||||
'@swc/core-linux-arm64-musl': 1.3.35
|
||||
'@swc/core-linux-x64-gnu': 1.3.35
|
||||
'@swc/core-linux-x64-musl': 1.3.35
|
||||
'@swc/core-win32-arm64-msvc': 1.3.35
|
||||
'@swc/core-win32-ia32-msvc': 1.3.35
|
||||
'@swc/core-win32-x64-msvc': 1.3.35
|
||||
dev: true
|
||||
|
||||
/@swc/helpers/0.4.3:
|
||||
resolution: {integrity: sha512-6JrF+fdUK2zbGpJIlN7G3v966PQjyx/dPt1T9km2wj+EUBqgrxCk3uX4Kct16MIm9gGxfKRcfax2hVf5jvlTzA==}
|
||||
dependencies:
|
||||
@@ -10700,7 +10811,7 @@ packages:
|
||||
loader-utils: 2.0.2
|
||||
make-dir: 3.1.0
|
||||
schema-utils: 2.7.1
|
||||
webpack: 5.74.0
|
||||
webpack: 5.74.0_@swc+core@1.3.35
|
||||
dev: true
|
||||
|
||||
/babel-loader/8.2.5_xc6oct4hcywdrbo4ned6ytbybm:
|
||||
@@ -16148,7 +16259,7 @@ packages:
|
||||
jest-validate: 26.6.2
|
||||
micromatch: 4.0.5
|
||||
pretty-format: 26.6.2
|
||||
ts-node: 10.9.1_gqqbkana4qauswgj6o2wzoub7a
|
||||
ts-node: 10.9.1_iuagarv54md6u2z4nbxsm6bl6u
|
||||
transitivePeerDependencies:
|
||||
- bufferutil
|
||||
- canvas
|
||||
@@ -22222,6 +22333,31 @@ packages:
|
||||
supports-hyperlinks: 2.2.0
|
||||
dev: true
|
||||
|
||||
/terser-webpack-plugin/5.3.5_oogp7xv4rppobi5ktio24rc7mq:
|
||||
resolution: {integrity: sha512-AOEDLDxD2zylUGf/wxHxklEkOe2/r+seuyOWujejFrIxHf11brA1/dWQNIgXa1c6/Wkxgu7zvv0JhOWfc2ELEA==}
|
||||
engines: {node: '>= 10.13.0'}
|
||||
peerDependencies:
|
||||
'@swc/core': '*'
|
||||
esbuild: '*'
|
||||
uglify-js: '*'
|
||||
webpack: ^5.1.0
|
||||
peerDependenciesMeta:
|
||||
'@swc/core':
|
||||
optional: true
|
||||
esbuild:
|
||||
optional: true
|
||||
uglify-js:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@jridgewell/trace-mapping': 0.3.15
|
||||
'@swc/core': 1.3.35
|
||||
jest-worker: 27.5.1
|
||||
schema-utils: 3.1.1
|
||||
serialize-javascript: 6.0.0
|
||||
terser: 5.16.1
|
||||
webpack: 5.74.0_@swc+core@1.3.35
|
||||
dev: true
|
||||
|
||||
/terser-webpack-plugin/5.3.5_webpack@5.74.0:
|
||||
resolution: {integrity: sha512-AOEDLDxD2zylUGf/wxHxklEkOe2/r+seuyOWujejFrIxHf11brA1/dWQNIgXa1c6/Wkxgu7zvv0JhOWfc2ELEA==}
|
||||
engines: {node: '>= 10.13.0'}
|
||||
@@ -22483,7 +22619,7 @@ packages:
|
||||
'@tsconfig/node14': 1.0.3
|
||||
'@tsconfig/node16': 1.0.3
|
||||
'@types/node': 18.11.4
|
||||
acorn: 8.8.0
|
||||
acorn: 8.8.1
|
||||
acorn-walk: 8.2.0
|
||||
arg: 4.1.3
|
||||
create-require: 1.1.1
|
||||
@@ -22494,7 +22630,7 @@ packages:
|
||||
yn: 3.1.1
|
||||
dev: true
|
||||
|
||||
/ts-node/10.9.1_gqqbkana4qauswgj6o2wzoub7a:
|
||||
/ts-node/10.9.1_iuagarv54md6u2z4nbxsm6bl6u:
|
||||
resolution: {integrity: sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
@@ -22509,6 +22645,7 @@ packages:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@cspotcode/source-map-support': 0.8.1
|
||||
'@swc/core': 1.3.35
|
||||
'@tsconfig/node10': 1.0.9
|
||||
'@tsconfig/node12': 1.0.11
|
||||
'@tsconfig/node14': 1.0.3
|
||||
@@ -23650,6 +23787,46 @@ packages:
|
||||
- uglify-js
|
||||
dev: true
|
||||
|
||||
/webpack/5.74.0_@swc+core@1.3.35:
|
||||
resolution: {integrity: sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==}
|
||||
engines: {node: '>=10.13.0'}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
webpack-cli: '*'
|
||||
peerDependenciesMeta:
|
||||
webpack-cli:
|
||||
optional: true
|
||||
dependencies:
|
||||
'@types/eslint-scope': 3.7.4
|
||||
'@types/estree': 0.0.51
|
||||
'@webassemblyjs/ast': 1.11.1
|
||||
'@webassemblyjs/wasm-edit': 1.11.1
|
||||
'@webassemblyjs/wasm-parser': 1.11.1
|
||||
acorn: 8.8.1
|
||||
acorn-import-assertions: 1.8.0_acorn@8.8.1
|
||||
browserslist: 4.21.4
|
||||
chrome-trace-event: 1.0.3
|
||||
enhanced-resolve: 5.10.0
|
||||
es-module-lexer: 0.9.3
|
||||
eslint-scope: 5.1.1
|
||||
events: 3.3.0
|
||||
glob-to-regexp: 0.4.1
|
||||
graceful-fs: 4.2.10
|
||||
json-parse-even-better-errors: 2.3.1
|
||||
loader-runner: 4.3.0
|
||||
mime-types: 2.1.35
|
||||
neo-async: 2.6.2
|
||||
schema-utils: 3.1.1
|
||||
tapable: 2.2.1
|
||||
terser-webpack-plugin: 5.3.5_oogp7xv4rppobi5ktio24rc7mq
|
||||
watchpack: 2.4.0
|
||||
webpack-sources: 3.2.3
|
||||
transitivePeerDependencies:
|
||||
- '@swc/core'
|
||||
- esbuild
|
||||
- uglify-js
|
||||
dev: true
|
||||
|
||||
/websocket-driver/0.7.4:
|
||||
resolution: {integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==}
|
||||
engines: {node: '>=0.8.0'}
|
||||
|
||||
@@ -7,7 +7,7 @@ const icons = readAllMetadata(ICONS_DIR);
|
||||
const CATEGORIES_DIR = path.resolve(currentDir, '../categories');
|
||||
const categories = readAllMetadata(CATEGORIES_DIR);
|
||||
|
||||
console.log(`Read all icons`);
|
||||
console.log('Reading all icons')
|
||||
|
||||
const svgFiles = readSvgDirectory(ICONS_DIR);
|
||||
const iconNames = svgFiles.map(icon => icon.split('.')[0]);
|
||||
@@ -47,5 +47,6 @@ Object.keys(categories).forEach(categoryName => {
|
||||
});
|
||||
|
||||
if (error) {
|
||||
throw new Error('At least one error in icon JSONs prevents from committing changes.');
|
||||
console.error('At least one error in icon JSONs prevents from committing changes.');
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
import fs from 'fs';
|
||||
import processSvg from './render/processSvg.mjs';
|
||||
|
||||
const svgFiles = process.argv.slice(4);
|
||||
const svgFiles = process.argv.slice(2);
|
||||
|
||||
svgFiles.forEach(async (svgFile) => {
|
||||
console.log('Optimizing staged SVG file:', svgFile)
|
||||
const content = fs.readFileSync(svgFile);
|
||||
const svg = await processSvg(content);
|
||||
const svg = await processSvg(content, svgFile);
|
||||
fs.writeFileSync(svgFile, svg, 'utf-8');
|
||||
});
|
||||
|
||||
@@ -11,5 +11,5 @@ const svgFiles = readSvgDirectory(ICONS_DIR);
|
||||
|
||||
svgFiles.forEach((svgFile) => {
|
||||
const content = fs.readFileSync(path.join(ICONS_DIR, svgFile));
|
||||
processSvg(content).then((svg) => writeSvgFile(svgFile, ICONS_DIR, svg));
|
||||
processSvg(content, svgFile).then((svg) => writeSvgFile(svgFile, ICONS_DIR, svg));
|
||||
});
|
||||
|
||||
@@ -8,8 +8,9 @@ import DEFAULT_ATTRS from './default-attrs.json' assert { type: 'json' };
|
||||
* @param {string} svg - An SVG string.
|
||||
* @returns {Promise<string>} An optimized svg
|
||||
*/
|
||||
async function optimizeSvg(svg) {
|
||||
async function optimizeSvg(svg, path) {
|
||||
const result = optimize(svg, {
|
||||
path,
|
||||
plugins: [
|
||||
{
|
||||
name: 'preset-default',
|
||||
@@ -17,12 +18,15 @@ async function optimizeSvg(svg) {
|
||||
overrides: {
|
||||
convertShapeToPath: false,
|
||||
mergePaths: false,
|
||||
removeAttrs: {
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
name: 'removeAttrs',
|
||||
params: {
|
||||
attrs: '(fill|stroke.*)',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
],
|
||||
});
|
||||
|
||||
@@ -47,9 +51,9 @@ function setAttrs(svg) {
|
||||
* @param {string} svg An SVG string.
|
||||
* @returns {Promise<string>} An optimized svg
|
||||
*/
|
||||
function processSvg(svg) {
|
||||
function processSvg(svg, path) {
|
||||
return (
|
||||
optimizeSvg(svg)
|
||||
optimizeSvg(svg, path)
|
||||
.then(setAttrs)
|
||||
.then((optimizedSvg) =>
|
||||
prettier.format(optimizedSvg, {parser: 'babel'}),
|
||||
|
||||
2
site/.gitignore
vendored
@@ -1,2 +1,4 @@
|
||||
.idea
|
||||
public/docs/images
|
||||
.vercel
|
||||
.env
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
"copy-assets": "mkdir -p ./public/docs/images && cp -rf ../docs/images ./public/docs",
|
||||
"prebuild": "ts-node scripts/preBuild.tsx",
|
||||
"prebuild": "ts-node --swc scripts/preBuild.ts",
|
||||
"build": "pnpm copy-assets && pnpm prebuild && next build",
|
||||
"export": "next export -o build",
|
||||
"deploy": "pnpm build && pnpm export",
|
||||
@@ -42,6 +42,7 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@next/eslint-plugin-next": "^12.2.5",
|
||||
"@swc/core": "^1.3.35",
|
||||
"@testing-library/dom": "^7.31.2",
|
||||
"@testing-library/jest-dom": "^5.16.5",
|
||||
"@testing-library/react": "^11.2.7",
|
||||
@@ -57,6 +58,7 @@
|
||||
"eslint": "^8.22.0",
|
||||
"eslint-config-prettier": "^8.5.0",
|
||||
"jest": "^26.5.2",
|
||||
"node-fetch": "2",
|
||||
"prettier": "^2.3.2",
|
||||
"react-test-renderer": "17.0.2",
|
||||
"ts-node": "~10.9.1",
|
||||
|
||||
@@ -2,6 +2,7 @@ import crypto from 'crypto';
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
import { Contributor } from '../types';
|
||||
import fetch, { Headers } from 'node-fetch'
|
||||
|
||||
const IGNORE_COMMIT_MESSAGES = ['fork', 'optimize'];
|
||||
|
||||
|
||||
@@ -2,11 +2,20 @@ import path from 'path';
|
||||
import fs from 'fs';
|
||||
|
||||
const cacheDir = path.join(process.cwd(), '.next/cache');
|
||||
const nextDir = path.join(process.cwd(), '.next');
|
||||
const cachePath = (cacheKey: string) => path.join(cacheDir, `${cacheKey}.json`);
|
||||
|
||||
type AtomicCacheable = object|string|number|boolean|null;
|
||||
type Cacheable = AtomicCacheable|AtomicCacheable[];
|
||||
|
||||
if (!fs.existsSync(nextDir)) {
|
||||
fs.mkdirSync(nextDir)
|
||||
}
|
||||
|
||||
if (!fs.existsSync(cacheDir)) {
|
||||
fs.mkdirSync(cacheDir)
|
||||
}
|
||||
|
||||
function read<T extends Cacheable>(cacheKey: string): T {
|
||||
if (fs.existsSync(cachePath(cacheKey))) {
|
||||
const iconCache = fs.readFileSync(cachePath(cacheKey), "utf8")
|
||||
@@ -17,8 +26,10 @@ function read<T extends Cacheable>(cacheKey: string): T {
|
||||
}
|
||||
|
||||
function write<T extends Cacheable>(cacheKey: string, content: T): void {
|
||||
if (!fs.existsSync(cacheDir)) {
|
||||
fs.mkdirSync(cacheDir)
|
||||
|
||||
|
||||
if (!fs.existsSync(path.join(cacheDir, cacheKey))) {
|
||||
fs.mkdirSync(path.join(cacheDir, cacheKey))
|
||||
}
|
||||
|
||||
fs.writeFileSync(cachePath(cacheKey), JSON.stringify(content), 'utf-8')
|
||||
@@ -1,10 +1,13 @@
|
||||
{
|
||||
"ts-node": {
|
||||
"esm": true,
|
||||
"compilerOptions": {
|
||||
"module": "commonjs"
|
||||
"baseUrl": ".",
|
||||
"module": "nodenext",
|
||||
}
|
||||
},
|
||||
"compilerOptions": {
|
||||
"baseUrl": ".",
|
||||
"target": "ESNext",
|
||||
"lib": [
|
||||
"dom",
|
||||
|
||||