* Updated icons/martini.svg
* Updated icons/martini.json
* Don't round bottom of glass
Also increase the size of the base to make the glass a little less top-heavy
* Update tags for `martini`
* fix(docs): sync URL params with UI state on category and search interactions
Search, category selection, and the icon detail drawer each modified the
URL independently, causing parameters to be silently dropped. Searching
didn't clear the category hash, clicking a category dropped the search
param, and closing the drawer hard-coded the path without preserving
either.
Consolidate URL construction so every navigation preserves both ?search=
and #category as appropriate. Split useCategoryView into a pure getter
and a sync variant (useCategoryViewSync) so event listeners and route
watchers are registered once in CategoryList.vue instead of in every
consumer.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix(docs): disable click on inactive categories during search
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Update docs/.vitepress/theme/components/icons/IconsCategoryOverview.vue
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
* Update docs/.vitepress/theme/components/icons/IconsOverview.vue
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
* refactor(docs): use URL constructor in CategoryListItem
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
* feat(icons): add power and quick tags to zap and zap-off
* chore(icons): add contributor name
* Update icons/zap.json
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
* Update icons/zap-off.json
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
* Update icons/zap.json
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
* Update icons/zap-off.json
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
---------
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
* fix: Type change for size: string | number across the LucideConfig
* fix(packages/angular): fix typing issues in @lucide/angular, should update all usages and declarations of size
* fix: revert changes made to lucide-react context.ts
---------
Co-authored-by: Karsa <contact@karsa.org>
* fix(docs): improve mobile layout of v1 banner
* fix(docs): make top banner sticky instead of fixed, this way there's no need for hack-ish explicit heights
* fix(docs): add --vp-layout-top-height media query declaration for when navbar becomes sticky
Sprite symbols were missing the viewBox attribute, causing icons to be clipped instead of scaling proportionally when used at smaller sizes.
Fixes#2768
The import references `processSvg.mjs` but the file is
`processSvg.mts`. This was missed in 4dda4324 when the
lint-staged config was updated to call `.mts` files directly.
The broken import causes the pre-commit hook to fail for any
commit that includes SVG changes, blocking external contributors
from committing locally.
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Without an exports map, runtimes that follow the Node.js package resolution
spec (Node.js, Bun) ignore the non-standard 'module' field and fall back to
'main' (CJS), even when the importing code is pure ESM. Since 1.0.0, the
package uses useContext and useMemo from preact/hooks internally, making this
a runtime-breaking issue: the CJS build loads a separate preact/hooks instance
which crashes on every icon render with 'undefined is not an object'.
Fixes#4196
* fix(astro): add Astro v6 compatibility
Update peer dependency to accept Astro v6 and bump dev dependency
to astro ^6.0.0.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* chore(astro): update devDependencies for post-v1 compatibility
Update vite to ^7.3.1, vitest to ^4.1.1, and astro to ^6.0.8
to align with Astro v6's requirement for Vite 7.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
These two icons were the only ones that didn't start with exactly
<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"
>
So I brought them in line.
Fixeslucide-icons/lucide#4154
The font mapping files were incorrectly mapping icon names to unicode values.
For example, message-circle-check was incorrectly pointing to database-search.
This was introduced in version 0.576 by commit efa1f252 which moved the
endCodePoint calculation inside the Promise.all callback, causing race
conditions where multiple icons could receive the same codepoint.
The fix moves endCodePoint calculation outside the Promise.all block
so it's calculated once before processing all icons, ensuring each icon
gets a unique codepoint.
Co-authored-by: Clawdbot <bot@clawdbot.com>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
* Clarify package usage for Svelte 4 and 5
@lucide/svelte is specified for Svelte 5, with a note for Svelte 4 users to use lucide-svelte instead.
* Add message in lucide-svelte README as well
* Update the docs installation page to match the svelte docs page
* add(icons): added square-arrow-in and square-arrow-out icons
* fix(icons): renamed square-arrow-in/out to have left/right in name
* fix(icons): updated square-arrow-exit-right and square-arrow-enter-left
* fix(square-arrow-enter-right, square-arrow-exit-right): Renamed icons & edited metadata
* feat(icon): add mirror-round icon
* feat(icon): add mirror-rectangular icon
* Update icons/mirror-rectangular.json: remove part of name from tages
Co-authored-by: Karsa <contact@karsa.org>
* Update icons/mirror-round.json: remove part of name from tags
Co-authored-by: Karsa <contact@karsa.org>
* Update icons/mirror-round.json: add vanity and makeup tags
Co-authored-by: Karsa <contact@karsa.org>
* fix(size): increase to make it a bit larger from `14 x 18` to `16 x 20`
Co-authored-by: Karsa <contact@karsa.org>
* Apply suggestion from @karsa-mistmere
Co-authored-by: Karsa <contact@karsa.org>
* Update mirror-round.json
---------
Co-authored-by: Karsa <contact@karsa.org>
* Adjusted second slash on clapperboard icon so it no longer protrudes.
* Update icons/clapperboard.svg
* Modify SVG paths in clapperboard icon
* Add 'torfmuer' to contributors in clapperboard.json
---------
Co-authored-by: Jakob Guddas <github@jguddas.de>
* Updated icons/hard-drive.svg
* Updated icons/hard-drive.svg
* Updated icons/hard-drive.json
* Add keywords for storage and hardware in hard-drive.json
Added new keywords related to storage and hardware.
---------
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
* Added icons/printer-cross.svg
* Added icons/printer-cross.json
* Add error-related tags to printer-cross.json
Added new tags for error handling.
* Rename printer-cross.json to printer-x.json
* Update and rename printer-cross.svg to printer-x.svg
* fix(site): hide native search input clear "X" icon
Hide the browser's default clear "X" icon for search inputs to prevent duplicate icons when using the custom clear button. This resolves issue #3925
* style(site): adjust clear button position in input component for mobile
* fix(site): adjust clear button position for Mac in search input
My whole app crashed because the newest version had a critical bug. I want to help other people avoid my mistake by anchoring to a specific version that worked for them
* fix(lucide-react-native): remove icons namespace export to enable tree-shaking
The `export * as icons from './icons'` statement defeats tree-shaking
because bundlers cannot determine which exports from the namespace are
actually used at build time. This causes all 1600+ icons to be included
in the final bundle even when only a few are imported.
This change removes the namespace re-export while keeping all individual
icon exports available via `export * from './icons'`.
BREAKING CHANGE: The `icons` namespace export is no longer available.
Users should import icons directly: `import { Activity } from 'lucide-react-native'`
instead of `import { icons } from 'lucide-react-native'; icons.Activity`.
* Add icons entry file to improve treeshaking
* Format code
---------
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
* Small adjustments
* Format code
* format code
* Remove default value
* format code
* update yml file
* Format code
* Update docs/.vitepress/theme/components/base/Input.vue
Co-authored-by: Karsa <contact@karsa.org>
* Add extra check if null or undefined
---------
Co-authored-by: Karsa <contact@karsa.org>
* Fix code sample for vanilla JS
The .append method of elements takes plain text, not HTML. This updates the code to use .insertAdjacentHTML instead.
* Update createLabCodeExamples.ts
* fix(site): update createCodeExamples.ts vanilla JS code example
* Update createLabCodeExamples.ts
* Update createCodeExamples.ts
* Update createCodeExamples.ts
---------
Co-authored-by: Karsa <contact@karsa.org>
* Added icons/layers-plus.svg
* Added icons/layers-plus.json
* Update layers-plus.json
fix: updated contributors to reflect actual author
* fix(icon): update layers-plus icon to follow size and spacing guidelines
* fix(icon): adjust layers-plus plus sign alignment and slope
* fix(icon): apply optimized version from reviewer to align on grid and spacing
* chore: add karsa-mistmere as contributor
---------
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
* feat(site): added extended no results placeholder with brand icon stop words
* feat(site): fix grammatical error
* feat: extract brand stopwords & update github action to use these stopwords
* Apply suggestions from code review
Co-authored-by: Jakob Guddas <github@jguddas.de>
* feat: only use icon name section for closing brand request issues
* feat: added mcp brand stopword
---------
Co-authored-by: Jakob Guddas <github@jguddas.de>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
* Added icons/estimated-weight.svg
* Added icons/estimated-weight.json
* Update icons/estimated-weight.json
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Change name + reshape tilde
* Change name to weight-tilde
* Update weight-tilde.json
removed weight and tilde, since they're part of the name
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Karsa <contact@karsa.org>
* Update square-scissors to match optical volume
* Update square-bottom-dashed-scissors to match optical volume
---------
Co-authored-by: Karsa <contact@karsa.org>
* feat(icon): add book-search icon
* fix(icon): fix vertical alignment of `book-search` icon .
- Fix the vertical alignment of the icon in the 24x24 grid of pixels
- It had 3 columns on the left side and 1 on the right side, now made 2 on both sides
* fix: remove extra tag "book search"
2025-11-26 09:29:40 +01:00
Jakob Guddasgithub-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>Eric Fennis
* fix(docs): correct package name and description for Flutter package (#3701)
* Revert "fix(docs): correct package naming in Packages section (#3701)"
This reverts commit c9b738b4af1ffc114bf7e8e2b81754a54b118b97.
* fix: correct package name from lucide-lustre to lucide_lustre and fix typo (lustre → flutter)
* fix(icons/file): add rounding to file fold corners & apply this change to other icons with folds.
* fix(icons/file): update file-digit.svg with the correct version
* fix(icons/file): update file-key for better centre of gravity
* fix(icons/file): optimized & formatted icons
* fix(icons/file): increase file-type-corner T size to better match other addons
* feat(docs): increase size of braces & rename file-json to file-braces
* refactor(icons): further increase size of T in file-type-corner.svg
* refactor(icons): upgrade file-digit to match binary
* refactor(icons): upgrade file-check-corner to match other operational icons (plus/minus/x)
* Update file-scan.svg
---------
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
* Add `motorbike` and `dirtbike` icons
* Renamed `dirtbike` to `dirt-bike`
* Deleted `dirt-bike` in order to move it to a separate PR
* Update motorbike.svg
---------
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
* fix(icons): increase base height of list/text and derived icons for more consistent optical volume
* refactor(icons): upgrade list-chevrons-down-up
feat(icons): add list-chevrons-up-down
---------
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
* Discussion - GitHub's discussions section uses this type of icon
* Interview - e.g. a category of content, alongside "article", "video", "podcast"
* Debate - in a similar vein to "interview"
* docs(): added official statement on brand logos in Lucide
* docs(): fix accidental typo from adding link
* docs(): migrating some stuff to a more accessible plain language format
* Update .github/ISSUE_TEMPLATE/01_icon_request.yml
* Update .github/ISSUE_TEMPLATE/01_icon_request.yml
Co-authored-by: Jakob Guddas <github@jguddas.de>
* Update README.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* Update .github/pull_request_template.md
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
---------
Co-authored-by: Jakob Guddas <github@jguddas.de>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* feat(SvgPreview): add features from lucide studio
* Update docs/.vitepress/lib/SvgPreview/index.tsx
---------
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Fixes#3359
Throwing an error in readAllMetadata now to ensure this error can't happen again in the future.
The error was caused by this script being moved to a different dir, but the relative url not being updated, causing no icons to be found.
* docs(lucide-react): small changes for DynamicIcon
Changed the sentence structure slightly for DynamicIcon to be easier to understand.
* Update lucide-react.md
* Add gpt tags
* Add github actions flow
* Add link so people can use the chat
* Fix workflow
* Add openai dep
* Add actions core
* Try gh pr review in actions
* Try with octokit
* Remove changed files part
* Try with createReview function
* Try this
* fix broken json file
* Turn on review by gh action
* Try this
* Update icons/trash.json
* Update the runner
* Remove added tags
* Add more checks
* Added icons/tool-case.svg
* Added icons/tool-case.json
* Update tool-case.svg
slightly alter the icon SVG code to match with the "archive" icon
* Update tool-case.svg
* Optimized version of tool-case.svg
* Update icons/tool-case.json
Co-authored-by: Jakob Guddas <github@jguddas.de>
* Update tool-case.svg
---------
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Co-authored-by: Jakob Guddas <github@jguddas.de>
* Update base `clock`-icons
Replace `<polyline/>`s with `<path/>`s, and adjust the angles of the 2-, 4-, 8- and 10 o'clock hour hands to better match the 1-, 5-, 7- and 11 o'clock hands
* Update clocks with symbols
Update `clock-arrow-down`, `clock-arrow-up` and `clock-alert` to match the hand angle of `clock`
Also align the exclamation mark of `clock-alert` to the pixel grid
* Update small clock faces
Make the clock faces in `calendar-clock`, `file-clock`, `folder-clock` and `watch` consistent with each other, and resolve some two-pixel-gap violations.
* Align the tips of all hours hands on large clocks to the grid
* Add self-attribution where appropriate
---------
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
* Added icons/wavy-line.svg
* Added icons/wavy-line.json
* Updated icons/wavy-line.json
* Updated icons/wavy-line.json
* Rename wavy-line.json to line-curvy.json
* Rename wavy-line.svg to line-curvy.svg
* Rename line-curvy.json to line-swirly.json
* Rename line-curvy.svg to line-swirly.svg
* Rename line-swirly.json to line-squiggle.json
* Rename line-swirly.svg to line-squiggle.svg
* Align the icon in the center
* Update icon visually
* Circle the loop of the icon
* Add contributor
* Add `"annotate"` as tag
After seeing Google Chromebook the same icon, it says 'annotate'. I add it here as a tag.
* Update line-squiggle.json
* Update line-squiggle.json
---------
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
Reordered SVG paths so the shaft renders after the arrowhead, eliminating visual gaps due to stroke rendering.
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
- Reduce initial icon render from 1600 to 120-200 icons
- Implement dynamic initialGridItems calculation based on viewport
- Use slice() instead of splice() to avoid array mutation
- Fix NoResults condition to use searchResults.length
- Load time improved from (50-60%+ improvement)
- Fix Switch component to properly handle v-model binding
- Add absoluteStrokeWidth to customizingActive computed property
- Ensure absoluteStrokeWidth resets correctly in both Home and Sidebar customizers
Resolves issue where absoluteStrokeWidth toggle remained enabled
after clicking Reset button, causing confusion with bold icons.
Fixes#2984
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
* Optimised `phone-` icons
* fix(site): remove studio link from navbar (#3166)
* Redraw handset to better align arcs still, and replace some with straight lines
* Align ring lines
---------
Co-authored-by: Jakob Guddas <github@jguddas.de>
* Changed resetStyle to reflect changes of button on absolutestrokewidth
* removed nextTick
---------
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
* add columns-cog icon and metadata
* chore: rename columns-cog to columns-3-cog as per maintainer request
* added contributors from the icon this is based on
* Remove not existing category
---------
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
* add electric truck icon
* update json file
* small change to svg
* update icon with zap in the middle
* move icon one pixel down to align with original truck icon
* use new truck as reference
* Update truck-electric.svg
* Update truck-electric.json
* Update truck-electric.svg
* Add contributor AnnaSasDev to truck-electric.json
---------
Co-authored-by: Jakob Guddas <github@jguddas.de>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
* Added icons: pathfinder (unite, minus, exclude, intersect)
* fix(icons): Altered pathfinder icon names to be more descriptive
* fix: Updated subtraction.svg to replace curves with of arcs
Co-authored-by: Jakob Guddas <github@jguddas.de>
* fix(icons): Updated names to be squares-* instead of shape-*
recomended by jguddas
* fix(shapes-unite): Arcified corners & added union tag
* fix(shapes-intersect): Replacing curves with arcs
Done by jguddas
* update(squares-exclude): added extra tags invert & xor
* fix(squares-intersect): Adjusted the look to make it more clear what it's use case is
* fix(icons): Accidentally swapped out the wrong icon for previous commit
* fix(squares-intersect): fixed filename
* fix(squares-exclude): Altered icon to look better under low resolution
Co-Authored-By: Jamie Law <956081+jamiemlaw@users.noreply.github.com>
* fix(squares-subtract): Updated name to fit naming convention better
Co-Authored-By: Jamie Law <956081+jamiemlaw@users.noreply.github.com>
* fix(sqaures-intersect): Removed certain curves for consistency
* fix(squares-exclude): Fixed arcs & arcified corners
Co-authored-by: Jakob Guddas <github@jguddas.de>
* fix(squares-exclude): icon was committed with wrong filename
* update(squares-exclude): updated design to be more readable
Co-Authored-By: Jakob Guddas <25524993+jguddas@users.noreply.github.com>
* fix(tags.json): Reverted accidental prettier alterations
* fix(squares-*.svg): enlarged squares to be more consistant
* fix(squares-*): added karsa-mistmere as a contributor
* fix(squares-subtract): fixed accidental copy made called squares-minus
* fix(squares-subtract): fixed rounding amount on some arcs
---------
Co-authored-by: Jakob Guddas <github@jguddas.de>
Co-authored-by: Jamie Law <956081+jamiemlaw@users.noreply.github.com>
Co-authored-by: Jakob Guddas <25524993+jguddas@users.noreply.github.com>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
* Add spline-pointer icon
* Add proper attribution to contributors
* Fix spline-pointer
* Reduce amount of tags and add tools category
* Run SVG to lucide studio
* add saudi riyal sign
* update name from sign to symbol
* fix stroke and fill issue
Co-authored-by: Jakob Guddas <github@jguddas.de>
* removed symbol from the name
---------
Co-authored-by: Jakob Guddas <github@jguddas.de>
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
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.
> [!CAUTION]
> New brand logos are **not** allowed, see our official statement: https://github.com/lucide-icons/lucide/blob/main/BRAND_LOGOS_STATEMENT.md.
>
> Existing brand icons are being phased out. Consider using https://simpleicons.org, which offers purpose-built SVGs that are also on a 24×24px grid.
- type:input
id:name
attributes:
@@ -41,9 +43,9 @@ body:
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.
- label:I am not requesting a brand logo and the art is not protected by copyright, see more at https://github.com/lucide-icons/lucide/blob/main/BRAND_LOGOS_STATEMENT.md
required:true
- label:I am not requesting an icon that includes religious, political imagery or hate symbols.
- label:I am not requesting an icon that includes religious, war/violence related, political imagery or hate symbols.
required:true
- label:I have provided appropriate use cases for the icon(s) requested.
The schema for the JSON metadata descriptor can be found in `icon.schema.json`. It defines the required and optional properties for the JSON files that accompany each icon. The JSON metadata descriptor should be placed in the same directory as the SVG file of the icon and should have the same name as the SVG file, but with a `.json` extension. For example, if the SVG file is named `home.svg`, the JSON metadata descriptor should be named `home.json`.
## Contributors
The `contributors` property is a required array of GitHub usernames for the people who created or contributed to the icon. It is used to give credit to contributors and to track the icon's history. Add the PR author to the `contributors` array if they are not already listed and they have made a significant contribution to the icon's SVG.
## Tags
The `tags` property is an array of strings that describe the icon and can be used for searching.
Validate the tags against the `icon.schema.json` to ensure they are correctly formatted and adhere to the defined structure.
Provide tag suggestions based on the name of the icon and the use cases provided in the PR description. Use the existing tags in the repository as a reference for consistency and to avoid duplicates. Don't suggest words like: 'icon' and preferably use single words. Tags should always be in lowercase and should not contain spaces. The name of icon should not be included in the tags, as it is already specified.
# Categories
The `categories` property is an array of strings that specify the categories to which the icon belongs, such as "devices", "interface", "media", etc. See the `categories` property in the `icon.schema.json` for more details on the allowed values. The categories should be chosen based on the use cases provided in the PR description and the existing categories in the repository. The categories should be relevant to the icon and should help users find the icon when searching for specific types of icons. The name of icon should not be included in the categories, as it is already specified. Suggest categories based on the name of the icon and the use cases provided in the PR description. Use the existing categories in the repository as a reference for consistency and to avoid duplicates. Categories should always be in lowercase and should not contain spaces.
gh issue close ${{ github.event.issue.number }} --reason "not planned" --comment "This looks like a duplicate, use the [search](https://github.com/lucide-icons/lucide/issues?q=is%3Aissue+$PHRASE) to find similar issues.
jq -r 'to_entries[] | "\(.key) \(.value)"' brand-stopwords.json | while read -r KEY VALUE; do
SAFE_KEY=$(printf '%s\n' "$KEY" | sed 's/[][\.^$*]/\\&/g')
SAFE_VALUE=$(printf '%s\n' "$VALUE" | sed 's/[][\.^$*]/\\&/g')
Read more about brand guideline rules at [We're not accepting new Brand icons #670](https://github.com/lucide-icons/lucide/issues/670).
if echo "$ISSUE_TITLE" | grep -iqE "$SAFE_KEY|$SAFE_VALUE" || \
--comment "It looks like this request is about **${VALUE}**, which is a brand logo.
Lucide **does not accept** brand logos, and we do not plan to add them in the future. This is due to a combination of **legal restrictions**, **design consistency concerns**, and **practical maintenance reasons**.
[Click here to read our official statement about brand logos in Lucide.](./BRAND_LOGOS_STATEMENT.md)
You can [search for similar issues.](https://github.com/lucide-icons/lucide/issues?q=is%3Aissue+${VALUE})
We’re always happy to help on [Discord](https://discord.gg/EH6nSts)."
Always happy to help on [Discord](https://discord.gg/EH6nSts)."
Our official stance on including brand logos in Lucide
## TL;DR
Lucide **does not accept** brand logos, and we do not plan to add them in the future.
This is due to a combination of **legal restrictions**, **design consistency concerns**, and **practical maintenance reasons**.
If you need brand logos, we recommend [Simple Icons](https://simpleicons.org/), which provides an extensive, legally safer collection of brand marks.
---
## 1. Historical Context
This is not a new debate — other icon sets have gone through the same discussion:
- **Material Design Icons** [deprecated all brand icons](https://github.com/Templarian/MaterialDesign/issues/6602) because they didn't fit the style, didn't work well in one color, and often looked out of place in a 24×24px grid.
- **Feather Icons** [came to the same conclusion](https://github.com/feathericons/feather/issues/763): brand logos have their own style, and forcing them into another inevitably leads to aesthetic compromises.
- **Lucide** learned from these examples — we'd rather focus on making a consistent set of non-brand icons that all work together.
## 2. Legal Considerations
Most brand logos:
- Are **protected by trademark or copyright**.
- Have **strict rules** for how they can be used (colors, spacing, proportions, etc.).
- **Don't allow modification** — but we'd have to change them to fit Lucide's style.
This means adding them could:
1. Break copyright or trademark law.
2. Make both you and the Lucide project legally responsible.
3. Force us to review every new request one by one for legal issues — something we simply can't do.
> **Note:** Simple Icons avoids this by keeping logos exactly as the brand provides them — though even they sometimes face [legal challenges](https://github.com/simple-icons/simple-icons/issues/11236).
## 3. Design & Consistency
Lucide is all about **visual consistency**.
Adding brand logos would:
- Break [our own design rules](https://lucide.dev/contribute/icon-design-guide#icon-design-principles) for shapes, proportions, and stroke.
- Mix two fundamentally different categories of graphics (pictograms vs. corporate logos).
- Create a library where a subset of icons will always look "out of place".
If the logos are not in Lucide's style, why include them in Lucide at all? Better to use them from a dedicated brand icon source.
## 4. Maintenance Burden
Even with our current **"no brand icon requests"** policy, people still request them regularly.
Having any brand icons in the set:
- Makes people think we might add more in the future.
- Leads to repeated requests and the same conversations over and over.
- Wastes maintainer time redirecting people to the same explanation.
Removing them entirely solves this problem.
## 5. Recommended Alternatives
If you need brand icons, try:
- [Simple Icons](https://simpleicons.org/): offers a huge range of brands, in consistent SVG format, using a 24×24 viewBox, the same as ours.
- Official brand asset pages: most major companies provide downloadable SVGs.
You can use these alongside Lucide without bloating our core library.
## Final Words
Lucide is an **icon** set, not a **logo** set.
Logos belong in dedicated logo resources.
We're focusing on what Lucide does best: providing a clean, cohesive, and legally safe collection of open-source icons.
This Code of Conduct outlines our expectations for participant behavior as well as the consequences for unacceptable behavior within our community. We are committed to providing a welcoming, safe, and inclusive environment for all members of our community.
## Our Pledge
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, gender identity and expression, level of experience,
nationality, personal appearance, race, religion, or sexual identity and
orientation.
We pledge to make our community welcoming, safe, and equitable for all.
## Our Standards
We are committed to fostering an environment that respects and promotes the dignity, rights, and contributions of all individuals, regardless of characteristics including race, ethnicity, caste, color, age, physical characteristics, neurodiversity, disability, sex or gender, gender identity or expression, sexual orientation, language, philosophy or religion, national or social origin, socio-economic position, level of education, or other status. The same privileges of participation are extended to everyone who participates in good faith and in accordance with this Covenant.
Examples of behavior that contributes to creating a positive environment
include:
## Encouraged Behaviors
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
While acknowledging differences in social norms, we all strive to meet our community's expectations for positive behavior. We also understand that our words and actions may be interpreted differently than we intend based on culture, background, or native language.
Examples of unacceptable behavior by participants include:
With these considerations in mind, we agree to behave mindfully toward each other and act in ways that center our shared values, including:
* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
1. Respecting the **purpose of our community**, our activities, and our ways of gathering.
2. Engaging **kindly and honestly** with others.
3. Respecting **different viewpoints** and experiences.
4.**Taking responsibility** for our actions and contributions.
5. Gracefully giving and accepting **constructive feedback**.
6. Committing to **repairing harm** when it occurs.
7. Behaving in other ways that promote and sustain the **well-being of our community**.
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
## Restricted Behaviors
We agree to restrict the following behaviors in our community. Instances, threats, and promotion of these behaviors are violations of this Code of Conduct.
1.**Harassment.** Violating explicitly expressed boundaries or engaging in unnecessary personal attention after any clear request to stop.
2.**Character attacks.** Making insulting, demeaning, or pejorative comments directed at a community member or group of people.
3.**Stereotyping or discrimination.** Characterizing anyone’s personality or behavior on the basis of immutable identities or traits.
4.**Sexualization.** Behaving in a way that would generally be considered inappropriately intimate in the context or purpose of the community.
5.**Violating confidentiality**. Sharing or acting on someone's personal or private information without their permission.
6.**Endangerment.** Causing, encouraging, or threatening violence or other harm toward any person or group.
7. Behaving in other ways that **threaten the well-being** of our community.
### Other Restrictions
1.**Misleading identity.** Impersonating someone else for any reason, or pretending to be someone else to evade enforcement actions.
2.**Failing to credit sources.** Not properly crediting the sources of content you contribute.
3.**Promotional materials**. Sharing marketing or other commercial content in a way that is outside the norms of the community.
4.**Irresponsible communication.** Failing to responsibly present content which includes, links or describes any other restricted behaviors.
## Reporting an Issue
Tensions can occur between community members even when they are trying their best to collaborate. Not every conflict represents a code of conduct violation, and this Code of Conduct reinforces encouraged behaviors and norms that can help avoid conflicts and minimize harm.
When an incident does occur, it is important to report it promptly. To report a possible violation, email: [info@lucide.dev](mailto:info@lucide.dev)
Community Moderators take reports of violations seriously and will make every effort to respond in a timely manner. They will investigate all reports of code of conduct violations, reviewing messages, logs, and recordings, or interviewing witnesses and other participants. Community Moderators will keep investigation and enforcement actions as transparent as possible while prioritizing safety and confidentiality. In order to honor these values, enforcement actions are carried out in private with the involved parties, but communicating to the whole community may be part of a mutually agreed upon resolution.
## Addressing and Repairing Harm
If an investigation by the Community Moderators finds that this Code of Conduct has been violated, the following enforcement ladder may be used to determine how best to repair harm, based on the incident's impact on the individuals involved and the community as a whole. Depending on the severity of a violation, lower rungs on the ladder may be skipped.
1) Warning
1) Event: A violation involving a single incident or series of incidents.
2) Consequence: A private, written warning from the Community Moderators.
3) Repair: Examples of repair include a private written apology, acknowledgement of responsibility, and seeking clarification on expectations.
2) Temporarily Limited Activities
1) Event: A repeated incidence of a violation that previously resulted in a warning, or the first incidence of a more serious violation.
2) Consequence: A private, written warning with a time-limited cooldown period designed to underscore the seriousness of the situation and give the community members involved time to process the incident. The cooldown period may be limited to particular communication channels or interactions with particular community members.
3) Repair: Examples of repair may include making an apology, using the cooldown period to reflect on actions and impact, and being thoughtful about re-entering community spaces after the period is over.
3) Temporary Suspension
1) Event: A pattern of repeated violation which the Community Moderators have tried to address with warnings, or a single serious violation.
2) Consequence: A private written warning with conditions for return from suspension. In general, temporary suspensions give the person being suspended time to reflect upon their behavior and possible corrective actions.
3) Repair: Examples of repair include respecting the spirit of the suspension, meeting the specified conditions for return, and being thoughtful about how to reintegrate with the community when the suspension is lifted.
4) Permanent Ban
1) Event: A pattern of repeated code of conduct violations that other steps on the ladder have failed to resolve, or a violation so serious that the Community Moderators determine there is no way to keep the community safe with this person as a member.
2) Consequence: Access to all community spaces, tools, and communication channels is removed. In general, permanent bans should be rarely used, should have strong reasoning behind them, and should only be resorted to if working through other remedies has failed to change the behavior.
3) Repair: There is no possible repair in cases of this severity.
This enforcement ladder is intended as a guideline. It does not limit the ability of Community Managers to use their discretion and judgment, in keeping with the best interests of our community.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.
This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public or other spaces. Examples of representing our community include using an official email address, posting via an official social media account, or acting as an appointed representative at an online or offline event.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at johnletey@gmail.com. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at [http://contributor-covenant.org/version/1/4][version]
This Code of Conduct is adapted from the Contributor Covenant, version 3.0, permanently available at [https://www.contributor-covenant.org/version/3/0/](https://www.contributor-covenant.org/version/3/0/).
Contributor Covenant is stewarded by the Organization for Ethical Source and licensed under CC BY-SA 4.0. To view a copy of this license, visit [https://creativecommons.org/licenses/by-sa/4.0/](https://creativecommons.org/licenses/by-sa/4.0/)
For answers to common questions about Contributor Covenant, see the FAQ at [https://www.contributor-covenant.org/faq](https://www.contributor-covenant.org/faq). Translations are provided at [https://www.contributor-covenant.org/translations](https://www.contributor-covenant.org/translations). Additional enforcement and community guideline resources can be found at [https://www.contributor-covenant.org/resources](https://www.contributor-covenant.org/resources). The enforcement ladder was inspired by the work of [Mozilla’s code of conduct team](https://github.com/mozilla/inclusion).
:+1::tada: First off, thanks for taking the time to contribute! :tada::+1:
@@ -16,37 +15,43 @@ Guidelines for pull requests:
- __Make your commit messages as descriptive as possible.__ Include as much information as you can. Explain anything that the file diffs themselves won’t make apparent.
- __Document your pull request__. Explain your fix, link to the relevant issue, add screenshots when adding new icons.
- __Make sure the target of your pull request is the relevant branch__. Most of bugfix or new feature should go to the `main` branch.
- __Include only related work__. If your pull request has unrelated commit, it won't be accepted.
- __Make sure the target of your pull request is the relevant branch__. Most of bugfixes or new feature should go to the `main` branch.
- __Include only related work__. If your pull request has unrelated commits, it won't be accepted.
### Pull Requests Including Icons
### Contributing Icons
We love contributions of new icons from the community! If you want to contribute new icons, please follow the guidelines below.
#### Guidelines
Please make sure you follow the icon guidelines, that should be followed to keep quality and consistency when making icons for Lucide.
Read it here: [ICON_GUIDELINES](https://lucide.dev/docs/icon-design-guide).
Read it here: [ICON_GUIDELINES](https://lucide.dev/contribute/icon-design-guide).
### Editor guides
#### Lucide Studio
For formatting and adjusting SVG icons, [@jguddas](https://github.com/jguddas) made a great tool called [Lucide Studio](https://studio.lucide.dev/). It is a web-based SVG editor that allows you to edit and adjust icons in the Lucide style. You can use it to create new icons or modify existing ones.
#### Editor guides
Here you can find instructions on how to implement the guidelines with different vector graphics editors:
If you want submit multiple icons, please separate the icons and group them. That makes reviewing the icons easier and keep the thread clean and scoped.
So don't submit multiple icons in one PR that have noting to do with each other.
If you want to submit multiple icons, please separate the icons and group them. That makes reviewing the icons easier and keeps the thread clean and scoped.
So don't submit multiple icons in one PR that have nothing to do with each other.
So for example don't create one PR with icons: `arrow-up`, `bicycle`, `arrow-down`.
Seperate them by two PRs; 'pr-01' `arrow`, `arrow-down` and 'pr-02' `bicycle`.
Separate them into two PRs; 'pr-01' `arrow`, `arrow-down` and 'pr-02' `bicycle`.
## Icon Requests
@@ -77,7 +82,7 @@ To distribute different packages we use [PNPM workspaces](https://pnpm.io/worksp
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.
> Note: One package is not managed by pnpm: **lucide-flutter**, this package is written in Dart and uses pub for publishing.
### Generated Code
@@ -127,7 +132,7 @@ When adding new features to for example the icon component for a framework. It i
### Local Testing
To test changes in a local project, you can use `yarn link`, `npm link`, `bun link` or `pnpm link` to link the package. Before you do this make sure you builded the package first.
To test changes in a local project, you can use `yarn link`, `npm link`, `bun link` or `pnpm link` to link the package. Before you do this make sure you've built the package first.
```sh
# in packages/lucide-react
@@ -157,23 +162,45 @@ lucide
The lucide.dev website is using [vitepress](https://vitepress.dev/) to generate the static website. The markdown files are located in the docs directory.
#### Running the Docs Website Locally
To test the docs website locally, follow these steps:
1.**Navigate to the docs directory**
```sh
cd docs
```
2.**Start the Local Development Server**
```sh
pnpm run docs:dev
```
3.**Open the Website Locally**
Vitepress should open with the following format:
VitePress dev server is running at:
- **Local**: `http://localhost:3000/`
- **Network**: `http://192.168.x.x:3000/`
### Guides
Detailed documentation about: installation, guides, packages, design guides etc.
### Icons
All the icons of lucide in SVG format. These will be used as source for all the packages and other distributions for the lucide icons.
All the icons of Lucide in SVG format. These will be used as source for all the packages and other distributions for the Lucide icons.
### packages
### Packages
Includes all the (npm) packages of lucide.
> Note: One package is not managed by pnpm: **lucide-flutter**, this package is written in Dart and used pub for publishing.
### Scripts
### scripts
Includes usefully scripts to automate certain jobs. Big part of the scripts is the template generation, for example it generates icon components for all the packages. These scripts are usually executed from the "scripts" section in the package.json.
Includes useful scripts to automate certain jobs. Big part of the scripts is the template generation, for example it generates icon components for all the packages. These scripts are usually executed from the "scripts" section in the package.json.
## Documentation
@@ -190,4 +217,4 @@ If you need any help or have problems with you contribution. Please don't hesita
Thank you to all the people who already contributed to Lucide!
Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2022 as part of Feather (MIT). All other copyright (c) for Lucide are held by Lucide Contributors 2022.
Copyright (c) 2026 Lucide Icons and Contributors
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
@@ -13,3 +13,31 @@ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
---
The following Lucide icons are derived from the Feather project:
Lucide is an open-source icon library that provides 1000+ vector (svg) files for displaying icons and symbols in digital and non-digital projects. The library aims to make it easier for designers and developers to incorporate icons into their projects by providing several official [packages](https://lucide.dev/packages) to make it easier to use these icons in your project.
Lucide is an open-source icon library that provides 1600+ vector (svg) files for displaying icons and symbols in digital and non-digital projects. The library aims to make it easier for designers and developers to incorporate icons into their projects by providing several official [packages](https://lucide.dev/packages) to make it easier to use these icons in your project.
Visit [Figma community page](https://www.figma.com/community/plugin/939567362549682242/Lucide-Icons) to install the plugin.
@@ -56,6 +57,12 @@ For more info on how to contribute please see the [contribution guidelines](http
Caught a mistake or want to contribute to the documentation? [Edit this page on Github](https://github.com/lucide-icons/lucide/blob/main/README.md)
## About brand logos
Lucide **does not accept** brand logos, and we do not plan to add them in the future. This is due to a combination of **legal restrictions**, **design consistency concerns**, and **practical maintenance reasons**.
[Click here to read our official statement about brand logos in Lucide.](./BRAND_LOGOS_STATEMENT.md)
## Community
Join the community on our [Discord](https://discord.gg/EH6nSts) server!
@@ -69,7 +76,11 @@ Lucide is totally free for commercial use and personal use, this software is lic
Thank you to all the people who contributed to Lucide!
<a href="https://zephyr-cloud.io/"><img src="docs/public/sponsors/zephyr-cloud.svg" width="180" alt="Zephyr Cloud – From idea to prod: fast micro-frontend delivery!" /></a>
<a href="https://github.com/pdfme/pdfme"><img src="docs/public/sponsors/pdfme.svg" width="180" alt="pdfme – Open-source PDF generation library built with TypeScript and React." /></a>
<a href="https://www.paxhistoria.co/"><img src="docs/public/sponsors/paxhistoria.svg?" width="180" alt="Pax Historia – An alternate history sandbox game" /></a>
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.