diff --git a/.cspell/custom-words.txt b/.cspell/custom-words.txt index 7418171ad..96dfcdd72 100644 --- a/.cspell/custom-words.txt +++ b/.cspell/custom-words.txt @@ -11,3 +11,44 @@ ungroup toc sunlounger monstera + +# Search tags and terms used in icon and category metadata +ageusia +artboard +barbeque +choy +ecommerce +enby +flexbox +futbol +gddr +glassmorphism +gltf +interpoint +interpunct +middot +mistwarp +mlops +moleskine +nonbinary +pantone +parfum +phonendoscope +quadcopter +reapproval +rubygems +showreel +solera +timesheets +turbowarp +unbook +unguard +unkeys +unlabel +unprevented +unqueue +unsalvageable +unshield +unstar +vitamizer +wayfinding diff --git a/.github/conventional-commit-types.json b/.github/conventional-commit-types.json new file mode 100644 index 000000000..c63ef34d1 --- /dev/null +++ b/.github/conventional-commit-types.json @@ -0,0 +1,12 @@ +[ + "fix", + "feat", + "perf", + "refactor", + "test", + "style", + "docs", + "ci", + "build", + "chore" +] diff --git a/.github/instructions/metadata.instructions.md b/.github/instructions/metadata.instructions.md index 9dc33d8b6..a1e99a8e6 100644 --- a/.github/instructions/metadata.instructions.md +++ b/.github/instructions/metadata.instructions.md @@ -13,7 +13,7 @@ The `contributors` property is a required array of GitHub usernames for the peop The `tags` property is an array of strings that describe the icon and can be used for searching. Validate the tags against the `icon.schema.json` to ensure they are correctly formatted and adhere to the defined structure. -Provide tag suggestions based on the name of the icon and the use cases provided in the PR description. Use the existing tags in the repository as a reference for consistency and to avoid duplicates. Don't suggest words like: 'icon' and preferably use single words. Tags should always be in lowercase, and may also contain spaces (e.g. `magnifying glass`). The name of icon should not be included in the tags, as it is already specified. +Provide tag suggestions based on the name of the icon and the use cases provided in the PR description. Use the existing tags in the repository as a reference for consistency and to avoid duplicates. Don't suggest words like: 'icon' and preferably use single words. Tags should always be in lowercase, and may also contain spaces (e.g. `magnifying glass`). Don't include the full icon name, its space-separated form, or any individual part of its kebab-case name because those terms are already searchable. For example, don't suggest `mail-search`, `mail search`, `mail`, or `search` for the `mail-search` icon. ## Categories @@ -32,7 +32,7 @@ A use-case tells a reader **where and why an icon would be used in a real interf - Write each use-case as a short phrase, not a sentence. Start with a present participle verb: *Representing…*, *Indicating…*, *Marking…*, *Showing…*, *Confirming…*, *Toggling…*, *Categorizing…*, *Searching…*. - Keep it to roughly 4–12 words. One clear idea per entry. - No trailing period. No leading bullet, number, or dash (the surrounding format supplies that). -- Give each icon 1–4 use-cases, ordered most-common first. Prefer fewer strong entries over many weak or repetitive ones. +- Give each icon 1 or more use-cases, ordered most-common first. More than 4 use-cases are allowed when they are distinct and useful. Prefer fewer strong entries over many weak or repetitive ones. ### Voice diff --git a/.github/labeler.yml b/.github/labeler.yml index 39a681277..6029f5e00 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -82,6 +82,7 @@ - changed-files: - any-glob-to-any-file: - 'packages/lucide-solid/*' + - 'packages/solid/*' # For changes in the Lucide astro package 🚀 astro package: diff --git a/.github/workflows/angular.yml b/.github/workflows/angular.yml index 764d077ec..80896cdc7 100644 --- a/.github/workflows/angular.yml +++ b/.github/workflows/angular.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: cache: 'pnpm' @@ -31,7 +31,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: cache: 'pnpm' diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d6e618c6b..3da94beb1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,7 +5,10 @@ on: branches: - main paths: - - icons/**/*.svg + - icons/*.svg + + schedule: + - cron: '0 6 * * *' workflow_dispatch: inputs: @@ -26,39 +29,63 @@ on: permissions: {} jobs: - check-dispatch-gate: - if: github.repository == 'lucide-icons/lucide' && - startsWith(github.event.head_commit.message, 'feat(icons)') && - github.event_name != 'workflow_dispatch' + release-gate: + concurrency: + group: ci-${{ github.event_name == 'schedule' && github.ref || 'release-gated' }} + cancel-in-progress: true + if: github.repository == 'lucide-icons/lucide' && github.event_name != 'workflow_dispatch' + environment: ${{ github.event_name == 'schedule' && 'Icon Release' || 'Icon Release Gated' }} + runs-on: ubuntu-latest + steps: + - name: Approve release + run: echo 'Release approved' + + prepare-release: + needs: release-gate runs-on: ubuntu-latest permissions: - contents: read + contents: read # Required to check if a new release is needed outputs: - RELEASE_ENVIRONMENT: ${{ steps.environment.outputs.RELEASE_ENVIRONMENT }} + SHOULD_RELEASE: ${{ steps.changes.outputs.SHOULD_RELEASE }} + LATEST_TAG: ${{ steps.latest-tag.outputs.LATEST_TAG }} steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + fetch-depth: 0 - - name: Fetch tags - run: git fetch --all --tags + - name: Get latest tag + id: latest-tag + run: echo "LATEST_TAG=$(git tag --sort=-v:refname | grep -E '^[0-9]+\.[0-9]+\.[0-9]+$' | head -n 1)" >> "$GITHUB_OUTPUT" - - name: Check if latest tag was created today - id: environment + - name: Log latest tag + run: echo '${{ steps.latest-tag.outputs.LATEST_TAG }}' + + - name: Check for releasable changes + id: changes + env: + LATEST_TAG: ${{ steps.latest-tag.outputs.LATEST_TAG }} run: | - LATEST_TAG=$(git tag --sort=-v:refname | grep -E '^[0-9]+\.[0-9]+\.[0-9]+$' | head -n 1) - TAG_DATE=$(git log -1 --format=%cs "$LATEST_TAG") - TODAY=$(date +%Y-%m-%d) - - if [ "$TAG_DATE" == "$TODAY" ]; then - echo "::warning::A release tag already exists for today ($TODAY): $LATEST_TAG. Manual approval will be required to proceed." - echo "RELEASE_ENVIRONMENT=Icon Release Gated" >> $GITHUB_OUTPUT - else - echo "RELEASE_ENVIRONMENT=Icon Release" >> $GITHUB_OUTPUT + if [ -z "$LATEST_TAG" ]; then + echo "::error::No version tag found to release from." + exit 1 fi + echo "Latest version tag: $LATEST_TAG" + + CHANGES=$(git diff --name-only "$LATEST_TAG" HEAD -- ':(glob)icons/*.svg') + + if [ -z "$CHANGES" ]; then + echo "::notice::No icon SVGs changed since $LATEST_TAG. Skipping release." + echo "SHOULD_RELEASE=false" >> "$GITHUB_OUTPUT" + exit 0 + fi + + echo "$CHANGES" + echo "SHOULD_RELEASE=true" >> "$GITHUB_OUTPUT" + create-release: - if: github.repository == 'lucide-icons/lucide' - needs: check-dispatch-gate - environment: ${{ needs.check-dispatch-gate.outputs.RELEASE_ENVIRONMENT }} + if: github.repository == 'lucide-icons/lucide' && needs.prepare-release.outputs.SHOULD_RELEASE == 'true' + needs: prepare-release runs-on: ubuntu-latest permissions: contents: write # Required to create the release and tag @@ -67,7 +94,7 @@ jobs: RELEASE_URL: ${{ steps.create-release.outputs.url }} steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: cache: 'pnpm' @@ -76,37 +103,26 @@ jobs: - name: Install dependencies run: pnpm install --frozen-lockfile - - name: Fetch tags - run: git fetch --all --tags - - - name: Get latest tag - id: latest-tag - run: echo "LATEST_TAG=$(git tag --sort=-v:refname | grep -E '^[0-9]+\.[0-9]+\.[0-9]+$' | head -n 1)" >> $GITHUB_OUTPUT - - - name: Log latest tag - run: echo '${{ steps.latest-tag.outputs.LATEST_TAG }}' - - name: Check if we can patch - run: pnpm semver $LATEST_TAG -i minor + run: pnpm semver "$LATEST_TAG" -i minor env: - LATEST_TAG: ${{ steps.latest-tag.outputs.LATEST_TAG }} + LATEST_TAG: ${{ needs.prepare-release.outputs.LATEST_TAG }} - name: Create new version id: new-version - run: echo "NEW_VERSION=$(pnpm semver $LATEST_TAG -i minor)" >> $GITHUB_OUTPUT + run: echo "NEW_VERSION=$(pnpm semver "$LATEST_TAG" -i minor)" >> "$GITHUB_OUTPUT" env: - LATEST_TAG: ${{ steps.latest-tag.outputs.LATEST_TAG }} + LATEST_TAG: ${{ needs.prepare-release.outputs.LATEST_TAG }} - name: Check output - run: | - echo '${{ steps.new-version.outputs.NEW_VERSION }}' - echo '${{ steps.change-log.outputs.CHANGE_LOG }}' + run: echo '${{ steps.new-version.outputs.NEW_VERSION }}' - name: Create Release id: create-release uses: softprops/action-gh-release@efb35369e0ad2afab669f228072c1b0d510eae64 # v3.0.3 with: tag_name: ${{ steps.new-version.outputs.NEW_VERSION }} + target_commitish: ${{ github.sha }} name: Version ${{ steps.new-version.outputs.NEW_VERSION }} generate_release_notes: true @@ -135,7 +151,7 @@ jobs: post-release: name: Trigger post-release automation if: >- - always() && + !cancelled() && github.repository == 'lucide-icons/lucide' && (needs.start-release.result == 'success' || needs.dispatch-release.result == 'success') needs: [create-release, start-release, dispatch-release] diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 551624b82..6be2453ac 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -20,7 +20,7 @@ jobs: with: # Release metadata is generated by diffing every release tag fetch-depth: 0 - - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: cache: 'pnpm' @@ -39,7 +39,7 @@ jobs: with: # Release metadata is generated by diffing every release tag fetch-depth: 0 - - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: cache: 'pnpm' diff --git a/.github/workflows/generate-pr-title.yml b/.github/workflows/generate-pr-title.yml new file mode 100644 index 000000000..0e70e0462 --- /dev/null +++ b/.github/workflows/generate-pr-title.yml @@ -0,0 +1,103 @@ +name: PR title + +on: + pull_request_target: + types: + - opened + - reopened + - synchronize + - edited + +permissions: {} + +concurrency: + group: pr-title-${{ github.event.pull_request.number }} + cancel-in-progress: true + +jobs: + generate-pr-title: + name: Generate PR Title + # Skip when a maintainer has opted out by adding the "Keep PR title" label, + # and on manual edits so they are not reverted straight away. + if: github.repository == 'lucide-icons/lucide' && + github.event.action != 'edited' && + !contains(github.event.pull_request.labels.*.name, 'Keep PR title') + runs-on: ubuntu-latest + permissions: + contents: read + pull-requests: write # Required to edit the PR title + + steps: + # We check out the main branch of the main repository for security reasons. + # The script only reads its input from the environment, so it never runs + # any code from the (untrusted) pull request. + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + repository: lucide-icons/lucide + fetch-depth: 0 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + node-version-file: 'package.json' + + - name: Get changed files + id: changed-files + uses: tj-actions/changed-files@9426d40962ed5378910ee2e21d5f8c6fcbf2dd96 # v47.0.6 + with: + # The checkout is the base branch, so the PR head commit isn't available locally. + use_rest_api: true + + - name: Generate PR title + id: generate + run: | + NEW_TITLE="$(node ./scripts/generatePullRequestTitle.mts)" + { + echo "new_title<> "$GITHUB_OUTPUT" + env: + ADDED_FILES: ${{ steps.changed-files.outputs.added_files }} + CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_and_modified_files }} + CURRENT_TITLE: ${{ github.event.pull_request.title }} + + - name: Update PR title + if: steps.generate.outputs.new_title != '' + run: gh pr edit "$PR_NUMBER" --title "$NEW_TITLE" + env: + GH_TOKEN: ${{ github.token }} + PR_NUMBER: ${{ github.event.pull_request.number }} + NEW_TITLE: ${{ steps.generate.outputs.new_title }} + + # Runs after the title is generated: an edit made with `GITHUB_TOKEN` does not + # trigger new workflow runs, so a separate workflow would lint the old title. + # The lint action fetches the current title through the API. + lint-pr-title: + name: PR Title Lint + needs: generate-pr-title + if: ${{ !cancelled() }} + runs-on: ubuntu-latest + permissions: + contents: read + pull-requests: read # Required to read the PR title + + steps: + # Checks out the base branch, so the allowed types can't be changed by the PR. + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + + - name: Read conventional commit types + id: commit-types + run: | + { + echo "types<> "$GITHUB_OUTPUT" + + - uses: amannn/action-semantic-pull-request@48f256284bd46cdaab1048c3721360e808335d50 # v6.1.1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + types: ${{ steps.commit-types.outputs.types }} + requireScope: true + ignoreLabels: | + bot diff --git a/.github/workflows/icons.yml b/.github/workflows/icons.yml index e4d53a6f9..1982039d2 100644 --- a/.github/workflows/icons.yml +++ b/.github/workflows/icons.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: cache: 'pnpm' @@ -33,7 +33,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: cache: 'pnpm' diff --git a/.github/workflows/lint-code.yml b/.github/workflows/lint-code.yml index edaec6611..0cebc766c 100644 --- a/.github/workflows/lint-code.yml +++ b/.github/workflows/lint-code.yml @@ -7,11 +7,12 @@ permissions: contents: read jobs: - lint-code: + eslint: + name: ESLint runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: cache: 'pnpm' @@ -20,5 +21,57 @@ jobs: - name: Install Dependencies run: pnpm install --frozen-lockfile - - name: Run Linter - run: pnpm lint + # The formatter prints workflow commands, which GitHub shows as inline annotations. + - name: Run ESLint + run: pnpm lint:es --format ./scripts/eslint/githubFormatter.mjs + + prettier: + name: Prettier + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + cache: 'pnpm' + node-version-file: 'package.json' + + - name: Install Dependencies + run: pnpm install --frozen-lockfile + + - name: Check formatting + run: pnpm lint:format:ci + + json-schema: + name: JSON Schema + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + cache: 'pnpm' + node-version-file: 'package.json' + + - name: Install Dependencies + run: pnpm install --frozen-lockfile + + - name: Validate icon and category JSON + run: pnpm lint:json --format ./scripts/eslint/githubFormatter.mjs + + spelling: + name: Spelling + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + cache: 'pnpm' + node-version-file: 'package.json' + + - name: Install Dependencies + run: pnpm install --frozen-lockfile + + - name: Spell check icon and category metadata + run: pnpm lint:spelling:ci diff --git a/.github/workflows/lint-pr-title.yml b/.github/workflows/lint-pr-title.yml deleted file mode 100644 index ef9abcf61..000000000 --- a/.github/workflows/lint-pr-title.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: Linting PR title - -on: - pull_request: - types: - - opened - - edited - - reopened - -permissions: - contents: read - pull-requests: read # Required to read the PR title - -jobs: - lint-pr-title: - name: PR Title Lint - runs-on: ubuntu-latest - steps: - - uses: amannn/action-semantic-pull-request@48f256284bd46cdaab1048c3721360e808335d50 # v6.1.1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - types: | - fix - feat - perf - refactor - test - style - docs - ci - build - chore - requireScope: true - ignoreLabels: | - bot diff --git a/.github/workflows/linting-icons.yml b/.github/workflows/linting-icons.yml index 0f69ba490..5a6c2f213 100644 --- a/.github/workflows/linting-icons.yml +++ b/.github/workflows/linting-icons.yml @@ -20,7 +20,7 @@ jobs: contents: read steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: cache: 'pnpm' @@ -49,7 +49,7 @@ jobs: contents: read steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: cache: 'pnpm' diff --git a/.github/workflows/lucide-astro.yml b/.github/workflows/lucide-astro.yml index 47a1fc8dd..8a265ba5c 100644 --- a/.github/workflows/lucide-astro.yml +++ b/.github/workflows/lucide-astro.yml @@ -19,7 +19,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: node-version-file: 'package.json' @@ -35,7 +35,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: node-version-file: 'package.json' @@ -46,3 +46,19 @@ jobs: - name: Test run: pnpm --filter @lucide/astro test + + typecheck: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + node-version-file: 'package.json' + cache: 'pnpm' + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Typecheck + run: pnpm --filter @lucide/astro typecheck diff --git a/.github/workflows/lucide-font.yml b/.github/workflows/lucide-font.yml index 7548723cb..4a99742bc 100644 --- a/.github/workflows/lucide-font.yml +++ b/.github/workflows/lucide-font.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: cache: 'pnpm' @@ -37,3 +37,19 @@ jobs: with: name: lucide-font path: lucide-font + + typecheck: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + cache: 'pnpm' + node-version-file: 'package.json' + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Typecheck + run: pnpm --filter build-font typecheck diff --git a/.github/workflows/lucide-lab.yml b/.github/workflows/lucide-lab.yml index 67c7e7e20..a8f9321dc 100644 --- a/.github/workflows/lucide-lab.yml +++ b/.github/workflows/lucide-lab.yml @@ -18,7 +18,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: cache: 'pnpm' @@ -29,3 +29,19 @@ jobs: - name: Build run: pnpm --filter @lucide/lab build + + typecheck: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + cache: 'pnpm' + node-version-file: 'package.json' + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Typecheck + run: pnpm --filter @lucide/lab typecheck diff --git a/.github/workflows/lucide-preact.yml b/.github/workflows/lucide-preact.yml index f842c1b47..5e7cccfe2 100644 --- a/.github/workflows/lucide-preact.yml +++ b/.github/workflows/lucide-preact.yml @@ -20,7 +20,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: cache: 'pnpm' @@ -31,3 +31,19 @@ jobs: - name: Test run: pnpm --filter lucide-preact test + + typecheck: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + cache: 'pnpm' + node-version-file: 'package.json' + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Typecheck + run: pnpm --filter lucide-preact typecheck diff --git a/.github/workflows/lucide-react-native.yml b/.github/workflows/lucide-react-native.yml index 6f8d83079..160f6e2cf 100644 --- a/.github/workflows/lucide-react-native.yml +++ b/.github/workflows/lucide-react-native.yml @@ -20,7 +20,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: cache: 'pnpm' @@ -36,7 +36,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: cache: 'pnpm' @@ -47,3 +47,19 @@ jobs: - name: Test run: pnpm --filter lucide-react-native test + + typecheck: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + cache: 'pnpm' + node-version-file: 'package.json' + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Typecheck + run: pnpm --filter lucide-react-native typecheck diff --git a/.github/workflows/lucide-react.yml b/.github/workflows/lucide-react.yml index 3e8676365..02a9939ba 100644 --- a/.github/workflows/lucide-react.yml +++ b/.github/workflows/lucide-react.yml @@ -24,7 +24,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: cache: 'pnpm' @@ -40,7 +40,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: cache: 'pnpm' @@ -56,7 +56,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: cache: 'pnpm' @@ -70,3 +70,19 @@ jobs: - name: Run integration checks run: pnpm test:integrations:react + + typecheck: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + cache: 'pnpm' + node-version-file: 'package.json' + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Typecheck + run: pnpm --filter lucide-react typecheck diff --git a/.github/workflows/lucide-shared.yml b/.github/workflows/lucide-shared.yml index efea0dc77..9ecc72556 100644 --- a/.github/workflows/lucide-shared.yml +++ b/.github/workflows/lucide-shared.yml @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: cache: 'pnpm' @@ -27,4 +27,20 @@ jobs: run: pnpm install --frozen-lockfile - name: Test - run: pnpm --filter lucide-react test + run: pnpm --filter @lucide/shared test + + typecheck: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + cache: 'pnpm' + node-version-file: 'package.json' + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Typecheck + run: pnpm --filter @lucide/shared typecheck diff --git a/.github/workflows/lucide-solid.yml b/.github/workflows/lucide-solid.yml index d78602a35..8b5d3d658 100644 --- a/.github/workflows/lucide-solid.yml +++ b/.github/workflows/lucide-solid.yml @@ -7,9 +7,12 @@ on: pull_request: paths: - packages/lucide-solid/** + - integrations/lucide-solid/** - packages/shared/** - tools/build-icons/** - tools/rollup-plugins/** + - package.json + - pnpm-workspace.yaml - pnpm-lock.yaml permissions: @@ -20,7 +23,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: cache: 'pnpm' @@ -36,7 +39,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: cache: 'pnpm' @@ -47,3 +50,38 @@ jobs: - name: Test run: pnpm --filter lucide-solid test + + typecheck: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + cache: 'pnpm' + node-version-file: 'package.json' + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Typecheck + run: pnpm --filter lucide-solid typecheck + + integration: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + cache: 'pnpm' + node-version-file: 'package.json' + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Install Chromium + run: pnpm --filter @lucide/integration-solid-vite exec playwright install --with-deps chromium + + - name: Run integration checks + run: pnpm test:integrations:solid diff --git a/.github/workflows/lucide-static.yml b/.github/workflows/lucide-static.yml index fee24bf72..692882522 100644 --- a/.github/workflows/lucide-static.yml +++ b/.github/workflows/lucide-static.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: cache: 'pnpm' @@ -26,3 +26,19 @@ jobs: - name: Build run: pnpm --filter lucide-static build + + typecheck: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + cache: 'pnpm' + node-version-file: 'package.json' + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Typecheck + run: pnpm --filter lucide-static typecheck diff --git a/.github/workflows/lucide-svelte-5.yml b/.github/workflows/lucide-svelte-5.yml index 4f48fcf19..230656a23 100644 --- a/.github/workflows/lucide-svelte-5.yml +++ b/.github/workflows/lucide-svelte-5.yml @@ -10,6 +10,9 @@ on: - packages/shared/** - tools/build-icons/** - tools/rollup-plugins/** + - integrations/lucide-svelte/** + - package.json + - pnpm-workspace.yaml - pnpm-lock.yaml permissions: @@ -20,7 +23,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: cache: 'pnpm' @@ -36,7 +39,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: cache: 'pnpm' @@ -52,7 +55,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: cache: 'pnpm' @@ -61,5 +64,24 @@ jobs: - name: Install dependencies run: pnpm install --frozen-lockfile - - name: Test + - name: Typecheck run: pnpm --filter @lucide/svelte typecheck + + integration: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + cache: 'pnpm' + node-version-file: 'package.json' + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Install Chromium + run: pnpm --filter @lucide/integration-svelte-vite exec playwright install --with-deps chromium + + - name: Run integration checks + run: pnpm test:integrations:svelte diff --git a/.github/workflows/lucide-vue.yml b/.github/workflows/lucide-vue.yml index 81ec93f7e..a5d5bee20 100644 --- a/.github/workflows/lucide-vue.yml +++ b/.github/workflows/lucide-vue.yml @@ -10,6 +10,9 @@ on: - packages/shared/** - tools/build-icons/** - tools/rollup-plugins/** + - integrations/lucide-vue/** + - package.json + - pnpm-workspace.yaml - pnpm-lock.yaml permissions: @@ -20,7 +23,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: cache: 'pnpm' @@ -36,7 +39,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: cache: 'pnpm' @@ -52,7 +55,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: cache: 'pnpm' @@ -63,3 +66,22 @@ jobs: - name: Test run: pnpm --filter @lucide/vue typecheck + + integration: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + cache: 'pnpm' + node-version-file: 'package.json' + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Install Chromium + run: pnpm --filter @lucide/integration-vue-vite exec playwright install --with-deps chromium + + - name: Run integration checks + run: pnpm test:integrations:vue diff --git a/.github/workflows/lucide.yml b/.github/workflows/lucide.yml index 844d2647f..6e7a3a190 100644 --- a/.github/workflows/lucide.yml +++ b/.github/workflows/lucide.yml @@ -19,7 +19,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: cache: 'pnpm' @@ -35,7 +35,7 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: cache: 'pnpm' @@ -46,3 +46,19 @@ jobs: - name: Test run: pnpm --filter lucide test + + typecheck: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + cache: 'pnpm' + node-version-file: 'package.json' + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Typecheck + run: pnpm --filter lucide typecheck diff --git a/.github/workflows/pull-request-metadata-suggestions.yml b/.github/workflows/pull-request-metadata-suggestions.yml index cc1586da7..fc7341353 100644 --- a/.github/workflows/pull-request-metadata-suggestions.yml +++ b/.github/workflows/pull-request-metadata-suggestions.yml @@ -22,7 +22,7 @@ jobs: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 with: repository: lucide-icons/lucide - - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: cache: 'pnpm' diff --git a/.github/workflows/release-lab.yml b/.github/workflows/release-lab.yml index dfc7970b4..d8c15c1c9 100644 --- a/.github/workflows/release-lab.yml +++ b/.github/workflows/release-lab.yml @@ -35,7 +35,7 @@ jobs: with: fetch-depth: 0 # Required to diff the lab icons against the previous tag - - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: cache: 'pnpm' @@ -125,7 +125,7 @@ jobs: contents: read steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: cache: 'pnpm' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7901221a6..01955f2f9 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -53,12 +53,13 @@ jobs: '@lucide/angular', '@lucide/astro', '@lucide/icons', + '@lucide/solid', '@lucide/svelte', '@lucide/vue', ] steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: cache: 'pnpm' @@ -96,7 +97,7 @@ jobs: name: lucide-font path: lucide-font - - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: cache: 'pnpm' @@ -127,7 +128,7 @@ jobs: contents: read steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 - - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: pnpm/action-setup@ea17c68df8912ef543352723c149a84f56e3d413 # v6.1.0 - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 with: cache: 'pnpm' diff --git a/.github/workflows/solid-2.yml b/.github/workflows/solid-2.yml new file mode 100644 index 000000000..f65ffa092 --- /dev/null +++ b/.github/workflows/solid-2.yml @@ -0,0 +1,71 @@ +name: Lucide Solid 2 Checks + +on: + push: + branches: + - next + pull_request: + paths: + - packages/solid/** + - packages/shared/** + - tools/build-icons/** + - tools/rollup-plugins/** + - integrations/lucide-solid-2/** + - package.json + - pnpm-workspace.yaml + - pnpm-lock.yaml + +permissions: + contents: read + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + cache: 'pnpm' + node-version-file: 'package.json' + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Build + run: pnpm --filter @lucide/solid build + + test: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + cache: 'pnpm' + node-version-file: 'package.json' + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Test + run: pnpm --filter @lucide/solid test + + integration: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + - uses: pnpm/action-setup@0977fd99725f1db4007ccb2928dbb4e90d06cc86 # v6.0.10 + - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0 + with: + cache: 'pnpm' + node-version-file: 'package.json' + + - name: Install dependencies + run: pnpm install --frozen-lockfile + + - name: Install Chromium + run: pnpm --filter @lucide/integration-solid-2-vite exec playwright install --with-deps chromium + + - name: Run integration checks + run: pnpm test:integrations:solid-2 diff --git a/.gitignore b/.gitignore index 9003ed236..311a10f5f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ .DS_Store .idea .next +.astro .obsidian .now .cache @@ -18,6 +19,10 @@ stats integrations/**/.react-router integrations/**/.vitest-attachments integrations/**/__screenshots__ +integrations/**/.output +integrations/**/.nitro +integrations/**/.nuxt +integrations/**/.svelte-kit outlined lucide-font packages/**/src/icons/*.js diff --git a/.prettierignore b/.prettierignore index e821afcfd..8dd5aedd3 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,4 +1,5 @@ pnpm-lock.yaml +.github/conventional-commit-types.json # docs examples docs/**/examples/ @@ -23,8 +24,13 @@ packages/svelte/.svelte-kit integrations/**/.react-router integrations/**/next-env.d.ts integrations/**/routeTree.gen.ts +integrations/**/file-routes.d.ts integrations/**/.vitest-attachments integrations/**/__screenshots__ +integrations/**/.output +integrations/**/.nitro +integrations/**/.nuxt +integrations/**/.svelte-kit # lucide-svelte packages/svelte/src/icons/*.svelte diff --git a/categories/accessibility.json b/categories/accessibility.json index a668d3ee3..e6a4cc76a 100644 --- a/categories/accessibility.json +++ b/categories/accessibility.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", "title": "Accessibility", + "description": "Icons for accessibility, visibility, hearing, speech, and inclusive UI affordances.", "icon": "accessibility" } diff --git a/categories/account.json b/categories/account.json index 95a80ad40..cc903fddd 100644 --- a/categories/account.json +++ b/categories/account.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", "title": "Accounts & access", + "description": "Icons for user profiles, identity, settings, memberships, and personal account actions.", "icon": "user" } diff --git a/categories/animals.json b/categories/animals.json index 85fafda5f..f1cff48ec 100644 --- a/categories/animals.json +++ b/categories/animals.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", "title": "Animals", + "description": "Icons for animals, wildlife, pets, insects, and other living creatures.", "icon": "dog" } diff --git a/categories/arrows.json b/categories/arrows.json index 3258378f9..b42d13038 100644 --- a/categories/arrows.json +++ b/categories/arrows.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", "title": "Arrows", + "description": "Icons for directional arrows, movement, sorting, transfer, and navigation flows.", "icon": "arrow-left-right" } diff --git a/categories/buildings.json b/categories/buildings.json index 13f24b08f..cd6d424c7 100644 --- a/categories/buildings.json +++ b/categories/buildings.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", "title": "Buildings", + "description": "Icons for buildings, landmarks, houses, infrastructure, and built environments.", "icon": "building" } diff --git a/categories/charts.json b/categories/charts.json index e9bdc1882..8d37c9e26 100644 --- a/categories/charts.json +++ b/categories/charts.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", "title": "Charts", + "description": "Icons for charts, graphs, trends, analytics, and data visualization.", "icon": "chart-pie" } diff --git a/categories/communication.json b/categories/communication.json index 3b9a899d7..cc22a29d4 100644 --- a/categories/communication.json +++ b/categories/communication.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", "title": "Communication", + "description": "Icons for speaking, listening, calling, messaging, broadcasting, and communication devices.", "icon": "message-circle" } diff --git a/categories/connectivity.json b/categories/connectivity.json index b566a84ec..1568ff2da 100644 --- a/categories/connectivity.json +++ b/categories/connectivity.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", "title": "Connectivity", + "description": "Icons for wireless signals, wired connections, networks, device pairing, and data transfer.", "icon": "wifi" } diff --git a/categories/cursors.json b/categories/cursors.json index 9522faa16..5996828a7 100644 --- a/categories/cursors.json +++ b/categories/cursors.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", "title": "Cursors", + "description": "Icons for cursors, pointers, selection tools, and loading states.", "icon": "mouse-pointer-2" } diff --git a/categories/design.json b/categories/design.json index e32592560..bddae399e 100644 --- a/categories/design.json +++ b/categories/design.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", "title": "Design", + "description": "Icons for design tools, layout controls, creative editing, and visual composition.", "icon": "palette" } diff --git a/categories/development.json b/categories/development.json index 113fd1cc2..beb75b795 100644 --- a/categories/development.json +++ b/categories/development.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", "title": "Coding & development", + "description": "Icons for code, logic, data structures, automation, and software development workflows.", "icon": "code-xml" } diff --git a/categories/devices.json b/categories/devices.json index 3bb54f180..d6131a952 100644 --- a/categories/devices.json +++ b/categories/devices.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", "title": "Devices", + "description": "Icons for hardware, electronics, computers, peripherals, and connected devices.", "icon": "smartphone" } diff --git a/categories/emoji.json b/categories/emoji.json index 2bd590877..78e838828 100644 --- a/categories/emoji.json +++ b/categories/emoji.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", "title": "Emoji", + "description": "Icons for expressive symbols, faces, gestures, hearts, stars, and zodiac signs.", "icon": "face-slightly-smiling" } diff --git a/categories/files.json b/categories/files.json index 073a09beb..40b4265e8 100644 --- a/categories/files.json +++ b/categories/files.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", "title": "File icons", + "description": "Icons for files, folders, storage, import and export, and document-related actions.", "icon": "panels-top-left" } diff --git a/categories/finance.json b/categories/finance.json index 267643671..b89e9c126 100644 --- a/categories/finance.json +++ b/categories/finance.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", "title": "Finance", + "description": "Icons for money, pricing, payments, currencies, banking, and financial trends.", "icon": "piggy-bank" } diff --git a/categories/food-beverage.json b/categories/food-beverage.json index 7456558b6..f643fcbb3 100644 --- a/categories/food-beverage.json +++ b/categories/food-beverage.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", "title": "Food & beverage", + "description": "Icons for food, drinks, cooking, ingredients, dining, and kitchen items.", "icon": "coffee" } diff --git a/categories/gaming.json b/categories/gaming.json index 2c90f4c9d..c9f5e47f5 100644 --- a/categories/gaming.json +++ b/categories/gaming.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", "title": "Gaming", + "description": "Icons for games, fantasy items, strategy pieces, achievements, and play-related objects.", "icon": "gamepad-2" } diff --git a/categories/home.json b/categories/home.json index 20a89330d..d15228e3d 100644 --- a/categories/home.json +++ b/categories/home.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", "title": "Home", + "description": "Icons for household spaces, furniture, appliances, utilities, cleaning, and home safety.", "icon": "house" } diff --git a/categories/layout.json b/categories/layout.json index 22a163f95..ba9ffbe34 100644 --- a/categories/layout.json +++ b/categories/layout.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", "title": "Layout", + "description": "Icons for alignment, spacing, resizing, grouping, and interface layout structure.", "icon": "panels-top-left" } diff --git a/categories/mail.json b/categories/mail.json index 3dd1d3026..329a55ed1 100644 --- a/categories/mail.json +++ b/categories/mail.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", "title": "Mail", + "description": "Icons for mailboxes, inboxes, sending, replies, attachments, and email management.", "icon": "mail" } diff --git a/categories/math.json b/categories/math.json index 1ae72ad9e..19d8fe569 100644 --- a/categories/math.json +++ b/categories/math.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", "title": "Mathematics", + "description": "Icons for math symbols, geometry, measurement, arithmetic, and calculation.", "icon": "divide" } diff --git a/categories/medical.json b/categories/medical.json index e745df697..fcc92c78d 100644 --- a/categories/medical.json +++ b/categories/medical.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", "title": "Medical", + "description": "Icons for healthcare, anatomy, treatment, diagnostics, wellness, and medical facilities.", "icon": "heart" } diff --git a/categories/multimedia.json b/categories/multimedia.json index 00897c3e4..80907bdf8 100644 --- a/categories/multimedia.json +++ b/categories/multimedia.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", "title": "Multimedia", + "description": "Icons for audio, video, playback, recording, broadcasting, and media libraries.", "icon": "circle-play" } diff --git a/categories/nature.json b/categories/nature.json index aa41fd8dd..5f83e3778 100644 --- a/categories/nature.json +++ b/categories/nature.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", "title": "Nature", + "description": "Icons for plants, trees, landscapes, camping, and the natural world.", "icon": "sprout" } diff --git a/categories/navigation.json b/categories/navigation.json index 0c46693cb..4542bfdd7 100644 --- a/categories/navigation.json +++ b/categories/navigation.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", "title": "Navigation & Places", + "description": "Icons for maps, locations, landmarks, routes, travel directions, and wayfinding.", "icon": "compass" } diff --git a/categories/notifications.json b/categories/notifications.json index c2a729bec..366c4efbe 100644 --- a/categories/notifications.json +++ b/categories/notifications.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", - "title": "Notification", + "title": "Notifications", + "description": "Icons for alerts, status updates, reminders, approvals, and attention states.", "icon": "triangle-alert" } diff --git a/categories/people.json b/categories/people.json index be028e4b5..a8378b7f4 100644 --- a/categories/people.json +++ b/categories/people.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", "title": "People", + "description": "Icons for people, groups, identities, roles, and person-centered actions.", "icon": "person-standing" } diff --git a/categories/photography.json b/categories/photography.json index a4ad5bff1..fcaa4f42f 100644 --- a/categories/photography.json +++ b/categories/photography.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", "title": "Photography", + "description": "Icons for cameras, images, framing, viewing, editing, and photo workflows.", "icon": "camera" } diff --git a/categories/science.json b/categories/science.json index 720983fb3..27988158d 100644 --- a/categories/science.json +++ b/categories/science.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", "title": "Science", + "description": "Icons for science, research, experiments, instruments, formulas, and discovery.", "icon": "flask-conical" } diff --git a/categories/seasons.json b/categories/seasons.json index 0c4fff3cc..43ab65678 100644 --- a/categories/seasons.json +++ b/categories/seasons.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", "title": "Seasons", + "description": "Icons for seasonal weather, blooming plants, sunlight, and changing times of year.", "icon": "leaf" } diff --git a/categories/security.json b/categories/security.json index 8372554fe..f8fc17cfc 100644 --- a/categories/security.json +++ b/categories/security.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", "title": "Security", + "description": "Icons for locks, keys, identity checks, surveillance, protection, and secure access.", "icon": "shield" } diff --git a/categories/shapes.json b/categories/shapes.json index c968b222b..d282fcd2a 100644 --- a/categories/shapes.json +++ b/categories/shapes.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", "title": "Shapes", + "description": "Icons for basic geometric shapes and symbols.", "icon": "triangle" } diff --git a/categories/shopping.json b/categories/shopping.json index 5e6b05ff5..b9341196c 100644 --- a/categories/shopping.json +++ b/categories/shopping.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", "title": "Shopping", + "description": "Icons for retail, carts, bags, checkout, barcodes, and purchasing.", "icon": "shopping-bag" } diff --git a/categories/social.json b/categories/social.json index ee87f8574..ce0210600 100644 --- a/categories/social.json +++ b/categories/social.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", "title": "Social", + "description": "Icons for social interaction, reactions, sharing, community, and relationship signals.", "icon": "thumbs-up" } diff --git a/categories/sports.json b/categories/sports.json index 25440ad6f..aff648ab4 100644 --- a/categories/sports.json +++ b/categories/sports.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", "title": "Sports", - "icon": "type" + "description": "Icons for sports, fitness, competition, equipment, and athletic achievement.", + "icon": "trophy" } diff --git a/categories/sustainability.json b/categories/sustainability.json index a0730f6fa..c18463168 100644 --- a/categories/sustainability.json +++ b/categories/sustainability.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", "title": "Sustainability", + "description": "Icons for sustainability, clean energy, recycling, nature, and environmental stewardship.", "icon": "recycle" } diff --git a/categories/text.json b/categories/text.json index 74419487a..49d19130d 100644 --- a/categories/text.json +++ b/categories/text.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", "title": "Text formatting", + "description": "Icons for letters, typography, formatting, reading, writing, and text structure.", "icon": "type" } diff --git a/categories/time.json b/categories/time.json index 2b85210de..703402f79 100644 --- a/categories/time.json +++ b/categories/time.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", "title": "Time & calendar", + "description": "Icons for clocks, calendars, schedules, history, timers, and time tracking.", "icon": "calendar" } diff --git a/categories/tools.json b/categories/tools.json index 48cf0a96a..18722dd6e 100644 --- a/categories/tools.json +++ b/categories/tools.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", "title": "Tools", + "description": "Icons for hand tools, equipment, maintenance, repair, and making things.", "icon": "hammer" } diff --git a/categories/transportation.json b/categories/transportation.json index 984da071c..768fa6a81 100644 --- a/categories/transportation.json +++ b/categories/transportation.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", "title": "Transportation", + "description": "Icons for vehicles, transit, cargo, parking, fuel, and moving people or goods.", "icon": "train-front" } diff --git a/categories/travel.json b/categories/travel.json index 3d78c06e3..cf7081470 100644 --- a/categories/travel.json +++ b/categories/travel.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", "title": "Travel", + "description": "Icons for travel, lodging, luggage, destinations, trip planning, and tourism.", "icon": "backpack" } diff --git a/categories/weather.json b/categories/weather.json index a08cc5d66..72c9b0338 100644 --- a/categories/weather.json +++ b/categories/weather.json @@ -1,5 +1,6 @@ { "$schema": "../category.schema.json", "title": "Weather", + "description": "Icons for clouds, sun, rain, wind, temperature, and weather conditions.", "icon": "cloud-sun" } diff --git a/category.schema.json b/category.schema.json index 7229f210e..385d1f14c 100644 --- a/category.schema.json +++ b/category.schema.json @@ -13,7 +13,7 @@ "title": "Lucide Icons category schema", "type": "object", "additionalProperties": false, - "required": ["$schema", "icon", "title"], + "required": ["$schema", "description", "icon", "title"], "properties": { "$schema": { "type": "string" diff --git a/cspell.json b/cspell.json index b98d751c0..10cde6110 100644 --- a/cspell.json +++ b/cspell.json @@ -1,4 +1,5 @@ { + "language": "en,en-GB", "dictionaries": ["en-us", "custom-words"], "dictionaryDefinitions": [ { @@ -6,5 +7,9 @@ "path": "./.cspell/custom-words.txt", "addWords": true } + ], + "ignoreRegExpList": [ + "/\"contributors\"\\s*:\\s*\\[[^\\]]*\\]/g", + "/\"name\"\\s*:\\s*\"[^\"]*\"/g" ] } diff --git a/docs/.vitepress/api/gh-icon/diff/[...data].get.tsx b/docs/.vitepress/api/gh-icon/diff/[...data].get.tsx index 34d15b684..900c4f11c 100644 --- a/docs/.vitepress/api/gh-icon/diff/[...data].get.tsx +++ b/docs/.vitepress/api/gh-icon/diff/[...data].get.tsx @@ -41,7 +41,6 @@ export default eventHandler((event) => { diff --git a/docs/.vitepress/api/gh-icon/symmetry/[...data].get.tsx b/docs/.vitepress/api/gh-icon/symmetry/[...data].get.tsx index 08033bd4d..441704f8e 100644 --- a/docs/.vitepress/api/gh-icon/symmetry/[...data].get.tsx +++ b/docs/.vitepress/api/gh-icon/symmetry/[...data].get.tsx @@ -48,7 +48,6 @@ export default eventHandler((event) => { diff --git a/docs/.vitepress/api/icons/[iconName].get.ts b/docs/.vitepress/api/icons/[iconName].get.ts index 733eeb5ea..ec8ab0b83 100644 --- a/docs/.vitepress/api/icons/[iconName].get.ts +++ b/docs/.vitepress/api/icons/[iconName].get.ts @@ -18,11 +18,12 @@ export default eventHandler((event) => { return sendError(event, error); } - const width = getQuery(event).width || undefined; - const height = getQuery(event).height || undefined; - const color = getQuery(event).color || undefined; - const strokeWidth = getQuery(event).strokeWidth || undefined; - const background = getQuery(event).background || undefined; + const query = getQuery>(event); + const width = query.width || undefined; + const height = query.height || undefined; + const color = query.color || undefined; + const strokeWidth = query.strokeWidth || undefined; + const background = query.background || undefined; const LucideIcon = createLucideIcon(params.iconName, iconNode); diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index ae066a19f..c8546b469 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -15,6 +15,10 @@ const defaultSandpackCSS = await readFile( fileURLToPath(new URL('./theme/sandpack-default.css', import.meta.url)), 'utf-8', ); +const iconStyleHeadScript = await readFile( + fileURLToPath(new URL('./theme/iconStyleHead.js', import.meta.url)), + 'utf-8', +); const title = 'Lucide'; const socialTitle = 'Lucide Icons'; @@ -90,7 +94,10 @@ export default defineConfig({ }) as unknown as UserConfig['vite']['plugins'][0], ], }, - head: getHeadConfig({ title, description, socialTitle }), + head: [ + ...getHeadConfig({ title, description, socialTitle }), + ['script', {}, iconStyleHeadScript], + ], transformPageData, themeConfig: { logo: { diff --git a/docs/.vitepress/data/categoriesData.json b/docs/.vitepress/data/categoriesData.json index dcb8e5f07..03b97984f 100644 --- a/docs/.vitepress/data/categoriesData.json +++ b/docs/.vitepress/data/categoriesData.json @@ -101,7 +101,7 @@ }, { "name": "notifications", - "title": "Notification" + "title": "Notifications" }, { "name": "people", diff --git a/docs/.vitepress/data/packageData.json b/docs/.vitepress/data/packageData.json index 9dd193f59..6009b6f2e 100644 --- a/docs/.vitepress/data/packageData.json +++ b/docs/.vitepress/data/packageData.json @@ -85,8 +85,26 @@ } ] }, - "lucide-react-native": { + "@lucide/solid": { "order": 5, + "icon": "solid", + "docsAlias": "solid", + "packageDirname": "solid", + "shields": [ + { + "alt": "npm", + "src": "https://img.shields.io/npm/v/@lucide/solid", + "href": "https://www.npmjs.com/package/@lucide/solid" + }, + { + "alt": "npm", + "src": "https://img.shields.io/npm/dw/@lucide/solid", + "href": "https://www.npmjs.com/package/@lucide/solid" + } + ] + }, + "lucide-react-native": { + "order": 6, "icon": "react-native", "docsAlias": "react-native", "shields": [ @@ -103,7 +121,7 @@ ] }, "@lucide/angular": { - "order": 6, + "order": 7, "icon": "angular", "docsAlias": "angular", "packageDirname": "angular", diff --git a/docs/.vitepress/data/packageData.thirdParty.json b/docs/.vitepress/data/packageData.thirdParty.json index 37f44cad6..c372763a0 100644 --- a/docs/.vitepress/data/packageData.thirdParty.json +++ b/docs/.vitepress/data/packageData.thirdParty.json @@ -228,5 +228,24 @@ ], "source": "https://github.com/GyeongHoKim/lucide-lit", "documentation": "https://github.com/GyeongHoKim/lucide-lit/blob/main/README.md" + }, + { + "name": "lucide-jte", + "description": "Implementation of Lucide icons for jte (Java Template Engine).", + "icon": "/framework-logos/java.svg", + "shields": [ + { + "alt": "Latest Stable Version", + "src": "https://img.shields.io/github/v/release/sgruendel/lucide-jte", + "href": "https://github.com/sgruendel/lucide-jte/releases" + }, + { + "alt": "Maven Central", + "src": "https://img.shields.io/maven-central/v/io.github.sgruendel/lucide-jte.svg", + "href": "https://central.sonatype.com/artifact/io.github.sgruendel/lucide-jte" + } + ], + "source": "https://github.com/sgruendel/lucide-jte", + "documentation": "https://github.com/sgruendel/lucide-jte/blob/main/README.md" } ] diff --git a/docs/.vitepress/lib/SvgPreview/Backdrop.tsx b/docs/.vitepress/lib/SvgPreview/Backdrop.tsx index 05d43f68d..24efe1c0c 100644 --- a/docs/.vitepress/lib/SvgPreview/Backdrop.tsx +++ b/docs/.vitepress/lib/SvgPreview/Backdrop.tsx @@ -1,4 +1,4 @@ -import React from 'react'; +import React, { type JSX } from 'react'; interface BackdropProps { src: string; diff --git a/docs/.vitepress/lib/SvgPreview/index.tsx b/docs/.vitepress/lib/SvgPreview/index.tsx index 60643fa87..f7449c5e8 100644 --- a/docs/.vitepress/lib/SvgPreview/index.tsx +++ b/docs/.vitepress/lib/SvgPreview/index.tsx @@ -397,10 +397,14 @@ interface SvgPreviewProps extends React.SVGProps { children?: React.ReactNode; } -const SvgPreview = ( - { src, children, height = 24, width = 24, showGrid = false, ...props }: SvgPreviewProps, - ref, -) => { +const SvgPreview = ({ + src, + children, + height = 24, + width = 24, + showGrid = false, + ...props +}: SvgPreviewProps) => { const subGridSize = Math.max(height, width) % 3 === 0 ? Math.max(height, width) > 24 @@ -413,7 +417,6 @@ const SvgPreview = ( return ( [] { return { name, title: parsedFileContent.title, + description: parsedFileContent.description, }; }); } diff --git a/docs/.vitepress/theme/components/SurveyAskOverlay.vue b/docs/.vitepress/theme/components/SurveyAskOverlay.vue index fd693c90d..e1e7947a7 100644 --- a/docs/.vitepress/theme/components/SurveyAskOverlay.vue +++ b/docs/.vitepress/theme/components/SurveyAskOverlay.vue @@ -73,7 +73,7 @@ function hidePopup() { :iconNode="x" name="x" :size="20" - absoluteStrokeWidth + nonScalingStroke /> diff --git a/docs/.vitepress/theme/components/base/ColorPicker.vue b/docs/.vitepress/theme/components/base/ColorPicker.vue index d523ba952..b5df35e34 100644 --- a/docs/.vitepress/theme/components/base/ColorPicker.vue +++ b/docs/.vitepress/theme/components/base/ColorPicker.vue @@ -1,5 +1,4 @@ diff --git a/docs/.vitepress/theme/components/editors/Sandpack.vue b/docs/.vitepress/theme/components/editors/Sandpack.vue index ec52b540b..3f7420472 100644 --- a/docs/.vitepress/theme/components/editors/Sandpack.vue +++ b/docs/.vitepress/theme/components/editors/Sandpack.vue @@ -1,13 +1,11 @@ diff --git a/docs/.vitepress/theme/components/home/HomeIconCustomizerIcons.vue b/docs/.vitepress/theme/components/home/HomeIconCustomizerIcons.vue index 631490344..bfd558982 100644 --- a/docs/.vitepress/theme/components/home/HomeIconCustomizerIcons.vue +++ b/docs/.vitepress/theme/components/home/HomeIconCustomizerIcons.vue @@ -1,29 +1,35 @@