Compare commits

...

48 Commits

Author SHA1 Message Date
Eric Fennis
248d1c31eb Adds release config 2025-01-03 15:50:42 +01:00
Eric Fennis
b6a978ec6a Use latest version of semantic version 2025-01-03 15:39:45 +01:00
Eric Fennis
de454e4d98 Add version 2025-01-03 15:38:15 +01:00
Eric Fennis
13c4163843 Add permissions 2025-01-03 15:37:53 +01:00
Eric Fennis
c0d4147fe6 fix: Test Version 2025-01-03 15:33:47 +01:00
Eric Fennis
0640cd0938 Test workflow 2025-01-03 15:27:19 +01:00
Eric Fennis
7ab9b83991 fix: release workflow 2025-01-03 15:22:20 +01:00
Eric Fennis
0c08347e5e Test workflpw 2025-01-03 15:01:08 +01:00
Eric Fennis
35e9cb4b6f Test workflow 2025-01-03 15:00:13 +01:00
Eric Fennis
2095ba6aa7 ci: Add commit message check 2024-10-10 05:47:54 +02:00
Eric Fennis
ddfc5cadc1 Merge branch 'main' of https://github.com/lucide-icons/lucide into new-release-workflow 2024-10-10 05:36:21 +02:00
Eric Fennis
f3c6929c98 Remove Node version 2024-10-10 05:36:17 +02:00
Eric Fennis
9b46e0dcba Add name in package.json 2024-10-10 05:34:06 +02:00
Eric Fennis
ef449fd5c5 Try mono repo setup 2024-10-10 05:29:12 +02:00
Eric Fennis
2892be8229 Add temporary branch test 2024-10-10 05:21:06 +02:00
Eric Fennis
2b1ad320fe Add PR title linting 2024-10-10 05:16:17 +02:00
Eric Fennis
61a86a959a enable dry run 2024-10-08 11:44:49 +02:00
Eric Fennis
d92e7796e4 test worflow 2024-10-08 11:43:44 +02:00
Jakob Guddas
bde9e1cb6b Updated icons/component.svg (#2474) 2024-10-08 11:10:02 +02:00
Jakob Guddas
a5e07c28bd fix(icons): changed package icon (#2499)
* Updated icons/package.svg

* Updated icons/package.svg

* Updated icons/package.json
2024-10-08 10:44:49 +02:00
Jamie Law
2a68b12cbe fix(icons): Updated sandwich icon (#2494)
* Updated `sandwich` icon

Rounded the top-front corners, and better aligned the top-most corner of the bread, and the corner of the filling to the grid

* Update sandwich.svg

Nudge filling to the left to maintain a two-pixel gap

* Widen the sandwich
2024-10-08 10:41:30 +02:00
Jakob Guddas
493382b4fd fix(icons): changed parking-meter icon (#2505)
* Updated icons/parking-meter.svg

* Updated icons/parking-meter.json
2024-10-08 10:37:01 +02:00
Karsa
6588971ead fix(site): use the same camel/pascal same conversion as when releasing packages (#2509) 2024-10-08 10:36:35 +02:00
Jamie Law
13cea45e8b refactor(icons): optimised some move- icons (#2513)
* Update move.svg

Replace `<polyline/>`s with `<path/>`s

* Update move-vertical.svg

* Update move-horizontal.svg

* Update move-diagonal.svg

* Update move-diagonal-2.svg
2024-10-08 10:34:11 +02:00
dependabot[bot]
5dfcfc8d1a build(deps): bump rollup from 4.21.0 to 4.22.4 (#2521)
Bumps [rollup](https://github.com/rollup/rollup) from 4.21.0 to 4.22.4.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v4.21.0...v4.22.4)

---
updated-dependencies:
- dependency-name: rollup
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-08 10:29:31 +02:00
Mohit Nagaraj
db24b1d517 fix(app): #2412 Fix tooltip being cut off (#2514) 2024-10-08 10:29:03 +02:00
Jakob Guddas
e1202b545e tests(shared): added mergeClasses tests (#2503) 2024-10-08 10:24:16 +02:00
Jakob Guddas
2e1a5cf6ea feat(icons): added volleyball icon (#1980)
* chore: pull `volleyball` icon from lab branch

* Updated icons/volleyball.svg

* Updated icons/volleyball.json
2024-10-08 10:19:54 +02:00
Karsa
f49ecd73a5 feat(icons): add eye-closed icon (#2349)
* feat(icons): add eye-closed icon

* feat(icons): update tags on eye-off as well

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-10-08 10:17:49 +02:00
Dipanshu Rawat
a72cbc2d49 add(site): Eric Fennis's twitter link (#2511)
* add: Eric Fennis's twitter link

* ref: twitter domain
2024-10-04 07:59:34 +02:00
Pedro Henrique Windisch
d4976890e5 fix: missing deprecation warning for LinkedIn logo (#2466)
Co-authored-by: Karsa <contact@karsa.org>
2024-10-02 14:49:53 +02:00
Jakob Guddas
8c8d1d3338 fix(categories): fixed charts icon name (#2504) 2024-10-02 09:36:31 +02:00
Kyle Angelo Galendez
542507f835 fix(icons): rename box-select to square-dashed (#2506)
* Rename box-select.svg to square-dashed.svg

* Update and rename box-select.json to square-dashed.json

* Add aliases
2024-10-01 22:13:41 +02:00
Isaac
c6a4908ed0 Add missing space between Svelte and Preact (#2489) 2024-09-25 07:52:27 +02:00
Jakob Guddas
b6e71c6c7a feat(icons): added file-user icon (#2457)
* Added icons/file-user.svg

* Added icons/file-user.json
2024-09-25 07:21:56 +02:00
Jakob Guddas
7de43440ee feat(icons): added message-square-lock icon (#2430)
* Added icons/message-square-lock.svg

* Added icons/message-square-lock.json

* Updated icons/message-square-lock.json
2024-09-20 23:26:47 +02:00
Jakob Guddas
c8d5260d54 feat(icons): added briefcase-conveyor-belt icon (#2431)
* Added icons/briefcase-conveyor-belt.svg

* Added icons/briefcase-conveyor-belt.json
2024-09-20 23:26:05 +02:00
Jakob Guddas
0c912bd7ff fix(icons): changed loader-pinwheel icon (#2470)
* Updated icons/loader-pinwheel.svg

* Updated icons/loader-pinwheel.json
2024-09-20 23:18:06 +02:00
Jakob Guddas
3f24597a65 Updated icons/circle-stop.svg (#2479) 2024-09-20 23:08:18 +02:00
Jakob Guddas
590d59ac5f fix(icons): changed octagon-pause icon (#2485)
* Updated icons/octagon-pause.svg

* Updated icons/octagon-pause.json
2024-09-20 23:03:31 +02:00
Jakob Guddas
85d427d846 feat: added .github/workflows/close-issue-with-banned-phrases.yml (#2460)
* feat: added .github/workflows/close-issue-with-banned-phrases.yml

* feat: added link to search

* chore: improved comment
2024-09-19 09:20:22 +02:00
Jakob Guddas
478a624162 Updated icons/messages-square.svg (#2429)
Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-09-13 09:07:13 +02:00
Jakob Guddas
f0afdd4614 feat(icons): added clock-alert icon (#2401)
* Added icons/clock-alert.svg

* Added icons/clock-alert.json
2024-09-12 14:22:36 +02:00
Need-an-AwP
38e7431189 add headphone-off svg & json in icon folder (#2445)
* add headphone-off svg & json in icon folder

* edit contributor in json & adjust icon

* adjust icon

* contributors changed

* icon adjust

* adjust path

* detail adjustment

* Apply suggestions from code review

Co-authored-by: Karsa <contact@karsa.org>

* delete files of categories in headphone-off's json

* prettier format json

---------

Co-authored-by: Karsa <contact@karsa.org>
2024-09-12 10:21:34 +02:00
Jakob Guddas
19dd912381 fix(icons): arcified caravan icon (#2423)
* Updated icons/caravan.svg

* Updated icons/caravan.json

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2024-09-06 13:13:34 +02:00
Jakob Guddas
f70d5f5169 fix(pr-comment): added missing details open tag (#2425) 2024-09-06 12:45:07 +02:00
Jakob Guddas
30e0d55b4a fix(pr-comment): changed diff path url (#2426) 2024-09-06 12:44:38 +02:00
Eric Fennis
d237803413 Adds semantic release step in CI action 2024-07-22 11:37:06 +02:00
63 changed files with 1060 additions and 215 deletions

View File

@@ -3,71 +3,67 @@ name: Continuous integration icons
on:
push:
branches:
- main
paths:
- icons/**/*.svg
# - main
- '*'
# paths:
# - icons/**/*.svg
jobs:
create-release:
if: github.repository == 'lucide-icons/lucide'
# Only create a new releases for new icons
runs-on: ubuntu-latest
permissions:
id-token: write
contents: write
packages: read
actions: write
issues: write
pull-requests: write
outputs:
VERSION: ${{ steps.new-version.outputs.NEW_VERSION }}
VERSION: ${{ steps.semantic.outputs.new_release_version }}
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
- uses: actions/setup-node@v4
- name: Semantic Release
id: semantic
uses: cycjimmy/semantic-release-action@v4
with:
node-version: 18
cache: 'pnpm'
tag_format: ${version}
branches: |
['new-release-workflow']
extends: |
semantic-release-monorepo
extra_plugins: |
@semantic-release/github
@semantic-release/git
@semantic-release/release-notes-generator
conventional-changelog-conventionalcommits
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Fetch tags
run: git fetch --all --tags
- name: Get latest tag
id: latest-tag
run: echo "LATEST_TAG=$(git describe --tags `git rev-list --tags --max-count=1`)" >> $GITHUB_OUTPUT
- name: Check if we can patch
run: .github/workflows/version-up.sh --minor
- name: Create new version
id: new-version
run: echo "NEW_VERSION=$(.github/workflows/version-up.sh --minor)" >> $GITHUB_OUTPUT
- name: Create change log
id: change-log
run: |
CHANGE_LOG=$(pnpm run generate:changelog --old-tag=${{ steps.latest-tag.outputs.LATEST_TAG }})
CHANGE_LOG=$(tail -n +5 <<< $CHANGE_LOG)
echo $CHANGE_LOG
EOF=$(dd if=/dev/urandom bs=15 count=1 status=none | base64)
echo "CHANGE_LOG<<$EOF" >> $GITHUB_OUTPUT
echo "$CHANGE_LOG" >> $GITHUB_OUTPUT
echo "$EOF" >> $GITHUB_OUTPUT
env:
GITHUB_API_KEY: ${{ secrets.GITHUB_TOKEN }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Check output
- name: Do something when a new release published
if: steps.semantic.outputs.new_release_published == 'true'
run: |
echo '${{ steps.new-version.outputs.NEW_VERSION }}'
echo '${{ steps.change-log.outputs.CHANGE_LOG }}'
echo ${{ steps.semantic.outputs.new_release_version }}
echo ${{ steps.semantic.outputs.new_release_major_version }}
echo ${{ steps.semantic.outputs.new_release_minor_version }}
echo ${{ steps.semantic.outputs.new_release_patch_version }}
# - name: Create Release
# uses: softprops/action-gh-release@v1
# with:
# tag_name: ${{ steps.semantic.outputs.new_release_version }}
# name: Version ${{ steps.semantic.outputs.new_release_version }}
# body: ${{ steps.semantic.outputs.new_release_notes }}
- name: Create Release
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ steps.new-version.outputs.NEW_VERSION }}
name: New icons ${{ steps.new-version.outputs.NEW_VERSION }}
body: ${{ steps.change-log.outputs.CHANGE_LOG }}
start-release:
if: github.repository == 'lucide-icons/lucide'
needs: create-release
uses: './.github/workflows/release.yml'
secrets: inherit
with:
version: ${{ needs.create-release.outputs.VERSION }}
# start-release:
# if: github.repository == 'lucide-icons/lucide'
# needs: create-release
# uses: './.github/workflows/release.yml'
# secrets: inherit
# with:
# version: ${{ needs.create-release.outputs.VERSION }}

View File

@@ -0,0 +1,35 @@
name: Close Issue with Banned Phrases
on:
issues:
types: [opened]
jobs:
block_phrases:
runs-on: ubuntu-latest
permissions:
issues: write
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Check for blocked phrases in issue title
run: |
ISSUE_TITLE=$(jq -r '.issue.title' "$GITHUB_EVENT_PATH")
BLOCKED_PHRASES=("twitter" "whatsapp" "logo" "google" "tiktok" "facebook" "slack" "discord")
# Check title and body for blocked phrases
for PHRASE in "${BLOCKED_PHRASES[@]}"
do
if echo "$ISSUE_TITLE" | grep -i "$PHRASE"; then
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.
Read more about brand guideline rules at [We're not accepting new Brand icons #670](https://github.com/lucide-icons/lucide/issues/670).
Always happy to help on [Discord](https://discord.gg/EH6nSts)."
gh issue lock ${{ github.event.issue.number }} --reason spam
exit 1
fi
done
env:
GH_TOKEN: ${{ github.token }}

View File

@@ -21,3 +21,24 @@ jobs:
- name: Run Linter
run: pnpm lint
pr-title:
runs-on: ubuntu-latest
steps:
- uses: amannn/action-semantic-pull-request@v5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
types: |
fix
feat
perf
refactor
test
style
docs
ci
build
requireScope: true
ignoreLabels: |
bot

View File

@@ -1,5 +1,5 @@
{
"$schema": "../category.schema.json",
"title": "Charts",
"icon": "pie-chart"
"icon": "chart-pie"
}

View File

@@ -11,7 +11,7 @@
},
{
"icon": "x",
"link": "https://github.com/ericfennis"
"link": "https://x.com/ericfennis"
}
]
},

View File

@@ -42,7 +42,7 @@ onMounted(() => {
font-weight: 400;
background: var(--vp-c-brand-dark);
color: white;
z-index: 10;
z-index: 99;
white-space: nowrap;
padding: 2px 8px;
border-radius: 4px;

View File

@@ -1,98 +1,98 @@
<script setup lang="ts">
import { computed } from 'vue';
import { startCase, camelCase } from 'lodash-es'
import ButtonMenu from '../base/ButtonMenu.vue'
import { toPascalCase } from '@lucide/shared';
import ButtonMenu from '../base/ButtonMenu.vue';
import { useIconStyleContext } from '../../composables/useIconStyle';
import useConfetti from '../../composables/useConfetti';
const props = defineProps<{
name: string
popoverPosition?: 'top' | 'bottom'
}>()
const { size, color, strokeWidth, absoluteStrokeWidth } = useIconStyleContext()
const { animate, confetti } = useConfetti()
name: string;
popoverPosition?: 'top' | 'bottom';
}>();
const { size, color, strokeWidth, absoluteStrokeWidth } = useIconStyleContext();
const { animate, confetti } = useConfetti();
const componentName = computed(() => {
return startCase(camelCase(props.name)).replace(/\s/g, '')
})
return (toPascalCase(props.name) as string).replace(/\s/g, '');
});
function copyJSX() {
let attrs = ['']
let attrs = [''];
if (size.value && size.value !== 24) {
attrs.push(`size={${size.value}}`)
attrs.push(`size={${size.value}}`);
}
if (color.value && color.value !== 'currentColor') {
attrs.push(`color="${color.value}"`)
attrs.push(`color="${color.value}"`);
}
if (strokeWidth.value && strokeWidth.value !== 2) {
attrs.push(`strokeWidth={${strokeWidth.value}}`)
attrs.push(`strokeWidth={${strokeWidth.value}}`);
}
if (absoluteStrokeWidth.value) {
attrs.push(`absoluteStrokeWidth`)
attrs.push(`absoluteStrokeWidth`);
}
const code = `<${componentName.value}${attrs.join(' ')} />`
const code = `<${componentName.value}${attrs.join(' ')} />`;
navigator.clipboard.writeText(code)
navigator.clipboard.writeText(code);
}
function copyComponentName() {
const code = componentName.value
const code = componentName.value;
navigator.clipboard.writeText(code)
navigator.clipboard.writeText(code);
}
function copyVue() {
let attrs = ['']
let attrs = [''];
if (size.value && size.value !== 24) {
attrs.push(`:size="${size.value}"`)
attrs.push(`:size="${size.value}"`);
}
if (color.value && color.value !== 'currentColor') {
attrs.push(`color="${color.value}"`)
attrs.push(`color="${color.value}"`);
}
if (strokeWidth.value && strokeWidth.value !== 2) {
attrs.push(`:stroke-width="${strokeWidth.value}"`)
attrs.push(`:stroke-width="${strokeWidth.value}"`);
}
if (absoluteStrokeWidth.value) {
attrs.push(`absoluteStrokeWidth`)
attrs.push(`absoluteStrokeWidth`);
}
const code = `<${componentName.value}${attrs.join(' ')} />`
const code = `<${componentName.value}${attrs.join(' ')} />`;
navigator.clipboard.writeText(code)
navigator.clipboard.writeText(code);
}
function copyAngular() {
let attrs = ['']
let attrs = [''];
attrs.push(`name="${props.name}"`)
attrs.push(`name="${props.name}"`);
if (size.value && size.value !== 24) {
attrs.push(`[size]="${size.value}"`)
attrs.push(`[size]="${size.value}"`);
}
if (color.value && color.value !== 'currentColor') {
attrs.push(`color="${color.value}"`)
attrs.push(`color="${color.value}"`);
}
if (strokeWidth.value && strokeWidth.value !== 2) {
attrs.push(`[strokeWidth]="${strokeWidth.value}"`)
attrs.push(`[strokeWidth]="${strokeWidth.value}"`);
}
if (absoluteStrokeWidth.value) {
attrs.push(`[absoluteStrokeWidth]="true"`)
attrs.push(`[absoluteStrokeWidth]="true"`);
}
const code = `<lucide-icon${attrs.join(' ')}></lucide-icon>`
const code = `<lucide-icon${attrs.join(' ')}></lucide-icon>`;
navigator.clipboard.writeText(code)
navigator.clipboard.writeText(code);
}
</script>
@@ -106,11 +106,11 @@ function copyAngular() {
data-confetti-text="Copied!"
:popoverPosition="popoverPosition"
:options="[
{ text: 'Copy JSX' , onClick: copyJSX },
{ text: 'Copy Component Name' , onClick: copyComponentName },
{ text: 'Copy Vue' , onClick: copyVue },
{ text: 'Copy Svelte' , onClick: copyJSX },
{ text: 'Copy Angular' , onClick: copyAngular },
{ text: 'Copy JSX', onClick: copyJSX },
{ text: 'Copy Component Name', onClick: copyComponentName },
{ text: 'Copy Vue', onClick: copyVue },
{ text: 'Copy Svelte', onClick: copyJSX },
{ text: 'Copy Angular', onClick: copyAngular },
]"
/>
</template>

View File

@@ -28,7 +28,7 @@ However, not everyone can understand them easily. Read more about [how to use Lu
## Official Packages
Lucide's official packages are designed to work on different platforms, making it easier for users to integrate icons into their projects. The packages are available for various technologies, including [Web (Vanilla)](https://lucide.dev/guide/packages/lucide), [React](https://lucide.dev/guide/packages/lucide-react), [React Native](https://lucide.dev/guide/packages/lucide-react-native), [Vue](https://lucide.dev/guide/packages/lucide-vue), [Vue 3](https://lucide.dev/guide/packages/lucide-vue-next), [Svelte](https://lucide.dev/guide/packages/lucide-svelte),[Preact](https://lucide.dev/guide/packages/lucide-preact), [Solid](https://lucide.dev/guide/packages/lucide-solid), [Angular](https://lucide.dev/guide/packages/lucide-angular), [NodeJS](https://lucide.dev/guide/packages/lucide-static#nodejs) and [Flutter](https://lucide.dev/guide/packages/lucide-flutter).
Lucide's official packages are designed to work on different platforms, making it easier for users to integrate icons into their projects. The packages are available for various technologies, including [Web (Vanilla)](https://lucide.dev/guide/packages/lucide), [React](https://lucide.dev/guide/packages/lucide-react), [React Native](https://lucide.dev/guide/packages/lucide-react-native), [Vue](https://lucide.dev/guide/packages/lucide-vue), [Vue 3](https://lucide.dev/guide/packages/lucide-vue-next), [Svelte](https://lucide.dev/guide/packages/lucide-svelte), [Preact](https://lucide.dev/guide/packages/lucide-preact), [Solid](https://lucide.dev/guide/packages/lucide-solid), [Angular](https://lucide.dev/guide/packages/lucide-angular), [NodeJS](https://lucide.dev/guide/packages/lucide-static#nodejs) and [Flutter](https://lucide.dev/guide/packages/lucide-flutter).
## Community
If you have any questions about Lucide, feel free to reach out to the community. You can find them on [GitHub](https://github.com/lucide-icons/lucide) and [Discord](https://discord.gg/EH6nSts).

View File

@@ -18,9 +18,8 @@ import RelatedIcons from '~/.vitepress/theme/components/icons/RelatedIcons.vue'
import CodeGroup from '~/.vitepress/theme/components/base/CodeGroup.vue'
import Badge from '~/.vitepress/theme/components/base/Badge.vue'
import Label from '~/.vitepress/theme/components/base/Label.vue'
import VPButton from 'vitepress/dist/client/theme-default/components/VPButton.vue';
import { data } from './codeExamples.data'
import { camelCase, startCase } from 'lodash-es'
import { toCamelCase, toPascalCase } from '@lucide/shared'
import { satisfies } from 'semver'
const { params } = useData()
@@ -31,8 +30,8 @@ const tabs = computed(() => data.codeExamples?.map(
const codeExample = computed(() => data.codeExamples?.map(
(codeExample) => {
const pascalCaseName = startCase(camelCase( params.value.name)).replace(/\s/g, '')
const camelCaseName = camelCase(params.value.name)
const pascalCaseName = toPascalCase( params.value.name)
const camelCaseName = toCamelCase(params.value.name)
return codeExample.code
.replace(/\$(?:<[^>]+>)*PascalCase/g, pascalCaseName)

View File

@@ -0,0 +1,19 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"karsa-mistmere",
"jguddas"
],
"tags": [
"baggage",
"luggage",
"travel",
"suitcase",
"conveyor",
"carousel"
],
"categories": [
"travel",
"transportation"
]
}

View File

@@ -0,0 +1,19 @@
<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 20v2" />
<path d="M14 20v2" />
<path d="M18 20v2" />
<path d="M21 20H3" />
<path d="M6 20v2" />
<path d="M8 16V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v12" />
<rect x="4" y="6" width="16" height="10" rx="2" />
</svg>

After

Width:  |  Height:  |  Size: 436 B

View File

@@ -1,7 +1,8 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"danielbayley"
"danielbayley",
"jguddas"
],
"tags": [
"trailer",

View File

@@ -9,9 +9,8 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<rect width="4" height="4" x="2" y="9" />
<rect width="4" height="10" x="10" y="9" />
<path d="M18 19V9a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v8a2 2 0 0 0 2 2h2" />
<path d="M2 9h3a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H2" />
<path d="M22 17v1a1 1 0 0 1-1 1H10v-9a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v9" />
<circle cx="8" cy="19" r="2" />
<path d="M10 19h12v-2" />
</svg>

Before

Width:  |  Height:  |  Size: 432 B

After

Width:  |  Height:  |  Size: 444 B

View File

@@ -10,5 +10,5 @@
stroke-linejoin="round"
>
<circle cx="12" cy="12" r="10" />
<rect width="6" height="6" x="9" y="9" />
<rect x="9" y="9" width="6" height="6" rx="1" />
</svg>

Before

Width:  |  Height:  |  Size: 288 B

After

Width:  |  Height:  |  Size: 295 B

17
icons/clock-alert.json Normal file
View File

@@ -0,0 +1,17 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"colebemis",
"jguddas"
],
"tags": [
"time",
"watch",
"alarm",
"warning",
"wrong"
],
"categories": [
"time"
]
}

16
icons/clock-alert.svg Normal file
View File

@@ -0,0 +1,16 @@
<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="M12 6v6l4 2" />
<path d="M16 21.16a10 10 0 1 1 5-13.516" />
<path d="M20 11.5v6" />
<path d="M20 21.5h.01" />
</svg>

After

Width:  |  Height:  |  Size: 335 B

View File

@@ -9,8 +9,8 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M5.5 8.5 9 12l-3.5 3.5L2 12l3.5-3.5Z" />
<path d="m12 2 3.5 3.5L12 9 8.5 5.5 12 2Z" />
<path d="M18.5 8.5 22 12l-3.5 3.5L15 12l3.5-3.5Z" />
<path d="m12 15 3.5 3.5L12 22l-3.5-3.5L12 15Z" />
<path d="M15.536 11.293a1 1 0 0 0 0 1.414l2.376 2.377a1 1 0 0 0 1.414 0l2.377-2.377a1 1 0 0 0 0-1.414l-2.377-2.377a1 1 0 0 0-1.414 0z" />
<path d="M2.297 11.293a1 1 0 0 0 0 1.414l2.377 2.377a1 1 0 0 0 1.414 0l2.377-2.377a1 1 0 0 0 0-1.414L6.088 8.916a1 1 0 0 0-1.414 0z" />
<path d="M8.916 17.912a1 1 0 0 0 0 1.415l2.377 2.376a1 1 0 0 0 1.414 0l2.377-2.376a1 1 0 0 0 0-1.415l-2.377-2.376a1 1 0 0 0-1.414 0z" />
<path d="M8.916 4.674a1 1 0 0 0 0 1.414l2.377 2.376a1 1 0 0 0 1.414 0l2.377-2.376a1 1 0 0 0 0-1.414l-2.377-2.377a1 1 0 0 0-1.414 0z" />
</svg>

Before

Width:  |  Height:  |  Size: 415 B

After

Width:  |  Height:  |  Size: 763 B

23
icons/eye-closed.json Normal file
View File

@@ -0,0 +1,23 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"karsa-mistmere"
],
"tags": [
"view",
"watch",
"see",
"hide",
"conceal",
"mask",
"hidden",
"visibility",
"vision"
],
"categories": [
"accessibility",
"photography",
"design",
"security"
]
}

17
icons/eye-closed.svg Normal file
View File

@@ -0,0 +1,17 @@
<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="m15 18-.722-3.25" />
<path d="M2 8a10.645 10.645 0 0 0 20 0" />
<path d="m20 15-1.726-2.05" />
<path d="m4 15 1.726-2.05" />
<path d="m9 18 .722-3.25" />
</svg>

After

Width:  |  Height:  |  Size: 381 B

View File

@@ -9,11 +9,18 @@
"tags": [
"view",
"watch",
"see",
"hide",
"hidden"
"conceal",
"mask",
"hidden",
"visibility",
"vision"
],
"categories": [
"accessibility",
"photography"
"photography",
"design",
"security"
]
}

View File

@@ -7,10 +7,22 @@
],
"tags": [
"view",
"watch"
"watch",
"see",
"show",
"expose",
"reveal",
"display",
"visible",
"visibility",
"vision",
"preview",
"read"
],
"categories": [
"accessibility",
"photography"
"photography",
"design",
"security"
]
}

28
icons/file-user.json Normal file
View File

@@ -0,0 +1,28 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"danielbayley",
"colebemis",
"ericfennis",
"jguddas"
],
"tags": [
"person",
"personal information",
"people",
"listing",
"networking",
"document",
"contact",
"cover letter",
"resume",
"cv",
"curriculum vitae",
"application form"
],
"categories": [
"account",
"communication",
"files"
]
}

16
icons/file-user.svg Normal file
View File

@@ -0,0 +1,16 @@
<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="M14 2v4a2 2 0 0 0 2 2h4" />
<path d="M15 18a3 3 0 1 0-6 0" />
<path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7z" />
<circle cx="12" cy="13" r="2" />
</svg>

After

Width:  |  Height:  |  Size: 392 B

24
icons/headphone-off.json Normal file
View File

@@ -0,0 +1,24 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"colebemis",
"csandman",
"ericfennis",
"jguddas",
"Need-an-AwP"
],
"tags": [
"music",
"audio",
"sound",
"mute",
"off"
],
"categories": [
"multimedia",
"connectivity",
"communication",
"devices",
"gaming"
]
}

17
icons/headphone-off.svg Normal file
View File

@@ -0,0 +1,17 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M21 14h-1.343" />
<path d="M9.128 3.47A9 9 0 0 1 21 12v3.343" />
<path d="m2 2 20 20" />
<path d="M20.414 20.414A2 2 0 0 1 19 21h-1a2 2 0 0 1-2-2v-3" />
<path d="M3 14h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-7a9 9 0 0 1 2.636-6.364" />
</svg>

After

Width:  |  Height:  |  Size: 472 B

View File

@@ -1,5 +1,8 @@
{
"$schema": "../icon.schema.json",
"deprecated": true,
"deprecationReason": "icon.brand",
"toBeRemovedInVersion": "v1.0",
"contributors": [
"okcoker",
"csandman",

View File

@@ -1,7 +1,8 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"danielbayley"
"danielbayley",
"jguddas"
],
"tags": [
"loading",

View File

@@ -9,7 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M2 12c0-2.8 2.2-5 5-5s5 2.2 5 5 2.2 5 5 5 5-2.2 5-5" />
<path d="M22 12a1 1 0 0 1-10 0 1 1 0 0 0-10 0" />
<path d="M7 20.7a1 1 0 1 1 5-8.7 1 1 0 1 0 5-8.6" />
<path d="M7 3.3a1 1 0 1 1 5 8.6 1 1 0 1 0 5 8.6" />
<circle cx="12" cy="12" r="10" />

Before

Width:  |  Height:  |  Size: 420 B

After

Width:  |  Height:  |  Size: 405 B

View File

@@ -0,0 +1,23 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"colebemis",
"csandman",
"ericfennis",
"jguddas"
],
"tags": [
"comment",
"chat",
"conversation",
"dialog",
"feedback",
"speech bubble",
"secure",
"encrypted"
],
"categories": [
"account",
"social"
]
}

View File

@@ -0,0 +1,15 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M19 15v-2a2 2 0 1 0-4 0v2" />
<path d="M9 17H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2v3.5" />
<rect x="13" y="15" width="8" height="5" rx="1" />
</svg>

After

Width:  |  Height:  |  Size: 367 B

View File

@@ -9,6 +9,6 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M14 9a2 2 0 0 1-2 2H6l-4 4V4c0-1.1.9-2 2-2h8a2 2 0 0 1 2 2z" />
<path d="M14 9a2 2 0 0 1-2 2H6l-4 4V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2z" />
<path d="M18 9h2a2 2 0 0 1 2 2v11l-4-4h-6a2 2 0 0 1-2-2v-1" />
</svg>

Before

Width:  |  Height:  |  Size: 348 B

After

Width:  |  Height:  |  Size: 348 B

View File

@@ -9,7 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<polyline points="5 11 5 5 11 5" />
<polyline points="19 13 19 19 13 19" />
<line x1="5" x2="19" y1="5" y2="19" />
<path d="M19 13v6h-6" />
<path d="M5 11V5h6" />
<path d="m5 5 14 14" />
</svg>

Before

Width:  |  Height:  |  Size: 329 B

After

Width:  |  Height:  |  Size: 286 B

View File

@@ -9,7 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<polyline points="13 5 19 5 19 11" />
<polyline points="11 19 5 19 5 13" />
<line x1="19" x2="5" y1="5" y2="19" />
<path d="M11 19H5v-6" />
<path d="M13 5h6v6" />
<path d="M19 5 5 19" />
</svg>

Before

Width:  |  Height:  |  Size: 329 B

After

Width:  |  Height:  |  Size: 286 B

View File

@@ -9,7 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<polyline points="18 8 22 12 18 16" />
<polyline points="6 8 2 12 6 16" />
<line x1="2" x2="22" y1="12" y2="12" />
<path d="m18 8 4 4-4 4" />
<path d="M2 12h20" />
<path d="m6 8-4 4 4 4" />
</svg>

Before

Width:  |  Height:  |  Size: 329 B

After

Width:  |  Height:  |  Size: 289 B

View File

@@ -9,7 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<polyline points="8 18 12 22 16 18" />
<polyline points="8 6 12 2 16 6" />
<line x1="12" x2="12" y1="2" y2="22" />
<path d="M12 2v20" />
<path d="m8 18 4 4 4-4" />
<path d="m8 6 4-4 4 4" />
</svg>

Before

Width:  |  Height:  |  Size: 329 B

After

Width:  |  Height:  |  Size: 289 B

View File

@@ -9,10 +9,10 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<polyline points="5 9 2 12 5 15" />
<polyline points="9 5 12 2 15 5" />
<polyline points="15 19 12 22 9 19" />
<polyline points="19 9 22 12 19 15" />
<line x1="2" x2="22" y1="12" y2="12" />
<line x1="12" x2="12" y1="2" y2="22" />
<path d="M12 2v20" />
<path d="m15 19-3 3-3-3" />
<path d="m19 9 3 3-3 3" />
<path d="M2 12h20" />
<path d="m5 9-3 3 3 3" />
<path d="m9 5 3-3 3 3" />
</svg>

Before

Width:  |  Height:  |  Size: 450 B

After

Width:  |  Height:  |  Size: 371 B

View File

@@ -1,7 +1,8 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"mittalyashu"
"mittalyashu",
"jguddas"
],
"tags": [
"music",

View File

@@ -11,5 +11,5 @@
>
<path d="M10 15V9" />
<path d="M14 15V9" />
<path d="M2.586 16.872A2 2 0 0 1 2 15.458V8.542a2 2 0 0 1 .586-1.414l4.542-4.542A2 2 0 0 1 8.542 2h6.916a2 2 0 0 1 1.414.586l4.542 4.542A2 2 0 0 1 22 8.542v6.916a2 2 0 0 1-.586 1.414l-4.542 4.542a2 2 0 0 1-1.414.586H8.542a2 2 0 0 1-1.414-.586z" />
<path d="M2.586 16.726A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2h6.624a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586z" />
</svg>

Before

Width:  |  Height:  |  Size: 506 B

After

Width:  |  Height:  |  Size: 506 B

View File

@@ -5,7 +5,8 @@
"csandman",
"ericfennis",
"karsa-mistmere",
"danielbayley"
"danielbayley",
"jguddas"
],
"tags": [
"box",

View File

@@ -9,8 +9,8 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="m7.5 4.27 9 5.15" />
<path d="M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z" />
<path d="m3.3 7 8.7 5 8.7-5" />
<path d="M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z" />
<path d="M12 22V12" />
<path d="m3.3 7 7.703 4.734a2 2 0 0 0 1.994 0L20.7 7" />
<path d="m7.5 4.27 9 5.15" />
</svg>

Before

Width:  |  Height:  |  Size: 433 B

After

Width:  |  Height:  |  Size: 460 B

View File

@@ -1,7 +1,8 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"danielbayley"
"danielbayley",
"jguddas"
],
"tags": [
"driving",

View File

@@ -9,9 +9,9 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M9 9a3 3 0 1 1 6 0" />
<path d="M12 12v3" />
<path d="M11 15h2" />
<path d="M19 9a7 7 0 1 0-13.6 2.3C6.4 14.4 8 19 8 19h8s1.6-4.6 2.6-7.7c.3-.8.4-1.5.4-2.3" />
<path d="M12 12v3" />
<path d="M12 19v3" />
<path d="M15.282 19a1 1 0 0 0 .948-.68l2.37-6.988a7 7 0 1 0-13.2 0l2.37 6.988a1 1 0 0 0 .948.68z" />
<path d="M9 9a3 3 0 1 1 6 0" />
</svg>

Before

Width:  |  Height:  |  Size: 409 B

After

Width:  |  Height:  |  Size: 417 B

View File

@@ -1,7 +1,8 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"kemie"
"kemie",
"jamiemlaw"
],
"tags": [
"food",

View File

@@ -9,8 +9,9 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M3 11v3a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1v-3" />
<path d="M12 19H4a1 1 0 0 1-1-1v-2a1 1 0 0 1 1-1h16a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-3.83" />
<path d="m3 11 7.77-6.04a2 2 0 0 1 2.46 0L21 11H3Z" />
<path d="M12.97 19.77 7 15h12.5l-3.75 4.5a2 2 0 0 1-2.78.27Z" />
<path d="m2.37 11.223 8.372-6.777a2 2 0 0 1 2.516 0l8.371 6.777" />
<path d="M21 15a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1h-5.25" />
<path d="M3 15a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h9" />
<path d="m6.67 15 6.13 4.6a2 2 0 0 0 2.8-.4l3.15-4.2" />
<rect width="20" height="4" x="2" y="11" rx="1" />
</svg>

Before

Width:  |  Height:  |  Size: 483 B

After

Width:  |  Height:  |  Size: 501 B

View File

@@ -4,7 +4,8 @@
"llaenowyd",
"mishkaio",
"ericfennis",
"karsa-mistmere"
"karsa-mistmere",
"chessurisme"
],
"tags": [
"selection",
@@ -12,10 +13,14 @@
"rectangular",
"marquee",
"tool",
"dashed"
"dashed",
"box"
],
"categories": [
"text",
"design"
],
"aliases": [
"box-select"
]
}

View File

Before

Width:  |  Height:  |  Size: 532 B

After

Width:  |  Height:  |  Size: 532 B

37
icons/volleyball.json Normal file
View File

@@ -0,0 +1,37 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"danielbayley",
"jguddas"
],
"tags": [
"beach",
"sand",
"net",
"holiday",
"vacation",
"summer",
"soccer",
"football",
"futbol",
"kick",
"pitch",
"goal",
"score",
"bounce",
"leather",
"wool",
"yarn",
"knitting",
"sewing",
"thread",
"embroidery",
"textile"
],
"categories": [
"sports",
"gaming",
"travel",
"home"
]
}

18
icons/volleyball.svg Normal file
View File

@@ -0,0 +1,18 @@
<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.1 7.1a16.55 16.55 0 0 1 10.9 4" />
<path d="M12 12a12.6 12.6 0 0 1-8.7 5" />
<path d="M16.8 13.6a16.55 16.55 0 0 1-9 7.5" />
<path d="M20.7 17a12.8 12.8 0 0 0-8.7-5 13.3 13.3 0 0 1 0-10" />
<path d="M6.3 3.8a16.55 16.55 0 0 0 1.9 11.5" />
<circle cx="12" cy="12" r="10" />
</svg>

After

Width:  |  Height:  |  Size: 506 B

View File

@@ -1,4 +1,5 @@
{
"name": "@lucide/monorepo",
"private": true,
"scripts": {
"build": "pnpm -r --filter './packages/**' build",

View File

@@ -50,7 +50,7 @@
"@testing-library/preact": "^3.2.3",
"jest-serializer-html": "^7.1.0",
"preact": "^10.19.2",
"rollup": "^4.9.2",
"rollup": "^4.22.4",
"rollup-plugin-dts": "^6.1.0",
"typescript": "^5.3.3",
"vite": "5.0.13",

View File

@@ -56,7 +56,7 @@
"react-dom": "^18.0.0",
"react-native": "^0.73.1",
"react-native-svg": "^15.0.0",
"rollup": "^4.9.2",
"rollup": "^4.22.4",
"rollup-plugin-dts": "^6.1.0",
"typescript": "^4.8.4",
"vite": "5.0.13",

View File

@@ -58,7 +58,7 @@
"jest-serializer-html": "^7.1.0",
"react": "18.2.0",
"react-dom": "18.2.0",
"rollup": "^4.9.2",
"rollup": "^4.22.4",
"rollup-plugin-dts": "^6.1.0",
"typescript": "^4.9.5",
"vite": "5.0.13",

View File

@@ -80,7 +80,7 @@
"@testing-library/jest-dom": "^6.4.2",
"babel-preset-solid": "^1.8.12",
"jest-serializer-html": "^7.1.0",
"rollup": "^4.9.2",
"rollup": "^4.22.4",
"solid-js": "^1.8.7",
"typescript": "^4.9.4",
"vite": "5.0.13",

View File

@@ -43,7 +43,7 @@
"@lucide/build-icons": "workspace:*",
"@lucide/rollup-plugins": "workspace:*",
"@lucide/helpers": "workspace:*",
"rollup": "^4.9.2",
"rollup": "^4.22.4",
"rollup-plugin-dts": "^6.1.0"
}
}

View File

@@ -52,7 +52,7 @@
"@testing-library/vue": "^8.0.3",
"@vitejs/plugin-vue": "^4.6.2",
"@vue/test-utils": "2.4.5",
"rollup": "^4.9.2",
"rollup": "^4.22.4",
"rollup-plugin-dts": "^6.1.0",
"vite": "5.0.13",
"vitest": "^1.4.0",

View File

@@ -47,7 +47,7 @@
"@rollup/plugin-replace": "^5.0.5",
"@testing-library/jest-dom": "^6.1.6",
"jest-serializer-html": "^7.1.0",
"rollup": "^4.9.2",
"rollup": "^4.22.4",
"rollup-plugin-dts": "^6.1.0",
"typescript": "^4.9.3",
"vite": "5.0.13",

View File

@@ -7,5 +7,12 @@
"types": "src/index.ts",
"type": "module",
"author": "",
"license": "ISC"
"license": "ISC",
"scripts": {
"test": "vitest run",
"test:watch": "vitest watch"
},
"devDependencies": {
"vitest": "^2.1.1"
}
}

View File

@@ -9,6 +9,17 @@ import { CamelToPascal } from './utility-types';
export const toKebabCase = (string: string) =>
string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();
/**
* Converts string to camel case
*
* @param {string} string
* @returns {string} A camelized string
*/
export const toCamelCase = <T extends string>(string: T) =>
string.replace(/^([A-Z])|[\s-_]+(\w)/g, (match, p1, p2) =>
p2 ? p2.toUpperCase() : p1.toLowerCase(),
);
/**
* Converts string to pascal case
*
@@ -16,9 +27,7 @@ export const toKebabCase = (string: string) =>
* @returns {string} A pascalized string
*/
export const toPascalCase = <T extends string>(string: T): CamelToPascal<T> => {
const camelCase = string.replace(/^([A-Z])|[\s-_]+(\w)/g, (match, p1, p2) =>
p2 ? p2.toUpperCase() : p1.toLowerCase(),
);
const camelCase = toCamelCase(string);
return (camelCase.charAt(0).toUpperCase() + camelCase.slice(1)) as CamelToPascal<T>;
};

View File

@@ -0,0 +1,21 @@
import { describe, it, expect } from 'vitest';
import { mergeClasses } from '../src/utils';
describe('mergeClasses', () => {
it('merges classes', async () => {
const classes = mergeClasses('lucide', 'lucide-circle', 'custom-class');
expect(classes).toBe('lucide lucide-circle custom-class');
});
it('ignores empty string', async () => {
const classes = mergeClasses('lucide', 'lucide-circle', '');
expect(classes).toBe('lucide lucide-circle');
});
it('ignores undefined', async () => {
const classes = mergeClasses('lucide', 'lucide-circle', undefined);
expect(classes).toBe('lucide lucide-circle');
});
it('removes duplicates', async () => {
const classes = mergeClasses('lucide', 'lucide-circle', 'lucide');
expect(classes).toBe('lucide lucide-circle');
});
});

531
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

6
release.config.mjs Normal file
View File

@@ -0,0 +1,6 @@
/**
* @type {import('semantic-release').GlobalConfig}
*/
export default {
branches: ['main', 'new-release-workflow'],
};

View File

@@ -82,7 +82,7 @@ const changeFilesDiffImageTags = getImageTagsByFiles(
(file) => {
const iconName = path.basename(file, '.svg');
return `${BASE_URL}/${iconName}`;
return `${BASE_URL}/diff/${iconName}`;
},
400,
).join(' ');
@@ -122,6 +122,7 @@ ${changeFilesLowDPIImageTags}<br/>
<summary>Icon X-rays</summary>
${changeFilesXRayImageTags}
</details>
<details>
<summary>Icon Diffs</summary>
${changeFilesDiffImageTags}
</details>

View File

@@ -12,7 +12,7 @@
"@rollup/plugin-node-resolve": "^15.2.3",
"@rollup/plugin-replace": "^5.0.5",
"esbuild": "^0.19.11",
"rollup": "^4.9.2",
"rollup": "^4.22.4",
"rollup-plugin-esbuild": "^6.1.0",
"rollup-plugin-license": "^3.2.0",
"rollup-plugin-visualizer": "^5.12.0"