* Optimize and fix guideline violation in hammer
* Further adjustments to pixel perfection
* Nudge things around a bit more
* Elongate front part of head
---------
Co-authored-by: Karsa <karsa@sztaki.hu>
* Various manual contributor fixes
* Remove myself from a few dozen more icons I took practically no part in.
* Remove danielbayley from some icons as per https://github.com/lucide-icons/lucide/pull/1844
---------
Co-authored-by: Rigó József Karsa <karsa@sztaki.hu>
* Ignore linting for examples in docs
* Formatting JSX single attribute per line
* Separte `format` and `lint:format` in package.json
* Bump prettier version
* Run format
* Update shield-plus to match other plus icons
* Update shield-minus to match other minus icons
---------
Co-authored-by: Rigó József Karsa <karsa@sztaki.hu>
* Add story icon
* Split single path into multiple elements
* Refine icons/story.svg
Co-authored-by: Jakob Guddas <github@jguddas.de>
* Update contributors to icons/story.json
Co-authored-by: Jakob Guddas <github@jguddas.de>
* Change "story" icon name to "circle-fading-plus" and add to shapes category
---------
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Co-authored-by: Jakob Guddas <github@jguddas.de>
* Add ambulance icon
* Remove extra attributes and connect path under wheels
* Lift roof and "+" to adhere to 2px gap rule for icons/ambulance.svg
Co-authored-by: Jakob Guddas <github@jguddas.de>
* Increase cab height of ambulance
* Add contributors from truck icon
---------
Co-authored-by: Jakob Guddas <github@jguddas.de>
* Rename `square-gantt` to `gantt-square`
* Rename `square-dot` to `dot-square`
* Rename `square-kanban` icons to `kanban-square`
* Rename `square-code` to `code-square`
* Rename `square-asterisk` to `asterisk-square`
* Rename `square-equal` to `equal-square`
* Rename `square-slash` to `slash-square`
* Cleanup merge conflicts
* Add alias back
---------
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
* add extensions for `NodeNext` support
* fixed exports map and replaced the packaging system for `@sveltejs/pacakge`
* lockfile
* ignore generated `.svelte-kit` dir
* no longer needed
* fixed main export
* fixed IconNode and IconProps types
* have icon props extend svg attributes
* build script for prepending the license to each `dist` file
* Update packages/lucide-svelte/scripts/addLicense.mjs
---------
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
The readme lists the url below with uppercase L
@import ('~lucide-static/font/Lucide.css');
but the file in node_modules/lucide-static/font has a lowercase L making it fail on certain loaders like the one used by Storybook on MacOS.
The fix is simply to use lowercase
* remove extra space in svg class attribute
* Update packages/lucide-react/src/createLucideIcon.ts
Co-authored-by: Jakob Guddas <github@jguddas.de>
---------
Co-authored-by: Jakob Guddas <github@jguddas.de>
* Renamed user-*-2 to user-round-*
* Added user-round icon optimizations as per Discord + renamed user*-(square|circle) to (square|circle)-user* also as per Discord
---------
Co-authored-by: Karsa <contact@karsa.org>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
As per 3391b5b717, the format of new GitHub release tags is just the version number without the `v` prefix. As we can see on https://github.com/lucide-icons/lucide/releases?page=2, versions older than 0.266.0 use a `v` prefix. The current docs assume that all versions contain the `v` prefix; this PR fixes it so that the format of versions both from before and after this change are accounted for.
* Add theater/drama icons
Related to #1399
Co-Authored-By: Daniel Bayley <daniel.bayley@me.com>
* Remove alternate drama icon
* Improve tags
---------
Co-authored-by: Daniel Bayley <daniel.bayley@me.com>
* add speech icon
* center icon and apply global attributes
* fix: make paddings wider
* fix: smoothe angle on base of neck
* fix: add jguddas to contributors
* Update speech.svg
* Update speech.json
---------
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
* Changed font creation process
* Class name prefix
Class name prefix added for backward compatibility.
* Container option in workflow removed
Removed the container option in github workflow lucide-font because it is not needed anymore, workflow was changed to nodejs only
* Fixed whitespaces in package.json
* Use releaseInformation instead of info.json
* Added workflow step
* Moved unicode numbers to convert function
* Added locale argument to sort function
* Delete pnpm-lock
* Updated versions, recreated pnpm-lock
* Updated dependencies
---------
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
* add script
* Create script to generate the aliases Nextjs
* Apply aliases to the icon meta files
* Make sure duplicated imports are not added
* add command to lint-staged
* feat: added fallback background to svg preview for browsers without prefers-color-scheme support
* feat: added fallback background to svg stroke-width preview for browsers without prefers-color-scheme support
Before submitting an icon request check if it has already been requested. If there is an open request, please add a 👍.
**Important note**: No new brand logos are allowed, see https://github.com/lucide-icons/lucide/issues/670.
Existing brand icons will also be phased out. For brand icons, consider using https://simpleicons.org, which offers purpose-built SVGs that are also on a 24×24px grid.
- type:input
id:name
attributes:
label:Icon name
description:What should this icon depict? For multiple icons, provide a comma-separated list.
validations:
required:true
- type:textarea
id:use-cases
attributes:
label:Use cases
description:Why do you need this icon? Include at least two real-life use cases per requested icon, avoiding generic descriptions like "it's a car icon".
placeholder:e.g. I need a star icon to use in my rating system.
validations:
required:true
- type:textarea
id:design-ideas
attributes:
label:Design ideas
description:What should this icon look like? Provide simple, minimalistic icon examples from other sets or your own drafts to help us visualize your request.
validations:
required:true
- type:checkboxes
id:checklist
attributes:
label:Checklist
description:Please review the following checklist before submitting your request.
options:
- label:I have searched if someone has submitted a similar issue before and there weren't any. (Please make sure to also search closed issues, as this issue might already have been resolved.)
required:true
- label:I have searched existing icons to make sure it does not already exist and I didn't find any.
required:true
- label:I am not requesting a brand logo and the art is not protected by copyright.
required:true
- label:I am not requesting an icon that includes religious, political imagery or hate symbols.
required:true
- label:I have provided appropriate use cases for the icon(s) requested.
Before reporting an issue, please search to see if someone has filed a similar issue before. If there is already an open issue, please add a 👍 and/or leave a comment with additional information.
- type:checkboxes
id:packages
attributes:
label:Package
description:Which Lucide packages are affected? You may select more than one.
options:
- label:lucide
- label:lucide-angular
- label:lucide-flutter
- label:lucide-preact
- label:lucide-react
- label:lucide-react-native
- label:lucide-solid
- label:lucide-svelte
- label:lucide-vue
- label:lucide-vue-next
- label:Figma plugin
- label:source/main
- label:other/not relevant
validations:
required:true
- type:input
id:version
attributes:
label:Version
description:What version of Lucide are you running?
placeholder:e.g. 0.289.1
validations:
required:true
- type:checkboxes
id:browsers
attributes:
label:Browser
description:In which browser(s) are you experiencing the issue? You may select more than one.
options:
- label:Chrome/Chromium
- label:Firefox
- label:Safari
- label:Edge
- label:iOS Safari
- label:Opera
- label:Other/not relevant
validations:
required:false
- type:checkboxes
id:operating-systems
attributes:
label:Operating system
description:In which operating systems a you experiencing the issue? You may select more than one.
options:
- label:Windows
- label:Linux
- label:macOS
- label:Other/not relevant
- type:textarea
id:description
attributes:
label:Description
description:Try to describe in detail the problem you're running into and provide additional context about your working environment if necessary.
placeholder:e.g. When I do X, Y happens instead of Z
validations:
required:true
- type:textarea
id:steps-to-reproduce
attributes:
label:Steps to reproduce
description:Please provide a detailed guide on how this issue can be reproduced or a live example with a working reproduction on Codesandbox, JSFiddle or similar.
placeholder:|
1. Import `check` icon
2. Add to a React component/view
3. Run the react app
4. Notice that the `check` isn't rendering correctly which seems a encoding problem
validations:
required:true
- type:checkboxes
id:checklist
attributes:
label:Checklist
description:Please review the following checklist before submitting your issue.
options:
- label:I have searched if someone has submitted a similar issue before and there weren't any. (Please make sure to also search closed issues, as this issue might already have been resolved.)
Before reporting an issue, please search to see if someone has filed a similar issue before. If there is already an open issue, please add a 👍 and/or leave a comment with additional information.
- type:checkboxes
id:browsers
attributes:
label:Browser
description:In which browser(s) are you experiencing the issue? You may select more than one.
options:
- label:Chrome/Chromium
- label:Firefox
- label:Safari
- label:Edge
- label:iOS Safari
- label:Opera
- label:Other/not relevant
validations:
required:false
- type:checkboxes
id:operating-systems
attributes:
label:Operating system
description:In which operating systems are you experiencing the issue? You may select more than one.
options:
- label:Windows
- label:Linux
- label:macOS
- label:Other/not relevant
- type:textarea
id:description
attributes:
label:Description
description:Try to describe in detail the problem you're running into and provide additional context about your working environment if necessary.
placeholder:e.g. When I do X, Y happens instead of Z
validations:
required:true
- type:textarea
id:stepsToReproduce
attributes:
label:Steps to reproduce
description:Please provide a detailed guide on how this issue can be reproduced.
placeholder:|
1. I click on an icon
2. I click on `Copy SVG` in the drawer
3. I paste from the clipboard
4. A base64 encoded data URI is inserted.
...
validations:
required:true
- type:checkboxes
id:checklist
attributes:
label:Checklist
description:Please review the following checklist before submitting your issue.
options:
- label:I have searched if someone has submitted a similar issue before and there weren't any. (Please make sure to also search closed issues, as this issue might already have been resolved.)
description:Share with us your ideas on how Lucide could be improved upon.
labels:['💡 idea']
body:
- type:markdown
attributes:
value:|
Before submitting a new feature request, please search to see if someone has filed a similar request before. If there is already an open issue, please add a 👍 and/or leave a comment with additional information.
- type:checkboxes
id:packages
attributes:
label:Package
description:Which Lucide project do you wish this feature were added to? You may select more than one.
options:
- label:lucide
- label:lucide-angular
- label:lucide-flutter
- label:lucide-preact
- label:lucide-react
- label:lucide-react-native
- label:lucide-solid
- label:lucide-svelte
- label:lucide-vue
- label:lucide-vue-next
- label:Figma plugin
- label:all JS packages
- label:site
validations:
required:true
- type:textarea
id:description
attributes:
label:Description
description:Try to describe in detail the feature you wish existed.
placeholder:e.g. I want to be able to set extra CSS classes on icon components.
validations:
required:true
- type:textarea
id:use-cases
attributes:
label:Use cases
description:Why do you need this feature? Provide real-life use cases as to why this feature will be useful for others.
placeholder:e.g. I could use the extra classes to add animation or global custom styling to some icons.
validations:
required:true
- type:checkboxes
id:checklist
attributes:
label:Checklist
description:Please check the following items before submitting your issue.
options:
- label:I have searched the existing issues to make sure this bug has not already been reported.
Before reporting an issue, please search to see if someone has filed a similar issue before. If there is already an open issue, please add a 👍 and/or leave a comment with additional information.
-->
## Prerequisites
* Version:
* Are you running from source/main:
* Are you using a released build:
* Operating system:
* Bits:
## Step to reproduce
*(Type here)*
### Actual behavior
## Any message or error
*(Type here)*
## Resources
* Links
* Screenshots
Here is what a great bug report would look like:
```
## Prerequisites
Version: Release v3.1.0
Running from: Import using webpack
Operating system: Mac OSX
Bits: 64 bits
## Step to reproduce
- Import `check` icon
- Add to a React component/view
- Run the react app
- Notice that the `check` isn't rendering correctly which seems a encoding problem
### Actual behavior:
- Import `check` icon
- Add to a React component/view
- Run the react app
- Check is displayed with correct encoding (e.g UTF-8)
Before creating an icon request, please search to see if someone has requested the icon already. If there is an open request, please add a 👍.
A note about brand logos and related material : We follow the decision from Feather Icons (https://github.com/feathericons/feather/issues/763) to deprecate icons relating to brands.
You will find some in the set, but we won't add any new ones. https://simpleicons.org has 24x24 SVG icons for this purpose.
<!-- Insert `closes #issueNumber` here if merging this PR will resolve an existing issue -->
## What is the purpose of this pull request?
<!-- Please choose one of the following, and put an "x" next to it. -->
- [ ] New Icon
- [ ] Bug fix
- [ ] New Feature
- [ ] Documentation update
- [ ] Other:
### Description
<!-- Please insert your description here and provide info about the "what" this PR is contribution -->
### Icon use case <!-- ONLY for new icons, remove this part if not icon PR -->
<!-- What is the purpose of this icon? For each icon added, please insert at least two real life use cases (the more the better). Text like "it's a car icon" is not accepted. -->
### Alternative icon designs <!-- ONLY for new icons, remove this part if not icon PR -->
<!-- If you have any alternative icon designs, please attach them here. -->
## Icon Design Checklist <!-- ONLY for new icons, remove this part if not icon PR -->
### Concept <!-- ONLY for new icons -->
<!-- All of these requirements must be fulfilled. -->
- [ ] I have provided valid use cases for each icon.
- [ ] I have not added any a brand or logo icon.
- [ ] I have not used any hate symbols.
- [ ] I have not included any religious or political imagery.
### Author, credits & license<!-- ONLY for new icons. -->
<!-- Please choose one of the following, and put an "x" next to it. -->
- [ ] The icons are solely my own creation.
- [ ] The icons were originally created in #<issueNumber> by @<githubUser>
- [ ] I've based them on the following Lucide icons: <!-- provide the list of icons -->
- [ ] I've based them on the following design: <!-- provide source URL and license permitting use -->
### Naming <!-- ONLY for new icons -->
<!-- All of these requirements must be fulfilled. -->
- [ ] I've read and followed the [naming conventions](https://lucide.dev/guide/design/icon-design-guide#naming-conventions)
- [ ] I've named icons by what they are rather than their use case.
- [ ] I've provided meta JSON files in `icons/[iconName].json`.
### Design <!-- ONLY for new icons -->
<!-- All of these requirements must be fulfilled. -->
- [ ] I've read and followed the [icon design guidelines](https://lucide.dev/guide/design/icon-design-guide)
- [ ] I've made sure that the icons look sharp on low DPI displays.
- [ ] I've made sure that the icons look consistent with the icon set in size, optical volume and density.
- [ ] I've made sure that the icons are visually centered.
- [ ] I've correctly optimized all icons to two points of precision.
## Before Submitting <!-- For every PR! -->
<!-- All of these requirements must be fulfilled. -->
- [ ] I've read the [Contribution Guidelines](https://github.com/lucide-icons/lucide/blob/main/CONTRIBUTING.md).
- [ ] I've checked if there was an existing PR that solves the same issue.
for file in $(printf "%s\\n" icons/*.svg | shuf | head -n$(awk -F' ' '{print NF}' <<< '${{ steps.changed-files.outputs.all_changed_files }}')); do
cat "$file" | # get file content
tr '\n' ' ' | # remove line breaks
sed -e 's/<svg[^>]*>/<svg>/g' | # remove attributes from svg element
base64 -w 0 | # encode svg
sed "s|.*|<img title=\"$file\" alt=\"$file\" src=\"https://lucide.dev/api/gh-icon/stroke-width/2/&.svg\"/> |"
done | tr '\n' ' ' >> $GITHUB_OUTPUT
echo >> $GITHUB_OUTPUT
echo "$delimiter" >> $GITHUB_OUTPUT
- name:Generate cohesion check squares
id:generate-cohesion-check-squares
run:|
delimiter="$(openssl rand -hex 8)"
echo "body<<$delimiter" >> $GITHUB_OUTPUT
for file in $(printf "%s\\n" icons/*square*.svg | shuf | head -n$(awk -F' ' '{print NF}' <<< '${{ steps.changed-files.outputs.all_changed_files }}')); do
cat "$file" | # get file content
tr '\n' ' ' | # remove line breaks
sed -e 's/<svg[^>]*>/<svg>/g' | # remove attributes from svg element
base64 -w 0 | # encode svg
sed "s|.*|<img title=\"$file\" alt=\"$file\" src=\"https://lucide.dev/api/gh-icon/stroke-width/2/&.svg\"/> |"
done | tr '\n' ' ' >> $GITHUB_OUTPUT
echo >> $GITHUB_OUTPUT
echo "$delimiter" >> $GITHUB_OUTPUT
- name:Generate 1px stroke-width
id:generate-1px-stroke-width
run:|
delimiter="$(openssl rand -hex 8)"
echo "body<<$delimiter" >> $GITHUB_OUTPUT
for file in ${{ steps.changed-files.outputs.all_changed_files }}; do
cat "$file" | # get file content
tr '\n' ' ' | # remove line breaks
sed -e 's/<svg[^>]*>/<svg>/g' | # remove attributes from svg element
base64 -w 0 | # encode svg
sed "s|.*|<img title=\"$file\" alt=\"$file\" src=\"https://lucide.dev/api/gh-icon/stroke-width/1/&.svg\"/> |"
done | tr '\n' ' ' >> $GITHUB_OUTPUT
echo >> $GITHUB_OUTPUT
echo "$delimiter" >> $GITHUB_OUTPUT
- name:Generate 2px stroke-width
id:generate-2px-stroke-width
run:|
delimiter="$(openssl rand -hex 8)"
echo "body<<$delimiter" >> $GITHUB_OUTPUT
for file in ${{ steps.changed-files.outputs.all_changed_files }}; do
cat "$file" | # get file content
tr '\n' ' ' | # remove line breaks
sed -e 's/<svg[^>]*>/<svg>/g' | # remove attributes from svg element
base64 -w 0 | # encode svg
sed "s|.*|<img title=\"$file\" alt=\"$file\" src=\"https://lucide.dev/api/gh-icon/stroke-width/2/&.svg\"/> |"
done | tr '\n' ' ' >> $GITHUB_OUTPUT
echo >> $GITHUB_OUTPUT
echo "$delimiter" >> $GITHUB_OUTPUT
- name:Generate 3px stroke-width
id:generate-3px-stroke-width
run:|
delimiter="$(openssl rand -hex 8)"
echo "body<<$delimiter" >> $GITHUB_OUTPUT
for file in ${{ steps.changed-files.outputs.all_changed_files }}; do
cat "$file" | # get file content
tr '\n' ' ' | # remove line breaks
sed -e 's/<svg[^>]*>/<svg>/g' | # remove attributes from svg element
base64 -w 0 | # encode svg
sed "s|.*|<img title=\"$file\" alt=\"$file\" src=\"https://lucide.dev/api/gh-icon/stroke-width/3/&.svg\"/> |"
done | tr '\n' ' ' >> $GITHUB_OUTPUT
echo >> $GITHUB_OUTPUT
echo "$delimiter" >> $GITHUB_OUTPUT
- name:Generate X-rays
id:generate-x-rays
run:|
delimiter="$(openssl rand -hex 8)"
echo "body<<$delimiter" >> $GITHUB_OUTPUT
for file in ${{ steps.changed-files.outputs.all_changed_files }}; do
cat "$file" | # get file content
tr '\n' ' ' | # remove line breaks
sed -e 's/<svg[^>]*>/<svg>/g' | # remove attributes from svg element
base64 -w 0 | # encode svg
sed "s|.*|<img width=\"400\" title=\"$file\" alt=\"$file\" src=\"https://lucide.dev/api/gh-icon/$(basename ${file//\.svg/})/&.svg\"/> |"
@@ -50,7 +50,7 @@ Seperate them by two PRs; 'pr-01' `arrow`, `arrow-down` and 'pr-02' `bicycle`.
Before creating an icon request, please search to see if someone has requested the icon already. If there is an open request, please add a :+1:.
If the icon has not already been requested, [create an issue](https://github.com/lucide-icons/lucide/issues/new?title=Icon%20Request:) with a title of `Iconrequest: <icon name>` and add as much information as possible.
If the icon has not already been requested, [create an icon request issue](https://github.com/lucide-icons/lucide/issues/new?assignees=&labels=%F0%9F%99%8C+icon+request&projects=&template=01_icon_request.yml) and add as much information as possible.
### Icon Requests from Feather
@@ -70,10 +70,10 @@ pnpm install # Install dependencies, including the workspace packages
### Packages -> PNPM Workspaces
To distribute different packages we use PNPM workspaces. Before you start make sure you are familiar with this concept. The concept of working in workspaces is created by Yarn, they have a well written introduction: [yarn workspaces](https://classic.yarnpkg.com/lang/en/docs/workspaces).
To distribute different packages we use PNPM workspaces. Before you start make sure you are familiar with this concept. The concept of working in workspaces is created by Yarn, they have a well written introduction: [yarn workspaces](https://classic.yarnpkg.com/lang/enhttps://lucide.dev/docs/workspaces).
The configured directory for workspaces is the [packages](./packages) directory, located in the root directory. There you will find all the current packages from lucide.
There are more workspaces defined, see [`pnpm-workspace.yaml`](./pnpm-workspace.yaml).
The configured directory for workspaces is the [packages](https://github.com/lucide-icons/lucide/tree/main/packages) directory, located in the root directory. There you will find all the current packages from lucide.
There are more workspaces defined, see [`pnpm-workspace.yaml`](https://github.com/lucide-icons/lucide/blob/main/pnpm-workspace.yaml).
> Note: One package is not managed by pnpm: **lucide-flutter**, this package is written in Dart and used pub for publishing.
@@ -144,16 +144,19 @@ Root directories
```sh
lucide
|
├── docs
│ ├── guide
├── icons
├── packages
├── scripts
└── site
└── scripts
```
### Docs
The lucide.dev website is using [vitepress](https://vitepress.dev/) to generate the static website. The markdown files are located in the docs directory.
### Guides
Detailed documentation about: installation, guides, packages, design guides etc.
### Icons
@@ -170,13 +173,9 @@ Includes all the (npm) packages of lucide.
Includes usefully scripts to automate certain jobs. Big part of the scripts is the template generation, for example it generates icon components for all the packages. These scripts are usually executed from the "scripts" section in the package.json.
### site
The lucide.dev website using [Nextjs](https://nextjs.org).
## Documentation
The documentation files are located in the [docs](./docs) directory. All these markdown files will be loaded in the build of the lucide.dev website.
The documentation files are located in the [docs](https://github.com/lucide-icons/lucide/tree/main/docs) directory. All these markdown files will be loaded in the build of the lucide.dev website.
Feel free to write, adjust or add new markdown files to improve our documentation.
Community-run fork of [Feather Icons](https://github.com/feathericons/feather), open for anyone to contribute icons.
It began after growing disaffection with the [Feather Icons](https://github.com/feathericons/feather) project moderation. With over 300+ open issues and over 100+ open PRs, the Feather Icons project has been abandoned. This unfortunately means that hundreds of developers and designers wasted their time contributing to Feather Icons with no chance of PRs being accepted.
It began after growing dissatisfaction with the [Feather Icons](https://github.com/feathericons/feather) project moderation. With over 300+ open issues and over 100+ open PRs, the Feather Icons project has been abandoned. This unfortunately means that hundreds of developers and designers wasted their time contributing to Feather Icons with no chance of PRs being accepted.
Lucide is trying to expand the icon set as much as possible while staying faithful to the original simplistic design language. We do this as a community of devs and designers and hope that you'll join us!
### Why choose Lucide over Feather Icons
- More icons to work with: Lucide already has hundreds of icons more than Feather does.
- Official librairies and integrations with popular frameworks and design tools.
- Official libraries and integrations with popular frameworks and design tools.
- Well maintained code base.
- Active community, regularly growing and improving the set.
@@ -35,7 +35,6 @@ Lucide is trying to expand the icon set as much as possible while staying faithf
"description":"Implementation of Lucide icon's using Hyvä's svg php viewmodal to render icons for Magento 2 Hyva theme based projects.",
"icon":"/framework-logos/hyva.svg",
"iconDark":"/framework-logos/hyva-dark.svg",
"shields":[
{
"alt":"Latest Stable Version",
@@ -41,6 +42,7 @@
"name":"eleventy-lucide-icons",
"description":"Using this plugin, Eleventy projects can incorporate Lucide icons. it makes it simple to use Lucide icons into your themes via shortcodes, improving your website's overall usability and visual appeal.",
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.