Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
248d1c31eb | ||
|
|
b6a978ec6a | ||
|
|
de454e4d98 | ||
|
|
13c4163843 | ||
|
|
c0d4147fe6 | ||
|
|
0640cd0938 | ||
|
|
7ab9b83991 | ||
|
|
0c08347e5e | ||
|
|
35e9cb4b6f | ||
|
|
2095ba6aa7 | ||
|
|
ddfc5cadc1 | ||
|
|
f3c6929c98 | ||
|
|
9b46e0dcba | ||
|
|
ef449fd5c5 | ||
|
|
2892be8229 | ||
|
|
2b1ad320fe | ||
|
|
61a86a959a | ||
|
|
d92e7796e4 | ||
|
|
d237803413 |
@@ -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,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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -4,7 +4,6 @@ on:
|
||||
pull_request:
|
||||
paths:
|
||||
- packages/lucide-react/**
|
||||
- packages/shared/**
|
||||
- tools/build-icons/**
|
||||
- tools/rollup-plugins/**
|
||||
- scripts/generateNextJSAliases.mjs
|
||||
|
||||
@@ -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
|
||||
@@ -4,7 +4,6 @@ on:
|
||||
pull_request:
|
||||
paths:
|
||||
- packages/lucide-solid/**
|
||||
- packages/shared/**
|
||||
- tools/build-icons/**
|
||||
- tools/rollup-plugins/**
|
||||
- pnpm-lock.yaml
|
||||
|
||||
@@ -4,7 +4,6 @@ on:
|
||||
pull_request:
|
||||
paths:
|
||||
- packages/lucide-svelte/**
|
||||
- packages/shared/**
|
||||
- tools/build-icons/**
|
||||
- tools/rollup-plugins/**
|
||||
- pnpm-lock.yaml
|
||||
|
||||
@@ -4,7 +4,6 @@ on:
|
||||
pull_request:
|
||||
paths:
|
||||
- packages/lucide-vue-next/**
|
||||
- packages/shared/**
|
||||
- tools/build-icons/**
|
||||
- tools/rollup-plugins/**
|
||||
- pnpm-lock.yaml
|
||||
|
||||
@@ -4,7 +4,6 @@ on:
|
||||
pull_request:
|
||||
paths:
|
||||
- packages/lucide-vue/**
|
||||
- packages/shared/**
|
||||
- tools/build-icons/**
|
||||
- tools/rollup-plugins/**
|
||||
- pnpm-lock.yaml
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
|
||||
@@ -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',
|
||||
// },
|
||||
|
||||
@@ -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 |
|
||||
@@ -52,7 +52,7 @@ Here are rules that should be followed to keep quality and consistency when maki
|
||||
|
||||

|
||||
|
||||
**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
|
||||
|
||||

|
||||
|
||||
**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
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
```
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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",
|
||||
|
||||
|
Before Width: | Height: | Size: 2.6 KiB |
@@ -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 |
@@ -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 |
@@ -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 |
@@ -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 |
@@ -1,22 +0,0 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"contributors": [
|
||||
"colebemis",
|
||||
"ericfennis",
|
||||
"peteruithoven"
|
||||
],
|
||||
"tags": [
|
||||
"date",
|
||||
"month",
|
||||
"year",
|
||||
"event",
|
||||
"single",
|
||||
"singular",
|
||||
"once",
|
||||
"1",
|
||||
"first"
|
||||
],
|
||||
"categories": [
|
||||
"time"
|
||||
]
|
||||
}
|
||||
@@ -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,8 +1,7 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"contributors": [
|
||||
"danielbayley",
|
||||
"jguddas"
|
||||
"danielbayley"
|
||||
],
|
||||
"tags": [
|
||||
"audio",
|
||||
|
||||
@@ -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 |
@@ -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 |
@@ -29,8 +29,5 @@
|
||||
"design",
|
||||
"shapes",
|
||||
"maths"
|
||||
],
|
||||
"aliases": [
|
||||
"grid-2-x-2-plus"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -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 |
@@ -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 |
@@ -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 |
@@ -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 |
@@ -3,8 +3,7 @@
|
||||
"contributors": [
|
||||
"karsa-mistmere",
|
||||
"ericfennis",
|
||||
"jguddas",
|
||||
"jamiemlaw"
|
||||
"jguddas"
|
||||
],
|
||||
"tags": [
|
||||
"pie",
|
||||
|
||||
@@ -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 |
@@ -2,8 +2,7 @@
|
||||
"$schema": "../icon.schema.json",
|
||||
"contributors": [
|
||||
"karsa-mistmere",
|
||||
"danielbayley",
|
||||
"jguddas"
|
||||
"danielbayley"
|
||||
],
|
||||
"tags": [
|
||||
"cutter",
|
||||
|
||||
@@ -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 |
@@ -2,8 +2,7 @@
|
||||
"$schema": "../icon.schema.json",
|
||||
"contributors": [
|
||||
"mittalyashu",
|
||||
"ericfennis",
|
||||
"jguddas"
|
||||
"ericfennis"
|
||||
],
|
||||
"tags": [
|
||||
"bookmark",
|
||||
|
||||
@@ -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,8 +1,7 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"contributors": [
|
||||
"colebemis",
|
||||
"jguddas"
|
||||
"colebemis"
|
||||
],
|
||||
"tags": [
|
||||
"bookmark",
|
||||
|
||||
@@ -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 |
@@ -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 |
@@ -1,19 +0,0 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"contributors": [
|
||||
"colebemis",
|
||||
"csandman",
|
||||
"ericfennis",
|
||||
"jamiemlaw"
|
||||
],
|
||||
"tags": [
|
||||
"weather",
|
||||
"air",
|
||||
"pressure",
|
||||
"blow"
|
||||
],
|
||||
"categories": [
|
||||
"weather",
|
||||
"sustainability"
|
||||
]
|
||||
}
|
||||
@@ -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 |
@@ -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 |
@@ -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"
|
||||
},
|
||||
|
||||
@@ -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';
|
||||
@@ -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": {
|
||||
|
||||
@@ -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';
|
||||
@@ -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';
|
||||
@@ -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": {
|
||||
|
||||
@@ -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';
|
||||
@@ -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';
|
||||
@@ -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';
|
||||
@@ -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';
|
||||
|
||||
@@ -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,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';
|
||||
@@ -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 +0,0 @@
|
||||
export * from './aliases';
|
||||
@@ -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 +0,0 @@
|
||||
export * from './aliases';
|
||||
@@ -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(' ');
|
||||
|
||||
@@ -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');
|
||||
});
|
||||
});
|
||||
|
||||
@@ -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');
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
"build-icons": "./cli.mjs"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 20"
|
||||
"node": ">= 16"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
|
||||
@@ -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 '';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,6 +12,6 @@
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"minimist": "^1.2.8",
|
||||
"oslllo-svg-fixer": "^5.0.0"
|
||||
"oslllo-svg-fixer": "^3.0.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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",
|
||||
|
||||