Compare commits

..
Author SHA1 Message Date
Eric Fennis 248d1c31eb Adds release config 2025-01-03 15:50:42 +01:00
Eric Fennis b6a978ec6a Use latest version of semantic version 2025-01-03 15:39:45 +01:00
Eric Fennis de454e4d98 Add version 2025-01-03 15:38:15 +01:00
Eric Fennis 13c4163843 Add permissions 2025-01-03 15:37:53 +01:00
Eric Fennis c0d4147fe6 fix: Test Version 2025-01-03 15:33:47 +01:00
Eric Fennis 0640cd0938 Test workflow 2025-01-03 15:27:19 +01:00
Eric Fennis 7ab9b83991 fix: release workflow 2025-01-03 15:22:20 +01:00
Eric Fennis 0c08347e5e Test workflpw 2025-01-03 15:01:08 +01:00
Eric Fennis 35e9cb4b6f Test workflow 2025-01-03 15:00:13 +01:00
Eric Fennis 2095ba6aa7 ci: Add commit message check 2024-10-10 05:47:54 +02:00
Eric Fennis ddfc5cadc1 Merge branch 'main' of https://github.com/lucide-icons/lucide into new-release-workflow 2024-10-10 05:36:21 +02:00
Eric Fennis f3c6929c98 Remove Node version 2024-10-10 05:36:17 +02:00
Eric Fennis 9b46e0dcba Add name in package.json 2024-10-10 05:34:06 +02:00
Eric Fennis ef449fd5c5 Try mono repo setup 2024-10-10 05:29:12 +02:00
Eric Fennis 2892be8229 Add temporary branch test 2024-10-10 05:21:06 +02:00
Eric Fennis 2b1ad320fe Add PR title linting 2024-10-10 05:16:17 +02:00
Eric Fennis 61a86a959a enable dry run 2024-10-08 11:44:49 +02:00
Eric Fennis d92e7796e4 test worflow 2024-10-08 11:43:44 +02:00
Eric Fennis d237803413 Adds semantic release step in CI action 2024-07-22 11:37:06 +02:00
96 changed files with 3565 additions and 3706 deletions
+49 -53
View File
@@ -3,71 +3,67 @@ name: Continuous integration icons
on:
push:
branches:
- main
paths:
- icons/**/*.svg
# - main
- '*'
# paths:
# - icons/**/*.svg
jobs:
create-release:
if: github.repository == 'lucide-icons/lucide'
# Only create a new releases for new icons
runs-on: ubuntu-latest
permissions:
id-token: write
contents: write
packages: read
actions: write
issues: write
pull-requests: write
outputs:
VERSION: ${{ steps.new-version.outputs.NEW_VERSION }}
VERSION: ${{ steps.semantic.outputs.new_release_version }}
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
- uses: actions/setup-node@v4
- name: Semantic Release
id: semantic
uses: cycjimmy/semantic-release-action@v4
with:
node-version: 18
cache: 'pnpm'
tag_format: ${version}
branches: |
['new-release-workflow']
extends: |
semantic-release-monorepo
extra_plugins: |
@semantic-release/github
@semantic-release/git
@semantic-release/release-notes-generator
conventional-changelog-conventionalcommits
- 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 }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Check output
- name: Do something when a new release published
if: steps.semantic.outputs.new_release_published == 'true'
run: |
echo '${{ steps.new-version.outputs.NEW_VERSION }}'
echo '${{ steps.change-log.outputs.CHANGE_LOG }}'
echo ${{ steps.semantic.outputs.new_release_version }}
echo ${{ steps.semantic.outputs.new_release_major_version }}
echo ${{ steps.semantic.outputs.new_release_minor_version }}
echo ${{ steps.semantic.outputs.new_release_patch_version }}
# - name: Create Release
# uses: softprops/action-gh-release@v1
# with:
# tag_name: ${{ steps.semantic.outputs.new_release_version }}
# name: Version ${{ steps.semantic.outputs.new_release_version }}
# body: ${{ steps.semantic.outputs.new_release_notes }}
- 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 }}
# 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 }}
+21
View File
@@ -21,3 +21,24 @@ jobs:
- name: Run Linter
run: pnpm lint
pr-title:
runs-on: ubuntu-latest
steps:
- uses: amannn/action-semantic-pull-request@v5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
types: |
fix
feat
perf
refactor
test
style
docs
ci
build
requireScope: true
ignoreLabels: |
bot
-1
View File
@@ -4,7 +4,6 @@ on:
pull_request:
paths:
- packages/lucide-preact/**
- packages/shared/**
- tools/build-icons/**
- tools/rollup-plugins/**
- pnpm-lock.yaml
@@ -4,7 +4,6 @@ on:
pull_request:
paths:
- packages/lucide-react-native/**
- packages/shared/**
- tools/build-icons/**
- tools/rollup-plugins/**
- pnpm-lock.yaml
-1
View File
@@ -4,7 +4,6 @@ on:
pull_request:
paths:
- packages/lucide-react/**
- packages/shared/**
- tools/build-icons/**
- tools/rollup-plugins/**
- scripts/generateNextJSAliases.mjs
-24
View File
@@ -1,24 +0,0 @@
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
-1
View File
@@ -4,7 +4,6 @@ on:
pull_request:
paths:
- packages/lucide-solid/**
- packages/shared/**
- tools/build-icons/**
- tools/rollup-plugins/**
- pnpm-lock.yaml
-1
View File
@@ -4,7 +4,6 @@ on:
pull_request:
paths:
- packages/lucide-svelte/**
- packages/shared/**
- tools/build-icons/**
- tools/rollup-plugins/**
- pnpm-lock.yaml
-1
View File
@@ -4,7 +4,6 @@ on:
pull_request:
paths:
- packages/lucide-vue-next/**
- packages/shared/**
- tools/build-icons/**
- tools/rollup-plugins/**
- pnpm-lock.yaml
-1
View File
@@ -4,7 +4,6 @@ on:
pull_request:
paths:
- packages/lucide-vue/**
- packages/shared/**
- tools/build-icons/**
- tools/rollup-plugins/**
- pnpm-lock.yaml
-2
View File
@@ -16,9 +16,7 @@ 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/**/dynamicIconImports.js
packages/**/dynamicIconImports.d.ts
View File
@@ -76,24 +76,5 @@
],
"source": "https://github.com/swisnl/nuxt-lucide-icons",
"documentation": "https://github.com/swisnl/nuxt-lucide-icons/blob/main/README.md"
},
{
"name": "lucide-lustre",
"description": "A library providing https://lucide.dev icons to lustre",
"icon": "/framework-logos/lustre.webp",
"shields": [
{
"alt": "Latest Stable Version",
"src": "https://img.shields.io/hexpm/v/lucide_lustre",
"href": "https://hex.pm/packages/lucide_lustre"
},
{
"alt": "Total Downloads",
"src": "https://img.shields.io/hexpm/dw/lucide_lustre",
"href": "https://hex.pm/packages/lucide_lustre"
}
],
"source": "https://github.com/dinkelspiel/lucide_lustre",
"documentation": "https://github.com/dinkelspiel/lucide_lustre/blob/master/README.md"
}
]
-4
View File
@@ -46,10 +46,6 @@ const sidebar: UserConfig<DefaultTheme.Config>['themeConfig']['sidebar'] = {
text: 'Filled icons',
link: '/guide/advanced/filled-icons',
},
{
text: 'Aliased Names',
link: '/guide/advanced/aliased-names',
},
// {
// text: 'Combining icons',
// },
-93
View File
@@ -1,93 +0,0 @@
# Aliased Names
Icons can have multiple names for the same icon. This is because we choose to rename some icons to make them more consistent with the rest of the icon set, or the name was not generic. For example, the `edit-2` icon is renamed to `pen` to make the name more generic, since it is just a pen icon.
Beside aliases names lucide also includes prefixed and suffixed names to use within your project. This is to prevent import name collisions with other libraries or your own code.
```tsx
// These are all the same icon
import {
Home,
HomeIcon,
LucideHome,
} from "lucide-react";
```
## Choosing import name style
To be consistent in your imports or want to change the autocompletion of Lucide icons in your IDE there an option to able the choose the import name style you want.
This can be done by creating a custom module declaration file to override the lucide imports and turning off the autocomplete in your IDE.
### Turn off autocomplete in your IDE
```json [.vscode/settings.json]
{
"typescript.preferences.autoImportFileExcludePatterns": [
"lucide-react", // or
"lucide-preact", // or
"lucide-react-native", // or
"lucide-vue-next",
]
}
```
### Create a custom module declaration file
Only available for `lucide-react`, `lucide-preact`, `lucide-react-native`, `lucide-vue-next` package.
This will enable you to choose the import name style you want to use in your project.
::: code-group
```ts [React]
declare module "lucide-react" {
// Prefixed import names
export * from "lucide-react/dist/lucide-react.prefixed";
// or
// Suffixed import names
export * from "lucide-react/dist/lucide-react.suffixed";
}
```
```ts [Vue]
declare module "lucide-vue-next" {
// Prefixed import names
export * from "lucide-vue-next/dist/lucide-vue-next.prefixed";
// or
// Suffixed import names
export * from "lucide-vue-next/dist/lucide-vue-next.suffixed";
}
```
```ts [Preact]
declare module "lucide-preact" {
// Prefixed import names
export * from "lucide-preact/dist/lucide-preact.prefixed";
// or
// Suffixed import names
export * from "lucide-preact/dist/lucide-preact.suffixed";
}
```
```ts [React Native]
declare module "lucide-react-native" {
// Prefixed import names
export * from "lucide-react-native/dist/lucide-react-native.prefixed";
// or
// Suffixed import names
export * from "lucide-react-native/dist/lucide-react-native.suffixed";
}
```
:::
Place this in your project root or in a folder where your tsconfig.json is located, or locate it in your defined type directory.
Easiest way is to create a `@types` folder in your project root and name the file `[package-name].d.ts`.
### Import name styles
| Import Style | Available imports | Declaration file import |
| ------------- | --------------------------- | ----------------------- |
| Default | Home, HomeIcon, LucideHome | |
| Prefixed | LucideHome | [package].prefixed |
| Suffixed | HomeIcon | [package].suffixed |
+3 -3
View File
@@ -52,7 +52,7 @@ Here are rules that should be followed to keep quality and consistency when maki
![optical-volume-high](../../images/optical-volume-high.svg?raw=true "optical-volume-high")
**Tip:** place your icon next to the circle or square icon and blur them both; your icon should not feel much darker than the base shape.
**Tip:** place your icon next to circle or square and blur them both; your icon should not feel much darker than the base shape.
### 10. Icons should be visually centered by their center of gravity.
@@ -76,7 +76,7 @@ Here are rules that should be followed to keep quality and consistency when maki
![curvature-uneven](../../images/curvature-uneven.svg?raw=true "curvature-uneven")
**Tip:** make sure to use arcs or quadratic curves. When using cubic curves control points should have mirrored angles for smooth curves.
**Tip:** make sure to use arcs or quadratic curves, when using cubic curves control points should have mirrored angles for smooth curves.
### 13. Icons should aim to be pixel perfect so that they will be sharp on low DPI displays.
@@ -142,7 +142,7 @@ For each icon these attributes are applied, corresponding to the above rules.
### Minify paths
The code of paths can sometimes get quite large. To reduce file size we like to minify the code.
We recommend to use [SVGOMG](https://jakearchibald.github.io/svgomg/) to minify paths to 2 points of precision.
We recommend to use the [SVGOMG](https://jakearchibald.github.io/svgomg/) to minify paths to 2 points of precision.
### Allowed elements
+5 -8
View File
@@ -40,17 +40,14 @@ export class AppModule { }
or using standalone version:
```js
import { Component } from '@angular/core';
import { LucideAngularModule, FileIcon } from 'lucide-angular';
@Component({
standalone: true,
selector: 'app-root',
templateUrl: './app.component.html',
styleUrl: './app.component.scss',
imports: [LucideAngularModule]
@NgModule({
imports: [
LucideAngularModule
]
})
export class AppComponent {
export class AppModule {
readonly FileIcon = FileIcon;
}
```
+2 -2
View File
@@ -52,10 +52,10 @@ For faster builds and load times, you can import icons directly from the `lucide
```svelte
<script>
import CircleAlert from 'lucide-svelte/icons/circle-alert';
import AlertCircle from 'lucide-svelte/icons/alert-circle';
</script>
<CircleAlert color="#ff3e98" />
<AlertCircle color="#ff3e98" />
```
## Props
+1 -1
View File
@@ -28,7 +28,7 @@
"@lucide/build-icons": "workspace:*",
"@lucide/helpers": "workspace:*",
"@lucide/shared": "workspace:*",
"@rollup/plugin-replace": "^6.0.1",
"@rollup/plugin-replace": "^5.0.2",
"@types/semver": "^7.5.3",
"h3": "^1.8.0",
"nitropack": "2.8.1",
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

+3 -3
View File
@@ -9,7 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M17 12H7" />
<path d="M19 18H5" />
<path d="M21 6H3" />
<line x1="21" x2="3" y1="6" y2="6" />
<line x1="17" x2="7" y1="12" y2="12" />
<line x1="19" x2="5" y1="18" y2="18" />
</svg>

Before

Width:  |  Height:  |  Size: 279 B

After

Width:  |  Height:  |  Size: 332 B

+3 -3
View File
@@ -9,7 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M3 12h18" />
<path d="M3 18h18" />
<path d="M3 6h18" />
<line x1="3" x2="21" y1="6" y2="6" />
<line x1="3" x2="21" y1="12" y2="12" />
<line x1="3" x2="21" y1="18" y2="18" />
</svg>

Before

Width:  |  Height:  |  Size: 279 B

After

Width:  |  Height:  |  Size: 332 B

+3 -3
View File
@@ -9,7 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M15 12H3" />
<path d="M17 18H3" />
<path d="M21 6H3" />
<line x1="21" x2="3" y1="6" y2="6" />
<line x1="15" x2="3" y1="12" y2="12" />
<line x1="17" x2="3" y1="18" y2="18" />
</svg>

Before

Width:  |  Height:  |  Size: 279 B

After

Width:  |  Height:  |  Size: 332 B

+3 -3
View File
@@ -9,7 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M21 12H9" />
<path d="M21 18H7" />
<path d="M21 6H3" />
<line x1="21" x2="3" y1="6" y2="6" />
<line x1="21" x2="9" y1="12" y2="12" />
<line x1="21" x2="7" y1="18" y2="18" />
</svg>

Before

Width:  |  Height:  |  Size: 279 B

After

Width:  |  Height:  |  Size: 332 B

-22
View File
@@ -1,22 +0,0 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"colebemis",
"ericfennis",
"peteruithoven"
],
"tags": [
"date",
"month",
"year",
"event",
"single",
"singular",
"once",
"1",
"first"
],
"categories": [
"time"
]
}
-17
View File
@@ -1,17 +0,0 @@
<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="M11 14h1v4" />
<path d="M16 2v4" />
<path d="M3 10h18" />
<path d="M8 2v4" />
<rect x="3" y="4" width="18" height="18" rx="2" />
</svg>

Before

Width:  |  Height:  |  Size: 356 B

+1 -2
View File
@@ -1,8 +1,7 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"danielbayley",
"jguddas"
"danielbayley"
],
"tags": [
"audio",
+2 -2
View File
@@ -9,8 +9,8 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M10.5 22H18a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v8.4" />
<path d="M8 18v-7.7L16 9v7" />
<circle cx="14" cy="16" r="2" />
<circle cx="6" cy="18" r="2" />
<path d="M4 12.4V4a2 2 0 0 1 2-2h8.5L20 7.5V20a2 2 0 0 1-2 2h-7.5" />
<path d="M8 18v-7.7L16 9v7" />
</svg>

Before

Width:  |  Height:  |  Size: 378 B

After

Width:  |  Height:  |  Size: 382 B

+1 -1
View File
@@ -9,6 +9,6 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M5.116 4.104A1 1 0 0 1 6.11 3h11.78a1 1 0 0 1 .994 1.105L17.19 20.21A2 2 0 0 1 15.2 22H8.8a2 2 0 0 1-2-1.79z" />
<path d="M15.2 22H8.8a2 2 0 0 1-2-1.79L5 3h14l-1.81 17.21A2 2 0 0 1 15.2 22Z" />
<path d="M6 12a5 5 0 0 1 6 0 5 5 0 0 0 6 0" />
</svg>

Before

Width:  |  Height:  |  Size: 381 B

After

Width:  |  Height:  |  Size: 340 B

-3
View File
@@ -29,8 +29,5 @@
"design",
"shapes",
"maths"
],
"aliases": [
"grid-2-x-2-plus"
]
}
+4 -4
View File
@@ -9,8 +9,8 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M21 12H11" />
<path d="M21 18H11" />
<path d="M21 6H11" />
<path d="m7 8-4 4 4 4" />
<polyline points="7 8 3 12 7 16" />
<line x1="21" x2="11" y1="12" y2="12" />
<line x1="21" x2="11" y1="6" y2="6" />
<line x1="21" x2="11" y1="18" y2="18" />
</svg>

Before

Width:  |  Height:  |  Size: 310 B

After

Width:  |  Height:  |  Size: 373 B

+4 -4
View File
@@ -9,8 +9,8 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M21 12H11" />
<path d="M21 18H11" />
<path d="M21 6H11" />
<path d="m3 8 4 4-4 4" />
<polyline points="3 8 7 12 3 16" />
<line x1="21" x2="11" y1="12" y2="12" />
<line x1="21" x2="11" y1="6" y2="6" />
<line x1="21" x2="11" y1="18" y2="18" />
</svg>

Before

Width:  |  Height:  |  Size: 310 B

After

Width:  |  Height:  |  Size: 373 B

+4 -4
View File
@@ -9,10 +9,10 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M10 12h11" />
<path d="M10 18h11" />
<path d="M10 6h11" />
<path d="M4 10h2" />
<line x1="10" x2="21" y1="6" y2="6" />
<line x1="10" x2="21" y1="12" y2="12" />
<line x1="10" x2="21" y1="18" y2="18" />
<path d="M4 6h1v4" />
<path d="M4 10h2" />
<path d="M6 18H4c0-1 2-2 2-3s-1-1.5-2-1" />
</svg>

Before

Width:  |  Height:  |  Size: 375 B

After

Width:  |  Height:  |  Size: 428 B

+6 -6
View File
@@ -9,10 +9,10 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M3 12h.01" />
<path d="M3 18h.01" />
<path d="M3 6h.01" />
<path d="M8 12h13" />
<path d="M8 18h13" />
<path d="M8 6h13" />
<line x1="8" x2="21" y1="6" y2="6" />
<line x1="8" x2="21" y1="12" y2="12" />
<line x1="8" x2="21" y1="18" y2="18" />
<line x1="3" x2="3.01" y1="6" y2="6" />
<line x1="3" x2="3.01" y1="12" y2="12" />
<line x1="3" x2="3.01" y1="18" y2="18" />
</svg>

Before

Width:  |  Height:  |  Size: 353 B

After

Width:  |  Height:  |  Size: 462 B

+1 -2
View File
@@ -3,8 +3,7 @@
"contributors": [
"karsa-mistmere",
"ericfennis",
"jguddas",
"jamiemlaw"
"jguddas"
],
"tags": [
"pie",
+5 -5
View File
@@ -9,9 +9,9 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="m12 14-1 1" />
<path d="m13.75 18.25-1.25 1.42" />
<path d="M17.775 5.654a15.68 15.68 0 0 0-12.121 12.12" />
<path d="M18.8 9.3a1 1 0 0 0 2.1 7.7" />
<path d="M21.964 20.732a1 1 0 0 1-1.232 1.232l-18-5a1 1 0 0 1-.695-1.232A19.68 19.68 0 0 1 15.732 2.037a1 1 0 0 1 1.232.695z" />
<path d="M15 11h.01" />
<path d="M11 15h.01" />
<path d="M16 16h.01" />
<path d="m2 16 20 6-6-20A20 20 0 0 0 2 16" />
<path d="M5.71 17.11a17.04 17.04 0 0 1 11.4-11.4" />
</svg>

Before

Width:  |  Height:  |  Size: 506 B

After

Width:  |  Height:  |  Size: 389 B

+1 -2
View File
@@ -2,8 +2,7 @@
"$schema": "../icon.schema.json",
"contributors": [
"karsa-mistmere",
"danielbayley",
"jguddas"
"danielbayley"
],
"tags": [
"cutter",
+2 -1
View File
@@ -9,5 +9,6 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M11 16.586V19a1 1 0 0 1-1 1H2L18.37 3.63a1 1 0 1 1 3 3l-9.663 9.663a1 1 0 0 1-1.414 0L8 14" />
<path d="m8 14-6 6h9v-3" />
<path d="M18.37 3.63 8 14l3 3L21.37 6.63a2.12 2.12 0 1 0-3-3Z" />
</svg>

Before

Width:  |  Height:  |  Size: 314 B

After

Width:  |  Height:  |  Size: 306 B

+1 -2
View File
@@ -2,8 +2,7 @@
"$schema": "../icon.schema.json",
"contributors": [
"mittalyashu",
"ericfennis",
"jguddas"
"ericfennis"
],
"tags": [
"bookmark",
+1 -1
View File
@@ -9,5 +9,5 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M12 18.338a2.1 2.1 0 0 0-.987.244L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.12 2.12 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.12 2.12 0 0 0 1.597-1.16l2.309-4.679A.53.53 0 0 1 12 2" />
<path d="M12 17.8 5.8 21 7 14.1 2 9.3l7-1L12 2" />
</svg>

Before

Width:  |  Height:  |  Size: 430 B

After

Width:  |  Height:  |  Size: 261 B

+1 -2
View File
@@ -1,8 +1,7 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"colebemis",
"jguddas"
"colebemis"
],
"tags": [
"bookmark",
+1 -1
View File
@@ -9,5 +9,5 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 2.122 0 0 0 1.597-1.16z" />
<polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2" />
</svg>

Before

Width:  |  Height:  |  Size: 588 B

After

Width:  |  Height:  |  Size: 326 B

+2 -2
View File
@@ -9,7 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M21 17a9 9 0 0 0-15-6.7L3 13" />
<path d="M3 7v6h6" />
<circle cx="12" cy="17" r="1" />
<path d="M3 7v6h6" />
<path d="M21 17a9 9 0 0 0-9-9 9 9 0 0 0-6 2.3L3 13" />
</svg>

Before

Width:  |  Height:  |  Size: 311 B

After

Width:  |  Height:  |  Size: 324 B

-19
View File
@@ -1,19 +0,0 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"colebemis",
"csandman",
"ericfennis",
"jamiemlaw"
],
"tags": [
"weather",
"air",
"pressure",
"blow"
],
"categories": [
"weather",
"sustainability"
]
}
-16
View File
@@ -1,16 +0,0 @@
<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="M10 2v8" />
<path d="M12.8 21.6A2 2 0 1 0 14 18H2" />
<path d="M17.5 10a2.5 2.5 0 1 1 2 4H2" />
<path d="m6 6 4 4 4-4" />
</svg>

Before

Width:  |  Height:  |  Size: 347 B

+3 -3
View File
@@ -9,7 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M12.8 19.6A2 2 0 1 0 14 16H2" />
<path d="M17.5 8a2.5 2.5 0 1 1 2 4H2" />
<path d="M9.8 4.4A2 2 0 1 1 11 8H2" />
<path d="M17.7 7.7a2.5 2.5 0 1 1 1.8 4.3H2" />
<path d="M9.6 4.6A2 2 0 1 1 11 8H2" />
<path d="M12.6 19.4A2 2 0 1 0 14 16H2" />
</svg>

Before

Width:  |  Height:  |  Size: 336 B

After

Width:  |  Height:  |  Size: 342 B

+10 -10
View File
@@ -1,4 +1,5 @@
{
"name": "@lucide/monorepo",
"private": true,
"scripts": {
"build": "pnpm -r --filter './packages/**' build",
@@ -29,7 +30,6 @@
"postinstall": "husky install",
"lint:es": "eslint .",
"lint:format": "prettier \"**/*.{js,mjs,ts,jsx,tsx,html,css,scss,json,yml,yaml}\" --check",
"lint:format-fix": "prettier \"**/*.{js,mjs,ts,jsx,tsx,html,css,scss,json,yml,yaml}\" --write",
"lint:json:icons": "ajv --spec=draft2020 -s icon.schema.json -d 'icons/*.json' > /dev/null",
"lint:json:categories": "ajv --spec=draft2020 -s category.schema.json -d 'categories/*.json' > /dev/null",
"lint:json": "pnpm run lint:json:icons && pnpm run lint:json:categories",
@@ -44,26 +44,26 @@
"@html-eslint/eslint-plugin": "^0.19.1",
"@html-eslint/parser": "^0.19.1",
"@octokit/rest": "^19.0.13",
"@types/yargs": "^17.0.33",
"@typescript-eslint/eslint-plugin": "^6.21.0",
"@typescript-eslint/parser": "^6.21.0",
"@types/yargs": "^17.0.32",
"@typescript-eslint/eslint-plugin": "^6.14.0",
"@typescript-eslint/parser": "^6.14.0",
"ajv-cli": "^5.0.0",
"eslint": "^8.57.1",
"eslint": "^8.56.0",
"eslint-config-airbnb-base": "^15.0.0",
"eslint-config-airbnb-typescript": "^17.1.0",
"eslint-config-prettier": "^8.10.0",
"eslint-import-resolver-alias": "^1.1.2",
"eslint-import-resolver-custom-alias": "^1.3.2",
"eslint-import-resolver-typescript": "^3.6.3",
"eslint-plugin-import": "^2.31.0",
"eslint-import-resolver-typescript": "^3.6.1",
"eslint-plugin-import": "^2.29.1",
"husky": "^8.0.3",
"lint-staged": "^13.3.0",
"minimist": "^1.2.8",
"p-memoize": "^7.1.1",
"prettier": "3.2.4",
"semver": "^7.6.3",
"simple-git": "^3.27.0",
"svgo": "^3.3.2",
"semver": "^7.5.4",
"simple-git": "^3.25.0",
"svgo": "^3.1.0",
"svgson": "^5.3.1",
"yargs": "^17.7.2"
},
+1 -1
View File
@@ -29,7 +29,7 @@
"build": "pnpm clean && pnpm copy:license && pnpm build:icons && pnpm build:ng",
"copy:license": "cp ../../LICENSE ./LICENSE",
"clean": "rm -rf dist && rm -rf ./src/icons/*.ts",
"build:icons": "build-icons --output=./src --templateSrc=./scripts/exportTemplate.mjs --renderUniqueKey --withAliases --aliasNamesOnly --aliasesFileExtension=.ts --iconFileExtension=.ts --exportFileName=lucide-icons.ts",
"build:icons": "build-icons --output=./src --templateSrc=./scripts/exportTemplate.mjs --renderUniqueKey --withAliases --aliasesFileExtension=.ts --iconFileExtension=.ts --exportFileName=lucide-icons.ts",
"build:ng": "ng build --configuration production",
"test": "ng test --no-watch --no-progress --browsers=ChromeHeadlessCI",
"test:watch": "ng test",
@@ -1 +0,0 @@
export * from './aliases';
+1 -1
View File
@@ -53,7 +53,7 @@
"rollup": "^4.22.4",
"rollup-plugin-dts": "^6.1.0",
"typescript": "^5.3.3",
"vite": "5.1.8",
"vite": "5.0.13",
"vitest": "^1.1.1"
},
"peerDependencies": {
-20
View File
@@ -69,25 +69,5 @@ export default [
],
plugins: [dts()],
},
{
input: `src/${outputFileName}.suffixed.ts`,
output: [
{
file: `dist/${outputFileName}.suffixed.d.ts`,
format: 'es',
},
],
plugins: [dts()],
},
{
input: `src/${outputFileName}.prefixed.ts`,
output: [
{
file: `dist/${outputFileName}.prefixed.d.ts`,
format: 'es',
},
],
plugins: [dts()],
},
...configs,
];
@@ -1,3 +0,0 @@
export * from './aliases';
export * from './prefixed';
export * from './suffixed';
@@ -1,7 +0,0 @@
export * from './icons';
export * as icons from './icons';
export * from './aliases/prefixed';
export * from './types';
export { default as createLucideIcon } from './createLucideIcon';
export { default as Icon } from './Icon';
@@ -1,7 +0,0 @@
export * from './icons';
export * as icons from './icons';
export * from './aliases/suffixed';
export * from './types';
export { default as createLucideIcon } from './createLucideIcon';
export { default as Icon } from './Icon';
+3 -3
View File
@@ -54,12 +54,12 @@
"jest-serializer-html": "^7.1.0",
"react": "^18.0.0",
"react-dom": "^18.0.0",
"react-native": "^0.76.0",
"react-native-svg": "^15.8.0",
"react-native": "^0.73.1",
"react-native-svg": "^15.0.0",
"rollup": "^4.22.4",
"rollup-plugin-dts": "^6.1.0",
"typescript": "^4.8.4",
"vite": "5.1.8",
"vite": "5.0.13",
"vitest": "^1.1.1"
},
"peerDependencies": {
@@ -60,25 +60,5 @@ export default [
],
plugins: [dts()],
},
{
input: `src/${outputFileName}.suffixed.ts`,
output: [
{
file: `dist/${outputFileName}.suffixed.d.ts`,
format: 'es',
},
],
plugins: [dts()],
},
{
input: `src/${outputFileName}.prefixed.ts`,
output: [
{
file: `dist/${outputFileName}.prefixed.d.ts`,
format: 'es',
},
],
plugins: [dts()],
},
...configs,
];
@@ -1,3 +0,0 @@
export * from './aliases';
export * from './prefixed';
export * from './suffixed';
@@ -1,7 +0,0 @@
export * from './icons';
export * as icons from './icons';
export * from './aliases/prefixed';
export * from './types';
export { default as createLucideIcon } from './createLucideIcon';
export { default as Icon } from './Icon';
@@ -1,7 +0,0 @@
export * from './icons';
export * as icons from './icons';
export * from './aliases/suffixed';
export * from './types';
export { default as createLucideIcon } from './createLucideIcon';
export { default as Icon } from './Icon';
+1 -1
View File
@@ -61,7 +61,7 @@
"rollup": "^4.22.4",
"rollup-plugin-dts": "^6.1.0",
"typescript": "^4.9.5",
"vite": "5.1.8",
"vite": "5.0.13",
"vitest": "^1.1.1"
},
"peerDependencies": {
-20
View File
@@ -111,25 +111,5 @@ export default [
],
plugins: [dts()],
},
{
input: `src/${outputFileName}.suffixed.ts`,
output: [
{
file: `dist/${outputFileName}.suffixed.d.ts`,
format: 'es',
},
],
plugins: [dts()],
},
{
input: `src/${outputFileName}.prefixed.ts`,
output: [
{
file: `dist/${outputFileName}.prefixed.d.ts`,
format: 'es',
},
],
plugins: [dts()],
},
...configs,
];
@@ -1,3 +0,0 @@
export * from './aliases';
export * from './prefixed';
export * from './suffixed';
@@ -1,6 +0,0 @@
export * as icons from './icons';
export * from './aliases/prefixed';
export * from './types';
export { default as createLucideIcon } from './createLucideIcon';
export { default as Icon } from './Icon';
@@ -1,6 +0,0 @@
export * as icons from './icons';
export * from './aliases/suffixed';
export * from './types';
export { default as createLucideIcon } from './createLucideIcon';
export { default as Icon } from './Icon';
+1 -1
View File
@@ -83,7 +83,7 @@
"rollup": "^4.22.4",
"solid-js": "^1.8.7",
"typescript": "^4.9.4",
"vite": "5.1.8",
"vite": "5.0.13",
"vite-plugin-solid": "^2.10.1",
"vitest": "^1.1.1",
"esbuild": "^0.19.11"
@@ -1,3 +0,0 @@
export * from './aliases';
export * from './prefixed';
export * from './suffixed';
@@ -1 +0,0 @@
export * from './aliases';
+1 -1
View File
@@ -69,7 +69,7 @@
"svelte-check": "^3.4.4",
"svelte-preprocess": "^5.0.4",
"typescript": "^5.1.6",
"vite": "5.1.8",
"vite": "5.0.13",
"vitest": "^1.1.1"
},
"peerDependencies": {
@@ -1,3 +0,0 @@
export * from './aliases';
export * from './prefixed';
export * from './suffixed';
+5 -5
View File
@@ -1,6 +1,6 @@
export * from './icons/index';
export * as icons from './icons/index';
export * from './aliases';
export { default as defaultAttributes } from './defaultAttributes';
export * from './types';
export * from './icons/index.js';
export * as icons from './icons/index.js';
export * from './aliases.js';
export { default as defaultAttributes } from './defaultAttributes.js';
export * from './types.js';
export { default as Icon } from './Icon.svelte';
+1 -1
View File
@@ -54,7 +54,7 @@
"@vue/test-utils": "2.4.5",
"rollup": "^4.22.4",
"rollup-plugin-dts": "^6.1.0",
"vite": "5.1.8",
"vite": "5.0.13",
"vitest": "^1.4.0",
"vue": "^3.4.21"
},
@@ -75,37 +75,5 @@ export default [
}),
],
},
{
input: `src/${outputFileName}.suffixed.ts`,
output: [
{
file: `dist/${outputFileName}.suffixed.d.ts`,
format: 'es',
},
],
plugins: [
dts({
compilerOptions: {
preserveSymlinks: false,
},
}),
],
},
{
input: `src/${outputFileName}.prefixed.ts`,
output: [
{
file: `dist/${outputFileName}.prefixed.d.ts`,
format: 'es',
},
],
plugins: [
dts({
compilerOptions: {
preserveSymlinks: false,
},
}),
],
},
...configs,
];
+1 -1
View File
@@ -1,5 +1,5 @@
import { type FunctionalComponent, h } from 'vue';
import { toKebabCase } from '@lucide/shared';
import { mergeClasses, toKebabCase } from '@lucide/shared';
import defaultAttributes from './defaultAttributes';
import { IconNode, LucideProps } from './types';
@@ -1,3 +0,0 @@
export * from './aliases';
export * from './prefixed';
export * from './suffixed';
@@ -1,6 +0,0 @@
export * as icons from './icons';
export * from './aliases/prefixed';
export * from './types';
export { default as createLucideIcon } from './createLucideIcon';
export { default as Icon } from './Icon';
@@ -1,6 +0,0 @@
export * as icons from './icons';
export * from './aliases/suffixed';
export * from './types';
export { default as createLucideIcon } from './createLucideIcon';
export { default as Icon } from './Icon';
+2 -2
View File
@@ -50,9 +50,9 @@
"@testing-library/vue": "^5.9.0",
"@vitejs/plugin-vue2": "2.2.0",
"@vue/test-utils": "1.3.0",
"rollup": "^3.29.5",
"rollup": "^3.23.0",
"typescript": "^4.9.5",
"vite": "5.1.8",
"vite": "5.0.13",
"vitest": "^0.32.2",
"vue": "2.7.14",
"vue-template-compiler": "2.7.14"
-1
View File
@@ -1 +0,0 @@
export * from './aliases';
+2 -2
View File
@@ -44,13 +44,13 @@
"devDependencies": {
"@lucide/build-icons": "workspace:*",
"@lucide/rollup-plugins": "workspace:*",
"@rollup/plugin-replace": "^6.0.1",
"@rollup/plugin-replace": "^5.0.5",
"@testing-library/jest-dom": "^6.1.6",
"jest-serializer-html": "^7.1.0",
"rollup": "^4.22.4",
"rollup-plugin-dts": "^6.1.0",
"typescript": "^4.9.3",
"vite": "5.1.8",
"vite": "5.0.13",
"vitest": "^1.1.1"
}
}
-1
View File
@@ -1 +0,0 @@
export * from './aliases';
+2 -7
View File
@@ -41,11 +41,6 @@ export const toPascalCase = <T extends string>(string: T): CamelToPascal<T> => {
export const mergeClasses = <ClassType = string | undefined | null>(...classes: ClassType[]) =>
classes
.filter((className, index, array) => {
return (
Boolean(className) &&
(className as string).trim() !== '' &&
array.indexOf(className) === index
);
return Boolean(className) && array.indexOf(className) === index;
})
.join(' ')
.trim();
.join(' ');
-8
View File
@@ -18,12 +18,4 @@ describe('mergeClasses', () => {
const classes = mergeClasses('lucide', 'lucide-circle', 'lucide');
expect(classes).toBe('lucide lucide-circle');
});
it('trims the string', async () => {
const classes = mergeClasses('lucide', 'lucide-circle', ' ');
expect(classes).toBe('lucide lucide-circle');
});
it('trims the sub strings', async () => {
const classes = mergeClasses('lucide', ' ', 'lucide-circle');
expect(classes).toBe('lucide lucide-circle');
});
});
+3353 -2996
View File
File diff suppressed because it is too large Load Diff
+6
View File
@@ -0,0 +1,6 @@
/**
* @type {import('semantic-release').GlobalConfig}
*/
export default {
branches: ['main', 'new-release-workflow'],
};
@@ -15,21 +15,11 @@ const BASE_URL = 'https://lucide.dev/api/gh-icon';
const changedFilesPathString = process.env.CHANGED_FILES;
if (changedFilesPathString == null) {
console.error('CHANGED_FILES env variable is not set');
process.exit(1);
}
const changedFiles = changedFilesPathString
.split(' ')
.map((file) => file.replace('.json', '.svg'))
.filter((file, idx, arr) => arr.indexOf(file) === idx);
if (changedFiles.length === 0) {
console.log('No changed icons found');
process.exit(0);
}
const getImageTagsByFiles = (files, getBaseUrl, width) =>
files.map((file) => {
const svgContent = fs.readFileSync(path.join(process.cwd(), file), 'utf-8');
+2 -2
View File
@@ -11,8 +11,8 @@
"author": "",
"license": "ISC",
"dependencies": {
"fs-extra": "^11.2.0",
"fs-extra": "^11.1.1",
"minimist": "^1.2.8",
"svgtofont": "^6.0.0"
"svgtofont": "^3.25.4"
}
}
-32
View File
@@ -1,32 +0,0 @@
{
"$schema": "https://swc.rs/schema.json",
"jsc": {
"parser": {
"syntax": "ecmascript",
"jsx": true,
"dynamicImport": true
},
"target": "esnext",
"loose": false,
"externalHelpers": false,
"keepClassNames": true
},
"module": {
"type": "es6",
"strict": true,
"strictMode": true,
"lazy": false,
"noInterop": false
},
"minify": false,
"sourceMaps": true,
"env": {
"targets": {
"node": "current"
},
"mode": "entry",
"coreJs": "3"
}
}
@@ -1,15 +0,0 @@
const getExportString = (
componentName,
iconName,
aliasImportFileExtension,
deprecated,
deprecationReason = '',
) =>
deprecated
? `export {\n` +
` /** @deprecated ${deprecationReason} */\n` +
` default as ${componentName}\n` +
`} from '../icons/${iconName}${aliasImportFileExtension}';\n`
: `export { default as ${componentName} } from '../icons/${iconName}${aliasImportFileExtension}';\n`;
export default getExportString;
@@ -2,10 +2,23 @@ import path from 'path';
import fs from 'fs';
// eslint-disable-next-line import/no-extraneous-dependencies
import { toPascalCase, resetFile, appendFile } from '@lucide/helpers';
import deprecationReasonTemplate from '../../utils/deprecationReasonTemplate.mjs';
import getExportString from './getExportString.mjs';
import { deprecationReasonTemplate } from '../utils/deprecationReasonTemplate.mjs';
export default async function generateAliasesFiles({
const getImportString = (
componentName,
iconName,
aliasImportFileExtension,
deprecated,
deprecationReason = '',
) =>
deprecated
? `export {\n` +
` /** @deprecated ${deprecationReason} */\n` +
` default as ${componentName}\n` +
`} from './icons/${iconName}${aliasImportFileExtension}';\n`
: `export { default as ${componentName} } from './icons/${iconName}${aliasImportFileExtension}';\n`;
export default async function generateAliasesFile({
iconNodes,
outputDirectory,
fileExtension,
@@ -17,25 +30,11 @@ export default async function generateAliasesFiles({
showLog = true,
}) {
const iconsDistDirectory = path.join(outputDirectory, `icons`);
const fileName = path.basename(`aliases${fileExtension}`);
const icons = Object.keys(iconNodes);
const destinationDirectory = path.join(outputDirectory, 'aliases');
const aliasFileName = path.basename(`aliases${fileExtension}`);
const aliasPrefixesFileName = path.basename(`prefixed${fileExtension}`);
const aliasSuffixFileName = path.basename(`suffixed${fileExtension}`);
if (!fs.existsSync(destinationDirectory)) {
fs.mkdirSync(destinationDirectory);
}
// Reset files
resetFile(aliasFileName, destinationDirectory);
if (!aliasNamesOnly) {
resetFile(aliasPrefixesFileName, destinationDirectory);
resetFile(aliasSuffixFileName, destinationDirectory);
}
// Reset file
resetFile(fileName, outputDirectory);
// Generate Import for Icon VNodes
await Promise.all(
@@ -51,32 +50,19 @@ export default async function generateAliasesFiles({
return alias;
});
let aliasFileContent = '';
let aliasPrefixesFileContent = '';
let aliasSuffixFileContent = '';
let importString = '';
if ((iconAliases != null && Array.isArray(iconAliases)) || !aliasNamesOnly) {
if (index > 0 && aliasPrefixesFileContent !== '') {
aliasPrefixesFileContent += '\n';
if (index > 0) {
importString += '\n';
}
if (index > 0 && aliasSuffixFileContent !== '') {
aliasSuffixFileContent += '\n';
}
if (!aliasNamesOnly) {
aliasPrefixesFileContent += `// ${componentName} aliases\n`;
aliasSuffixFileContent += `// ${componentName} aliases\n`;
}
importString += `// ${componentName} aliases\n`;
}
if (!aliasNamesOnly) {
aliasSuffixFileContent += getExportString(
`${componentName}Icon`,
iconName,
aliasImportFileExtension,
);
aliasPrefixesFileContent += getExportString(
importString += getImportString(`${componentName}Icon`, iconName, aliasImportFileExtension);
importString += getImportString(
`Lucide${componentName}`,
iconName,
aliasImportFileExtension,
@@ -109,12 +95,7 @@ export default async function generateAliasesFiles({
const exportFileIcon = separateAliasesFile ? alias.name : iconName;
if (index > 0) {
aliasFileContent += '\n';
}
aliasFileContent += `// ${componentName} aliases\n`;
aliasFileContent += getExportString(
importString += getImportString(
componentNameAlias,
exportFileIcon,
aliasImportFileExtension,
@@ -123,7 +104,7 @@ export default async function generateAliasesFiles({
);
if (!aliasNamesOnly) {
aliasSuffixFileContent += getExportString(
importString += getImportString(
`${componentNameAlias}Icon`,
exportFileIcon,
aliasImportFileExtension,
@@ -131,7 +112,7 @@ export default async function generateAliasesFiles({
deprecationReason,
);
aliasPrefixesFileContent += getExportString(
importString += getImportString(
`Lucide${componentNameAlias}`,
exportFileIcon,
aliasImportFileExtension,
@@ -143,25 +124,13 @@ export default async function generateAliasesFiles({
);
}
appendFile(aliasFileContent, aliasFileName, destinationDirectory);
if (!aliasNamesOnly) {
appendFile(aliasPrefixesFileContent, aliasPrefixesFileName, destinationDirectory);
appendFile(aliasSuffixFileContent, aliasSuffixFileName, destinationDirectory);
}
appendFile(importString, fileName, outputDirectory);
}),
);
appendFile('\n', aliasFileName, destinationDirectory);
if (!aliasNamesOnly) {
appendFile('\n', aliasPrefixesFileName, destinationDirectory);
appendFile('\n', aliasSuffixFileName, destinationDirectory);
}
appendFile('\n', fileName, outputDirectory);
if (showLog) {
console.log(`Successfully generated src/aliases/${aliasFileName} file`);
console.log(`Successfully generated src/aliases/${aliasPrefixesFileName} file`);
console.log(`Successfully generated src/aliases/${aliasSuffixFileName} file`);
console.log(`Successfully generated ${fileName} file`);
}
}
@@ -2,7 +2,7 @@ import fs from 'fs';
import path from 'path';
import prettier from 'prettier';
import { readSvg, toPascalCase } from '@lucide/helpers';
import deprecationReasonTemplate from '../utils/deprecationReasonTemplate.mjs';
import { deprecationReasonTemplate } from '../utils/deprecationReasonTemplate.mjs';
export default ({
iconNodes,
+3 -3
View File
@@ -8,7 +8,7 @@ import renderIconsObject from './render/renderIconsObject.mjs';
import generateIconFiles from './building/generateIconFiles.mjs';
import generateExportsFile from './building/generateExportsFile.mjs';
import generateAliasesFiles from './building/aliases/generateAliasesFiles.mjs';
import generateAliasesFile from './building/generateAliasesFile.mjs';
// eslint-disable-next-line import/no-named-as-default, import/no-named-as-default-member
import getIconMetaData from './utils/getIconMetaData.mjs';
import generateDynamicImports from './building/generateDynamicImports.mjs';
@@ -65,7 +65,7 @@ async function buildIcons() {
});
if (withAliases) {
await generateAliasesFiles({
await generateAliasesFile({
iconNodes: icons,
iconMetaData,
aliasNamesOnly,
@@ -99,7 +99,7 @@ async function buildIcons() {
}
try {
await buildIcons();
buildIcons();
} catch (error) {
console.error(error);
}
+1 -1
View File
@@ -11,7 +11,7 @@
"build-icons": "./cli.mjs"
},
"engines": {
"node": ">= 20"
"node": ">= 16"
},
"keywords": [],
"author": "",
-17
View File
@@ -1,17 +0,0 @@
{
"compilerOptions": {
"strict": false,
"declaration": true,
"noEmitOnError": true,
"noFallthroughCasesInSwitch": true,
"moduleResolution": "node",
"module": "ESNext",
"target": "ESNext",
"esModuleInterop": true,
"allowJs": true,
"lib": ["esnext"],
"resolveJsonModule": true,
"sourceMap": true,
"outDir": "./dist",
},
}
@@ -1,11 +1,9 @@
export default function deprecationReasonTemplate(
export function deprecationReasonTemplate(
deprecationReason,
{ componentName, iconName, toBeRemovedInVersion },
) {
const removalNotice = toBeRemovedInVersion
? ` This ${
deprecationReason.startsWith('icon') ? 'icon' : 'alias'
} will be removed in ${toBeRemovedInVersion}`
? ` This ${deprecationReason.startsWith('icon') ? 'icon' : 'alias'} will be removed in ${toBeRemovedInVersion}`
: '';
switch (deprecationReason) {
@@ -15,7 +13,5 @@ export default function deprecationReasonTemplate(
return `The name of this icon was changed because it didn't meet our guidelines anymore, use {@link ${componentName}} instead.${removalNotice}`;
case 'icon.brand':
return `Brand icons have been deprecated and are due to be removed, please refer to https://github.com/lucide-icons/lucide/issues/670. We recommend using https://simpleicons.org/?q=${iconName} instead.${removalNotice}`;
default:
return '';
}
}
+1 -1
View File
@@ -12,6 +12,6 @@
"license": "ISC",
"dependencies": {
"minimist": "^1.2.8",
"oslllo-svg-fixer": "^5.0.0"
"oslllo-svg-fixer": "^3.0.0"
}
}
+1 -1
View File
@@ -10,7 +10,7 @@
"dependencies": {
"@atomico/rollup-plugin-sizes": "^1.1.4",
"@rollup/plugin-node-resolve": "^15.2.3",
"@rollup/plugin-replace": "^6.0.1",
"@rollup/plugin-replace": "^5.0.5",
"esbuild": "^0.19.11",
"rollup": "^4.22.4",
"rollup-plugin-esbuild": "^6.1.0",