Compare commits
44 Commits
fix/fixed-
...
0.483.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
70dad77b96 | ||
|
|
cc09030f9d | ||
|
|
73a6c8045d | ||
|
|
fccfaa3dd0 | ||
|
|
14fec0e184 | ||
|
|
fcebb5c4db | ||
|
|
1058ea5ae3 | ||
|
|
e08a1f7973 | ||
|
|
07f9d3ea79 | ||
|
|
73a2c9da6c | ||
|
|
afa4176737 | ||
|
|
cb86576661 | ||
|
|
9b738c1cb6 | ||
|
|
aefb710e5c | ||
|
|
df063fa378 | ||
|
|
2c3b6754d5 | ||
|
|
47303ac790 | ||
|
|
3aab3b9b08 | ||
|
|
3d29ab9279 | ||
|
|
e0fbbb6f2d | ||
|
|
c1331798f5 | ||
|
|
ddad14a96d | ||
|
|
a17609b5e4 | ||
|
|
e619963183 | ||
|
|
56948fe7c2 | ||
|
|
68116414d0 | ||
|
|
16a18f7908 | ||
|
|
ae8af191f7 | ||
|
|
1787b82cfe | ||
|
|
0e49b2b88c | ||
|
|
bab52d7333 | ||
|
|
c96260d82a | ||
|
|
3c23331e9e | ||
|
|
5a7c49dc55 | ||
|
|
6ae047557e | ||
|
|
fa064306fa | ||
|
|
4f46f43379 | ||
|
|
fc87643aae | ||
|
|
6f4f47684f | ||
|
|
c6632ce8d7 | ||
|
|
a59c5de61a | ||
|
|
2bd0ae55fd | ||
|
|
3f2ad5b2a6 | ||
|
|
1250fc276d |
44
.github/actions/build-and-test.yml
vendored
@@ -1,44 +0,0 @@
|
|||||||
name: 'Build and Test'
|
|
||||||
description: 'Builds and test a package'
|
|
||||||
|
|
||||||
inputs:
|
|
||||||
name:
|
|
||||||
description: “Name of the package”
|
|
||||||
required: true
|
|
||||||
|
|
||||||
runs:
|
|
||||||
using: 'composite'
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
- uses: actions/setup-node@v4
|
|
||||||
with:
|
|
||||||
node-version: 16
|
|
||||||
|
|
||||||
- uses: pnpm/action-setup@v2
|
|
||||||
name: Install pnpm
|
|
||||||
id: pnpm-install
|
|
||||||
with:
|
|
||||||
version: 8
|
|
||||||
run_install: false
|
|
||||||
|
|
||||||
- name: Get pnpm store directory
|
|
||||||
id: pnpm-cache
|
|
||||||
run: |
|
|
||||||
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
|
|
||||||
|
|
||||||
- uses: actions/cache@v3
|
|
||||||
name: Setup pnpm cache
|
|
||||||
with:
|
|
||||||
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
|
|
||||||
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-pnpm-store-
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: pnpm install --filter lucide-preact
|
|
||||||
|
|
||||||
- name: Build
|
|
||||||
run: pnpm --filter lucide-preact build
|
|
||||||
|
|
||||||
- name: Test
|
|
||||||
run: pnpm --filter lucide-preact test
|
|
||||||
41
.github/actions/check-icons.yml
vendored
@@ -1,41 +0,0 @@
|
|||||||
name: 'Check icons'
|
|
||||||
description: 'Cross-checks icon and category references in JSON descriptors'
|
|
||||||
|
|
||||||
inputs:
|
|
||||||
name:
|
|
||||||
description: “Name of the package”
|
|
||||||
required: true
|
|
||||||
|
|
||||||
runs:
|
|
||||||
using: 'composite'
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
- uses: actions/setup-node@v4
|
|
||||||
with:
|
|
||||||
node-version: 16
|
|
||||||
|
|
||||||
- uses: pnpm/action-setup@v2
|
|
||||||
name: Install pnpm
|
|
||||||
id: pnpm-install
|
|
||||||
with:
|
|
||||||
version: 8
|
|
||||||
run_install: false
|
|
||||||
|
|
||||||
- name: Get pnpm store directory
|
|
||||||
id: pnpm-cache
|
|
||||||
run: |
|
|
||||||
echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
|
|
||||||
|
|
||||||
- uses: actions/cache@v3
|
|
||||||
name: Setup pnpm cache
|
|
||||||
with:
|
|
||||||
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
|
|
||||||
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
|
|
||||||
restore-keys: |
|
|
||||||
${{ runner.os }}-pnpm-store-
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: pnpm install --filter .
|
|
||||||
|
|
||||||
- name: Check icons and categories
|
|
||||||
run: pnpm checkIcons
|
|
||||||
42
.github/workflows/ci.yml
vendored
@@ -9,18 +9,18 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
create-release:
|
create-release:
|
||||||
if: github.repository == 'lucide-icons/lucide'
|
if: github.repository == 'lucide-icons/lucide' && ${{ !startsWith(github.event.head_commit.message, 'fix(icons):') }}
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
outputs:
|
outputs:
|
||||||
VERSION: ${{ steps.new-version.outputs.NEW_VERSION }}
|
VERSION: ${{ steps.new-version.outputs.NEW_VERSION }}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: pnpm/action-setup@v2
|
- uses: pnpm/action-setup@v4
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 18
|
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
|
node-version-file: 'package.json'
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: pnpm install --frozen-lockfile
|
run: pnpm install --frozen-lockfile
|
||||||
@@ -61,8 +61,40 @@ jobs:
|
|||||||
uses: softprops/action-gh-release@v1
|
uses: softprops/action-gh-release@v1
|
||||||
with:
|
with:
|
||||||
tag_name: ${{ steps.new-version.outputs.NEW_VERSION }}
|
tag_name: ${{ steps.new-version.outputs.NEW_VERSION }}
|
||||||
name: New icons ${{ steps.new-version.outputs.NEW_VERSION }}
|
name: Version ${{ steps.new-version.outputs.NEW_VERSION }}
|
||||||
body: ${{ steps.change-log.outputs.CHANGE_LOG }}
|
generate_release_notes: true
|
||||||
|
|
||||||
|
test-semantic-release:
|
||||||
|
if: github.repository == 'lucide-icons/lucide'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Semantic Release
|
||||||
|
id: semantic
|
||||||
|
uses: cycjimmy/semantic-release-action@v4
|
||||||
|
with:
|
||||||
|
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
|
||||||
|
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Log output
|
||||||
|
if: steps.semantic.outputs.new_release_published == 'true'
|
||||||
|
run: |
|
||||||
|
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 }}
|
||||||
|
|
||||||
start-release:
|
start-release:
|
||||||
if: github.repository == 'lucide-icons/lucide'
|
if: github.repository == 'lucide-icons/lucide'
|
||||||
|
|||||||
@@ -11,12 +11,12 @@ jobs:
|
|||||||
issues: write
|
issues: write
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v3
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Check for blocked phrases in issue title
|
- name: Check for blocked phrases in issue title
|
||||||
run: |
|
run: |
|
||||||
ISSUE_TITLE=$(jq -r '.issue.title' "$GITHUB_EVENT_PATH")
|
ISSUE_TITLE=$(jq -r '.issue.title' "$GITHUB_EVENT_PATH")
|
||||||
BLOCKED_PHRASES=("twitter" "whatsapp" "logo" "google" "tiktok" "facebook" "slack" "discord" "bluesky")
|
BLOCKED_PHRASES=("twitter" "whatsapp" "logo" "google" "tiktok" "facebook" "slack" "discord" "bluesky" "spotify" "behance" "pix")
|
||||||
|
|
||||||
# Check title and body for blocked phrases
|
# Check title and body for blocked phrases
|
||||||
for PHRASE in "${BLOCKED_PHRASES[@]}"
|
for PHRASE in "${BLOCKED_PHRASES[@]}"
|
||||||
|
|||||||
58
.github/workflows/comment-icon-preview.yml
vendored
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
name: Icon preview comment
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_run:
|
||||||
|
workflows: ['Pull request icon preview']
|
||||||
|
types:
|
||||||
|
- completed
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
upload:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: >
|
||||||
|
github.event.workflow_run.event == 'pull_request' &&
|
||||||
|
github.event.workflow_run.conclusion == 'success'
|
||||||
|
steps:
|
||||||
|
- name: 'Download artifact'
|
||||||
|
uses: actions/github-script@v7
|
||||||
|
with:
|
||||||
|
script: |
|
||||||
|
let allArtifacts = await github.rest.actions.listWorkflowRunArtifacts({
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
run_id: context.payload.workflow_run.id,
|
||||||
|
});
|
||||||
|
let matchArtifact = allArtifacts.data.artifacts.filter((artifact) => {
|
||||||
|
return artifact.name == "pr_number"
|
||||||
|
})[0];
|
||||||
|
let download = await github.rest.actions.downloadArtifact({
|
||||||
|
owner: context.repo.owner,
|
||||||
|
repo: context.repo.repo,
|
||||||
|
artifact_id: matchArtifact.id,
|
||||||
|
archive_format: 'zip',
|
||||||
|
});
|
||||||
|
const fs = require('fs');
|
||||||
|
fs.writeFileSync('${{github.workspace}}/pr_number.zip', Buffer.from(download.data));
|
||||||
|
|
||||||
|
- name: 'Unzip artifact'
|
||||||
|
run: unzip pr_number.zip
|
||||||
|
|
||||||
|
- name: 'Get PR number'
|
||||||
|
run: echo "number=$(cat NR)" >> $GITHUB_OUTPUT
|
||||||
|
id: pr-number
|
||||||
|
|
||||||
|
- name: Find Comment
|
||||||
|
uses: peter-evans/find-comment@v2
|
||||||
|
id: pr-comment
|
||||||
|
with:
|
||||||
|
issue-number: ${{ steps.pr-number.outputs.number }}
|
||||||
|
comment-author: 'github-actions[bot]'
|
||||||
|
body-includes: Added or changed icons
|
||||||
|
|
||||||
|
- name: Create or update comment
|
||||||
|
uses: peter-evans/create-or-update-comment@v3
|
||||||
|
with:
|
||||||
|
comment-id: ${{ steps.pr-comment.outputs.comment-id }}
|
||||||
|
issue-number: ${{ steps.pr-number.outputs.number }}
|
||||||
|
body-path: comment-markup.md
|
||||||
|
edit-mode: replace
|
||||||
@@ -1,20 +1,18 @@
|
|||||||
name: Linting
|
name: Linting PR
|
||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
|
||||||
- '**'
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
linting:
|
lint-code:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: pnpm/action-setup@v2
|
- uses: pnpm/action-setup@v4
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 18
|
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
|
node-version-file: 'package.json'
|
||||||
|
|
||||||
- name: Install Dependencies
|
- name: Install Dependencies
|
||||||
run: pnpm install --frozen-lockfile
|
run: pnpm install --frozen-lockfile
|
||||||
32
.github/workflows/lint-pr-title.yml
vendored
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
name: Linting PR
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
types:
|
||||||
|
- opened
|
||||||
|
- edited
|
||||||
|
- synchronize
|
||||||
|
- reopened
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
lint-pr-title:
|
||||||
|
name: PR Title Lint
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: amannn/action-semantic-pull-request@v5
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
with:
|
||||||
|
types: |
|
||||||
|
fix
|
||||||
|
feat
|
||||||
|
perf
|
||||||
|
refactor
|
||||||
|
test
|
||||||
|
style
|
||||||
|
docs
|
||||||
|
ci
|
||||||
|
build
|
||||||
|
requireScope: true
|
||||||
|
ignoreLabels: |
|
||||||
|
bot
|
||||||
@@ -1,58 +1,57 @@
|
|||||||
name: Add Changed Icons comment
|
name: Linting Icons
|
||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request_target:
|
pull_request:
|
||||||
paths:
|
paths:
|
||||||
- 'icons/*'
|
- 'icons/*'
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
- fix-icon-preview
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
lint-filenames:
|
lint-filenames:
|
||||||
|
name: Lint Filenames
|
||||||
if: github.repository == 'lucide-icons/lucide'
|
if: github.repository == 'lucide-icons/lucide'
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
ref: refs/pull/${{ github.event.pull_request.number }}/merge
|
|
||||||
- name: Get changed files
|
- name: Get changed files
|
||||||
id: changed-files
|
id: changed-files
|
||||||
uses: tj-actions/changed-files@v41
|
uses: tj-actions/changed-files@v41
|
||||||
with:
|
with:
|
||||||
files: icons/*
|
files: icons/*
|
||||||
|
|
||||||
- name: Generate annotations
|
- name: Generate annotations
|
||||||
run: node ./scripts/lintFilenames.mjs
|
run: node ./scripts/lintFilenames.mjs
|
||||||
env:
|
env:
|
||||||
CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
|
CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
|
||||||
|
|
||||||
lint-contributors:
|
lint-contributors:
|
||||||
|
name: Lint Contributors
|
||||||
if: github.repository == 'lucide-icons/lucide'
|
if: github.repository == 'lucide-icons/lucide'
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
permissions:
|
permissions:
|
||||||
contents: read
|
contents: read
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
ref: refs/pull/${{ github.event.pull_request.number }}/merge
|
|
||||||
- name: Get changed files
|
- name: Get changed files
|
||||||
id: changed-files
|
id: changed-files
|
||||||
uses: tj-actions/changed-files@v41
|
uses: tj-actions/changed-files@v41
|
||||||
with:
|
with:
|
||||||
files: icons/*
|
files: icons/*
|
||||||
|
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version-file: 'package.json'
|
||||||
- name: Install simple-git (safer and faster than installing all deps)
|
- name: Install simple-git (safer and faster than installing all deps)
|
||||||
run: npm install simple-git
|
run: npm install simple-git
|
||||||
|
|
||||||
- name: Generate annotations
|
- name: Generate annotations
|
||||||
run: node ./scripts/updateContributors.mjs
|
run: node ./scripts/updateContributors.mjs
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
FETCH_DEPTH: ${{ github.event.pull_request.commits }}
|
FETCH_DEPTH: ${{ github.event.pull_request.commits }}
|
||||||
CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
|
CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
|
||||||
|
|
||||||
- name: Generate annotations
|
- name: Generate annotations
|
||||||
env:
|
env:
|
||||||
ANNOTATION_SEVERITY: notice
|
ANNOTATION_SEVERITY: notice
|
||||||
@@ -77,47 +76,3 @@ jobs:
|
|||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- name: Check Uniqueness of Aliases
|
- name: Check Uniqueness of Aliases
|
||||||
run: "! cat <(printf \"%s\\n\" icons/*.json | while read -r name; do basename \"$name\" .json; done) <(jq -cr 'select(.aliases) | .aliases[] | if type==\"string\" then . else .name end' icons/*.json) | sort | uniq -c | grep -ve '^\\s*1 '"
|
run: "! cat <(printf \"%s\\n\" icons/*.json | while read -r name; do basename \"$name\" .json; done) <(jq -cr 'select(.aliases) | .aliases[] | if type==\"string\" then . else .name end' icons/*.json) | sort | uniq -c | grep -ve '^\\s*1 '"
|
||||||
|
|
||||||
generate-changed-icons-comment:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
pull-requests: write
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
fetch-depth: 0
|
|
||||||
ref: refs/pull/${{ github.event.pull_request.number }}/merge
|
|
||||||
|
|
||||||
- name: Get changed files
|
|
||||||
id: changed-files
|
|
||||||
uses: tj-actions/changed-files@v41
|
|
||||||
with:
|
|
||||||
files: icons/*.svg
|
|
||||||
|
|
||||||
- name: Find Comment
|
|
||||||
uses: peter-evans/find-comment@v2
|
|
||||||
id: pr-comment
|
|
||||||
with:
|
|
||||||
issue-number: ${{ github.event.pull_request.number }}
|
|
||||||
comment-author: 'github-actions[bot]'
|
|
||||||
body-includes: Added or changed icons
|
|
||||||
|
|
||||||
- uses: actions/setup-node@v4
|
|
||||||
- name: Install svgson for code preview (safer and faster than installing all deps)
|
|
||||||
run: npm install svgson
|
|
||||||
|
|
||||||
- name: Generate comment markup
|
|
||||||
run: node ./scripts/generateChangedIconsCommentMarkup.mjs >> comment-markup.md
|
|
||||||
id: comment-markup
|
|
||||||
env:
|
|
||||||
CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
|
|
||||||
|
|
||||||
- name: Create or update comment
|
|
||||||
uses: peter-evans/create-or-update-comment@v3
|
|
||||||
with:
|
|
||||||
comment-id: ${{ steps.pr-comment.outputs.comment-id }}
|
|
||||||
issue-number: ${{ github.event.pull_request.number }}
|
|
||||||
body-path: ./comment-markup.md
|
|
||||||
edit-mode: replace
|
|
||||||
12
.github/workflows/lucide-angular.yml
vendored
@@ -12,11 +12,11 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: pnpm/action-setup@v2
|
- uses: pnpm/action-setup@v4
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 18
|
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
|
node-version-file: 'package.json'
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: pnpm install --frozen-lockfile
|
run: pnpm install --frozen-lockfile
|
||||||
@@ -27,12 +27,12 @@ jobs:
|
|||||||
test:
|
test:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
- uses: pnpm/action-setup@v2
|
- uses: pnpm/action-setup@v4
|
||||||
- uses: actions/setup-node@v3.8.1
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 18
|
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
|
node-version-file: 'package.json'
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: pnpm install --frozen-lockfile
|
run: pnpm install --frozen-lockfile
|
||||||
|
|||||||
6
.github/workflows/lucide-font.yml
vendored
@@ -12,11 +12,11 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: pnpm/action-setup@v2
|
- uses: pnpm/action-setup@v4
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 18
|
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
|
node-version-file: 'package.json'
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: pnpm install --frozen-lockfile
|
run: pnpm install --frozen-lockfile
|
||||||
@@ -28,7 +28,7 @@ jobs:
|
|||||||
run: pnpm build:font
|
run: pnpm build:font
|
||||||
|
|
||||||
- name: 'Upload to Artifacts'
|
- name: 'Upload to Artifacts'
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: lucide-font
|
name: lucide-font
|
||||||
path: lucide-font
|
path: lucide-font
|
||||||
|
|||||||
4
.github/workflows/lucide-preact.yml
vendored
@@ -14,11 +14,11 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: pnpm/action-setup@v2
|
- uses: pnpm/action-setup@v4
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 18
|
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
|
node-version-file: 'package.json'
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: pnpm install --frozen-lockfile
|
run: pnpm install --frozen-lockfile
|
||||||
|
|||||||
22
.github/workflows/lucide-react-native.yml
vendored
@@ -10,15 +10,31 @@ on:
|
|||||||
- pnpm-lock.yaml
|
- pnpm-lock.yaml
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
lucide-react-native:
|
build:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: pnpm/action-setup@v2
|
- uses: pnpm/action-setup@v4
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 18
|
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
|
node-version-file: 'package.json'
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: pnpm --filter lucide-react-native build
|
||||||
|
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- uses: pnpm/action-setup@v4
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
cache: 'pnpm'
|
||||||
|
node-version-file: 'package.json'
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: pnpm install --frozen-lockfile
|
run: pnpm install --frozen-lockfile
|
||||||
|
|||||||
12
.github/workflows/lucide-react.yml
vendored
@@ -15,11 +15,11 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: pnpm/action-setup@v2
|
- uses: pnpm/action-setup@v4
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 18
|
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
|
node-version-file: 'package.json'
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: pnpm install --frozen-lockfile
|
run: pnpm install --frozen-lockfile
|
||||||
@@ -30,12 +30,12 @@ jobs:
|
|||||||
test:
|
test:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
- uses: pnpm/action-setup@v2
|
- uses: pnpm/action-setup@v4
|
||||||
- uses: actions/setup-node@v3.8.1
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 18
|
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
|
node-version-file: 'package.json'
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: pnpm install --frozen-lockfile
|
run: pnpm install --frozen-lockfile
|
||||||
|
|||||||
8
.github/workflows/lucide-shared.yml
vendored
@@ -10,12 +10,12 @@ jobs:
|
|||||||
test:
|
test:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
- uses: pnpm/action-setup@v2
|
- uses: pnpm/action-setup@v4
|
||||||
- uses: actions/setup-node@v3.8.1
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 18
|
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
|
node-version-file: 'package.json'
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: pnpm install --frozen-lockfile
|
run: pnpm install --frozen-lockfile
|
||||||
|
|||||||
12
.github/workflows/lucide-solid.yml
vendored
@@ -14,11 +14,11 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: pnpm/action-setup@v2
|
- uses: pnpm/action-setup@v4
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 18
|
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
|
node-version-file: 'package.json'
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: pnpm install --frozen-lockfile
|
run: pnpm install --frozen-lockfile
|
||||||
@@ -29,12 +29,12 @@ jobs:
|
|||||||
test:
|
test:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
- uses: pnpm/action-setup@v2
|
- uses: pnpm/action-setup@v4
|
||||||
- uses: actions/setup-node@v3.8.1
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 18
|
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
|
node-version-file: 'package.json'
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: pnpm install --frozen-lockfile
|
run: pnpm install --frozen-lockfile
|
||||||
|
|||||||
4
.github/workflows/lucide-static.yml
vendored
@@ -12,11 +12,11 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: pnpm/action-setup@v2
|
- uses: pnpm/action-setup@v4
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 18
|
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
|
node-version-file: 'package.json'
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: pnpm install --frozen-lockfile
|
run: pnpm install --frozen-lockfile
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
name: Lucide Vue checks
|
name: Lucide Svelte 5 checks
|
||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request:
|
||||||
paths:
|
paths:
|
||||||
- packages/lucide-vue/**
|
- packages/svelte/**
|
||||||
- packages/shared/**
|
- packages/shared/**
|
||||||
- tools/build-icons/**
|
- tools/build-icons/**
|
||||||
- tools/rollup-plugins/**
|
- tools/rollup-plugins/**
|
||||||
@@ -14,30 +14,30 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: pnpm/action-setup@v2
|
- uses: pnpm/action-setup@v4
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 18
|
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
|
node-version-file: 'package.json'
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: pnpm install --frozen-lockfile
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
run: pnpm --filter lucide-vue build
|
run: pnpm --filter @lucide/svelte build
|
||||||
|
|
||||||
test:
|
test:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
- uses: pnpm/action-setup@v2
|
- uses: pnpm/action-setup@v4
|
||||||
- uses: actions/setup-node@v3.8.1
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 18
|
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
|
node-version-file: 'package.json'
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: pnpm install --frozen-lockfile
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
- name: Test
|
- name: Test
|
||||||
run: pnpm --filter lucide-vue test
|
run: pnpm --filter @lucide/svelte test
|
||||||
12
.github/workflows/lucide-svelte.yml
vendored
@@ -14,11 +14,11 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: pnpm/action-setup@v2
|
- uses: pnpm/action-setup@v4
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 18
|
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
|
node-version-file: 'package.json'
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: pnpm install --frozen-lockfile
|
run: pnpm install --frozen-lockfile
|
||||||
@@ -29,12 +29,12 @@ jobs:
|
|||||||
test:
|
test:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
- uses: pnpm/action-setup@v2
|
- uses: pnpm/action-setup@v4
|
||||||
- uses: actions/setup-node@v3.8.1
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 18
|
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
|
node-version-file: 'package.json'
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: pnpm install --frozen-lockfile
|
run: pnpm install --frozen-lockfile
|
||||||
|
|||||||
12
.github/workflows/lucide-vue-next.yml
vendored
@@ -14,11 +14,11 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: pnpm/action-setup@v2
|
- uses: pnpm/action-setup@v4
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 18
|
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
|
node-version-file: 'package.json'
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: pnpm install --frozen-lockfile
|
run: pnpm install --frozen-lockfile
|
||||||
@@ -29,12 +29,12 @@ jobs:
|
|||||||
test:
|
test:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
- uses: pnpm/action-setup@v2
|
- uses: pnpm/action-setup@v4
|
||||||
- uses: actions/setup-node@v3.8.1
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 18
|
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
|
node-version-file: 'package.json'
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: pnpm install --frozen-lockfile
|
run: pnpm install --frozen-lockfile
|
||||||
|
|||||||
12
.github/workflows/lucide.yml
vendored
@@ -13,11 +13,11 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: pnpm/action-setup@v2
|
- uses: pnpm/action-setup@v4
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 18
|
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
|
node-version-file: 'package.json'
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: pnpm install --frozen-lockfile
|
run: pnpm install --frozen-lockfile
|
||||||
@@ -28,12 +28,12 @@ jobs:
|
|||||||
test:
|
test:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v4
|
||||||
- uses: pnpm/action-setup@v2
|
- uses: pnpm/action-setup@v4
|
||||||
- uses: actions/setup-node@v3.8.1
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 18
|
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
|
node-version-file: 'package.json'
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: pnpm install --frozen-lockfile
|
run: pnpm install --frozen-lockfile
|
||||||
|
|||||||
43
.github/workflows/pull-request-icon-preview.yml
vendored
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
name: Pull request icon preview
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- 'icons/*.svg'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
generate-changed-icons-comment:
|
||||||
|
name: Generate Changed Icons Comment
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
pull-requests: write
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Get changed files
|
||||||
|
id: changed-files
|
||||||
|
uses: tj-actions/changed-files@v41
|
||||||
|
with:
|
||||||
|
files: icons/*.svg
|
||||||
|
|
||||||
|
- uses: actions/setup-node@v4
|
||||||
|
- name: Install svgson for code preview (safer and faster than installing all deps)
|
||||||
|
run: npm install svgson
|
||||||
|
|
||||||
|
- name: Save PR number
|
||||||
|
run: |
|
||||||
|
mkdir -p ./pr
|
||||||
|
echo ${{ github.event.number }} > ./pr/NR
|
||||||
|
|
||||||
|
- name: Generate comment markup
|
||||||
|
run: node ./scripts/generateChangedIconsCommentMarkup.mjs >> ./pr/comment-markup.md
|
||||||
|
id: comment-markup
|
||||||
|
env:
|
||||||
|
CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
|
||||||
|
|
||||||
|
- uses: actions/upload-artifact@v4
|
||||||
|
with:
|
||||||
|
name: pr_number
|
||||||
|
path: pr/
|
||||||
21
.github/workflows/release.yml
vendored
@@ -52,14 +52,15 @@ jobs:
|
|||||||
'lucide-preact',
|
'lucide-preact',
|
||||||
'lucide-solid',
|
'lucide-solid',
|
||||||
'lucide-svelte',
|
'lucide-svelte',
|
||||||
|
'@lucide/svelte',
|
||||||
]
|
]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: pnpm/action-setup@v2
|
- uses: pnpm/action-setup@v4
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 18
|
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
|
node-version-file: 'package.json'
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: pnpm install --frozen-lockfile
|
run: pnpm install --frozen-lockfile
|
||||||
@@ -85,12 +86,12 @@ jobs:
|
|||||||
needs: [pre-release, lucide-font]
|
needs: [pre-release, lucide-font]
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: actions/download-artifact@v3
|
- uses: actions/download-artifact@v4
|
||||||
- uses: pnpm/action-setup@v2
|
- uses: pnpm/action-setup@v4
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 18
|
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
|
node-version-file: 'package.json'
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: pnpm install --frozen-lockfile
|
run: pnpm install --frozen-lockfile
|
||||||
@@ -116,11 +117,11 @@ jobs:
|
|||||||
needs: pre-release
|
needs: pre-release
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: pnpm/action-setup@v2
|
- uses: pnpm/action-setup@v4
|
||||||
- uses: actions/setup-node@v4
|
- uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 18
|
|
||||||
cache: 'pnpm'
|
cache: 'pnpm'
|
||||||
|
node-version-file: 'package.json'
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: pnpm install --frozen-lockfile
|
run: pnpm install --frozen-lockfile
|
||||||
@@ -132,7 +133,7 @@ jobs:
|
|||||||
run: pnpm build:font
|
run: pnpm build:font
|
||||||
|
|
||||||
- name: 'Upload to Artifacts'
|
- name: 'Upload to Artifacts'
|
||||||
uses: actions/upload-artifact@v3
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: lucide-font
|
name: lucide-font
|
||||||
path: lucide-font
|
path: lucide-font
|
||||||
@@ -144,14 +145,14 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
- uses: actions/download-artifact@v3
|
- uses: actions/download-artifact@v4
|
||||||
- name: Zip font and icons
|
- name: Zip font and icons
|
||||||
run: |
|
run: |
|
||||||
zip -r lucide-font-${{ needs.pre-release.outputs.VERSION }}.zip lucide-font
|
zip -r lucide-font-${{ needs.pre-release.outputs.VERSION }}.zip lucide-font
|
||||||
zip -r lucide-icons-${{ needs.pre-release.outputs.VERSION }}.zip icons
|
zip -r lucide-icons-${{ needs.pre-release.outputs.VERSION }}.zip icons
|
||||||
|
|
||||||
- name: Release zip and fonts
|
- name: Release zip and fonts
|
||||||
uses: softprops/action-gh-release@v1
|
uses: softprops/action-gh-release@v2
|
||||||
with:
|
with:
|
||||||
tag_name: ${{ needs.pre-release.outputs.VERSION }}
|
tag_name: ${{ needs.pre-release.outputs.VERSION }}
|
||||||
files: |
|
files: |
|
||||||
|
|||||||
@@ -77,7 +77,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.
|
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).
|
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
|
### Generated Code
|
||||||
|
|
||||||
@@ -165,13 +165,13 @@ Detailed documentation about: installation, guides, packages, design guides etc.
|
|||||||
|
|
||||||
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.
|
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.
|
> Note: One package is not managed by pnpm: **lucide-flutter**, this package is written in Dart and uses 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 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.
|
||||||
|
|
||||||
@@ -190,4 +190,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!
|
Thank you to all the people who already contributed to Lucide!
|
||||||
|
|
||||||
<a href="https://github.com/lucide-icons/lucide/graphs/contributors">
|
<a href="https://github.com/lucide-icons/lucide/graphs/contributors">
|
||||||
<img src="https://opencollective.com/lucide-icons/contributors.svg?width=890" /></a>
|
<img src="https://opencollective.com/lucide-icons/contributors.svg?width=800" /></a>
|
||||||
|
|||||||
@@ -69,7 +69,9 @@ Lucide is totally free for commercial use and personal use, this software is lic
|
|||||||
Thank you to all the people who contributed to Lucide!
|
Thank you to all the people who contributed to Lucide!
|
||||||
|
|
||||||
<a href="https://github.com/lucide-icons/lucide/graphs/contributors">
|
<a href="https://github.com/lucide-icons/lucide/graphs/contributors">
|
||||||
<img src="https://opencollective.com/lucide-icons/contributors.svg?width=890" /></a>
|
|
||||||
|
<img src="https://opencollective.com/lucide-icons/contributors.svg?width=800" />
|
||||||
|
</a>
|
||||||
|
|
||||||
## Sponsors
|
## Sponsors
|
||||||
|
|
||||||
|
|||||||
@@ -38,6 +38,7 @@ const value = computed({
|
|||||||
<Input
|
<Input
|
||||||
ref="input"
|
ref="input"
|
||||||
type="search"
|
type="search"
|
||||||
|
autofocus
|
||||||
v-bind="$attrs"
|
v-bind="$attrs"
|
||||||
v-model="value"
|
v-model="value"
|
||||||
class="input-wrapper"
|
class="input-wrapper"
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ import {useData, useRouter} from 'vitepress';
|
|||||||
import { computed } from 'vue';
|
import { computed } from 'vue';
|
||||||
import createLucideIcon from 'lucide-vue-next/src/createLucideIcon';
|
import createLucideIcon from 'lucide-vue-next/src/createLucideIcon';
|
||||||
import { diamond } from '../../../data/iconNodes'
|
import { diamond } from '../../../data/iconNodes'
|
||||||
|
import deprecationReasonTemplate from '../../../../../tools/build-icons/utils/deprecationReasonTemplate.mjs';
|
||||||
|
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
icon: IconEntity
|
icon: IconEntity
|
||||||
@@ -24,6 +26,15 @@ const tags = computed(() => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
const DiamondIcon = createLucideIcon('Diamond', diamond)
|
const DiamondIcon = createLucideIcon('Diamond', diamond)
|
||||||
|
|
||||||
|
const deprecatedTitle = computed(() => {
|
||||||
|
if (!props.icon.deprecationReason) return '';
|
||||||
|
return deprecationReasonTemplate(props.icon.deprecationReason, {
|
||||||
|
componentName: props.icon.name,
|
||||||
|
iconName: props.icon.name,
|
||||||
|
toBeRemovedInVersion: props.icon.toBeRemovedInVersion,
|
||||||
|
});
|
||||||
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
@@ -36,6 +47,13 @@ const DiamondIcon = createLucideIcon('Diamond', diamond)
|
|||||||
<DiamondIcon fill="currentColor" :size="12"/>
|
<DiamondIcon fill="currentColor" :size="12"/>
|
||||||
{{ icon.externalLibrary }}
|
{{ icon.externalLibrary }}
|
||||||
</div>
|
</div>
|
||||||
|
<Badge
|
||||||
|
v-if="icon.deprecated"
|
||||||
|
class="deprecated-badge"
|
||||||
|
:title="deprecatedTitle"
|
||||||
|
>
|
||||||
|
Deprecated
|
||||||
|
</Badge>
|
||||||
</div>
|
</div>
|
||||||
<div class="tags-scroller" v-if="tags.length">
|
<div class="tags-scroller" v-if="tags.length">
|
||||||
<p class="icon-tags horizontal-scroller">
|
<p class="icon-tags horizontal-scroller">
|
||||||
@@ -98,6 +116,16 @@ const DiamondIcon = createLucideIcon('Diamond', diamond)
|
|||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.deprecated-badge {
|
||||||
|
background-color: var(--vp-c-brand-5);
|
||||||
|
margin-left: 40px;
|
||||||
|
opacity: .8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.deprecated-badge:hover {
|
||||||
|
background-color: var(--vp-c-brand-2);
|
||||||
|
}
|
||||||
|
|
||||||
.icon-tags {
|
.icon-tags {
|
||||||
font-size: 16px;
|
font-size: 16px;
|
||||||
color: var(--vp-c-text-2);
|
color: var(--vp-c-text-2);
|
||||||
|
|||||||
@@ -6,6 +6,9 @@ export interface IconMetaData {
|
|||||||
categories: string[];
|
categories: string[];
|
||||||
contributors: string[];
|
contributors: string[];
|
||||||
aliases?: string[];
|
aliases?: string[];
|
||||||
|
deprecated?: boolean;
|
||||||
|
deprecationReason?: string;
|
||||||
|
toBeRemovedInVersion?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export type ExternalLibs = 'lab';
|
export type ExternalLibs = 'lab';
|
||||||
|
|||||||
@@ -7,22 +7,22 @@ Implementation of the lucide icon library for svelte applications.
|
|||||||
::: code-group
|
::: code-group
|
||||||
|
|
||||||
```sh [pnpm]
|
```sh [pnpm]
|
||||||
pnpm add lucide-svelte
|
pnpm add @lucide/svelte
|
||||||
```
|
```
|
||||||
|
|
||||||
```sh [yarn]
|
```sh [yarn]
|
||||||
yarn add lucide-svelte
|
yarn add @lucide/svelte
|
||||||
```
|
```
|
||||||
|
|
||||||
```sh [npm]
|
```sh [npm]
|
||||||
npm install lucide-svelte
|
npm install @lucide/svelte
|
||||||
```
|
```
|
||||||
|
|
||||||
```sh [bun]
|
```sh [bun]
|
||||||
bun add lucide-svelte
|
bun add @lucide/svelte
|
||||||
```
|
```
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
> `@lucide/svelte` is only for Svelte 5, for Svelte 4 use the `lucide-svelte` package.
|
||||||
|
|
||||||
## How to use
|
## How to use
|
||||||
|
|
||||||
@@ -36,7 +36,7 @@ Default usage:
|
|||||||
|
|
||||||
```svelte
|
```svelte
|
||||||
<script>
|
<script>
|
||||||
import { Skull } from 'lucide-svelte';
|
import { Skull } from '@lucide/svelte';
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<Skull />
|
<Skull />
|
||||||
@@ -46,17 +46,17 @@ Additional props can be passed to adjust the icon:
|
|||||||
|
|
||||||
```svelte
|
```svelte
|
||||||
<script>
|
<script>
|
||||||
import { Camera } from 'lucide-svelte';
|
import { Camera } from '@lucide/svelte';
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<Camera color="#ff3e98" />
|
<Camera color="#ff3e98" />
|
||||||
```
|
```
|
||||||
|
|
||||||
For faster builds and load times, you can import icons directly from the `lucide-svelte/icons` directory:
|
For faster builds and load times, you can import icons directly from the `@lucide/svelte/icons` directory:
|
||||||
|
|
||||||
```svelte
|
```svelte
|
||||||
<script>
|
<script>
|
||||||
import CircleAlert from 'lucide-svelte/icons/circle-alert';
|
import CircleAlert from '@lucide/svelte/icons/circle-alert';
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<CircleAlert color="#ff3e98" />
|
<CircleAlert color="#ff3e98" />
|
||||||
@@ -77,7 +77,7 @@ To customize the appearance of an icon, you can pass custom properties as props
|
|||||||
|
|
||||||
```svelte
|
```svelte
|
||||||
<script>
|
<script>
|
||||||
import { Phone } from 'lucide-svelte';
|
import { Phone } from '@lucide/svelte';
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<Phone fill="#333" />
|
<Phone fill="#333" />
|
||||||
@@ -91,53 +91,11 @@ The package includes type definitions for all icons. This is useful if you want
|
|||||||
|
|
||||||
### TypeScript Example
|
### TypeScript Example
|
||||||
|
|
||||||
#### Svelte 4
|
::: code-group
|
||||||
|
|
||||||
```svelte
|
```svelte [Svelte 5]
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { Home, Library, Cog, type Icon } from 'lucide-svelte';
|
import { Home, Library, Cog, type Icon as IconType } from '@lucide/svelte';
|
||||||
import type { ComponentType } from 'svelte';
|
|
||||||
|
|
||||||
type MenuItem = {
|
|
||||||
name: string;
|
|
||||||
href: string;
|
|
||||||
icon: ComponentType<Icon>;
|
|
||||||
};
|
|
||||||
|
|
||||||
const menuItems: MenuItem[] = [
|
|
||||||
{
|
|
||||||
name: 'Home',
|
|
||||||
href: '/',
|
|
||||||
icon: Home
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'Blog',
|
|
||||||
href: '/blog',
|
|
||||||
icon: Library
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'Projects',
|
|
||||||
href: '/projects',
|
|
||||||
icon: Cog
|
|
||||||
}
|
|
||||||
];
|
|
||||||
</script>
|
|
||||||
|
|
||||||
{#each menuItems as item}
|
|
||||||
<a href={item.href}>
|
|
||||||
<svelte:component this={item.icon} />
|
|
||||||
<span>{item.name}</span>
|
|
||||||
</a>
|
|
||||||
{/each}
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
#### Svelte 5
|
|
||||||
Some changes are required since Svelte 5 [deprecates](https://svelte.dev/docs/svelte/v5-migration-guide#Components-are-no-longer-classes-Component-typing-changes) the `ComponentType` typescript type.
|
|
||||||
|
|
||||||
```svelte
|
|
||||||
<script lang="ts">
|
|
||||||
import { Home, Library, Cog, type Icon as IconType } from 'lucide-svelte';
|
|
||||||
|
|
||||||
type MenuItem = {
|
type MenuItem = {
|
||||||
name: string;
|
name: string;
|
||||||
@@ -173,19 +131,98 @@ Some changes are required since Svelte 5 [deprecates](https://svelte.dev/docs/sv
|
|||||||
{/each}
|
{/each}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```svelte [Svelte 4]
|
||||||
|
<script lang="ts">
|
||||||
|
import { Home, Library, Cog, type Icon } from '@lucide/svelte';
|
||||||
|
import type { ComponentType } from 'svelte';
|
||||||
|
|
||||||
|
type MenuItem = {
|
||||||
|
name: string;
|
||||||
|
href: string;
|
||||||
|
icon: ComponentType<Icon>;
|
||||||
|
};
|
||||||
|
|
||||||
|
const menuItems: MenuItem[] = [
|
||||||
|
{
|
||||||
|
name: 'Home',
|
||||||
|
href: '/',
|
||||||
|
icon: Home
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Blog',
|
||||||
|
href: '/blog',
|
||||||
|
icon: Library
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Projects',
|
||||||
|
href: '/projects',
|
||||||
|
icon: Cog
|
||||||
|
}
|
||||||
|
];
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{#each menuItems as item}
|
||||||
|
<a href={item.href}>
|
||||||
|
<svelte:component this={item.icon} />
|
||||||
|
<span>{item.name}</span>
|
||||||
|
</a>
|
||||||
|
{/each}
|
||||||
|
```
|
||||||
|
:::
|
||||||
|
|
||||||
### JSDoc Example
|
### JSDoc Example
|
||||||
|
|
||||||
#### Svelte 4
|
::: code-group
|
||||||
|
|
||||||
```svelte
|
```svelte [Svelte 5]
|
||||||
<script>
|
<script>
|
||||||
import { Home, Library, Cog } from 'lucide-svelte';
|
import { Home, Library, Cog } from '@lucide/svelte';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @typedef {Object} MenuItem
|
* @typedef {Object} MenuItem
|
||||||
* @property {string} name
|
* @property {string} name
|
||||||
* @property {string} href
|
* @property {string} href
|
||||||
* @property {import('svelte').ComponentType<import('lucide-svelte').Icon>} icon
|
* @property {typeof import('@lucide/svelte').Icon} icon
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** @type {MenuItem[]} */
|
||||||
|
const menuItems = [
|
||||||
|
{
|
||||||
|
name: 'Home',
|
||||||
|
href: '/',
|
||||||
|
icon: Home
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Blog',
|
||||||
|
href: '/blog',
|
||||||
|
icon: Library
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Projects',
|
||||||
|
href: '/projects',
|
||||||
|
icon: Cog
|
||||||
|
}
|
||||||
|
];
|
||||||
|
</script>
|
||||||
|
|
||||||
|
{#each menuItems as item}
|
||||||
|
{@const Icon = item.icon}
|
||||||
|
<a href={item.href}>
|
||||||
|
<Icon />
|
||||||
|
<span>{item.name}</span>
|
||||||
|
</a>
|
||||||
|
{/each}
|
||||||
|
```
|
||||||
|
|
||||||
|
```svelte [Svelte 4]
|
||||||
|
<script>
|
||||||
|
import { Home, Library, Cog } from '@lucide/svelte';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @typedef {Object} MenuItem
|
||||||
|
* @property {string} name
|
||||||
|
* @property {string} href
|
||||||
|
* @property {import('svelte').ComponentType<import('@lucide/svelte').Icon>} icon
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** @type {MenuItem[]} */
|
/** @type {MenuItem[]} */
|
||||||
@@ -216,49 +253,7 @@ Some changes are required since Svelte 5 [deprecates](https://svelte.dev/docs/sv
|
|||||||
{/each}
|
{/each}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
:::
|
||||||
#### Svelte 5
|
|
||||||
|
|
||||||
```svelte
|
|
||||||
<script>
|
|
||||||
import { Home, Library, Cog } from 'lucide-svelte';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @typedef {Object} MenuItem
|
|
||||||
* @property {string} name
|
|
||||||
* @property {string} href
|
|
||||||
* @property {typeof import('lucide-svelte').Icon} icon
|
|
||||||
*/
|
|
||||||
|
|
||||||
/** @type {MenuItem[]} */
|
|
||||||
const menuItems = [
|
|
||||||
{
|
|
||||||
name: 'Home',
|
|
||||||
href: '/',
|
|
||||||
icon: Home
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'Blog',
|
|
||||||
href: '/blog',
|
|
||||||
icon: Library
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: 'Projects',
|
|
||||||
href: '/projects',
|
|
||||||
icon: Cog
|
|
||||||
}
|
|
||||||
];
|
|
||||||
</script>
|
|
||||||
|
|
||||||
{#each menuItems as item}
|
|
||||||
{@const Icon = item.icon}
|
|
||||||
<a href={item.href}>
|
|
||||||
<Icon />
|
|
||||||
<span>{item.name}</span>
|
|
||||||
</a>
|
|
||||||
{/each}
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
For more details about typing the `svelte:component` directive, see the [Svelte documentation](https://svelte.dev/docs/typescript#types-componenttype).
|
For more details about typing the `svelte:component` directive, see the [Svelte documentation](https://svelte.dev/docs/typescript#types-componenttype).
|
||||||
|
|
||||||
@@ -275,7 +270,7 @@ This creates a single icon based on the iconNode passed and renders a Lucide ico
|
|||||||
|
|
||||||
```svelte
|
```svelte
|
||||||
<script>
|
<script>
|
||||||
import { Icon } from 'lucide-svelte';
|
import { Icon } from '@lucide/svelte';
|
||||||
import { burger, sausage } from '@lucide/lab';
|
import { burger, sausage } from '@lucide/lab';
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@@ -293,22 +288,11 @@ The example below imports all ES Modules, so exercise caution when using it. Imp
|
|||||||
|
|
||||||
### Icon Component Example
|
### Icon Component Example
|
||||||
|
|
||||||
#### Svelte 4
|
::: code-group
|
||||||
|
|
||||||
```svelte
|
```svelte [Svelte 5]
|
||||||
<script>
|
<script>
|
||||||
import * as icons from 'lucide-svelte';
|
import * as icons from '@lucide/svelte';
|
||||||
export let name;
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<svelte:component this={icons[name]} {...$$props} />
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Svelte 5
|
|
||||||
|
|
||||||
```svelte
|
|
||||||
<script>
|
|
||||||
import * as icons from 'lucide-svelte';
|
|
||||||
let { name } = $props();
|
let { name } = $props();
|
||||||
|
|
||||||
const Icon = icons[name];
|
const Icon = icons[name];
|
||||||
@@ -317,6 +301,17 @@ The example below imports all ES Modules, so exercise caution when using it. Imp
|
|||||||
<Icon {...props} />
|
<Icon {...props} />
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```svelte [Svelte 4]
|
||||||
|
<script>
|
||||||
|
import * as icons from '@lucide/svelte';
|
||||||
|
export let name;
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<svelte:component this={icons[name]} {...$$props} />
|
||||||
|
```
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
#### Using the Icon Component
|
#### Using the Icon Component
|
||||||
|
|
||||||
```svelte
|
```svelte
|
||||||
|
|||||||
@@ -126,11 +126,23 @@ import { createElement, Menu } from 'lucide';
|
|||||||
|
|
||||||
const menuIcon = createElement(Menu); // Returns HTMLElement (svg)
|
const menuIcon = createElement(Menu); // Returns HTMLElement (svg)
|
||||||
|
|
||||||
// set custom attributes with browser native functions
|
// Append HTMLElement in the DOM
|
||||||
menuIcon.setAttribute('stroke', '#333');
|
const myApp = document.getElementById('app');
|
||||||
menuIcon.classList.add('my-icon-class');
|
myApp.appendChild(menuIcon);
|
||||||
|
```
|
||||||
|
|
||||||
// Append HTMLElement in webpage
|
#### Custom Element binding with custom attributes
|
||||||
|
|
||||||
|
```js
|
||||||
|
import { createElement, Menu } from 'lucide';
|
||||||
|
|
||||||
|
const menuIcon = createElement(Menu, {
|
||||||
|
class: ['my-custom-class', 'icon'],
|
||||||
|
'stroke-width': 1,
|
||||||
|
stroke: '#333'
|
||||||
|
}); // Returns HTMLElement (svg)
|
||||||
|
|
||||||
|
// Append HTMLElement in the DOM
|
||||||
const myApp = document.getElementById('app');
|
const myApp = document.getElementById('app');
|
||||||
myApp.appendChild(menuIcon);
|
myApp.appendChild(menuIcon);
|
||||||
```
|
```
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 9.8 KiB After Width: | Height: | Size: 9.9 KiB |
@@ -48,10 +48,12 @@
|
|||||||
<path d="M340 120v240" stroke="#D8D8D9" stroke-width=".5"/>
|
<path d="M340 120v240" stroke="#D8D8D9" stroke-width=".5"/>
|
||||||
<path d="M120 350h240" stroke="#D8D8D9" stroke-width=".5"/>
|
<path d="M120 350h240" stroke="#D8D8D9" stroke-width=".5"/>
|
||||||
<path d="M350 120v240" stroke="#D8D8D9" stroke-width=".5"/>
|
<path d="M350 120v240" stroke="#D8D8D9" stroke-width=".5"/>
|
||||||
</g>
|
</g>
|
||||||
<path d="m240 140-100 50 100 50 100-50-100-50Z" stroke="#3C3C43" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
|
<g id="embed-lucide-layers" stroke="#3C3C43" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" transform="translate(120 120), scale(10)">
|
||||||
<path d="m140 290 100 50 100-50" stroke="#3C3C43" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
|
<path d="M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z" />
|
||||||
<path d="m140 240 100 50 100-50" stroke="#3C3C43" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
|
<path d="M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12" />
|
||||||
|
<path d="M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17" />
|
||||||
|
</g>
|
||||||
<g opacity=".5" stroke="#fff" stroke-width="3">
|
<g opacity=".5" stroke="#fff" stroke-width="3">
|
||||||
<path d="M120 92v16"/>
|
<path d="M120 92v16"/>
|
||||||
<path d="M360 92v16"/>
|
<path d="M360 92v16"/>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 7.2 KiB After Width: | Height: | Size: 7.3 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 11 KiB |
@@ -53,9 +53,13 @@
|
|||||||
<path d="M350 120V360" stroke="#D8D8D9" stroke-width="0.5"/>
|
<path d="M350 120V360" stroke="#D8D8D9" stroke-width="0.5"/>
|
||||||
</g>
|
</g>
|
||||||
<g clip-path="url(#clip1_1612_15659)">
|
<g clip-path="url(#clip1_1612_15659)">
|
||||||
<path d="M310 260C324.9 245.4 340 227.9 340 205C340 190.413 334.205 176.424 323.891 166.109C313.576 155.795 299.587 150 285 150C267.4 150 255 155 240 170C225 155 212.6 150 195 150C180.413 150 166.424 155.795 156.109 166.109C145.795 176.424 140 190.413 140 205C140 228 155 245.5 170 260L240 330L310 260Z" stroke="#F56565" stroke-width="60" stroke-linejoin="round" stroke-dasharray="0.2 0.4"/>
|
<g id="embed-lucide-heart" stroke="#F56565" stroke-width="7" stroke-dasharray="0.04 0.08" stroke-linejoin="round" transform="translate(120 120), scale(10)">
|
||||||
|
<path d="M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z" />
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g id="embed-lucide-heart" stroke="#3C3C43" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" transform="translate(120 120), scale(10)">
|
||||||
|
<path d="M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z" />
|
||||||
</g>
|
</g>
|
||||||
<path d="M310 260C324.9 245.4 340 227.9 340 205C340 190.413 334.205 176.424 323.891 166.109C313.576 155.795 299.587 150 285 150C267.4 150 255 155 240 170C225 155 212.6 150 195 150C180.413 150 166.424 155.795 156.109 166.109C145.795 176.424 140 190.413 140 205C140 228 155 245.5 170 260L240 330L310 260Z" stroke="#3C3C43" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
|
|
||||||
<defs>
|
<defs>
|
||||||
<clipPath id="clip0_1612_15659">
|
<clipPath id="clip0_1612_15659">
|
||||||
<rect x="120" y="120" width="240" height="240" rx="8" fill="white"/>
|
<rect x="120" y="120" width="240" height="240" rx="8" fill="white"/>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
@@ -52,16 +52,18 @@
|
|||||||
<path d="M120 350H360" stroke="#D8D8D9" stroke-width="0.5"/>
|
<path d="M120 350H360" stroke="#D8D8D9" stroke-width="0.5"/>
|
||||||
<path d="M350 120V360" stroke="#D8D8D9" stroke-width="0.5"/>
|
<path d="M350 120V360" stroke="#D8D8D9" stroke-width="0.5"/>
|
||||||
</g>
|
</g>
|
||||||
<path d="M310 160H170C158.954 160 150 168.954 150 180V320C150 331.046 158.954 340 170 340H310C321.046 340 330 331.046 330 320V180C330 168.954 321.046 160 310 160Z" stroke="#3C3C43" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
|
<g id="embed-lucide-calendar-days" stroke="#3C3C43" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" transform="translate(120 120), scale(10)">
|
||||||
<path d="M280 140V180" stroke="#3C3C43" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
|
<path d="M8 2v4" />
|
||||||
<path d="M200 140V180" stroke="#3C3C43" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
|
<path d="M16 2v4" />
|
||||||
<path d="M150 220H330" stroke="#3C3C43" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
|
<rect width="18" height="18" x="3" y="4" rx="2" />
|
||||||
<path d="M200 260H200.1" stroke="#3C3C43" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
|
<path d="M3 10h18" />
|
||||||
<path d="M240 260H240.1" stroke="#3C3C43" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
|
<path d="M8 14h.01" />
|
||||||
<path d="M280 260H280.1" stroke="#3C3C43" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
|
<path d="M12 14h.01" />
|
||||||
<path d="M200 300H200.1" stroke="#3C3C43" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
|
<path d="M16 14h.01" />
|
||||||
<path d="M240 300H240.1" stroke="#3C3C43" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
|
<path d="M8 18h.01" />
|
||||||
<path d="M280 300H280.1" stroke="#3C3C43" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
|
<path d="M12 18h.01" />
|
||||||
|
<path d="M16 18h.01" />
|
||||||
|
</g>
|
||||||
<defs>
|
<defs>
|
||||||
<clipPath id="clip0_1612_15298">
|
<clipPath id="clip0_1612_15298">
|
||||||
<rect x="120" y="120" width="240" height="240" rx="8" fill="white"/>
|
<rect x="120" y="120" width="240" height="240" rx="8" fill="white"/>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 16 KiB |
@@ -54,10 +54,12 @@
|
|||||||
</g>
|
</g>
|
||||||
<circle opacity="0.17" cx="240" cy="240" r="100" stroke="#F56565" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
|
<circle opacity="0.17" cx="240" cy="240" r="100" stroke="#F56565" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
<rect opacity="0.17" x="150" y="150" width="180" height="180" rx="20" stroke="#F56565" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
|
<rect opacity="0.17" x="150" y="150" width="180" height="180" rx="20" stroke="#F56565" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
<path d="M330 330L270 270M330 330V282M330 330H282" stroke="#3C3C43" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
|
<g id="embed-lucide-expand" stroke="#3C3C43" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" transform="translate(120 120), scale(10)">
|
||||||
<path d="M150 282V330M150 330H198M150 330L210 270" stroke="#3C3C43" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
|
<path d="m21 21-6-6m6 6v-4.8m0 4.8h-4.8" />
|
||||||
<path d="M330 198V150M330 150H282M330 150L270 210" stroke="#3C3C43" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
|
<path d="M3 16.2V21m0 0h4.8M3 21l6-6" />
|
||||||
<path d="M150 198V150M150 150H198M150 150L210 210" stroke="#3C3C43" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
|
<path d="M21 7.8V3m0 0h-4.8M21 3l-6 6" />
|
||||||
|
<path d="M3 7.8V3m0 0h4.8M3 3l6 6" />
|
||||||
|
</g>
|
||||||
<circle opacity="0.5" cx="240" cy="240" r="100" stroke="#F56565" stroke-dasharray="1 1"/>
|
<circle opacity="0.5" cx="240" cy="240" r="100" stroke="#F56565" stroke-dasharray="1 1"/>
|
||||||
<rect opacity="0.5" x="150" y="150" width="180" height="180" rx="20" stroke="#F56565" stroke-dasharray="1 1"/>
|
<rect opacity="0.5" x="150" y="150" width="180" height="180" rx="20" stroke="#F56565" stroke-dasharray="1 1"/>
|
||||||
<defs>
|
<defs>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
@@ -54,7 +54,9 @@
|
|||||||
<path d="M120 350H360" stroke="#D8D8D9" stroke-width="0.5"/>
|
<path d="M120 350H360" stroke="#D8D8D9" stroke-width="0.5"/>
|
||||||
<path d="M350 120V360" stroke="#D8D8D9" stroke-width="0.5"/>
|
<path d="M350 120V360" stroke="#D8D8D9" stroke-width="0.5"/>
|
||||||
</g>
|
</g>
|
||||||
<path d="M150 150L220.7 320L245.8 246.1L320 220.7L150 150Z" stroke="#3C3C43" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
|
<g id="embed-lucide-mouse-pointer-2" stroke="#3C3C43" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" transform="translate(110 110), scale(10)">
|
||||||
|
<path d="M4.037 4.688a.495.495 0 0 1 .651-.651l16 6.5a.5.5 0 0 1-.063.947l-6.124 1.58a2 2 0 0 0-1.438 1.435l-1.579 6.126a.5.5 0 0 1-.947.063z" />
|
||||||
|
</g>
|
||||||
<path opacity="0.5" d="M240 120V360M360 240H120" stroke="#F56565" stroke-dasharray="1 1"/>
|
<path opacity="0.5" d="M240 120V360M360 240H120" stroke="#F56565" stroke-dasharray="1 1"/>
|
||||||
</g>
|
</g>
|
||||||
<defs>
|
<defs>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
@@ -53,7 +53,9 @@
|
|||||||
<path d="M120 350H360" stroke="#D8D8D9" stroke-width="0.5"/>
|
<path d="M120 350H360" stroke="#D8D8D9" stroke-width="0.5"/>
|
||||||
<path d="M350 120V360" stroke="#D8D8D9" stroke-width="0.5"/>
|
<path d="M350 120V360" stroke="#D8D8D9" stroke-width="0.5"/>
|
||||||
</g>
|
</g>
|
||||||
<path d="M160 160L230.7 330L255.8 256.1L330 230.7L160 160Z" stroke="#3C3C43" stroke-width="20" stroke-linecap="round" stroke-linejoin="round"/>
|
<g id="embed-lucide-mouse-pointer-2" stroke="#3C3C43" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" transform="translate(120 120), scale(10)">
|
||||||
|
<path d="M4.037 4.688a.495.495 0 0 1 .651-.651l16 6.5a.5.5 0 0 1-.063.947l-6.124 1.58a2 2 0 0 0-1.438 1.435l-1.579 6.126a.5.5 0 0 1-.947.063z" />
|
||||||
|
</g>
|
||||||
<path opacity="0.5" d="M240 120V360M360 240H120" stroke="#F56565" stroke-dasharray="1 1"/>
|
<path opacity="0.5" d="M240 120V360M360 240H120" stroke="#F56565" stroke-dasharray="1 1"/>
|
||||||
</g>
|
</g>
|
||||||
<defs>
|
<defs>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 18 KiB |
@@ -27,7 +27,7 @@ import iconNode from '../iconNodes/${iconName}.node.json'
|
|||||||
import metaData from '../../../../icons/${iconName}.json'
|
import metaData from '../../../../icons/${iconName}.json'
|
||||||
import releaseData from '../releaseMetadata/${iconName}.json'
|
import releaseData from '../releaseMetadata/${iconName}.json'
|
||||||
|
|
||||||
const { tags, categories, contributors, aliases } = metaData
|
const { tags, categories, contributors, aliases, deprecated, deprecationReason, toBeRemovedInVersion } = metaData
|
||||||
|
|
||||||
const iconDetails = {
|
const iconDetails = {
|
||||||
name: '${iconName}',
|
name: '${iconName}',
|
||||||
@@ -36,6 +36,9 @@ const iconDetails = {
|
|||||||
tags,
|
tags,
|
||||||
categories,
|
categories,
|
||||||
aliases,
|
aliases,
|
||||||
|
deprecated,
|
||||||
|
deprecationReason,
|
||||||
|
toBeRemovedInVersion,
|
||||||
...releaseData,
|
...releaseData,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
stroke-linecap="round"
|
stroke-linecap="round"
|
||||||
stroke-linejoin="round"
|
stroke-linejoin="round"
|
||||||
>
|
>
|
||||||
|
<path d="M16.4 13.7A6.5 6.5 0 1 0 6.28 6.6c-1.1 3.13-.78 3.9-3.18 6.08A3 3 0 0 0 5 18c4 0 8.4-1.8 11.4-4.3" />
|
||||||
|
<path d="m18.5 6 2.19 4.5a6.48 6.48 0 0 1-2.29 7.2C15.4 20.2 11 22 7 22a3 3 0 0 1-2.68-1.66L2.4 16.5" />
|
||||||
<circle cx="12.5" cy="8.5" r="2.5" />
|
<circle cx="12.5" cy="8.5" r="2.5" />
|
||||||
<path d="M12.5 2a6.5 6.5 0 0 0-6.22 4.6c-1.1 3.13-.78 3.9-3.18 6.08A3 3 0 0 0 5 18c4 0 8.4-1.8 11.4-4.3A6.5 6.5 0 0 0 12.5 2Z" />
|
|
||||||
<path d="m18.5 6 2.19 4.5a6.48 6.48 0 0 1 .31 2 6.49 6.49 0 0 1-2.6 5.2C15.4 20.2 11 22 7 22a3 3 0 0 1-2.68-1.66L2.4 16.5" />
|
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 508 B After Width: | Height: | Size: 468 B |
@@ -9,6 +9,6 @@
|
|||||||
stroke-linecap="round"
|
stroke-linecap="round"
|
||||||
stroke-linejoin="round"
|
stroke-linejoin="round"
|
||||||
>
|
>
|
||||||
<path d="M16 3h3v18h-3" />
|
<path d="M16 3h2a1 1 0 0 1 1 1v16a1 1 0 0 1-1 1h-2" />
|
||||||
<path d="M8 21H5V3h3" />
|
<path d="M8 21H6a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h2" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 264 B After Width: | Height: | Size: 320 B |
@@ -6,7 +6,7 @@
|
|||||||
"tags": [
|
"tags": [
|
||||||
"diameter",
|
"diameter",
|
||||||
"zero",
|
"zero",
|
||||||
"Ø",
|
"ø",
|
||||||
"nothing",
|
"nothing",
|
||||||
"null",
|
"null",
|
||||||
"void",
|
"void",
|
||||||
@@ -16,7 +16,12 @@
|
|||||||
"division",
|
"division",
|
||||||
"half",
|
"half",
|
||||||
"split",
|
"split",
|
||||||
"/"
|
"/",
|
||||||
|
"average",
|
||||||
|
"avg",
|
||||||
|
"mean",
|
||||||
|
"median",
|
||||||
|
"normal"
|
||||||
],
|
],
|
||||||
"categories": [
|
"categories": [
|
||||||
"shapes",
|
"shapes",
|
||||||
|
|||||||
@@ -9,6 +9,6 @@
|
|||||||
stroke-linecap="round"
|
stroke-linecap="round"
|
||||||
stroke-linejoin="round"
|
stroke-linejoin="round"
|
||||||
>
|
>
|
||||||
<circle cx="12" cy="12" r="10" />
|
|
||||||
<path d="M22 2 2 22" />
|
<path d="M22 2 2 22" />
|
||||||
|
<circle cx="12" cy="12" r="10" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 270 B After Width: | Height: | Size: 270 B |
@@ -1,14 +1,15 @@
|
|||||||
{
|
{
|
||||||
"$schema": "../icon.schema.json",
|
"$schema": "../icon.schema.json",
|
||||||
"contributors": [
|
"contributors": [
|
||||||
"gubser",
|
"colebemis",
|
||||||
"ericfennis"
|
"jguddas"
|
||||||
],
|
],
|
||||||
"tags": [
|
"tags": [
|
||||||
"funnel",
|
"time",
|
||||||
"hopper"
|
"watch",
|
||||||
|
"alarm"
|
||||||
],
|
],
|
||||||
"categories": [
|
"categories": [
|
||||||
"layout"
|
"time"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
18
icons/clock-fading.svg
Normal 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="M12 2a10 10 0 0 1 7.38 16.75" />
|
||||||
|
<path d="M12 6v6l4 2" />
|
||||||
|
<path d="M2.5 8.875a10 10 0 0 0-.5 3" />
|
||||||
|
<path d="M2.83 16a10 10 0 0 0 2.43 3.4" />
|
||||||
|
<path d="M4.636 5.235a10 10 0 0 1 .891-.857" />
|
||||||
|
<path d="M8.644 21.42a10 10 0 0 0 7.631-.38" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 467 B |
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"$schema": "../icon.schema.json",
|
"$schema": "../icon.schema.json",
|
||||||
"contributors": [
|
"contributors": [
|
||||||
"AndreasSas"
|
"AnnaSasDev"
|
||||||
],
|
],
|
||||||
"tags": [
|
"tags": [
|
||||||
"electricity",
|
"electricity",
|
||||||
|
|||||||
20
icons/funnel-plus.json
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../icon.schema.json",
|
||||||
|
"contributors": [
|
||||||
|
"gubser",
|
||||||
|
"ericfennis",
|
||||||
|
"lukedukeus",
|
||||||
|
"jguddas",
|
||||||
|
"karsa-mistmere"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"filter",
|
||||||
|
"hopper",
|
||||||
|
"add",
|
||||||
|
"create",
|
||||||
|
"new"
|
||||||
|
],
|
||||||
|
"categories": [
|
||||||
|
"layout"
|
||||||
|
]
|
||||||
|
}
|
||||||
15
icons/funnel-plus.svg
Normal 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="M13.354 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14v6a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341l1.218-1.348" />
|
||||||
|
<path d="M16 6h6" />
|
||||||
|
<path d="M19 3v6" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 406 B |
27
icons/funnel-x.json
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../icon.schema.json",
|
||||||
|
"contributors": [
|
||||||
|
"gubser",
|
||||||
|
"ericfennis",
|
||||||
|
"lukedukeus",
|
||||||
|
"jguddas",
|
||||||
|
"karsa-mistmere"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"filter",
|
||||||
|
"hopper",
|
||||||
|
"remove",
|
||||||
|
"delete"
|
||||||
|
],
|
||||||
|
"categories": [
|
||||||
|
"layout"
|
||||||
|
],
|
||||||
|
"aliases": [
|
||||||
|
{
|
||||||
|
"name": "filter-x",
|
||||||
|
"deprecated": true,
|
||||||
|
"deprecationReason": "alias.name",
|
||||||
|
"toBeRemovedInVersion": "v1.0"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
15
icons/funnel-x.svg
Normal 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="M12.531 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14v6a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341l.427-.473" />
|
||||||
|
<path d="m16.5 3.5 5 5" />
|
||||||
|
<path d="m21.5 3.5-5 5" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 416 B |
24
icons/funnel.json
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../icon.schema.json",
|
||||||
|
"contributors": [
|
||||||
|
"colebemis",
|
||||||
|
"lukedukeus",
|
||||||
|
"jguddas",
|
||||||
|
"karsa-mistmere"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"filter",
|
||||||
|
"hopper"
|
||||||
|
],
|
||||||
|
"categories": [
|
||||||
|
"layout"
|
||||||
|
],
|
||||||
|
"aliases": [
|
||||||
|
{
|
||||||
|
"name": "filter",
|
||||||
|
"deprecated": true,
|
||||||
|
"deprecationReason": "alias.name",
|
||||||
|
"toBeRemovedInVersion": "v1.0"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -9,5 +9,5 @@
|
|||||||
stroke-linecap="round"
|
stroke-linecap="round"
|
||||||
stroke-linejoin="round"
|
stroke-linejoin="round"
|
||||||
>
|
>
|
||||||
<polygon points="22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3" />
|
<path d="M10 20a1 1 0 0 0 .553.895l2 1A1 1 0 0 0 14 21v-7a2 2 0 0 1 .517-1.341L21.74 4.67A1 1 0 0 0 21 3H3a1 1 0 0 0-.742 1.67l7.225 7.989A2 2 0 0 1 10 14z" />
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 275 B After Width: | Height: | Size: 370 B |
@@ -3,7 +3,8 @@
|
|||||||
"contributors": [
|
"contributors": [
|
||||||
"mittalyashu",
|
"mittalyashu",
|
||||||
"danielbayley",
|
"danielbayley",
|
||||||
"karsa-mistmere"
|
"karsa-mistmere",
|
||||||
|
"jamiemlaw"
|
||||||
],
|
],
|
||||||
"tags": [
|
"tags": [
|
||||||
"unlimited",
|
"unlimited",
|
||||||
|
|||||||
@@ -9,5 +9,5 @@
|
|||||||
stroke-linecap="round"
|
stroke-linecap="round"
|
||||||
stroke-linejoin="round"
|
stroke-linejoin="round"
|
||||||
>
|
>
|
||||||
<path d="M12 12c-2-2.67-4-4-6-4a4 4 0 1 0 0 8c2 0 4-1.33 6-4Zm0 0c2 2.67 4 4 6 4a4 4 0 0 0 0-8c-2 0-4 1.33-6 4Z" />
|
<path d="M6 16c5 0 7-8 12-8a4 4 0 0 1 0 8c-5 0-7-8-12-8a4 4 0 1 0 0 8" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 326 B After Width: | Height: | Size: 284 B |
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"$schema": "../icon.schema.json",
|
"$schema": "../icon.schema.json",
|
||||||
"contributors": [
|
"contributors": [
|
||||||
"AndreasSas"
|
"AnnaSasDev"
|
||||||
],
|
],
|
||||||
"tags": [
|
"tags": [
|
||||||
"options",
|
"options",
|
||||||
|
|||||||
@@ -9,8 +9,8 @@
|
|||||||
stroke-linecap="round"
|
stroke-linecap="round"
|
||||||
stroke-linejoin="round"
|
stroke-linejoin="round"
|
||||||
>
|
>
|
||||||
<path d="M4 22h16a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2v16a2 2 0 0 1-2 2Zm0 0a2 2 0 0 1-2-2v-9c0-1.1.9-2 2-2h2" />
|
|
||||||
<path d="M18 14h-8" />
|
|
||||||
<path d="M15 18h-5" />
|
<path d="M15 18h-5" />
|
||||||
<path d="M10 6h8v4h-8V6Z" />
|
<path d="M18 14h-8" />
|
||||||
|
<path d="M4 22h16a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2H8a2 2 0 0 0-2 2v16a2 2 0 0 1-4 0v-9a2 2 0 0 1 2-2h2" />
|
||||||
|
<rect x="10" y="6" width="8" height="4" rx="1" />
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 414 B After Width: | Height: | Size: 416 B |
@@ -1,13 +1,15 @@
|
|||||||
{
|
{
|
||||||
"$schema": "../icon.schema.json",
|
"$schema": "../icon.schema.json",
|
||||||
"contributors": [
|
"contributors": [
|
||||||
"colebemis"
|
"null78",
|
||||||
|
"jguddas"
|
||||||
],
|
],
|
||||||
"tags": [
|
"tags": [
|
||||||
"funnel",
|
"currency",
|
||||||
"hopper"
|
"money",
|
||||||
|
"payment"
|
||||||
],
|
],
|
||||||
"categories": [
|
"categories": [
|
||||||
"layout"
|
"finance"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
16
icons/saudi-riyal.svg
Normal 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="m20 19.5-5.5 1.2" />
|
||||||
|
<path d="M14.5 4v11.22a1 1 0 0 0 1.242.97L20 15.2" />
|
||||||
|
<path d="m2.978 19.351 5.549-1.363A2 2 0 0 0 10 16V2" />
|
||||||
|
<path d="M20 10 4 13.5" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 384 B |
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"$schema": "../icon.schema.json",
|
"$schema": "../icon.schema.json",
|
||||||
"contributors": [
|
"contributors": [
|
||||||
"AndreasSas"
|
"AnnaSasDev"
|
||||||
],
|
],
|
||||||
"tags": [
|
"tags": [
|
||||||
"floppy disk",
|
"floppy disk",
|
||||||
|
|||||||
23
icons/shield-user.json
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../icon.schema.json",
|
||||||
|
"contributors": [
|
||||||
|
"sebinemeth",
|
||||||
|
"ksk3110",
|
||||||
|
"karsa-mistmere",
|
||||||
|
"colebemis"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"shield",
|
||||||
|
"user",
|
||||||
|
"admin",
|
||||||
|
"protection",
|
||||||
|
"protected",
|
||||||
|
"safety",
|
||||||
|
"guard"
|
||||||
|
],
|
||||||
|
"categories": [
|
||||||
|
"account",
|
||||||
|
"security",
|
||||||
|
"development"
|
||||||
|
]
|
||||||
|
}
|
||||||
15
icons/shield-user.svg
Normal 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="M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z" />
|
||||||
|
<path d="M6.376 18.91a6 6 0 0 1 11.249.003" />
|
||||||
|
<circle cx="12" cy="11" r="4" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 470 B |
21
icons/shrimp.json
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../icon.schema.json",
|
||||||
|
"contributors": [
|
||||||
|
"karsa-mistmere"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"seafood",
|
||||||
|
"shellfish",
|
||||||
|
"crustacean",
|
||||||
|
"prawn",
|
||||||
|
"scallop",
|
||||||
|
"whelk",
|
||||||
|
"arthropod",
|
||||||
|
"littleneck",
|
||||||
|
"quahog",
|
||||||
|
"cherrystone"
|
||||||
|
],
|
||||||
|
"categories": [
|
||||||
|
"animals"
|
||||||
|
]
|
||||||
|
}
|
||||||
17
icons/shrimp.svg
Normal 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="M11 12h.01" />
|
||||||
|
<path d="M13 22c.5-.5 1.12-1 2.5-1-1.38 0-2-.5-2.5-1" />
|
||||||
|
<path d="M14 2a3.276 3.276 0 0 1-3.227 1.798l-6.17-.561A2.387 2.387 0 1 0 4.387 8H15.5a1 1 0 0 1 0 13 1 1 0 0 0 0-5H12a7 7 0 0 1-7-7V8" />
|
||||||
|
<path d="M14 8a8.5 8.5 0 0 1 0 8" />
|
||||||
|
<path d="M16 16c2 0 4.5-4 4-6" />
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 509 B |
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"$schema": "../icon.schema.json",
|
"$schema": "../icon.schema.json",
|
||||||
"contributors": [
|
"contributors": [
|
||||||
"AndreasSas",
|
"AnnaSasDev",
|
||||||
"jguddas"
|
"jguddas"
|
||||||
],
|
],
|
||||||
"tags": [
|
"tags": [
|
||||||
|
|||||||
22
icons/square-round-corner.json
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"$schema": "../icon.schema.json",
|
||||||
|
"contributors": [
|
||||||
|
"liamb13",
|
||||||
|
"jguddas"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"border",
|
||||||
|
"radius",
|
||||||
|
"style",
|
||||||
|
"design",
|
||||||
|
"corner",
|
||||||
|
"layout",
|
||||||
|
"round",
|
||||||
|
"rounded"
|
||||||
|
],
|
||||||
|
"categories": [
|
||||||
|
"design",
|
||||||
|
"development",
|
||||||
|
"layout"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -9,7 +9,6 @@
|
|||||||
stroke-linecap="round"
|
stroke-linecap="round"
|
||||||
stroke-linejoin="round"
|
stroke-linejoin="round"
|
||||||
>
|
>
|
||||||
<path d="M13.013 3H2l8 9.46V19l4 2v-8.54l.9-1.055" />
|
<path d="M21 11a8 8 0 0 0-8-8" />
|
||||||
<path d="m22 3-5 5" />
|
<path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4" />
|
||||||
<path d="m17 3 5 5" />
|
|
||||||
</svg>
|
</svg>
|
||||||
|
Before Width: | Height: | Size: 314 B After Width: | Height: | Size: 316 B |
12
package.json
@@ -54,20 +54,23 @@
|
|||||||
"eslint-config-prettier": "^8.10.0",
|
"eslint-config-prettier": "^8.10.0",
|
||||||
"eslint-import-resolver-alias": "^1.1.2",
|
"eslint-import-resolver-alias": "^1.1.2",
|
||||||
"eslint-import-resolver-custom-alias": "^1.3.2",
|
"eslint-import-resolver-custom-alias": "^1.3.2",
|
||||||
"eslint-import-resolver-typescript": "^3.6.3",
|
"eslint-import-resolver-typescript": "^3.8.3",
|
||||||
"eslint-plugin-import": "^2.31.0",
|
"eslint-plugin-import": "^2.31.0",
|
||||||
"husky": "^8.0.3",
|
"husky": "^8.0.3",
|
||||||
"lint-staged": "^13.3.0",
|
"lint-staged": "^13.3.0",
|
||||||
"minimist": "^1.2.8",
|
"minimist": "^1.2.8",
|
||||||
"p-memoize": "^7.1.1",
|
"p-memoize": "^7.1.1",
|
||||||
"prettier": "3.2.4",
|
"prettier": "3.2.4",
|
||||||
"semver": "^7.6.3",
|
"semver": "^7.7.1",
|
||||||
"simple-git": "^3.27.0",
|
"simple-git": "^3.27.0",
|
||||||
"svgo": "^3.3.2",
|
"svgo": "^3.3.2",
|
||||||
"svgson": "^5.3.1",
|
"svgson": "^5.3.1",
|
||||||
"yargs": "^17.7.2"
|
"yargs": "^17.7.2"
|
||||||
},
|
},
|
||||||
"packageManager": "pnpm@9.7.1+sha512.faf344af2d6ca65c4c5c8c2224ea77a81a5e8859cbc4e06b1511ddce2f0151512431dd19e6aff31f2c6a8f5f2aced9bd2273e1fed7dd4de1868984059d2c4247",
|
"engines": {
|
||||||
|
"node": ">=23.0.0"
|
||||||
|
},
|
||||||
|
"packageManager": "pnpm@10.6.1+sha512.40ee09af407fa9fbb5fbfb8e1cb40fbb74c0af0c3e10e9224d7b53c7658528615b2c92450e74cfad91e3a2dcafe3ce4050d80bda71d757756d2ce2b66213e9a3",
|
||||||
"pnpm": {
|
"pnpm": {
|
||||||
"packageExtensions": {
|
"packageExtensions": {
|
||||||
"vue-template-compiler": {
|
"vue-template-compiler": {
|
||||||
@@ -75,6 +78,9 @@
|
|||||||
"vue": "2.7.14"
|
"vue": "2.7.14"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"overrides": {
|
||||||
|
"cross-spawn": "7.0.5"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
"build": "pnpm clean && pnpm copy:license && pnpm build:icons && pnpm build:ng",
|
"build": "pnpm clean && pnpm copy:license && pnpm build:icons && pnpm build:ng",
|
||||||
"copy:license": "cp ../../LICENSE ./LICENSE",
|
"copy:license": "cp ../../LICENSE ./LICENSE",
|
||||||
"clean": "rm -rf dist && rm -rf ./src/icons/*.ts",
|
"clean": "rm -rf dist && rm -rf ./src/icons/*.ts",
|
||||||
"build:icons": "build-icons --output=./src --templateSrc=./scripts/exportTemplate.mjs --renderUniqueKey --withAliases --aliasNamesOnly --aliasesFileExtension=.ts --iconFileExtension=.ts --exportFileName=lucide-icons.ts",
|
"build:icons": "build-icons --output=./src --templateSrc=./scripts/exportTemplate.mjs --renderUniqueKey --withAliases --aliasesFileExtension=.ts --iconFileExtension=.ts --exportFileName=lucide-icons.ts",
|
||||||
"build:ng": "ng build --configuration production",
|
"build:ng": "ng build --configuration production",
|
||||||
"test": "ng test --no-watch --no-progress --browsers=ChromeHeadlessCI",
|
"test": "ng test --no-watch --no-progress --browsers=ChromeHeadlessCI",
|
||||||
"test:watch": "ng test",
|
"test:watch": "ng test",
|
||||||
|
|||||||
@@ -1 +1,3 @@
|
|||||||
export * from './aliases';
|
export * from './aliases';
|
||||||
|
export * from './prefixed';
|
||||||
|
export * from './suffixed';
|
||||||
|
|||||||
@@ -53,7 +53,7 @@
|
|||||||
"rollup": "^4.22.4",
|
"rollup": "^4.22.4",
|
||||||
"rollup-plugin-dts": "^6.1.0",
|
"rollup-plugin-dts": "^6.1.0",
|
||||||
"typescript": "^5.3.3",
|
"typescript": "^5.3.3",
|
||||||
"vite": "5.4.13",
|
"vite": "5.4.14",
|
||||||
"vitest": "^1.1.1"
|
"vitest": "^1.1.1"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
|
|||||||
@@ -59,7 +59,7 @@
|
|||||||
"rollup": "^4.22.4",
|
"rollup": "^4.22.4",
|
||||||
"rollup-plugin-dts": "^6.1.0",
|
"rollup-plugin-dts": "^6.1.0",
|
||||||
"typescript": "^4.8.4",
|
"typescript": "^4.8.4",
|
||||||
"vite": "5.4.13",
|
"vite": "5.4.14",
|
||||||
"vitest": "^1.1.1"
|
"vitest": "^1.1.1"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import plugins from '@lucide/rollup-plugins';
|
import plugins from '@lucide/rollup-plugins';
|
||||||
import dts from 'rollup-plugin-dts';
|
import dts from 'rollup-plugin-dts';
|
||||||
import pkg from './package.json' assert { type: 'json' };
|
import pkg from './package.json' with { type: 'json' };
|
||||||
|
|
||||||
const packageName = 'LucideReact';
|
const packageName = 'LucideReact';
|
||||||
const outputFileName = 'lucide-react-native';
|
const outputFileName = 'lucide-react-native';
|
||||||
|
|||||||
@@ -57,7 +57,7 @@
|
|||||||
"@testing-library/jest-dom": "^6.1.6",
|
"@testing-library/jest-dom": "^6.1.6",
|
||||||
"@testing-library/react": "^14.1.2",
|
"@testing-library/react": "^14.1.2",
|
||||||
"@types/react": "^18.2.37",
|
"@types/react": "^18.2.37",
|
||||||
"@vitejs/plugin-react": "^4.2.1",
|
"@vitejs/plugin-react": "^4.3.4",
|
||||||
"jest-serializer-html": "^7.1.0",
|
"jest-serializer-html": "^7.1.0",
|
||||||
"react": "18.2.0",
|
"react": "18.2.0",
|
||||||
"react-dom": "18.2.0",
|
"react-dom": "18.2.0",
|
||||||
@@ -65,7 +65,7 @@
|
|||||||
"rollup-plugin-dts": "^6.1.0",
|
"rollup-plugin-dts": "^6.1.0",
|
||||||
"rollup-plugin-preserve-directives": "^0.4.0",
|
"rollup-plugin-preserve-directives": "^0.4.0",
|
||||||
"typescript": "^4.9.5",
|
"typescript": "^4.9.5",
|
||||||
"vite": "5.4.13",
|
"vite": "5.4.14",
|
||||||
"vitest": "^1.1.1"
|
"vitest": "^1.1.1"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import plugins from '@lucide/rollup-plugins';
|
import plugins from '@lucide/rollup-plugins';
|
||||||
import preserveDirectives from 'rollup-plugin-preserve-directives';
|
import preserveDirectives from 'rollup-plugin-preserve-directives';
|
||||||
import pkg from './package.json' assert { type: 'json' };
|
import pkg from './package.json' with { type: 'json' };
|
||||||
import dts from 'rollup-plugin-dts';
|
import dts from 'rollup-plugin-dts';
|
||||||
import getAliasesEntryNames from './scripts/getAliasesEntryNames.mjs';
|
import getAliasesEntryNames from './scripts/getAliasesEntryNames.mjs';
|
||||||
|
|
||||||
|
|||||||
@@ -76,15 +76,15 @@
|
|||||||
"@lucide/rollup-plugins": "workspace:*",
|
"@lucide/rollup-plugins": "workspace:*",
|
||||||
"@lucide/shared": "workspace:*",
|
"@lucide/shared": "workspace:*",
|
||||||
"@rollup/plugin-babel": "^6.0.4",
|
"@rollup/plugin-babel": "^6.0.4",
|
||||||
"@solidjs/testing-library": "^0.8.6",
|
"@solidjs/testing-library": "^0.8.10",
|
||||||
"@testing-library/jest-dom": "^6.4.2",
|
"@testing-library/jest-dom": "^6.4.2",
|
||||||
"babel-preset-solid": "^1.8.12",
|
"babel-preset-solid": "^1.8.12",
|
||||||
"jest-serializer-html": "^7.1.0",
|
"jest-serializer-html": "^7.1.0",
|
||||||
"rollup": "^4.22.4",
|
"rollup": "^4.22.4",
|
||||||
"solid-js": "^1.8.7",
|
"solid-js": "^1.9.4",
|
||||||
"typescript": "^4.9.4",
|
"typescript": "^4.9.4",
|
||||||
"vite": "5.4.13",
|
"vite": "5.4.14",
|
||||||
"vite-plugin-solid": "^2.10.1",
|
"vite-plugin-solid": "^2.11.6",
|
||||||
"vitest": "^1.1.1",
|
"vitest": "^1.1.1",
|
||||||
"esbuild": "^0.25.0"
|
"esbuild": "^0.25.0"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import esbuild from 'esbuild';
|
|||||||
import plugins from '@lucide/rollup-plugins';
|
import plugins from '@lucide/rollup-plugins';
|
||||||
import ts from 'typescript';
|
import ts from 'typescript';
|
||||||
|
|
||||||
import pkg from './package.json' assert { type: 'json' };
|
import pkg from './package.json' with { type: 'json' };
|
||||||
|
|
||||||
const packageName = 'LucideSolid';
|
const packageName = 'LucideSolid';
|
||||||
const outputFileName = 'lucide-solid';
|
const outputFileName = 'lucide-solid';
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import plugins from '@lucide/rollup-plugins';
|
import plugins from '@lucide/rollup-plugins';
|
||||||
import dts from 'rollup-plugin-dts';
|
import dts from 'rollup-plugin-dts';
|
||||||
import pkg from './package.json' assert { type: 'json' };
|
import pkg from './package.json' with { type: 'json' };
|
||||||
|
|
||||||
const outputFileName = pkg.name;
|
const outputFileName = pkg.name;
|
||||||
const outputDir = 'dist';
|
const outputDir = 'dist';
|
||||||
|
|||||||
@@ -70,7 +70,7 @@
|
|||||||
"svelte-check": "^3.4.4",
|
"svelte-check": "^3.4.4",
|
||||||
"svelte-preprocess": "^5.0.4",
|
"svelte-preprocess": "^5.0.4",
|
||||||
"typescript": "^5.1.6",
|
"typescript": "^5.1.6",
|
||||||
"vite": "5.4.13",
|
"vite": "5.4.14",
|
||||||
"vitest": "^1.1.1"
|
"vitest": "^1.1.1"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
|
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
|
||||||
|
|
||||||
exports[`Using Icon Component > should render icon and match snapshot 1`] = `
|
exports[`Using Icon Component > should render icon and match snapshot 1`] = `
|
||||||
<div>
|
<svg
|
||||||
<svg
|
|
||||||
class="lucide-icon lucide"
|
class="lucide-icon lucide"
|
||||||
fill="none"
|
fill="none"
|
||||||
height="48"
|
height="48"
|
||||||
@@ -13,7 +12,7 @@ exports[`Using Icon Component > should render icon and match snapshot 1`] = `
|
|||||||
viewBox="0 0 24 24"
|
viewBox="0 0 24 24"
|
||||||
width="48"
|
width="48"
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
xmlns="http://www.w3.org/2000/svg"
|
||||||
>
|
>
|
||||||
<path
|
<path
|
||||||
d="M6 12H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2"
|
d="M6 12H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2"
|
||||||
/>
|
/>
|
||||||
@@ -31,6 +30,5 @@ exports[`Using Icon Component > should render icon and match snapshot 1`] = `
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
|
|
||||||
</svg>
|
</svg>
|
||||||
</div>
|
|
||||||
`;
|
`;
|
||||||
|
|||||||
@@ -42,8 +42,7 @@ exports[`Using lucide icon components > should add a class to the element 1`] =
|
|||||||
`;
|
`;
|
||||||
|
|
||||||
exports[`Using lucide icon components > should adjust the size, stroke color and stroke width 1`] = `
|
exports[`Using lucide icon components > should adjust the size, stroke color and stroke width 1`] = `
|
||||||
<body>
|
<div>
|
||||||
<div>
|
|
||||||
<svg
|
<svg
|
||||||
class="lucide-icon lucide lucide-smile"
|
class="lucide-icon lucide lucide-smile"
|
||||||
fill="none"
|
fill="none"
|
||||||
@@ -82,13 +81,11 @@ exports[`Using lucide icon components > should adjust the size, stroke color and
|
|||||||
|
|
||||||
|
|
||||||
</svg>
|
</svg>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
|
||||||
`;
|
`;
|
||||||
|
|
||||||
exports[`Using lucide icon components > should not scale the strokeWidth when absoluteStrokeWidth is set 1`] = `
|
exports[`Using lucide icon components > should not scale the strokeWidth when absoluteStrokeWidth is set 1`] = `
|
||||||
<div>
|
<svg xmlns="http://www.w3.org/2000/svg"
|
||||||
<svg xmlns="http://www.w3.org/2000/svg"
|
|
||||||
width="48"
|
width="48"
|
||||||
height="48"
|
height="48"
|
||||||
viewbox="0 0 24 24"
|
viewbox="0 0 24 24"
|
||||||
@@ -99,7 +96,7 @@ exports[`Using lucide icon components > should not scale the strokeWidth when ab
|
|||||||
stroke-linejoin="round"
|
stroke-linejoin="round"
|
||||||
data-testid="smile-icon"
|
data-testid="smile-icon"
|
||||||
class="lucide-icon lucide lucide-smile"
|
class="lucide-icon lucide lucide-smile"
|
||||||
>
|
>
|
||||||
<circle cx="12"
|
<circle cx="12"
|
||||||
cy="12"
|
cy="12"
|
||||||
r="10"
|
r="10"
|
||||||
@@ -119,13 +116,11 @@ exports[`Using lucide icon components > should not scale the strokeWidth when ab
|
|||||||
y2="9"
|
y2="9"
|
||||||
>
|
>
|
||||||
</line>
|
</line>
|
||||||
</svg>
|
</svg>
|
||||||
</div>
|
|
||||||
`;
|
`;
|
||||||
|
|
||||||
exports[`Using lucide icon components > should render an component 1`] = `
|
exports[`Using lucide icon components > should render an component 1`] = `
|
||||||
<body>
|
<div>
|
||||||
<div>
|
|
||||||
<svg
|
<svg
|
||||||
class="lucide-icon lucide lucide-smile"
|
class="lucide-icon lucide lucide-smile"
|
||||||
fill="none"
|
fill="none"
|
||||||
@@ -164,13 +159,11 @@ exports[`Using lucide icon components > should render an component 1`] = `
|
|||||||
|
|
||||||
|
|
||||||
</svg>
|
</svg>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
|
||||||
`;
|
`;
|
||||||
|
|
||||||
exports[`Using lucide icon components > should render an icon slot 1`] = `
|
exports[`Using lucide icon components > should render an icon slot 1`] = `
|
||||||
<body>
|
<div>
|
||||||
<div>
|
|
||||||
<svg
|
<svg
|
||||||
class="lucide-icon lucide lucide-smile"
|
class="lucide-icon lucide lucide-smile"
|
||||||
fill="none"
|
fill="none"
|
||||||
@@ -212,6 +205,5 @@ exports[`Using lucide icon components > should render an icon slot 1`] = `
|
|||||||
Test
|
Test
|
||||||
</text>
|
</text>
|
||||||
</svg>
|
</svg>
|
||||||
</div>
|
</div>
|
||||||
</body>
|
|
||||||
`;
|
`;
|
||||||
|
|||||||
@@ -54,8 +54,8 @@
|
|||||||
"@vue/test-utils": "2.4.5",
|
"@vue/test-utils": "2.4.5",
|
||||||
"rollup": "^4.22.4",
|
"rollup": "^4.22.4",
|
||||||
"rollup-plugin-dts": "^6.1.0",
|
"rollup-plugin-dts": "^6.1.0",
|
||||||
"vite": "5.4.13",
|
"vite": "5.4.14",
|
||||||
"vitest": "^1.4.0",
|
"vitest": "^1.1.1",
|
||||||
"vue": "^3.4.21"
|
"vue": "^3.4.21"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import plugins, { replace } from '@lucide/rollup-plugins';
|
import plugins, { replace } from '@lucide/rollup-plugins';
|
||||||
import pkg from './package.json' assert { type: 'json' };
|
import pkg from './package.json' with { type: 'json' };
|
||||||
import dts from 'rollup-plugin-dts';
|
import dts from 'rollup-plugin-dts';
|
||||||
|
|
||||||
const packageName = 'LucideVueNext';
|
const packageName = 'LucideVueNext';
|
||||||
|
|||||||
@@ -52,8 +52,8 @@
|
|||||||
"@vue/test-utils": "1.3.0",
|
"@vue/test-utils": "1.3.0",
|
||||||
"rollup": "^3.29.5",
|
"rollup": "^3.29.5",
|
||||||
"typescript": "^4.9.5",
|
"typescript": "^4.9.5",
|
||||||
"vite": "5.4.13",
|
"vite": "5.4.14",
|
||||||
"vitest": "^0.32.2",
|
"vitest": "^1.1.1",
|
||||||
"vue": "2.7.14",
|
"vue": "2.7.14",
|
||||||
"vue-template-compiler": "2.7.14"
|
"vue-template-compiler": "2.7.14"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import plugins, { replace } from '@lucide/rollup-plugins';
|
import plugins, { replace } from '@lucide/rollup-plugins';
|
||||||
import pkg from './package.json' assert { type: 'json' };
|
import pkg from './package.json' with { type: 'json' };
|
||||||
|
|
||||||
const packageName = 'LucideVue';
|
const packageName = 'LucideVue';
|
||||||
const outputFileName = 'lucide-vue';
|
const outputFileName = 'lucide-vue';
|
||||||
|
|||||||
@@ -51,7 +51,7 @@
|
|||||||
"rollup": "^4.22.4",
|
"rollup": "^4.22.4",
|
||||||
"rollup-plugin-dts": "^6.1.0",
|
"rollup-plugin-dts": "^6.1.0",
|
||||||
"typescript": "^4.9.3",
|
"typescript": "^4.9.3",
|
||||||
"vite": "5.4.13",
|
"vite": "5.4.14",
|
||||||
"vitest": "^1.1.1"
|
"vitest": "^1.1.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,15 +1,16 @@
|
|||||||
|
import defaultAttributes from './defaultAttributes';
|
||||||
import { IconNode, SVGProps } from './types';
|
import { IconNode, SVGProps } from './types';
|
||||||
|
|
||||||
type CreateElementParams = [tag: string, attrs: SVGProps, children?: IconNode];
|
type CreateSVGElementParams = [tag: string, attrs: SVGProps, children?: IconNode];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new HTMLElement from icon node
|
* Creates a new SVGElement
|
||||||
* @param {string} tag
|
* @param {string} tag - Tag name of the element
|
||||||
* @param {object} attrs
|
* @param {object} attrs - Attributes of the element
|
||||||
* @param {array} children
|
* @param {array} children - Children of the element
|
||||||
* @returns {HTMLElement}
|
* @returns {SVGElement}
|
||||||
*/
|
*/
|
||||||
const createElement = ([tag, attrs, children]: CreateElementParams) => {
|
const createSVGElement = ([tag, attrs, children]: CreateSVGElementParams) => {
|
||||||
const element = document.createElementNS('http://www.w3.org/2000/svg', tag);
|
const element = document.createElementNS('http://www.w3.org/2000/svg', tag);
|
||||||
|
|
||||||
Object.keys(attrs).forEach((name) => {
|
Object.keys(attrs).forEach((name) => {
|
||||||
@@ -18,7 +19,7 @@ const createElement = ([tag, attrs, children]: CreateElementParams) => {
|
|||||||
|
|
||||||
if (children?.length) {
|
if (children?.length) {
|
||||||
children.forEach((child) => {
|
children.forEach((child) => {
|
||||||
const childElement = createElement(child);
|
const childElement = createSVGElement(child);
|
||||||
|
|
||||||
element.appendChild(childElement);
|
element.appendChild(childElement);
|
||||||
});
|
});
|
||||||
@@ -27,4 +28,20 @@ const createElement = ([tag, attrs, children]: CreateElementParams) => {
|
|||||||
return element;
|
return element;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new HTMLElement from icon node
|
||||||
|
* @param {array} iconNode - Icon node to be converted to an element
|
||||||
|
* @param {object} customAttrs - Custom attributes to be added to the element
|
||||||
|
* @returns {HTMLElement}
|
||||||
|
*/
|
||||||
|
const createElement = (iconNode: IconNode, customAttrs: SVGProps = {}) => {
|
||||||
|
const tag = 'svg';
|
||||||
|
const attrs = {
|
||||||
|
...defaultAttributes,
|
||||||
|
...customAttrs,
|
||||||
|
};
|
||||||
|
|
||||||
|
return createSVGElement([tag, attrs, iconNode]);
|
||||||
|
};
|
||||||
|
|
||||||
export default createElement;
|
export default createElement;
|
||||||
|
|||||||
@@ -98,7 +98,7 @@ const replaceElement = (element: Element, { nameAttr, icons, attrs }: ReplaceEle
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
const svgElement = createElement(['svg', iconAttrs, iconNode]);
|
const svgElement = createElement(iconNode, iconAttrs);
|
||||||
|
|
||||||
return element.parentNode?.replaceChild(svgElement, element);
|
return element.parentNode?.replaceChild(svgElement, element);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
|
||||||
|
|
||||||
|
exports[`createElement > should match the snapshot 1`] = `
|
||||||
|
<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 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8">
|
||||||
|
</path>
|
||||||
|
<path d="M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z">
|
||||||
|
</path>
|
||||||
|
</svg>
|
||||||
|
`;
|
||||||
37
packages/lucide/tests/createElement.spec.ts
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
import { describe, it, expect } from 'vitest';
|
||||||
|
import { House, createElement } from '../src/lucide';
|
||||||
|
import { getOriginalSvg } from './helpers';
|
||||||
|
|
||||||
|
describe('createElement', () => {
|
||||||
|
it('should create SVG Element', () => {
|
||||||
|
const HomeSVG = createElement(House);
|
||||||
|
|
||||||
|
expect(HomeSVG.tagName).toBe('svg');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should match the snapshot', () => {
|
||||||
|
const HomeSVG = createElement(House);
|
||||||
|
|
||||||
|
expect(HomeSVG.outerHTML).toMatchSnapshot();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create SVG Element with attributes', () => {
|
||||||
|
const HomeSVG = createElement(House, { fill: 'red' });
|
||||||
|
|
||||||
|
expect(HomeSVG.getAttribute('fill')).toBe('red');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create SVG Element with class name', () => {
|
||||||
|
const HomeSVG = createElement(House, { class: 'icon' });
|
||||||
|
|
||||||
|
expect(HomeSVG.getAttribute('class')).toBe('icon');
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create the correct svg element', () => {
|
||||||
|
const HomeSVG = createElement(House);
|
||||||
|
|
||||||
|
const svg = getOriginalSvg('house', undefined, false);
|
||||||
|
|
||||||
|
expect(HomeSVG.outerHTML).toBe(svg);
|
||||||
|
});
|
||||||
|
});
|
||||||
17
packages/lucide/tests/helpers.ts
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
import fs from 'fs';
|
||||||
|
import path from 'path';
|
||||||
|
import { parseSync, stringify } from 'svgson';
|
||||||
|
|
||||||
|
const ICONS_DIR = path.resolve(__dirname, '../../../icons');
|
||||||
|
|
||||||
|
export const getOriginalSvg = (iconName: string, aliasName?: string, setAttrs = true) => {
|
||||||
|
const svgContent = fs.readFileSync(path.join(ICONS_DIR, `${iconName}.svg`), 'utf8');
|
||||||
|
const svgParsed = parseSync(svgContent);
|
||||||
|
|
||||||
|
if (setAttrs) {
|
||||||
|
svgParsed.attributes['data-lucide'] = aliasName ?? iconName;
|
||||||
|
svgParsed.attributes['class'] = `lucide lucide-${aliasName ?? iconName}`;
|
||||||
|
}
|
||||||
|
|
||||||
|
return stringify(svgParsed, { selfClose: false });
|
||||||
|
};
|
||||||
@@ -1,20 +1,6 @@
|
|||||||
import { describe, it, expect } from 'vitest';
|
import { describe, it, expect } from 'vitest';
|
||||||
import { createIcons, icons } from '../src/lucide';
|
import { createIcons, icons } from '../src/lucide';
|
||||||
import fs from 'fs';
|
import { getOriginalSvg } from './helpers';
|
||||||
import path from 'path';
|
|
||||||
import { parseSync, stringify } from 'svgson';
|
|
||||||
|
|
||||||
const ICONS_DIR = path.resolve(__dirname, '../../../icons');
|
|
||||||
|
|
||||||
const getOriginalSvg = (iconName: string, aliasName?: string) => {
|
|
||||||
const svgContent = fs.readFileSync(path.join(ICONS_DIR, `${iconName}.svg`), 'utf8');
|
|
||||||
const svgParsed = parseSync(svgContent);
|
|
||||||
|
|
||||||
svgParsed.attributes['data-lucide'] = aliasName ?? iconName;
|
|
||||||
svgParsed.attributes['class'] = `lucide lucide-${aliasName ?? iconName}`;
|
|
||||||
|
|
||||||
return stringify(svgParsed, { selfClose: false });
|
|
||||||
};
|
|
||||||
|
|
||||||
describe('createIcons', () => {
|
describe('createIcons', () => {
|
||||||
it('should read elements from DOM and replace it with icons', () => {
|
it('should read elements from DOM and replace it with icons', () => {
|
||||||
|
|||||||
@@ -13,6 +13,6 @@
|
|||||||
"test:watch": "vitest watch"
|
"test:watch": "vitest watch"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"vitest": "^2.1.1"
|
"vitest": "^1.1.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
2
packages/svelte/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
src/icons/*.svelte
|
||||||
|
.svelte-kit
|
||||||
73
packages/svelte/README.md
Normal file
@@ -0,0 +1,73 @@
|
|||||||
|
<p align="center">
|
||||||
|
<a href="https://github.com/lucide-icons/lucide">
|
||||||
|
<img src="https://lucide.dev/package-logos/lucide-svelte.svg" alt="Lucide icon library for Svelte 5 applications." width="540">
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
Lucide icon library for Svelte 5 applications.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
|
|
||||||
|
[](https://www.npmjs.com/package/lucide-svelte)
|
||||||
|

|
||||||
|
[](https://lucide.dev/license)
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
<a href="https://lucide.dev/guide/">About</a>
|
||||||
|
·
|
||||||
|
<a href="https://lucide.dev/icons/">Icons</a>
|
||||||
|
·
|
||||||
|
<a href="https://lucide.dev/guide/packages/lucide-svelte">Documentation</a>
|
||||||
|
·
|
||||||
|
<a href="https://lucide.dev/license">License</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
# Lucide Svelte
|
||||||
|
|
||||||
|
Implementation of the lucide icon library for svelte applications.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
```sh
|
||||||
|
pnpm add @lucide/svelte
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
npm install @lucide/svelte
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
yarn add @lucide/svelte
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh
|
||||||
|
bun add @lucide/svelte
|
||||||
|
```
|
||||||
|
|
||||||
|
## Documentation
|
||||||
|
|
||||||
|
For full documentation, visit [lucide.dev](https://lucide.dev/guide/packages/lucide-svelte)
|
||||||
|
|
||||||
|
## Community
|
||||||
|
|
||||||
|
Join the [Discord server](https://discord.gg/EH6nSts) to chat with the maintainers and other users.
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
Lucide is licensed under the ISC license. See [LICENSE](https://lucide.dev/license).
|
||||||
|
|
||||||
|
## Sponsors
|
||||||
|
|
||||||
|
<a href="https://vercel.com?utm_source=lucide&utm_campaign=oss">
|
||||||
|
<img src="https://lucide.dev/vercel.svg" alt="Powered by Vercel" width="200" />
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<a href="https://www.digitalocean.com/?refcode=b0877a2caebd&utm_campaign=Referral_Invite&utm_medium=Referral_Program&utm_source=badge"><img src="https://lucide.dev/digitalocean.svg" width="200" alt="DigitalOcean Referral Badge" /></a>
|
||||||
|
|
||||||
|
### Awesome backers 🍺
|
||||||
|
|
||||||
|
<a href="https://www.scipress.io?utm_source=lucide"><img src="https://lucide.dev/sponsors/scipress.svg" width="180" alt="Scipress sponsor badge" /></a>
|
||||||
|
<a href="https://github.com/pdfme/pdfme"><img src="https://lucide.dev/sponsors/pdfme.svg" width="180" alt="pdfme sponsor badge" /></a>
|
||||||
79
packages/svelte/package.json
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
{
|
||||||
|
"name": "@lucide/svelte",
|
||||||
|
"description": "A Lucide icon library package for Svelte applications",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"license": "ISC",
|
||||||
|
"homepage": "https://lucide.dev",
|
||||||
|
"bugs": "https://github.com/lucide-icons/lucide/issues",
|
||||||
|
"repository": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/lucide-icons/lucide.git",
|
||||||
|
"directory": "packages/svelte"
|
||||||
|
},
|
||||||
|
"keywords": [
|
||||||
|
"Lucide",
|
||||||
|
"Svelte",
|
||||||
|
"Feather",
|
||||||
|
"Icons",
|
||||||
|
"Icon",
|
||||||
|
"SVG",
|
||||||
|
"Feather Icons",
|
||||||
|
"Fontawesome",
|
||||||
|
"Font Awesome"
|
||||||
|
],
|
||||||
|
"author": "Eric Fennis",
|
||||||
|
"type": "module",
|
||||||
|
"main": "dist/lucide-svelte.js",
|
||||||
|
"exports": {
|
||||||
|
".": {
|
||||||
|
"types": "./dist/lucide-svelte.d.ts",
|
||||||
|
"svelte": "./dist/lucide-svelte.js",
|
||||||
|
"default": "./dist/lucide-svelte.js"
|
||||||
|
},
|
||||||
|
"./icons": {
|
||||||
|
"types": "./dist/lucide-svelte.d.ts",
|
||||||
|
"svelte": "./dist/lucide-svelte.js"
|
||||||
|
},
|
||||||
|
"./icons/*": {
|
||||||
|
"types": "./dist/icons/*.svelte.d.ts",
|
||||||
|
"svelte": "./dist/icons/*.js",
|
||||||
|
"default": "./dist/icons/*.js"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"typings": "dist/lucide-svelte.d.ts",
|
||||||
|
"sideEffects": false,
|
||||||
|
"files": [
|
||||||
|
"dist"
|
||||||
|
],
|
||||||
|
"scripts": {
|
||||||
|
"build": "pnpm clean && pnpm copy:license && pnpm build:icons && pnpm build:package && pnpm build:license",
|
||||||
|
"copy:license": "cp ../../LICENSE ./LICENSE",
|
||||||
|
"clean": "rm -rf dist stats ./src/icons/*.{ts,svelte} ./src/aliases/{aliases,prefixed,suffixed}.ts",
|
||||||
|
"build:icons": "build-icons --output=./src --templateSrc=./scripts/exportTemplate.mjs --exportFileName=index.ts --iconFileExtension=.svelte --importImportFileExtension=.svelte --separateIconFileExport --separateIconFileExportExtension=.ts --withAliases --aliasesFileExtension=.ts --separateAliasesFile --separateAliasesFileExtension=.ts --aliasImportFileExtension=.js --pretty=false",
|
||||||
|
"build:package": "svelte-package --input ./src",
|
||||||
|
"build:license": "node ./scripts/appendBlockComments.mjs",
|
||||||
|
"test": "pnpm copy:license && pnpm build:icons && vitest run",
|
||||||
|
"test:watch": "vitest watch",
|
||||||
|
"version": "pnpm version --git-tag-version=false"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@lucide/build-icons": "workspace:*",
|
||||||
|
"@lucide/helpers": "workspace:*",
|
||||||
|
"@sveltejs/package": "^2.3.10",
|
||||||
|
"@sveltejs/vite-plugin-svelte": "^5.0.3",
|
||||||
|
"@testing-library/jest-dom": "^6.1.4",
|
||||||
|
"@testing-library/svelte": "^5.2.7",
|
||||||
|
"@tsconfig/svelte": "^5.0.4",
|
||||||
|
"jest-serializer-html": "^7.1.0",
|
||||||
|
"jsdom": "^20.0.3",
|
||||||
|
"svelte": "^5.20.5",
|
||||||
|
"svelte-check": "^4.1.4",
|
||||||
|
"svelte-preprocess": "^6.0.3",
|
||||||
|
"typescript": "^5.1.6",
|
||||||
|
"vite": "6.0.7",
|
||||||
|
"vitest": "^1.1.1"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"svelte": "^5"
|
||||||
|
}
|
||||||
|
}
|
||||||
64
packages/svelte/scripts/appendBlockComments.mjs
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
import { lstatSync } from 'fs';
|
||||||
|
import { readdir, readFile, writeFile } from 'fs/promises';
|
||||||
|
import path from 'path';
|
||||||
|
import { getCurrentDirPath } from '@lucide/helpers';
|
||||||
|
import { getJSBanner } from './license.mjs';
|
||||||
|
|
||||||
|
const currentDir = getCurrentDirPath(import.meta.url);
|
||||||
|
const targetDirectory = path.join(currentDir, '../dist');
|
||||||
|
|
||||||
|
const files = await readdir(targetDirectory, {
|
||||||
|
recursive: true,
|
||||||
|
encoding: 'utf-8',
|
||||||
|
});
|
||||||
|
|
||||||
|
// eslint-disable-next-line no-restricted-syntax
|
||||||
|
for (const file of files) {
|
||||||
|
const filepath = path.join(targetDirectory, file);
|
||||||
|
const filestat = lstatSync(filepath);
|
||||||
|
|
||||||
|
// eslint-disable-next-line no-continue
|
||||||
|
if (filestat.isFile() === false || filestat.isDirectory()) continue;
|
||||||
|
|
||||||
|
// eslint-disable-next-line no-await-in-loop
|
||||||
|
const contents = await readFile(filepath, { encoding: 'utf-8' });
|
||||||
|
let newContents = contents;
|
||||||
|
const ext = path.extname(filepath);
|
||||||
|
let license;
|
||||||
|
|
||||||
|
if (/\.(js|mjs|cjs|ts)/.test(ext)) {
|
||||||
|
license = getJSBanner();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (license) {
|
||||||
|
newContents = license + contents;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Places icon block comment at the top of the Svelte component class
|
||||||
|
if (/icons\/(.*?)\.svelte\.d\.ts/.test(filepath)) {
|
||||||
|
const svelteFilepath = filepath.replace('.d.ts', '');
|
||||||
|
// eslint-disable-next-line no-await-in-loop
|
||||||
|
const svelteFileContents = await readFile(svelteFilepath, { encoding: 'utf-8' });
|
||||||
|
|
||||||
|
const blockCommentRegex = /\/\*\*\n\s\*\s(@component\s@name)[\s\S]*?\*\//;
|
||||||
|
const blockCommentMatch = blockCommentRegex.exec(svelteFileContents);
|
||||||
|
|
||||||
|
if (blockCommentMatch !== null) {
|
||||||
|
const blockComment = blockCommentMatch[0];
|
||||||
|
|
||||||
|
const exportClassRegex = /export default class (\w+) extends SvelteComponentTyped<(.*?)> {/;
|
||||||
|
|
||||||
|
if (exportClassRegex.test(newContents)) {
|
||||||
|
newContents = newContents.replace(
|
||||||
|
exportClassRegex,
|
||||||
|
`${blockComment}\nexport default class $1 extends SvelteComponentTyped<$2> {`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (newContents !== contents) {
|
||||||
|
// eslint-disable-next-line no-await-in-loop
|
||||||
|
await writeFile(filepath, newContents, { encoding: 'utf-8' });
|
||||||
|
}
|
||||||
|
}
|
||||||