Compare commits
270 Commits
new-releas
...
0.511.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ba77aa6a76 | ||
|
|
42f36a9da3 | ||
|
|
9abed5ee16 | ||
|
|
e6246ed5c6 | ||
|
|
877b467d96 | ||
|
|
781620d669 | ||
|
|
3ad1f07ffc | ||
|
|
47880403d3 | ||
|
|
89d204a35d | ||
|
|
bdcd417c1c | ||
|
|
4c7738fea1 | ||
|
|
12e7cfd7f7 | ||
|
|
09841dd721 | ||
|
|
8ae65a8fb1 | ||
|
|
fda32bee52 | ||
|
|
e913eab8bb | ||
|
|
2408b8bb8f | ||
|
|
8b257abaf6 | ||
|
|
c00ef3a835 | ||
|
|
0d3c8f4ea2 | ||
|
|
771cb0bbd6 | ||
|
|
3f34f4e7b6 | ||
|
|
e4f411ce9c | ||
|
|
0f47888a17 | ||
|
|
81ce8fed07 | ||
|
|
03b3a4f179 | ||
|
|
24178ca1bc | ||
|
|
e91dd659f0 | ||
|
|
6277ceb274 | ||
|
|
45b22c9f2d | ||
|
|
3a375e1a17 | ||
|
|
ac09719ba6 | ||
|
|
8d8c41c371 | ||
|
|
951c142e96 | ||
|
|
dcdc0b8bb3 | ||
|
|
e11e134ce1 | ||
|
|
e149de42ff | ||
|
|
5baa37b85a | ||
|
|
7916c44484 | ||
|
|
922ba5c781 | ||
|
|
c9c1b47e7a | ||
|
|
03eb86287a | ||
|
|
1ab3826607 | ||
|
|
2fde138c46 | ||
|
|
2640a7c585 | ||
|
|
25ce89b191 | ||
|
|
fd3f3eb607 | ||
|
|
b473c10af9 | ||
|
|
a01c15cc8c | ||
|
|
0fccc276c3 | ||
|
|
06c33964cb | ||
|
|
232d7b4557 | ||
|
|
3205e11173 | ||
|
|
0778ec87ad | ||
|
|
85983552ee | ||
|
|
7b954807da | ||
|
|
9105f0e3dd | ||
|
|
fe57bdd291 | ||
|
|
34cb6b12f8 | ||
|
|
6a8591c348 | ||
|
|
547b1846ae | ||
|
|
187ce5cff8 | ||
|
|
40f544433b | ||
|
|
05fa11e073 | ||
|
|
e4988bc1df | ||
|
|
3a24adec64 | ||
|
|
a620a0b08c | ||
|
|
2cc06fa703 | ||
|
|
9aac2e8424 | ||
|
|
2517eb642c | ||
|
|
7acf492f63 | ||
|
|
abe8910247 | ||
|
|
b35b16e96e | ||
|
|
b49c387cfe | ||
|
|
61d6f93023 | ||
|
|
1a3e9f273e | ||
|
|
8023c01f37 | ||
|
|
674a6bf799 | ||
|
|
e3a476a027 | ||
|
|
a021c1dbce | ||
|
|
a5ea7932dc | ||
|
|
6eb67bde5a | ||
|
|
19eb810537 | ||
|
|
6c865ccd9a | ||
|
|
667c80b39f | ||
|
|
dbada2a227 | ||
|
|
849d9c8af2 | ||
|
|
d61d47470f | ||
|
|
8b80cf2cef | ||
|
|
41f6c26228 | ||
|
|
02efe87c5a | ||
|
|
dc39f3d96a | ||
|
|
9879d8f4ed | ||
|
|
f95afd258a | ||
|
|
6ca07ea1bc | ||
|
|
3ff082cfd9 | ||
|
|
f776aaa9bc | ||
|
|
1587bee16d | ||
|
|
c78686ceca | ||
|
|
a11ba9e1cd | ||
|
|
99d992678a | ||
|
|
14822456aa | ||
|
|
64d6b10239 | ||
|
|
0232ce490d | ||
|
|
9d9e2c995a | ||
|
|
c68ee7f9a0 | ||
|
|
5f5e052038 | ||
|
|
aeb376f3a2 | ||
|
|
ed733916f3 | ||
|
|
64a8b7d4d0 | ||
|
|
c138c2e97d | ||
|
|
d82718b222 | ||
|
|
acdcf74faf | ||
|
|
9fa525e8c6 | ||
|
|
20c0012e62 | ||
|
|
70248c0f42 | ||
|
|
f8af6ae309 | ||
|
|
e8f64d8dcc | ||
|
|
4ea41dc329 | ||
|
|
4835ae67a9 | ||
|
|
6d6aa4c4cc | ||
|
|
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 | ||
|
|
97f214934d | ||
|
|
34dfc63ce2 | ||
|
|
b46927e510 | ||
|
|
1828a392c8 | ||
|
|
3ab6c373a0 | ||
|
|
ba2c4b526f | ||
|
|
bde3f01e0b | ||
|
|
50630b3aaf | ||
|
|
e28426a871 | ||
|
|
eb158561d3 | ||
|
|
410ae434fa | ||
|
|
0801b89e4d | ||
|
|
a1d17eedc9 | ||
|
|
7481dd0a3f | ||
|
|
f9e93824f1 | ||
|
|
4ba4cf2f35 | ||
|
|
6b29716aa9 | ||
|
|
97bbe1d6b2 | ||
|
|
608da04bdf | ||
|
|
961404d5cc | ||
|
|
f3100b8af1 | ||
|
|
0df4e2991c | ||
|
|
2b8242fa14 | ||
|
|
27c667556b | ||
|
|
31c3fefc17 | ||
|
|
389fed8770 | ||
|
|
58c2e108c3 | ||
|
|
d5fe5a0ef4 | ||
|
|
db30ab89f4 | ||
|
|
fa7120cbe0 | ||
|
|
419d47019c | ||
|
|
655111e4aa | ||
|
|
ea0ac2f92b | ||
|
|
1a5ee439ef | ||
|
|
5947ca82d5 | ||
|
|
edf46adc9e | ||
|
|
94782f53c1 | ||
|
|
79bbfa958e | ||
|
|
970fc3d4be | ||
|
|
f12b0de177 | ||
|
|
67cbce66e9 | ||
|
|
b927275150 | ||
|
|
ea89735f67 | ||
|
|
53c61c0f48 | ||
|
|
4213367a37 | ||
|
|
bc22d17fa9 | ||
|
|
7773135308 | ||
|
|
4f740348cd | ||
|
|
ca50dd8bc8 | ||
|
|
6b19d52ab0 | ||
|
|
7fc3467761 | ||
|
|
ee575f6ae9 | ||
|
|
212b488dae | ||
|
|
4f038d5fe8 | ||
|
|
5ca6bc3385 | ||
|
|
15e4b6b69d | ||
|
|
407b55f57c | ||
|
|
6fc7297199 | ||
|
|
c21df35283 | ||
|
|
775359260c | ||
|
|
eaeef9ae37 | ||
|
|
636f966a98 | ||
|
|
1d5c725b58 | ||
|
|
d9a011994a | ||
|
|
c6c645ca7f | ||
|
|
91391eea7b | ||
|
|
49070b4d1f | ||
|
|
ae43473aa6 | ||
|
|
392bc961aa | ||
|
|
f238fe1b18 | ||
|
|
4d91fbb588 | ||
|
|
d939a7005d | ||
|
|
2c55c2ab93 | ||
|
|
cb60e31162 | ||
|
|
09cebe178d | ||
|
|
0f3fd12f16 | ||
|
|
4b0d17ad24 | ||
|
|
30fe706dd6 | ||
|
|
d6178fa471 | ||
|
|
855cb4985d | ||
|
|
9f99ea510f | ||
|
|
e2ee0c77e7 | ||
|
|
d041d5c2d2 | ||
|
|
8700418260 | ||
|
|
30077f913f | ||
|
|
bc09d5f283 | ||
|
|
88c757f540 | ||
|
|
f93beca595 | ||
|
|
b1777430b9 | ||
|
|
d30698cb38 | ||
|
|
d2f7a0931d | ||
|
|
98bbcc4b06 | ||
|
|
c253cb821b | ||
|
|
484dc38b0a | ||
|
|
11b95f883a | ||
|
|
b8cd54f1b2 | ||
|
|
98b3b6fae7 | ||
|
|
3ca465ee11 | ||
|
|
dcd19cedc9 | ||
|
|
8cea9feecc | ||
|
|
e80d98040f | ||
|
|
a1641a372b | ||
|
|
757bf0fb85 | ||
|
|
dd3aed1ecd | ||
|
|
4d98681f05 |
@@ -8,10 +8,10 @@ squircle
|
|||||||
strikethrough
|
strikethrough
|
||||||
touchpad
|
touchpad
|
||||||
ungroup
|
ungroup
|
||||||
pilcrow
|
|
||||||
toc
|
toc
|
||||||
|
|
||||||
# Brands
|
# Brands
|
||||||
codepen
|
codepen
|
||||||
codesandbox
|
codesandbox
|
||||||
dribbble
|
dribbble
|
||||||
|
x.com
|
||||||
|
|||||||
1
.github/ISSUE_TEMPLATE/02_bug_report.yml
vendored
@@ -22,6 +22,7 @@ body:
|
|||||||
- label: lucide-svelte
|
- label: lucide-svelte
|
||||||
- label: lucide-vue
|
- label: lucide-vue
|
||||||
- label: lucide-vue-next
|
- label: lucide-vue-next
|
||||||
|
- label: lucide-astro
|
||||||
- label: Figma plugin
|
- label: Figma plugin
|
||||||
- label: source/main
|
- label: source/main
|
||||||
- label: other/not relevant
|
- label: other/not relevant
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ body:
|
|||||||
- label: lucide-svelte
|
- label: lucide-svelte
|
||||||
- label: lucide-vue
|
- label: lucide-vue
|
||||||
- label: lucide-vue-next
|
- label: lucide-vue-next
|
||||||
|
- label: lucide-astro
|
||||||
- label: Figma plugin
|
- label: Figma plugin
|
||||||
- label: all JS packages
|
- label: all JS packages
|
||||||
- label: site
|
- label: site
|
||||||
|
|||||||
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
|
|
||||||
6
.github/labeler.yml
vendored
@@ -79,6 +79,12 @@
|
|||||||
- any-glob-to-any-file:
|
- any-glob-to-any-file:
|
||||||
- 'packages/lucide-solid/*'
|
- 'packages/lucide-solid/*'
|
||||||
|
|
||||||
|
# For changes in the lucide astro package
|
||||||
|
🚀 astro package:
|
||||||
|
- changed-files:
|
||||||
|
- any-glob-to-any-file:
|
||||||
|
- 'packages/astro/*'
|
||||||
|
|
||||||
# For changes in the lucide static package
|
# For changes in the lucide static package
|
||||||
🪨 static package:
|
🪨 static package:
|
||||||
- changed-files:
|
- changed-files:
|
||||||
|
|||||||
22
.github/pull_request_template.md
vendored
@@ -1,16 +1,18 @@
|
|||||||
<!-- Thank you for contributing! -->
|
<!-- Thank you for contributing! -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
PR Title Guidelines:
|
||||||
|
|
||||||
|
Please use the format: <type>(<scope>): <short description>
|
||||||
|
|
||||||
|
Example: feat(icons): added `camera` icon
|
||||||
|
|
||||||
|
Available types: fix, feat, perf, docs, style, refactor, test, chore, ci, build
|
||||||
|
Common scopes: icons, docs, studio, site, dev
|
||||||
|
-->
|
||||||
|
|
||||||
<!-- Insert `closes #issueNumber` here if merging this PR will resolve an existing issue -->
|
<!-- Insert `closes #issueNumber` here if merging this PR will resolve an existing issue -->
|
||||||
|
## Description
|
||||||
## What is the purpose of this pull request?
|
|
||||||
<!-- Please choose one of the following, and put an "x" next to it. -->
|
|
||||||
- [ ] New Icon
|
|
||||||
- [ ] Bug fix
|
|
||||||
- [ ] New Feature
|
|
||||||
- [ ] Documentation update
|
|
||||||
- [ ] Other:
|
|
||||||
|
|
||||||
### Description
|
|
||||||
<!-- Please insert your description here and provide info about the "what" this PR is contribution -->
|
<!-- Please insert your description here and provide info about the "what" this PR is contribution -->
|
||||||
|
|
||||||
### Icon use case <!-- ONLY for new icons, remove this part if not icon PR -->
|
### Icon use case <!-- ONLY for new icons, remove this part if not icon PR -->
|
||||||
|
|||||||
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, 'feat(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")
|
BLOCKED_PHRASES=("twitter" "whatsapp" "logo" "google" "tiktok" "facebook" "slack" "discord" "bluesky" "spotify" "behance" "pix" "x.com")
|
||||||
|
|
||||||
# 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,20 @@
|
|||||||
name: Linting
|
name: Linting PR
|
||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
paths-ignore:
|
||||||
- '**'
|
- icons/*.svg
|
||||||
|
|
||||||
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
|
||||||
|
- 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
|
||||||
|
chore
|
||||||
|
requireScope: true
|
||||||
|
ignoreLabels: |
|
||||||
|
bot
|
||||||
36
.github/workflows/linting-icons.yml
vendored
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
name: Linting Icons
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- 'icons/*'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
lint-filenames:
|
||||||
|
name: Lint Filenames
|
||||||
|
if: github.repository == 'lucide-icons/lucide'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Get changed files
|
||||||
|
id: changed-files
|
||||||
|
uses: tj-actions/changed-files@v46
|
||||||
|
with:
|
||||||
|
files: icons/*
|
||||||
|
|
||||||
|
- name: Generate annotations
|
||||||
|
run: node ./scripts/lintFilenames.mjs
|
||||||
|
env:
|
||||||
|
CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
|
||||||
|
|
||||||
|
lint-aliases:
|
||||||
|
name: Check Uniqueness of Aliases
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- 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 '"
|
||||||
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
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
name: Lucide Vue checks
|
name: Lucide Astro Checks
|
||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request:
|
||||||
paths:
|
paths:
|
||||||
- packages/lucide-vue/**
|
- packages/astro/**
|
||||||
|
- packages/shared/**
|
||||||
- tools/build-icons/**
|
- tools/build-icons/**
|
||||||
- tools/rollup-plugins/**
|
|
||||||
- pnpm-lock.yaml
|
- pnpm-lock.yaml
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
@@ -23,7 +23,7 @@ jobs:
|
|||||||
run: pnpm install --frozen-lockfile
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
- name: Build
|
- name: Build
|
||||||
run: pnpm --filter lucide-vue build
|
run: pnpm --filter @lucide/astro build
|
||||||
|
|
||||||
test:
|
test:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@@ -39,4 +39,4 @@ jobs:
|
|||||||
run: pnpm install --frozen-lockfile
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
- name: Test
|
- name: Test
|
||||||
run: pnpm --filter lucide-vue test
|
run: pnpm --filter @lucide/astro test
|
||||||
7
.github/workflows/lucide-font.yml
vendored
@@ -3,7 +3,6 @@ name: Lucide font checks
|
|||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request:
|
||||||
paths:
|
paths:
|
||||||
- icons/**
|
|
||||||
- tools/build-font/**
|
- tools/build-font/**
|
||||||
- pnpm-lock.yaml
|
- pnpm-lock.yaml
|
||||||
|
|
||||||
@@ -12,11 +11,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 +27,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
|
||||||
|
|||||||
5
.github/workflows/lucide-preact.yml
vendored
@@ -4,6 +4,7 @@ on:
|
|||||||
pull_request:
|
pull_request:
|
||||||
paths:
|
paths:
|
||||||
- packages/lucide-preact/**
|
- packages/lucide-preact/**
|
||||||
|
- packages/shared/**
|
||||||
- tools/build-icons/**
|
- tools/build-icons/**
|
||||||
- tools/rollup-plugins/**
|
- tools/rollup-plugins/**
|
||||||
- pnpm-lock.yaml
|
- pnpm-lock.yaml
|
||||||
@@ -13,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
|
||||||
|
|||||||
23
.github/workflows/lucide-react-native.yml
vendored
@@ -4,20 +4,37 @@ on:
|
|||||||
pull_request:
|
pull_request:
|
||||||
paths:
|
paths:
|
||||||
- packages/lucide-react-native/**
|
- packages/lucide-react-native/**
|
||||||
|
- packages/shared/**
|
||||||
- tools/build-icons/**
|
- tools/build-icons/**
|
||||||
- tools/rollup-plugins/**
|
- tools/rollup-plugins/**
|
||||||
- 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
|
||||||
|
|||||||
13
.github/workflows/lucide-react.yml
vendored
@@ -4,6 +4,7 @@ on:
|
|||||||
pull_request:
|
pull_request:
|
||||||
paths:
|
paths:
|
||||||
- packages/lucide-react/**
|
- packages/lucide-react/**
|
||||||
|
- packages/shared/**
|
||||||
- tools/build-icons/**
|
- tools/build-icons/**
|
||||||
- tools/rollup-plugins/**
|
- tools/rollup-plugins/**
|
||||||
- scripts/generateNextJSAliases.mjs
|
- scripts/generateNextJSAliases.mjs
|
||||||
@@ -14,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
|
||||||
@@ -29,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
|
||||||
|
|||||||
24
.github/workflows/lucide-shared.yml
vendored
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
name: Lucide Shared Checks
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- packages/shared/**
|
||||||
|
- pnpm-lock.yaml
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
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
|
||||||
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
- name: Test
|
||||||
|
run: pnpm --filter lucide-react test
|
||||||
13
.github/workflows/lucide-solid.yml
vendored
@@ -4,6 +4,7 @@ on:
|
|||||||
pull_request:
|
pull_request:
|
||||||
paths:
|
paths:
|
||||||
- packages/lucide-solid/**
|
- packages/lucide-solid/**
|
||||||
|
- packages/shared/**
|
||||||
- tools/build-icons/**
|
- tools/build-icons/**
|
||||||
- tools/rollup-plugins/**
|
- tools/rollup-plugins/**
|
||||||
- pnpm-lock.yaml
|
- pnpm-lock.yaml
|
||||||
@@ -13,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
|
||||||
@@ -28,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
|
||||||
|
|||||||
43
.github/workflows/lucide-svelte-5.yml
vendored
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
name: Lucide Svelte 5 checks
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
paths:
|
||||||
|
- packages/svelte/**
|
||||||
|
- packages/shared/**
|
||||||
|
- tools/build-icons/**
|
||||||
|
- tools/rollup-plugins/**
|
||||||
|
- pnpm-lock.yaml
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
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
|
||||||
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
- name: Build
|
||||||
|
run: pnpm --filter @lucide/svelte 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
|
||||||
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
- name: Test
|
||||||
|
run: pnpm --filter @lucide/svelte test
|
||||||
13
.github/workflows/lucide-svelte.yml
vendored
@@ -4,6 +4,7 @@ on:
|
|||||||
pull_request:
|
pull_request:
|
||||||
paths:
|
paths:
|
||||||
- packages/lucide-svelte/**
|
- packages/lucide-svelte/**
|
||||||
|
- packages/shared/**
|
||||||
- tools/build-icons/**
|
- tools/build-icons/**
|
||||||
- tools/rollup-plugins/**
|
- tools/rollup-plugins/**
|
||||||
- pnpm-lock.yaml
|
- pnpm-lock.yaml
|
||||||
@@ -13,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
|
||||||
@@ -28,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
|
||||||
|
|||||||
13
.github/workflows/lucide-vue-next.yml
vendored
@@ -4,6 +4,7 @@ on:
|
|||||||
pull_request:
|
pull_request:
|
||||||
paths:
|
paths:
|
||||||
- packages/lucide-vue-next/**
|
- packages/lucide-vue-next/**
|
||||||
|
- packages/shared/**
|
||||||
- tools/build-icons/**
|
- tools/build-icons/**
|
||||||
- tools/rollup-plugins/**
|
- tools/rollup-plugins/**
|
||||||
- pnpm-lock.yaml
|
- pnpm-lock.yaml
|
||||||
@@ -13,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
|
||||||
@@ -28,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@v46
|
||||||
|
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/
|
||||||
123
.github/workflows/pull-request.yml
vendored
@@ -1,123 +0,0 @@
|
|||||||
name: Add Changed Icons comment
|
|
||||||
|
|
||||||
on:
|
|
||||||
pull_request_target:
|
|
||||||
paths:
|
|
||||||
- 'icons/*'
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
- fix-icon-preview
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
lint-filenames:
|
|
||||||
if: github.repository == 'lucide-icons/lucide'
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
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/*
|
|
||||||
- name: Generate annotations
|
|
||||||
run: node ./scripts/lintFilenames.mjs
|
|
||||||
env:
|
|
||||||
CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
|
|
||||||
|
|
||||||
lint-contributors:
|
|
||||||
if: github.repository == 'lucide-icons/lucide'
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
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/*
|
|
||||||
- uses: actions/setup-node@v4
|
|
||||||
- name: Install simple-git (safer and faster than installing all deps)
|
|
||||||
run: npm install simple-git
|
|
||||||
- name: Generate annotations
|
|
||||||
run: node ./scripts/updateContributors.mjs
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
FETCH_DEPTH: ${{ github.event.pull_request.commits }}
|
|
||||||
CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
|
|
||||||
- name: Generate annotations
|
|
||||||
env:
|
|
||||||
ANNOTATION_SEVERITY: notice
|
|
||||||
ANNOTATION_TITLE: Contributors have changed!
|
|
||||||
ANNOTATION_DESCRIPTION: Don't add people who have only performed automatic optimizations.
|
|
||||||
run: |
|
|
||||||
git diff --unified=0 -- icons/*.json | # diff icon metadata (unified=0 gives the correct chunk line number)
|
|
||||||
perl -ne '/^(\+|- |@)/ && print' | # get chunks (lines that start with "+++", "@@", "+ ", "- ")
|
|
||||||
perl -pe 's/\n/%0A/' | # url encode line breaks (\n -> %0A)
|
|
||||||
perl -pe 's/%0A(\+\+\+ b\/)/\n\1/g' | # split chunks(one chunk per line)
|
|
||||||
perl -pe "s/\+\+\+ b\/([^@]*)%0A@@ -(\d+)[^\s]* \+(\d+)[^@]*@@(.*)/::$ANNOTATION_SEVERITY file=\1,line=\2,endLine=\3,title=$ANNOTATION_TITLE::$ANNOTATION_DESCRIPTION%0A\4/"
|
|
||||||
# Example for the previous substitution
|
|
||||||
# input: +++ b/icons/accessibility.json%0A@@ -2,0 +3 @@%0A+ "contributors": ["hi"],%0A@@ -13 +14 @@%0A+}%0A
|
|
||||||
# output: ::$ANNOTATION_SEVERITY file=icons/accessibility.json,line=2,endLine=3,title=$ANNOTATION_TITLE::$ANNOTATION_DESCRIPTION%0A%0A+ "contributors": ["hi"],%0A@@ -13 +14 @@%0A+}%0A
|
|
||||||
|
|
||||||
lint-aliases:
|
|
||||||
name: Check Uniqueness of Aliases
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
- 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 '"
|
|
||||||
|
|
||||||
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
|
|
||||||
32
.github/workflows/release.yml
vendored
@@ -38,6 +38,8 @@ jobs:
|
|||||||
if: github.repository == 'lucide-icons/lucide'
|
if: github.repository == 'lucide-icons/lucide'
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: pre-release
|
needs: pre-release
|
||||||
|
permissions:
|
||||||
|
id-token: write
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
@@ -52,14 +54,16 @@ jobs:
|
|||||||
'lucide-preact',
|
'lucide-preact',
|
||||||
'lucide-solid',
|
'lucide-solid',
|
||||||
'lucide-svelte',
|
'lucide-svelte',
|
||||||
|
'@lucide/astro',
|
||||||
|
'@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
|
||||||
@@ -77,20 +81,24 @@ jobs:
|
|||||||
run: pnpm --filter ${{ matrix.package }} test
|
run: pnpm --filter ${{ matrix.package }} test
|
||||||
|
|
||||||
- name: Publish
|
- name: Publish
|
||||||
run: pnpm --filter ${{ matrix.package }} publish --no-git-checks --ignore-scripts
|
run: pnpm --filter ${{ matrix.package }} publish --access public --no-git-checks --ignore-scripts
|
||||||
|
env:
|
||||||
|
NPM_CONFIG_PROVENANCE: true
|
||||||
|
|
||||||
lucide-static:
|
lucide-static:
|
||||||
if: github.repository == 'lucide-icons/lucide'
|
if: github.repository == 'lucide-icons/lucide'
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
needs: [pre-release, lucide-font]
|
needs: [pre-release, lucide-font]
|
||||||
|
permissions:
|
||||||
|
id-token: write
|
||||||
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
|
||||||
@@ -109,6 +117,8 @@ jobs:
|
|||||||
|
|
||||||
- name: Publish
|
- name: Publish
|
||||||
run: pnpm --filter lucide-static publish --no-git-checks
|
run: pnpm --filter lucide-static publish --no-git-checks
|
||||||
|
env:
|
||||||
|
NPM_CONFIG_PROVENANCE: true
|
||||||
|
|
||||||
lucide-font:
|
lucide-font:
|
||||||
if: github.repository == 'lucide-icons/lucide'
|
if: github.repository == 'lucide-icons/lucide'
|
||||||
@@ -116,11 +126,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 +142,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 +154,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: |
|
||||||
|
|||||||
32
.github/workflows/request-review.yml
vendored
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
name: 'Request Review'
|
||||||
|
on:
|
||||||
|
pull_request_target:
|
||||||
|
types: [opened]
|
||||||
|
paths: icons/*.svg
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
request-review:
|
||||||
|
if: github.event.pull_request.draft == false
|
||||||
|
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
|
||||||
|
- run: |
|
||||||
|
while IFS= read -r file; do
|
||||||
|
jq -r '.contributors[]' "${file%.svg}.json"
|
||||||
|
done <<< "$CHANGED_FILES" | while read -r contributor; do
|
||||||
|
gh pr edit "${{ github.event.pull_request.number }}" --add-reviewer "$contributor" || true
|
||||||
|
done
|
||||||
|
env:
|
||||||
|
GH_TOKEN: ${{ github.token }}
|
||||||
|
CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
|
||||||
8
.gitignore
vendored
@@ -16,11 +16,17 @@ outlined
|
|||||||
packages/**/src/icons/*.js
|
packages/**/src/icons/*.js
|
||||||
packages/**/src/icons/*.ts
|
packages/**/src/icons/*.ts
|
||||||
packages/**/src/icons/*.tsx
|
packages/**/src/icons/*.tsx
|
||||||
|
packages/**/src/aliases/*.ts
|
||||||
packages/**/src/aliases.ts
|
packages/**/src/aliases.ts
|
||||||
|
!packages/**/src/aliases/index.ts
|
||||||
packages/**/src/dynamicIconImports.ts
|
packages/**/src/dynamicIconImports.ts
|
||||||
|
packages/**/DynamicIcon.d.ts
|
||||||
packages/**/dynamicIconImports.js
|
packages/**/dynamicIconImports.js
|
||||||
packages/**/dynamicIconImports.d.ts
|
packages/**/dynamicIconImports.d.ts
|
||||||
packages/**/dynamicIconImports.js.map
|
packages/**/dynamicIconImports.js.map
|
||||||
|
packages/**/dynamic.d.ts
|
||||||
|
packages/**/dynamic.mjs.map
|
||||||
|
packages/**/dynamic.mjs
|
||||||
packages/**/LICENSE
|
packages/**/LICENSE
|
||||||
categories.json
|
categories.json
|
||||||
tags.json
|
tags.json
|
||||||
@@ -39,3 +45,5 @@ docs/.vitepress/data/iconDetails
|
|||||||
docs/.vitepress/data/relatedIcons.json
|
docs/.vitepress/data/relatedIcons.json
|
||||||
docs/.vercel
|
docs/.vercel
|
||||||
docs/.nitro
|
docs/.nitro
|
||||||
|
.gitignore
|
||||||
|
|
||||||
|
|||||||
@@ -16,10 +16,10 @@ Guidelines for pull requests:
|
|||||||
|
|
||||||
- __Make your commit messages as descriptive as possible.__ Include as much information as you can. Explain anything that the file diffs themselves won’t make apparent.
|
- __Make your commit messages as descriptive as possible.__ Include as much information as you can. Explain anything that the file diffs themselves won’t make apparent.
|
||||||
- __Document your pull request__. Explain your fix, link to the relevant issue, add screenshots when adding new icons.
|
- __Document your pull request__. Explain your fix, link to the relevant issue, add screenshots when adding new icons.
|
||||||
- __Make sure the target of your pull request is the relevant branch__. Most of bugfix or new feature should go to the `main` branch.
|
- __Make sure the target of your pull request is the relevant branch__. Most of bug fixes or new feature should go to the `main` branch.
|
||||||
- __Include only related work__. If your pull request has unrelated commit, it won't be accepted.
|
- __Include only related work__. If your pull request has unrelated commits, it won't be accepted.
|
||||||
|
|
||||||
### Pull Requests Including Icons
|
### Icon Pull Requests
|
||||||
|
|
||||||
#### Guidelines
|
#### Guidelines
|
||||||
|
|
||||||
@@ -27,26 +27,30 @@ Please make sure you follow the icon guidelines, that should be followed to keep
|
|||||||
|
|
||||||
Read it here: [ICON_GUIDELINES](https://lucide.dev/docs/icon-design-guide).
|
Read it here: [ICON_GUIDELINES](https://lucide.dev/docs/icon-design-guide).
|
||||||
|
|
||||||
### Editor guides
|
#### Lucide Studio
|
||||||
|
|
||||||
|
For formatting and adjusting SVG icons, [@jguddas](https://github.com/jguddas) made a great tool called [Lucide Studio](https://studio.lucide.dev/). It is a web-based SVG editor that allows you to edit and adjust icons in the Lucide style. You can use it to create new icons or modify existing ones.
|
||||||
|
|
||||||
|
#### Editor guides
|
||||||
|
|
||||||
Here you can find instructions on how to implement the guidelines with different vector graphics editors:
|
Here you can find instructions on how to implement the guidelines with different vector graphics editors:
|
||||||
|
|
||||||
#### [Adobe Illustrator Guide](https://lucide.dev/docs/illustrator-guide)
|
##### [Adobe Illustrator Guide](https://lucide.dev/docs/illustrator-guide)
|
||||||
|
|
||||||
You can also [download an Adobe Illustrator template](https://github.com/lucide-icons/lucide/blob/main/docs/public/templates/illustrator_template.ai).
|
You can also [download an Adobe Illustrator template](https://github.com/lucide-icons/lucide/blob/main/docs/public/templates/illustrator_template.ai).
|
||||||
|
|
||||||
#### [Inkscape Guide](https://lucide.dev/docs/inkscape-guide)
|
##### [Inkscape Guide](https://lucide.dev/docs/inkscape-guide)
|
||||||
|
|
||||||
#### [Figma Guide](https://lucide.dev/docs/figma-guide)
|
##### [Figma Guide](https://lucide.dev/docs/figma-guide)
|
||||||
|
|
||||||
#### [Affinity Designer Guide](https://lucide.dev/guide/design/affinity-designer-guide)
|
##### [Affinity Designer Guide](https://lucide.dev/guide/design/affinity-designer-guide)
|
||||||
|
|
||||||
### Submitting Multiple Icons
|
#### Submitting Multiple Icons
|
||||||
|
|
||||||
If you want submit multiple icons, please separate the icons and group them. That makes reviewing the icons easier and keep the thread clean and scoped.
|
If you want to submit multiple icons, please separate the icons and group them. That makes reviewing the icons easier and keeps the thread clean and scoped.
|
||||||
So don't submit multiple icons in one PR that have noting to do with each other.
|
So don't submit multiple icons in one PR that have nothing to do with each other.
|
||||||
So for example don't create one PR with icons: `arrow-up`, `bicycle`, `arrow-down`.
|
So for example don't create one PR with icons: `arrow-up`, `bicycle`, `arrow-down`.
|
||||||
Seperate them by two PRs; 'pr-01' `arrow`, `arrow-down` and 'pr-02' `bicycle`.
|
Separate them into two PRs; 'pr-01' `arrow`, `arrow-down` and 'pr-02' `bicycle`.
|
||||||
|
|
||||||
## Icon Requests
|
## Icon Requests
|
||||||
|
|
||||||
@@ -77,7 +81,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
|
||||||
|
|
||||||
@@ -127,7 +131,7 @@ When adding new features to for example the icon component for a framework. It i
|
|||||||
|
|
||||||
### Local Testing
|
### Local Testing
|
||||||
|
|
||||||
To test changes in a local project, you can use `yarn link`, `npm link` or `pnpm link` to link the package. Before you do this make sure you builded the package first.
|
To test changes in a local project, you can use `yarn link`, `npm link`, `bun link` or `pnpm link` to link the package. Before you do this make sure you've built the package first.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# in packages/lucide-react
|
# in packages/lucide-react
|
||||||
@@ -165,15 +169,15 @@ 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 useful scripts to automate certain jobs. Big part of the scripts is the template generation, for example it generates icon components for all the packages. These scripts are usually executed from the "scripts" section in the package.json.
|
||||||
|
|
||||||
## Documentation
|
## Documentation
|
||||||
|
|
||||||
@@ -190,4 +194,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>
|
||||||
|
|||||||
268
README.md
@@ -8,185 +8,40 @@
|
|||||||
</p>
|
</p>
|
||||||
<p align="center">
|
<p align="center">
|
||||||
<a href="https://github.com/lucide-icons/lucide/blob/main/LICENSE"><img src="https://img.shields.io/npm/l/lucide" alt="license"></a>
|
<a href="https://github.com/lucide-icons/lucide/blob/main/LICENSE"><img src="https://img.shields.io/npm/l/lucide" alt="license"></a>
|
||||||
<a href="https://www.npmjs.com/package/lucide"><img src="https://img.shields.io/npm/v/lucide" alt="npm package"></a>
|
<a href="https://www.figma.com/community/plugin/939567362549682242/Lucide-Icons"><img src="https://img.shields.io/badge/Figma-F24E1E?logo=figma&logoColor=white" alt="figma installs"></a>
|
||||||
<a href="https://www.figma.com/community/plugin/939567362549682242/Lucide-Icons"><img src="https://img.shields.io/endpoint?logo=figma&label=installs&url=https://yuanqing.github.io/figma-plugins-stats/plugin/939567362549682242/installs.json" alt="figma installs"></a>
|
|
||||||
<a href="https://github.com/lucide-icons/lucide/actions/workflows/release.yml"><img src="https://github.com/lucide-icons/lucide/actions/workflows/release.yml/badge.svg" alt="build status"></a>
|
<a href="https://github.com/lucide-icons/lucide/actions/workflows/release.yml"><img src="https://github.com/lucide-icons/lucide/actions/workflows/release.yml/badge.svg" alt="build status"></a>
|
||||||
<a href="https://discord.gg/EH6nSts"><img src="https://img.shields.io/discord/723074157486800936?label=chat&logo=discord&logoColor=%23ffffff&colorB=%237289DA" alt="discord chat"></a>
|
<a href="https://discord.gg/EH6nSts"><img src="https://img.shields.io/discord/723074157486800936?label=chat&logo=discord&logoColor=%23ffffff&colorB=%237289DA" alt="discord chat"></a>
|
||||||
</p>
|
</p>
|
||||||
|
<p align="center">
|
||||||
|
<a href="https://lucide.dev/icons/">Icons</a>
|
||||||
|
·
|
||||||
|
<a href="https://lucide.dev/guide/">Guide</a>
|
||||||
|
·
|
||||||
|
<a href="https://lucide.dev/packages">Packages</a>
|
||||||
|
·
|
||||||
|
<a href="https://lucide.dev/license">License</a>
|
||||||
|
·
|
||||||
|
<a href="https://lucide.dev/showcase">Showcase</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
# Lucide
|
# Lucide
|
||||||
|
|
||||||
Community-run fork of [Feather Icons](https://github.com/feathericons/feather), open for anyone to contribute icons.
|
Lucide is an open-source icon library that provides 1000+ vector (svg) files for displaying icons and symbols in digital and non-digital projects. The library aims to make it easier for designers and developers to incorporate icons into their projects by providing several official [packages](https://lucide.dev/packages) to make it easier to use these icons in your project.
|
||||||
|
|
||||||
It began after growing dissatisfaction with the [Feather Icons](https://github.com/feathericons/feather) project moderation. With over 300+ open issues and over 100+ open PRs, the Feather Icons project has been abandoned. This unfortunately means that hundreds of developers and designers wasted their time contributing to Feather Icons with no chance of PRs being accepted.
|
## Packages
|
||||||
|
|
||||||
Lucide is trying to expand the icon set as much as possible while staying faithful to the original simplistic design language. We do this as a community of devs and designers and hope that you'll join us!
|
| Logo | Package | Version | Downloads | Links |
|
||||||
|
| ---- | ------- | ------- | --------- | ----- |
|
||||||
### Why choose Lucide over Feather Icons
|
| <img src="https://lucide.dev/framework-logos/js.svg" alt="JS logo" width="48"> | **`lucide`** | [](https://www.npmjs.com/package/lucide) |  | [Docs](https://lucide.dev/guide/packages/lucide) · [Source](./packages/lucide) |
|
||||||
|
| <img src="https://lucide.dev/framework-logos/react.svg" alt="React logo" width="48"> | **`lucide-react`** | [](https://www.npmjs.com/package/lucide-react) |  | [Docs](https://lucide.dev/guide/packages/lucide-react) · [Source](./packages/lucide-react) |
|
||||||
- More icons to work with: Lucide already has hundreds of icons more than Feather does.
|
| <img src="https://lucide.dev/framework-logos/vue.svg" alt="Vue logo" width="48"> | **`lucide-vue-next`** | [](https://www.npmjs.com/package/lucide-vue-next) |  | [Docs](https://lucide.dev/guide/packages/lucide-vue-next) · [Source](./packages/lucide-vue-next) |
|
||||||
- Official libraries and integrations with popular frameworks and design tools.
|
| <img src="https://lucide.dev/framework-logos/svelte.svg" alt="Svelte logo" width="48"> | **`lucide-svelte`** | [](https://www.npmjs.com/package/lucide-svelte) |  | [Docs](https://lucide.dev/guide/packages/lucide-svelte) · [Source](./packages/lucide-svelte) |
|
||||||
- Well maintained code base.
|
| <img src="https://lucide.dev/framework-logos/solid.svg" alt="Solid logo" width="48"> | **`lucide-solid`** | [](https://www.npmjs.com/package/lucide-solid) |  | [Docs](https://lucide.dev/guide/packages/lucide-solid) · [Source](./packages/lucide-solid) |
|
||||||
- Active community, regularly growing and improving the set.
|
| <img src="https://lucide.dev/framework-logos/preact.svg" alt="Preact logo" width="48"> | **`lucide-preact`** | [](https://www.npmjs.com/package/lucide-preact) |  | [Docs](https://lucide.dev/guide/packages/lucide-preact) · [Source](./packages/lucide-preact) |
|
||||||
|
| <img src="https://lucide.dev/framework-logos/react-native.svg" alt="React Native logo" width="48"> | **`lucide-react-native`** | [](https://www.npmjs.com/package/lucide-react-native) |  | [Docs](https://lucide.dev/guide/packages/lucide-react-native) · [Source](./packages/lucide-react-native) |
|
||||||
## Table of Contents
|
| <img src="https://lucide.dev/framework-logos/angular.svg" alt="Angular logo" width="48"> | **`lucide-angular`** | [](https://www.npmjs.com/package/lucide-angular) |  | [Docs](https://lucide.dev/guide/packages/lucide-angular) · [Source](./packages/lucide-angular) |
|
||||||
|
| <img src="https://lucide.dev/framework-logos/astro.svg" alt="Astro logo" width="48"> | **`@lucide/astro`** | [](https://www.npmjs.com/package/@lucide/astro) |  | [Docs](https://lucide.dev/guide/packages/lucide-astro) · [Source](./packages/astro) |
|
||||||
- [Usage](#usage)
|
| <img src="https://lucide.dev/framework-logos/svg.svg" alt="SVG logo" width="48"> | **`lucide-static`** | [](https://www.npmjs.com/package/lucide-static) |  | [Docs](https://lucide.dev/guide/packages/lucide-static) · [Source](./packages/lucide-static) |
|
||||||
- [Web](#web)
|
|
||||||
- [React](#react)
|
|
||||||
- [React Native](#react-native)
|
|
||||||
- [Vue 2](#vue-2)
|
|
||||||
- [Vue 3](#vue-3)
|
|
||||||
- [Angular](#angular)
|
|
||||||
- [Preact](#preact)
|
|
||||||
- [Static (svg sprite, font, icons ..)](#static-svg-sprite-font-icons-)
|
|
||||||
- [Figma](#figma)
|
|
||||||
- [Laravel](#laravel)
|
|
||||||
- [Svelte](#svelte)
|
|
||||||
- [Solid](#solid)
|
|
||||||
- [Hyva](#hyva)
|
|
||||||
- [Eleventy](#eleventy)
|
|
||||||
- [Contributing](#contributing)
|
|
||||||
- [Community](#community)
|
|
||||||
- [License](#license)
|
|
||||||
- [Credits](#credits)
|
|
||||||
- [Sponsors](#sponsors)
|
|
||||||
|
|
||||||
## Usage
|
|
||||||
|
|
||||||
At its core, Lucide is a collection of [SVG](https://svgontheweb.com/#svg) files. This means that you can use Lucide icons in all the same ways you can use SVGs (e.g. `img`, `background-image`, `inline`, `object`, `embed`, `iframe`). Here's a helpful article detailing the many ways SVGs can be used on the web: [SVG on the Web – Implementation Options](https://svgontheweb.com/#implementation)
|
|
||||||
|
|
||||||
The following are additional ways you can use Lucide.
|
|
||||||
With the Javascript library you can easily incorporate the icon you want in your webpage.
|
|
||||||
|
|
||||||
### Web
|
|
||||||
|
|
||||||
Implementation of the lucide icon library for web applications.
|
|
||||||
|
|
||||||
```sh
|
|
||||||
npm install lucide
|
|
||||||
```
|
|
||||||
|
|
||||||
or
|
|
||||||
|
|
||||||
```sh
|
|
||||||
yarn add lucide
|
|
||||||
```
|
|
||||||
|
|
||||||
For more details, see the [documentation](https://github.com/lucide-icons/lucide/tree/main/packages/lucide#lucide).
|
|
||||||
|
|
||||||
### React
|
|
||||||
|
|
||||||
Implementation of the lucide icon library for react applications.
|
|
||||||
|
|
||||||
```sh
|
|
||||||
yarn add lucide-react
|
|
||||||
```
|
|
||||||
|
|
||||||
or
|
|
||||||
|
|
||||||
```sh
|
|
||||||
npm install lucide-react
|
|
||||||
```
|
|
||||||
|
|
||||||
For more details, see the [documentation](https://github.com/lucide-icons/lucide/tree/main/packages/lucide-react#lucide-react).
|
|
||||||
|
|
||||||
### React Native
|
|
||||||
|
|
||||||
Implementation of the lucide icon library for React Native applications.
|
|
||||||
|
|
||||||
```sh
|
|
||||||
yarn add lucide-react-native
|
|
||||||
```
|
|
||||||
|
|
||||||
or
|
|
||||||
|
|
||||||
```sh
|
|
||||||
npm install lucide-react-native
|
|
||||||
```
|
|
||||||
|
|
||||||
For more details, see the [documentation](https://github.com/lucide-icons/lucide/tree/main/packages/lucide-react-native#lucide-react-native).
|
|
||||||
|
|
||||||
### Vue 2
|
|
||||||
|
|
||||||
Implementation of the lucide icon library for vue applications.
|
|
||||||
|
|
||||||
```sh
|
|
||||||
yarn add lucide-vue
|
|
||||||
```
|
|
||||||
|
|
||||||
or
|
|
||||||
|
|
||||||
```sh
|
|
||||||
npm install lucide-vue
|
|
||||||
```
|
|
||||||
|
|
||||||
For more details, see the [documentation](https://github.com/lucide-icons/lucide/tree/main/packages/lucide-vue#lucide-vue).
|
|
||||||
|
|
||||||
### Vue 3
|
|
||||||
|
|
||||||
Implementation of the lucide icon library for vue applications.
|
|
||||||
|
|
||||||
```sh
|
|
||||||
yarn add lucide-vue-next
|
|
||||||
```
|
|
||||||
|
|
||||||
or
|
|
||||||
|
|
||||||
```sh
|
|
||||||
npm install lucide-vue-next
|
|
||||||
```
|
|
||||||
|
|
||||||
For more details, see the [documentation](https://github.com/lucide-icons/lucide/tree/main/packages/lucide-vue-next#lucide-vue-next).
|
|
||||||
|
|
||||||
### Angular
|
|
||||||
|
|
||||||
```sh
|
|
||||||
yarn add lucide-angular
|
|
||||||
```
|
|
||||||
|
|
||||||
or
|
|
||||||
|
|
||||||
```sh
|
|
||||||
npm install lucide-angular
|
|
||||||
```
|
|
||||||
|
|
||||||
For more details, see the [documentation](https://github.com/lucide-icons/lucide/tree/main/packages/lucide-angular#lucide-angular).
|
|
||||||
|
|
||||||
### Preact
|
|
||||||
|
|
||||||
Implementation of the lucide icon library for preact applications.
|
|
||||||
|
|
||||||
```sh
|
|
||||||
yarn add lucide-preact
|
|
||||||
```
|
|
||||||
|
|
||||||
or
|
|
||||||
|
|
||||||
```sh
|
|
||||||
npm install lucide-preact
|
|
||||||
```
|
|
||||||
|
|
||||||
For more details, see the [documentation](https://github.com/lucide-icons/lucide/tree/main/packages/lucide-preact#lucide-preact).
|
|
||||||
|
|
||||||
### Static (svg sprite, font, icons ..)
|
|
||||||
|
|
||||||
Assets:
|
|
||||||
[Font Files](https://github.com/lucide-icons/lucide/releases/latest)
|
|
||||||
[SVG Files](https://github.com/lucide-icons/lucide/releases/latest)
|
|
||||||
[SVG Sprite](https://cdn.jsdelivr.net/npm/lucide-static@latest/sprite.svg)
|
|
||||||
|
|
||||||
NPM package
|
|
||||||
|
|
||||||
```sh
|
|
||||||
yarn add lucide-static
|
|
||||||
```
|
|
||||||
|
|
||||||
or
|
|
||||||
|
|
||||||
```sh
|
|
||||||
npm install lucide-static
|
|
||||||
```
|
|
||||||
|
|
||||||
### Figma
|
### Figma
|
||||||
|
|
||||||
@@ -196,68 +51,6 @@ Visit [Figma community page](https://www.figma.com/community/plugin/939567362549
|
|||||||
|
|
||||||
<img width="420" src="https://www.figma.com/community/plugin/939567362549682242/thumbnail" alt="Figma Lucide Cover">
|
<img width="420" src="https://www.figma.com/community/plugin/939567362549682242/thumbnail" alt="Figma Lucide Cover">
|
||||||
|
|
||||||
### Laravel
|
|
||||||
|
|
||||||
Implementation of Lucide icon's using `blade-icons` for Laravel based projects.
|
|
||||||
|
|
||||||
```sh
|
|
||||||
composer require mallardduck/blade-lucide-icons
|
|
||||||
```
|
|
||||||
|
|
||||||
For more details, see the [documentation](https://github.com/mallardduck/blade-lucide-icons/blob/main/README.md).
|
|
||||||
|
|
||||||
### Svelte
|
|
||||||
|
|
||||||
Implementation of the lucide icon library for Svelte applications.
|
|
||||||
|
|
||||||
```sh
|
|
||||||
yarn add lucide-svelte
|
|
||||||
```
|
|
||||||
|
|
||||||
or
|
|
||||||
|
|
||||||
```sh
|
|
||||||
npm install lucide-svelte
|
|
||||||
```
|
|
||||||
|
|
||||||
For more details, see the [documentation](https://github.com/lucide-icons/lucide/tree/main/packages/lucide-svelte#lucide-svelte).
|
|
||||||
|
|
||||||
### Solid
|
|
||||||
|
|
||||||
Implementation of the lucide icon library for solid applications.
|
|
||||||
|
|
||||||
```sh
|
|
||||||
yarn add lucide-solid
|
|
||||||
```
|
|
||||||
|
|
||||||
or
|
|
||||||
|
|
||||||
```sh
|
|
||||||
npm install lucide-solid
|
|
||||||
```
|
|
||||||
|
|
||||||
For more details, see the [documentation](https://github.com/lucide-icons/lucide/tree/main/packages/lucide-solid#lucide-solid).
|
|
||||||
|
|
||||||
### Hyva
|
|
||||||
|
|
||||||
Implementation of Lucide icon's using Hyvä's svg php viewmodal to render icons for Magento 2 Hyva theme based projects.
|
|
||||||
|
|
||||||
```sh
|
|
||||||
composer require siteation/magento2-hyva-icons-lucide
|
|
||||||
```
|
|
||||||
|
|
||||||
For more details, see the [documentation](https://github.com/Siteation/magento2-hyva-icons-lucide/blob/main/README.md).
|
|
||||||
|
|
||||||
### Eleventy
|
|
||||||
|
|
||||||
Using this plugin, Eleventy projects can incorporate Lucide icons. it makes it simple to use Lucide icons into your themes via shortcodes, improving your website's overall usability and visual appeal.
|
|
||||||
|
|
||||||
```sh
|
|
||||||
npm install @grimlink/eleventy-plugin-lucide-icons
|
|
||||||
```
|
|
||||||
|
|
||||||
For more details, see the [documentation](https://github.com/GrimLink/eleventy-plugin-lucide-icons/blob/main/README.md).
|
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
For more info on how to contribute please see the [contribution guidelines](https://github.com/lucide-icons/lucide/blob/main/CONTRIBUTING.md).
|
For more info on how to contribute please see the [contribution guidelines](https://github.com/lucide-icons/lucide/blob/main/CONTRIBUTING.md).
|
||||||
@@ -270,14 +63,16 @@ Join the community on our [Discord](https://discord.gg/EH6nSts) server!
|
|||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
Lucide is totally free for commercial use and personally use, this software is licensed under the [ISC License](https://github.com/lucide-icons/lucide/blob/main/LICENSE).
|
Lucide is totally free for commercial use and personal use, this software is licensed under the [ISC License](https://github.com/lucide-icons/lucide/blob/main/LICENSE).
|
||||||
|
|
||||||
## Credits
|
## Credits
|
||||||
|
|
||||||
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
|
||||||
|
|
||||||
@@ -287,6 +82,7 @@ Thank you to all the people who contributed to Lucide!
|
|||||||
|
|
||||||
<a href="https://www.digitalocean.com/?refcode=b0877a2caebd&utm_campaign=Referral_Invite&utm_medium=Referral_Program&utm_source=badge"><img src="docs/public/digitalocean.svg" width="200" alt="DigitalOcean Referral Badge" /></a>
|
<a href="https://www.digitalocean.com/?refcode=b0877a2caebd&utm_campaign=Referral_Invite&utm_medium=Referral_Program&utm_source=badge"><img src="docs/public/digitalocean.svg" width="200" alt="DigitalOcean Referral Badge" /></a>
|
||||||
|
|
||||||
### Awesome backer 🍺
|
### Awesome backers 🍺
|
||||||
|
|
||||||
<a href="https://www.scipress.io?utm_source=lucide"><img src="docs/public/sponsors/scipress.svg" width="180" alt="Scipress sponsor badge" /></a>
|
<a href="https://www.scipress.io?utm_source=lucide"><img src="docs/public/sponsors/scipress.svg" width="180" alt="Scipress sponsor badge" /></a>
|
||||||
|
<a href="https://github.com/pdfme/pdfme"><img src="docs/public/sponsors/pdfme.svg" width="180" alt="pdfme sponsor badge" /></a>
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
{
|
|
||||||
"$schema": "../category.schema.json",
|
|
||||||
"title": "Currency",
|
|
||||||
"icon": "dollar-sign"
|
|
||||||
}
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"$schema": "../category.schema.json",
|
"$schema": "../category.schema.json",
|
||||||
"title": "Money",
|
"title": "Finance",
|
||||||
"icon": "piggy-bank"
|
"icon": "piggy-bank"
|
||||||
}
|
}
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
{
|
|
||||||
"$schema": "../category.schema.json",
|
|
||||||
"title": "Furniture",
|
|
||||||
"icon": "rocking-chair"
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
{
|
|
||||||
"$schema": "../category.schema.json",
|
|
||||||
"title": "Maps",
|
|
||||||
"icon": "map"
|
|
||||||
}
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"$schema": "../category.schema.json",
|
"$schema": "../category.schema.json",
|
||||||
"title": "Maths",
|
"title": "Mathematics",
|
||||||
"icon": "divide"
|
"icon": "divide"
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"$schema": "../category.schema.json",
|
"$schema": "../category.schema.json",
|
||||||
"title": "Notifications",
|
"title": "Notification",
|
||||||
"icon": "triangle-alert"
|
"icon": "triangle-alert"
|
||||||
}
|
}
|
||||||
|
|||||||
0
comment-markup.md
Normal file
@@ -35,10 +35,6 @@
|
|||||||
"name": "connectivity",
|
"name": "connectivity",
|
||||||
"title": "Connectivity"
|
"title": "Connectivity"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "currency",
|
|
||||||
"title": "Currency"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "cursors",
|
"name": "cursors",
|
||||||
"title": "Cursors"
|
"title": "Cursors"
|
||||||
@@ -64,12 +60,12 @@
|
|||||||
"title": "File icons"
|
"title": "File icons"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "food-beverage",
|
"name": "finance",
|
||||||
"title": "Food & beverage"
|
"title": "Finance"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "furniture",
|
"name": "food-beverage",
|
||||||
"title": "Furniture"
|
"title": "Food & beverage"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "gaming",
|
"name": "gaming",
|
||||||
@@ -88,21 +84,13 @@
|
|||||||
"title": "Mail"
|
"title": "Mail"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "maps",
|
"name": "math",
|
||||||
"title": "Maps"
|
"title": "Mathematics"
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "maths",
|
|
||||||
"title": "Maths"
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "medical",
|
"name": "medical",
|
||||||
"title": "Medical"
|
"title": "Medical"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "money",
|
|
||||||
"title": "Money"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "multimedia",
|
"name": "multimedia",
|
||||||
"title": "Multimedia"
|
"title": "Multimedia"
|
||||||
@@ -117,7 +105,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "notifications",
|
"name": "notifications",
|
||||||
"title": "Notifications"
|
"title": "Notification"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "people",
|
"name": "people",
|
||||||
|
|||||||
@@ -14,5 +14,13 @@
|
|||||||
"light": "/library-logos/tamagui.svg",
|
"light": "/library-logos/tamagui.svg",
|
||||||
"dark": "/library-logos/tamagui.svg"
|
"dark": "/library-logos/tamagui.svg"
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Reflex",
|
||||||
|
"url": "https://reflex.dev",
|
||||||
|
"image": {
|
||||||
|
"light": "/library-logos/reflex-light.svg",
|
||||||
|
"dark": "/library-logos/reflex-dark.svg"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -31,24 +31,8 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"lucide-vue": {
|
|
||||||
"order": 2,
|
|
||||||
"icon": "vue",
|
|
||||||
"shields": [
|
|
||||||
{
|
|
||||||
"alt": "npm",
|
|
||||||
"src": "https://img.shields.io/npm/v/lucide-vue",
|
|
||||||
"href": "https://www.npmjs.com/package/lucide-vue"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"alt": "npm",
|
|
||||||
"src": "https://img.shields.io/npm/dw/lucide-vue",
|
|
||||||
"href": "https://www.npmjs.com/package/lucide-vue"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"lucide-vue-next": {
|
"lucide-vue-next": {
|
||||||
"order": 3,
|
"order": 2,
|
||||||
"icon": "vue-next",
|
"icon": "vue-next",
|
||||||
"shields": [
|
"shields": [
|
||||||
{
|
{
|
||||||
@@ -64,7 +48,7 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"lucide-svelte": {
|
"lucide-svelte": {
|
||||||
"order": 4,
|
"order": 3,
|
||||||
"icon": "svelte",
|
"icon": "svelte",
|
||||||
"shields": [
|
"shields": [
|
||||||
{
|
{
|
||||||
@@ -95,24 +79,8 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"lucide-preact": {
|
|
||||||
"order": 5,
|
|
||||||
"icon": "preact",
|
|
||||||
"shields": [
|
|
||||||
{
|
|
||||||
"alt": "npm",
|
|
||||||
"src": "https://img.shields.io/npm/v/lucide-preact",
|
|
||||||
"href": "https://www.npmjs.com/package/lucide-preact"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"alt": "npm",
|
|
||||||
"src": "https://img.shields.io/npm/dw/lucide-preact",
|
|
||||||
"href": "https://www.npmjs.com/package/lucide-preact"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"lucide-react-native": {
|
"lucide-react-native": {
|
||||||
"order": 6,
|
"order": 5,
|
||||||
"icon": "react-native",
|
"icon": "react-native",
|
||||||
"shields": [
|
"shields": [
|
||||||
{
|
{
|
||||||
@@ -128,7 +96,7 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"lucide-angular": {
|
"lucide-angular": {
|
||||||
"order": 7,
|
"order": 6,
|
||||||
"icon": "angular",
|
"icon": "angular",
|
||||||
"shields": [
|
"shields": [
|
||||||
{
|
{
|
||||||
@@ -143,8 +111,43 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"lucide-static": {
|
"lucide-preact": {
|
||||||
|
"order": 7,
|
||||||
|
"icon": "preact",
|
||||||
|
"shields": [
|
||||||
|
{
|
||||||
|
"alt": "npm",
|
||||||
|
"src": "https://img.shields.io/npm/v/lucide-preact",
|
||||||
|
"href": "https://www.npmjs.com/package/lucide-preact"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"alt": "npm",
|
||||||
|
"src": "https://img.shields.io/npm/dw/lucide-preact",
|
||||||
|
"href": "https://www.npmjs.com/package/lucide-preact"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"@lucide/astro": {
|
||||||
|
"docsAlias": "lucide-astro",
|
||||||
|
"packageDirname": "astro",
|
||||||
"order": 8,
|
"order": 8,
|
||||||
|
"icon": "astro",
|
||||||
|
"iconDark": "astro-dark",
|
||||||
|
"shields": [
|
||||||
|
{
|
||||||
|
"alt": "npm",
|
||||||
|
"src": "https://img.shields.io/npm/v/@lucide/astro",
|
||||||
|
"href": "https://www.npmjs.com/package/@lucide/astro"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"alt": "npm",
|
||||||
|
"src": "https://img.shields.io/npm/dw/@lucide/astro",
|
||||||
|
"href": "https://www.npmjs.com/package/@lucide/astro"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"lucide-static": {
|
||||||
|
"order": 9,
|
||||||
"icon": "svg",
|
"icon": "svg",
|
||||||
"shields": [
|
"shields": [
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -76,5 +76,24 @@
|
|||||||
],
|
],
|
||||||
"source": "https://github.com/swisnl/nuxt-lucide-icons",
|
"source": "https://github.com/swisnl/nuxt-lucide-icons",
|
||||||
"documentation": "https://github.com/swisnl/nuxt-lucide-icons/blob/main/README.md"
|
"documentation": "https://github.com/swisnl/nuxt-lucide-icons/blob/main/README.md"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "lucide-lustre",
|
||||||
|
"description": "A library providing https://lucide.dev icons to lustre.",
|
||||||
|
"icon": "/framework-logos/lustre.webp",
|
||||||
|
"shields": [
|
||||||
|
{
|
||||||
|
"alt": "Latest Stable Version",
|
||||||
|
"src": "https://img.shields.io/hexpm/v/lucide_lustre",
|
||||||
|
"href": "https://hex.pm/packages/lucide_lustre"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"alt": "Total Downloads",
|
||||||
|
"src": "https://img.shields.io/hexpm/dw/lucide_lustre",
|
||||||
|
"href": "https://hex.pm/packages/lucide_lustre"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"source": "https://github.com/dinkelspiel/lucide_lustre",
|
||||||
|
"documentation": "https://github.com/dinkelspiel/lucide_lustre/blob/master/README.md"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ import { $CamelCase } from '@lucide/lab';
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<Icon :iconNode="burger" />
|
<Icon :iconNode="$CamelCase" />
|
||||||
</template>
|
</template>
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
@@ -61,7 +61,7 @@ import { Icon } from 'lucide-svelte';
|
|||||||
import { $CamelCase } from '@lucide/lab';
|
import { $CamelCase } from '@lucide/lab';
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<Icon iconNode={burger} />
|
<Icon iconNode={$CamelCase} />
|
||||||
`,
|
`,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -46,6 +46,10 @@ const sidebar: UserConfig<DefaultTheme.Config>['themeConfig']['sidebar'] = {
|
|||||||
text: 'Filled icons',
|
text: 'Filled icons',
|
||||||
link: '/guide/advanced/filled-icons',
|
link: '/guide/advanced/filled-icons',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
text: 'Aliased Names',
|
||||||
|
link: '/guide/advanced/aliased-names',
|
||||||
|
},
|
||||||
// {
|
// {
|
||||||
// text: 'Combining icons',
|
// text: 'Combining icons',
|
||||||
// },
|
// },
|
||||||
@@ -68,10 +72,6 @@ const sidebar: UserConfig<DefaultTheme.Config>['themeConfig']['sidebar'] = {
|
|||||||
text: 'Lucide React',
|
text: 'Lucide React',
|
||||||
link: '/guide/packages/lucide-react',
|
link: '/guide/packages/lucide-react',
|
||||||
},
|
},
|
||||||
{
|
|
||||||
text: 'Lucide React Native',
|
|
||||||
link: '/guide/packages/lucide-react-native',
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
text: 'Lucide Vue',
|
text: 'Lucide Vue',
|
||||||
link: '/guide/packages/lucide-vue-next',
|
link: '/guide/packages/lucide-vue-next',
|
||||||
@@ -85,13 +85,21 @@ const sidebar: UserConfig<DefaultTheme.Config>['themeConfig']['sidebar'] = {
|
|||||||
link: '/guide/packages/lucide-solid',
|
link: '/guide/packages/lucide-solid',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: 'Lucide Preact',
|
text: 'Lucide React Native',
|
||||||
link: '/guide/packages/lucide-preact',
|
link: '/guide/packages/lucide-react-native',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
text: 'Lucide Angular',
|
text: 'Lucide Angular',
|
||||||
link: '/guide/packages/lucide-angular',
|
link: '/guide/packages/lucide-angular',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
text: 'Lucide Preact',
|
||||||
|
link: '/guide/packages/lucide-preact',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
text: 'Lucide Astro',
|
||||||
|
link: '/guide/packages/lucide-astro',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
text: 'Lucide Static',
|
text: 'Lucide Static',
|
||||||
link: '/guide/packages/lucide-static',
|
link: '/guide/packages/lucide-static',
|
||||||
|
|||||||
@@ -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,7 +9,7 @@ export default {
|
|||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
})
|
})
|
||||||
.then((res) => res.tag_name);
|
.then((res) => res?.tag_name);
|
||||||
|
|
||||||
return {
|
return {
|
||||||
version,
|
version,
|
||||||
|
|||||||
@@ -171,16 +171,14 @@ watch(absoluteStrokeWidth, (enabled) => {
|
|||||||
margin-top: 32px;
|
margin-top: 32px;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
background: none;
|
background: none;
|
||||||
max-width: 280px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@media (min-width: 640px) {
|
@media (min-width: 640px) {
|
||||||
|
|
||||||
.card {
|
.card {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: 8fr 10fr;
|
grid-template-columns: 8fr 10fr;
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
.card-column {
|
.card-column {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
} */
|
} */
|
||||||
|
|||||||
@@ -37,6 +37,12 @@ export default {
|
|||||||
logo: '/framework-logos/angular.svg',
|
logo: '/framework-logos/angular.svg',
|
||||||
label: 'Lucide documentation for Angular',
|
label: 'Lucide documentation for Angular',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: 'lucide-astro',
|
||||||
|
logo: '/framework-logos/astro.svg',
|
||||||
|
logoDark: '/framework-logos/astro-dark.svg',
|
||||||
|
label: 'Lucide documentation for Astro',
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: 'lucide-react-native',
|
name: 'lucide-react-native',
|
||||||
logo: '/framework-logos/react-native.svg',
|
logo: '/framework-logos/react-native.svg',
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ const { go } = useRouter()
|
|||||||
<HomeSectionTitle>Available For:</HomeSectionTitle>
|
<HomeSectionTitle>Available For:</HomeSectionTitle>
|
||||||
<div class="packages-list">
|
<div class="packages-list">
|
||||||
<a
|
<a
|
||||||
v-for="{ name, logo } in data.packages"
|
v-for="{ name, logo, logoDark } in data.packages"
|
||||||
:href="`/guide/packages/${name}`"
|
:href="`/guide/packages/${name}`"
|
||||||
class="package-logo"
|
class="package-logo"
|
||||||
:aria-label="`Read more about: ${name} package`"
|
:aria-label="`Read more about: ${name} package`"
|
||||||
@@ -21,10 +21,17 @@ const { go } = useRouter()
|
|||||||
>
|
>
|
||||||
<img
|
<img
|
||||||
:src="logo"
|
:src="logo"
|
||||||
height="36"
|
:class="{ light: logoDark, 'image-logo': true }"
|
||||||
width="36"
|
|
||||||
loading="lazy"
|
|
||||||
:alt="`${name} logo`"
|
:alt="`${name} logo`"
|
||||||
|
loading="lazy"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<img
|
||||||
|
v-if="logoDark"
|
||||||
|
:src="logoDark"
|
||||||
|
:alt="`${name} logo`"
|
||||||
|
class="image-logo dark"
|
||||||
|
loading="lazy"
|
||||||
/>
|
/>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@@ -35,6 +42,13 @@ const { go } = useRouter()
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
|
|
||||||
|
.image-logo {
|
||||||
|
object-fit: contain;
|
||||||
|
width: 36px;
|
||||||
|
height: 36px;
|
||||||
|
}
|
||||||
|
|
||||||
.packages-list {
|
.packages-list {
|
||||||
display: flex;
|
display: flex;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
@@ -57,4 +71,11 @@ const { go } = useRouter()
|
|||||||
.package-logo:hover {
|
.package-logo:hover {
|
||||||
opacity: .6;
|
opacity: .6;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
html.dark .image-logo.light {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
html:not(.dark) .image-logo.dark {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -5,22 +5,32 @@ import IconButton from '../base/IconButton.vue';
|
|||||||
import VPDocAsideCarbonAds from 'vitepress/dist/client/theme-default/components/VPDocAsideCarbonAds.vue'
|
import VPDocAsideCarbonAds from 'vitepress/dist/client/theme-default/components/VPDocAsideCarbonAds.vue'
|
||||||
import { x } from '../../../data/iconNodes'
|
import { x } from '../../../data/iconNodes'
|
||||||
import createLucideIcon from 'lucide-vue-next/src/createLucideIcon';
|
import createLucideIcon from 'lucide-vue-next/src/createLucideIcon';
|
||||||
|
import { onMounted, ref } from 'vue';
|
||||||
|
|
||||||
const { theme } = useData()
|
const { theme } = useData()
|
||||||
const showAd = useSessionStorage('show-carbon-ads',true)
|
const showAd = useSessionStorage('show-carbon-ads', true)
|
||||||
|
const carbonLoaded = ref(true)
|
||||||
|
|
||||||
defineProps<{
|
defineProps<{
|
||||||
drawerOpen: boolean
|
drawerOpen: boolean
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
const CloseIcon = createLucideIcon('Close', x)
|
const CloseIcon = createLucideIcon('Close', x)
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
setTimeout(() => {
|
||||||
|
if (window?._carbonads == null) {
|
||||||
|
carbonLoaded.value = false
|
||||||
|
}
|
||||||
|
}, 5000)
|
||||||
|
})
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div
|
<div
|
||||||
:class="{
|
:class="{
|
||||||
'drawer-open': drawerOpen,
|
'drawer-open': drawerOpen,
|
||||||
'hide-ad': !showAd
|
'hide-ad': !(showAd && carbonLoaded)
|
||||||
}"
|
}"
|
||||||
class="floating-ad"
|
class="floating-ad"
|
||||||
v-if="theme.carbonAds"
|
v-if="theme.carbonAds"
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
438
docs/.vitepress/theme/components/icons/IconShowcase.vue
Normal file
@@ -0,0 +1,438 @@
|
|||||||
|
<script setup lang="ts">
|
||||||
|
import type { IconEntity } from '../../types';
|
||||||
|
import { computed } from 'vue';
|
||||||
|
import createLucideIcon from 'lucide-vue-next/src/createLucideIcon.ts';
|
||||||
|
import Calendar from '../../../data/iconDetails/calendar.ts';
|
||||||
|
import Clock from '../../../data/iconDetails/clock.ts';
|
||||||
|
import Bug from '../../../data/iconDetails/bug.ts';
|
||||||
|
import Rocket from '../../../data/iconDetails/rocket.ts';
|
||||||
|
import TriangleAlert from '../../../data/iconDetails/triangle-alert.ts';
|
||||||
|
import PartyPopper from '../../../data/iconDetails/party-popper.ts';
|
||||||
|
import Scissors from '../../../data/iconDetails/scissors.ts';
|
||||||
|
import Copy from '../../../data/iconDetails/copy.ts';
|
||||||
|
import Save from '../../../data/iconDetails/save.ts';
|
||||||
|
import Clipboard from '../../../data/iconDetails/clipboard.ts';
|
||||||
|
import MessageCircle from '../../../data/iconDetails/message-circle.ts';
|
||||||
|
import ThumbsDown from '../../../data/iconDetails/thumbs-down.ts';
|
||||||
|
import ThumbsUp from '../../../data/iconDetails/thumbs-up.ts';
|
||||||
|
import Heart from '../../../data/iconDetails/heart.ts';
|
||||||
|
import Folder from '../../../data/iconDetails/folder.ts';
|
||||||
|
import Files from '../../../data/iconDetails/files.ts';
|
||||||
|
import Plus from '../../../data/iconDetails/plus.ts';
|
||||||
|
import File from '../../../data/iconDetails/file.ts';
|
||||||
|
import FileText from '../../../data/iconDetails/file-text.ts';
|
||||||
|
|
||||||
|
const props = defineProps<{
|
||||||
|
name: IconEntity['name'];
|
||||||
|
iconNode: IconEntity['iconNode'];
|
||||||
|
}>();
|
||||||
|
|
||||||
|
const iconComponent = computed(() => {
|
||||||
|
if (!props.name || !props.iconNode) return null;
|
||||||
|
return createLucideIcon(props.name, props.iconNode);
|
||||||
|
});
|
||||||
|
|
||||||
|
const CalendarIcon = createLucideIcon('calendar', Calendar.iconNode);
|
||||||
|
const ClockIcon = createLucideIcon('clock', Clock.iconNode);
|
||||||
|
const BugIcon = createLucideIcon('bug', Bug.iconNode);
|
||||||
|
const RocketIcon = createLucideIcon('rocket', Rocket.iconNode);
|
||||||
|
const AlertTriangleIcon = createLucideIcon('alert-triangle', TriangleAlert.iconNode);
|
||||||
|
const ScissorsIcon = createLucideIcon('scissors', Scissors.iconNode);
|
||||||
|
const CopyIcon = createLucideIcon('copy', Copy.iconNode);
|
||||||
|
const SaveIcon = createLucideIcon('save', Save.iconNode);
|
||||||
|
const ClipboardIcon = createLucideIcon('clipboard', Clipboard.iconNode);
|
||||||
|
const PartyPopperIcon = createLucideIcon('party-popper', PartyPopper.iconNode);
|
||||||
|
const HeartIcon = createLucideIcon('heart', Heart.iconNode);
|
||||||
|
const ThumbsUpIcon = createLucideIcon('thumbs-up', ThumbsUp.iconNode);
|
||||||
|
const ThumbsDownIcon = createLucideIcon('thumbs-down', ThumbsDown.iconNode);
|
||||||
|
const MessageCircleIcon = createLucideIcon('message-circle', MessageCircle.iconNode);
|
||||||
|
const FolderIcon = createLucideIcon('folder.ts', Folder.iconNode);
|
||||||
|
const FilesIcon = createLucideIcon('files.ts', Files.iconNode);
|
||||||
|
const PlusIcon = createLucideIcon('plus.ts', Plus.iconNode);
|
||||||
|
const FileIcon = createLucideIcon('file.ts', File.iconNode);
|
||||||
|
const FileTextIcon = createLucideIcon('file-text.ts', FileText.iconNode);
|
||||||
|
|
||||||
|
const prettyName = props.name
|
||||||
|
.split('-')
|
||||||
|
.at(0)
|
||||||
|
.split('')
|
||||||
|
.map((character, index) => (index === 0 ? character.toUpperCase() : character))
|
||||||
|
.join('');
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<template>
|
||||||
|
<section class="showcase">
|
||||||
|
<h2 class="title">See this icon in action</h2>
|
||||||
|
<div class="showcase-grid">
|
||||||
|
<div class="showcase-item column">
|
||||||
|
<div class="placeholder"></div>
|
||||||
|
<div class="placeholder"></div>
|
||||||
|
<div class="placeholder"></div>
|
||||||
|
<div class="placeholder narrow"></div>
|
||||||
|
<div class="spacer"></div>
|
||||||
|
<div class="actions">
|
||||||
|
<button class="button button-brand">
|
||||||
|
<iconComponent />
|
||||||
|
{{ prettyName }}
|
||||||
|
</button>
|
||||||
|
<button class="button button-alt">Cancel</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="showcase-item column">
|
||||||
|
<div class="placeholder narrow"></div>
|
||||||
|
<div class="input-wrapper">
|
||||||
|
<CalendarIcon v-if="name !== 'calendar'" />
|
||||||
|
<ClockIcon v-if="name == 'calendar'" />
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
v-if="name !== 'calendar'"
|
||||||
|
placeholder="Enter a date..."
|
||||||
|
/>
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
v-if="name == 'calendar'"
|
||||||
|
placeholder="Enter a time..."
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div class="spacer"></div>
|
||||||
|
<div class="placeholder narrow"></div>
|
||||||
|
<div class="input-wrapper">
|
||||||
|
<iconComponent />
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
placeholder="Enter a value..."
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="showcase-item column">
|
||||||
|
<div
|
||||||
|
class="row"
|
||||||
|
v-if="name !== 'bug'"
|
||||||
|
>
|
||||||
|
<div class="placeholder"></div>
|
||||||
|
<div class="badge badge-red">
|
||||||
|
<BugIcon :size="20" />
|
||||||
|
Bug
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="row"
|
||||||
|
v-else
|
||||||
|
>
|
||||||
|
<div class="placeholder"></div>
|
||||||
|
<div class="badge badge-red">
|
||||||
|
<AlertTriangleIcon :size="20" />
|
||||||
|
Alert
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="placeholder"></div>
|
||||||
|
<div class="badge badge-indigo">
|
||||||
|
<RocketIcon
|
||||||
|
:size="20"
|
||||||
|
v-if="name !== 'rocket'"
|
||||||
|
/>
|
||||||
|
<PartyPopperIcon
|
||||||
|
:size="20"
|
||||||
|
v-else
|
||||||
|
/>
|
||||||
|
Feature
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="placeholder"></div>
|
||||||
|
<div class="badge badge-green">
|
||||||
|
<iconComponent :size="20" />
|
||||||
|
{{ prettyName }}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="showcase-item column">
|
||||||
|
<button class="button button-alt button-square">
|
||||||
|
<FolderIcon v-if="name !== 'folder'" />
|
||||||
|
<FilesIcon v-else />
|
||||||
|
Documents
|
||||||
|
<PlusIcon class="ms-auto" />
|
||||||
|
</button>
|
||||||
|
<button class="button button-alt button-square">
|
||||||
|
<FileIcon v-if="name !== 'file'" />
|
||||||
|
<FileTextIcon v-else />
|
||||||
|
Readme
|
||||||
|
</button>
|
||||||
|
<button class="button button-alt button-square">
|
||||||
|
<iconComponent />
|
||||||
|
{{ prettyName }}
|
||||||
|
<span class="badge-notification ms-auto">12</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div class="showcase-item column">
|
||||||
|
<div class="placeholder"></div>
|
||||||
|
<div class="placeholder"></div>
|
||||||
|
<div class="placeholder"></div>
|
||||||
|
<div class="placeholder narrow"></div>
|
||||||
|
<div class="spacer"></div>
|
||||||
|
<div class="actions">
|
||||||
|
<div class="icon-counter">
|
||||||
|
<HeartIcon v-if="name !== 'heart'" />
|
||||||
|
<ThumbsUpIcon v-else />
|
||||||
|
112
|
||||||
|
</div>
|
||||||
|
<div class="spacer"></div>
|
||||||
|
<div class="icon-counter">
|
||||||
|
<MessageCircleIcon v-if="name !== 'message-circle'" />
|
||||||
|
<ThumbsDownIcon v-else />
|
||||||
|
8
|
||||||
|
</div>
|
||||||
|
<div class="spacer"></div>
|
||||||
|
<div class="icon-counter">
|
||||||
|
<iconComponent />
|
||||||
|
11
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="showcase-item">
|
||||||
|
<div class="column align-items-center">
|
||||||
|
<div class="actions justify-content-center">
|
||||||
|
<button class="button button-icon">
|
||||||
|
<CopyIcon v-if="name !== 'copy'" />
|
||||||
|
<SaveIcon v-else />
|
||||||
|
</button>
|
||||||
|
<button class="button button-icon">
|
||||||
|
<ScissorsIcon v-if="name !== 'scissors'" />
|
||||||
|
<SaveIcon v-else />
|
||||||
|
</button>
|
||||||
|
<button class="button button-icon">
|
||||||
|
<ClipboardIcon v-if="name !== 'clipboard'" />
|
||||||
|
<SaveIcon v-else />
|
||||||
|
</button>
|
||||||
|
<button class="button button-icon">
|
||||||
|
<iconComponent></iconComponent>
|
||||||
|
<span class="badge-notification">2</span>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div class="spacer"></div>
|
||||||
|
<div class="placeholder"></div>
|
||||||
|
<div class="placeholder"></div>
|
||||||
|
<div class="placeholder"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<style scoped>
|
||||||
|
.showcase {
|
||||||
|
margin-bottom: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.showcase-grid {
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
|
||||||
|
gap: 48px;
|
||||||
|
margin-inline-start: 24px;
|
||||||
|
margin-block-start: 48px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.showcase-item {
|
||||||
|
padding: 24px;
|
||||||
|
border-radius: 8px;
|
||||||
|
background-color: var(--vp-c-bg);
|
||||||
|
box-shadow:
|
||||||
|
var(--vp-shadow-4),
|
||||||
|
-24px -24px 0 var(--vp-c-bg-soft);
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
min-height: 240px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.spacer {
|
||||||
|
flex-basis: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button {
|
||||||
|
position: relative;
|
||||||
|
border-radius: 32px;
|
||||||
|
padding: 8px 16px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
gap: 12px;
|
||||||
|
font-weight: 500;
|
||||||
|
transition:
|
||||||
|
color 0.25s,
|
||||||
|
border-color 0.25s,
|
||||||
|
background-color 0.25s;
|
||||||
|
|
||||||
|
border-color: var(--vp-button-alt-border);
|
||||||
|
color: var(--vp-button-alt-text);
|
||||||
|
background-color: var(--vp-button-alt-bg);
|
||||||
|
&:hover {
|
||||||
|
border-color: var(--vp-button-alt-hover-border);
|
||||||
|
color: var(--vp-button-alt-hover-text);
|
||||||
|
background-color: var(--vp-button-alt-hover-bg);
|
||||||
|
}
|
||||||
|
&.button-brand {
|
||||||
|
border-color: var(--vp-button-brand-border);
|
||||||
|
color: var(--vp-button-brand-text);
|
||||||
|
background-color: var(--vp-button-brand-bg);
|
||||||
|
&:hover {
|
||||||
|
border-color: var(--vp-button-brand-hover-border);
|
||||||
|
color: var(--vp-button-brand-hover-text);
|
||||||
|
background-color: var(--vp-button-brand-hover-bg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&.button-icon {
|
||||||
|
padding: 12px;
|
||||||
|
}
|
||||||
|
&.button-square {
|
||||||
|
border-radius: 8px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.actions {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
gap: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.lucide {
|
||||||
|
flex-shrink: 0;
|
||||||
|
flex-grow: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.placeholder {
|
||||||
|
display: block;
|
||||||
|
background-color: var(--vp-c-bg-soft);
|
||||||
|
border-radius: 32px;
|
||||||
|
height: 16px;
|
||||||
|
width: 100%;
|
||||||
|
|
||||||
|
&.narrow {
|
||||||
|
width: 33%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.input-wrapper {
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
.lucide {
|
||||||
|
position: absolute;
|
||||||
|
inset-inline-start: 12px;
|
||||||
|
inset-block: 50%;
|
||||||
|
translate: 0 -50%;
|
||||||
|
color: var(--vp-c-text-1);
|
||||||
|
opacity: 0.7;
|
||||||
|
}
|
||||||
|
input {
|
||||||
|
padding: 12px 20px;
|
||||||
|
padding-inline-start: 48px;
|
||||||
|
border-radius: 8px;
|
||||||
|
background-color: var(--vp-c-bg-soft);
|
||||||
|
color: var(--vp-c-text-1);
|
||||||
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
border: 2px solid transparent;
|
||||||
|
transition:
|
||||||
|
color 0.25s,
|
||||||
|
border-color 0.25s,
|
||||||
|
background-color 0.25s;
|
||||||
|
&:hover {
|
||||||
|
border-color: var(--vp-c-border);
|
||||||
|
}
|
||||||
|
&:focus {
|
||||||
|
border-color: var(--vp-c-brand);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&:focus-within {
|
||||||
|
.lucide {
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.badge {
|
||||||
|
flex-shrink: 0;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
gap: 6px;
|
||||||
|
padding: 4px 8px;
|
||||||
|
border-radius: 8px;
|
||||||
|
background-color: transparent;
|
||||||
|
overflow: hidden;
|
||||||
|
position: relative;
|
||||||
|
color: var(--badge-color);
|
||||||
|
&:before {
|
||||||
|
content: ' ';
|
||||||
|
inset: 0;
|
||||||
|
position: absolute;
|
||||||
|
background-color: var(--badge-color);
|
||||||
|
opacity: 0.1;
|
||||||
|
}
|
||||||
|
&.badge-indigo {
|
||||||
|
--badge-color: var(--vp-c-indigo-2);
|
||||||
|
}
|
||||||
|
&.badge-green {
|
||||||
|
--badge-color: var(--vp-c-green-2);
|
||||||
|
}
|
||||||
|
&.badge-red {
|
||||||
|
--badge-color: var(--vp-c-brand);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.badge-notification {
|
||||||
|
background-color: var(--vp-c-brand);
|
||||||
|
color: var(--vp-button-brand-text);
|
||||||
|
border-radius: 32px;
|
||||||
|
padding: 0 8px;
|
||||||
|
min-width: 24px;
|
||||||
|
min-height: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button-icon {
|
||||||
|
.badge-notification {
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
translate: 33% -33%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.row {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
gap: 12px;
|
||||||
|
align-items: center;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-counter {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
gap: 6px;
|
||||||
|
color: var(--vp-c-text-2);
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.column {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 12px;
|
||||||
|
align-items: start;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.align-items-center {
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.justify-content-center {
|
||||||
|
justify-content: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.ms-auto {
|
||||||
|
margin-inline-start: auto;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
@@ -14,6 +14,7 @@ import CarbonAdOverlay from './CarbonAdOverlay.vue';
|
|||||||
|
|
||||||
const ICON_SIZE = 56;
|
const ICON_SIZE = 56;
|
||||||
const ICON_GRID_GAP = 8;
|
const ICON_GRID_GAP = 8;
|
||||||
|
const DEFAULT_GRID_ITEMS = 10 * 160;
|
||||||
|
|
||||||
const props = defineProps<{
|
const props = defineProps<{
|
||||||
icons: IconEntity[];
|
icons: IconEntity[];
|
||||||
@@ -114,11 +115,23 @@ function handleCloseDrawer() {
|
|||||||
/>
|
/>
|
||||||
</StickyBar>
|
</StickyBar>
|
||||||
<NoResults
|
<NoResults
|
||||||
v-if="list.length === 0"
|
v-if="list.length === 0 && searchQuery !== ''"
|
||||||
:searchQuery="searchQuery"
|
:searchQuery="searchQuery"
|
||||||
@clear="searchQuery = ''"
|
@clear="searchQuery = ''"
|
||||||
/>
|
/>
|
||||||
<div v-bind="wrapperProps" class="icon">
|
<IconGrid
|
||||||
|
v-else-if="list.length === 0"
|
||||||
|
:key="index"
|
||||||
|
overlayMode
|
||||||
|
:icons="[...searchResults].splice(0, DEFAULT_GRID_ITEMS)"
|
||||||
|
:activeIcon="activeIconName"
|
||||||
|
@setActiveIcon="setActiveIconName"
|
||||||
|
/>
|
||||||
|
<div
|
||||||
|
v-bind="wrapperProps"
|
||||||
|
class="icon"
|
||||||
|
v-else
|
||||||
|
>
|
||||||
<IconGrid
|
<IconGrid
|
||||||
v-for="{ index, data: icons } in list"
|
v-for="{ index, data: icons } in list"
|
||||||
:key="index"
|
:key="index"
|
||||||
|
|||||||
@@ -1,29 +1,20 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import type { IconEntity } from '../../types'
|
import type { IconEntity } from '../../types';
|
||||||
import IconGrid from './IconGrid.vue'
|
import IconGrid from './IconGrid.vue';
|
||||||
|
|
||||||
defineProps<{
|
defineProps<{
|
||||||
icons: IconEntity[]
|
icons: IconEntity[];
|
||||||
}>()
|
}>();
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<section class="related-icons">
|
<section class="related-icons">
|
||||||
<h2 class="title">
|
<h2 class="title">More icons like this</h2>
|
||||||
Related Icons
|
<IconGrid :icons="icons" />
|
||||||
</h2>
|
|
||||||
<IconGrid
|
|
||||||
:icons="icons"
|
|
||||||
/>
|
|
||||||
</section>
|
</section>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<style scoped>
|
<style scoped>
|
||||||
.title {
|
|
||||||
margin-bottom: 24px;
|
|
||||||
font-size: 19px;
|
|
||||||
font-weight: 500;
|
|
||||||
}
|
|
||||||
|
|
||||||
.related-icons {
|
.related-icons {
|
||||||
margin-bottom: 32px;
|
margin-bottom: 32px;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,21 +1,27 @@
|
|||||||
import packageData from '../../../data/packageData.json';
|
import packageDataList from '../../../data/packageData.json';
|
||||||
import thirdPartyPackages from '../../../data/packageData.thirdParty.json';
|
import thirdPartyPackages from '../../../data/packageData.thirdParty.json';
|
||||||
import fetchPackages from '../../../lib/fetchPackages';
|
import fetchPackages from '../../../lib/fetchPackages';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
async load() {
|
async load() {
|
||||||
const packages = await fetchPackages();
|
const packageJsonList = await fetchPackages();
|
||||||
|
|
||||||
return {
|
return {
|
||||||
packages: packages
|
packages: packageJsonList
|
||||||
.filter((p) => p?.name != null && p.name in packageData)
|
.filter((pJson) => pJson?.name != null && pJson.name in packageDataList)
|
||||||
.map((pData) => ({
|
.map((pJson) => {
|
||||||
...pData,
|
const packageData = packageDataList[pJson.name];
|
||||||
...packageData[pData.name],
|
return {
|
||||||
documentation: `/guide/packages/${pData.name}`,
|
...pJson,
|
||||||
source: `https://github.com/lucide-icons/lucide/tree/main/packages/${pData.name}`,
|
...packageData,
|
||||||
icon: `/framework-logos/${packageData[pData.name].icon}.svg`,
|
documentation: `/guide/packages/${packageData.docsAlias ?? pJson.name}`,
|
||||||
}))
|
source: `https://github.com/lucide-icons/lucide/tree/main/packages/${packageData.packageDirname ?? pJson.name}`,
|
||||||
|
icon: `/framework-logos/${packageData.icon}.svg`,
|
||||||
|
iconDark: Boolean(packageData.iconDark)
|
||||||
|
? `/framework-logos/${packageData.iconDark}.svg`
|
||||||
|
: null,
|
||||||
|
};
|
||||||
|
})
|
||||||
.sort((a, b) => a.order - b.order),
|
.sort((a, b) => a.order - b.order),
|
||||||
thirdPartyPackages,
|
thirdPartyPackages,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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';
|
||||||
@@ -33,12 +36,19 @@ interface Shield {
|
|||||||
|
|
||||||
export interface PackageItem {
|
export interface PackageItem {
|
||||||
name: string;
|
name: string;
|
||||||
|
// set when the package's directory
|
||||||
|
// name under the `packages/` directory
|
||||||
|
// is diffrent from the package name
|
||||||
|
packageDirname?: string;
|
||||||
description: string;
|
description: string;
|
||||||
icon: string;
|
icon: string;
|
||||||
iconDark: string;
|
iconDark: string;
|
||||||
shields: Shield[];
|
shields: Shield[];
|
||||||
source: string;
|
source: string;
|
||||||
documentation: string;
|
documentation: string;
|
||||||
|
// set when the docs page name is
|
||||||
|
// diffrent from the package name
|
||||||
|
docsAlias?: string;
|
||||||
order?: number;
|
order?: number;
|
||||||
private?: boolean;
|
private?: boolean;
|
||||||
flutter?: object;
|
flutter?: object;
|
||||||
|
|||||||
@@ -139,22 +139,22 @@ contained icon.
|
|||||||
```tsx
|
```tsx
|
||||||
// Don't do this
|
// Don't do this
|
||||||
<button class="btn-icon">
|
<button class="btn-icon">
|
||||||
<Home/>
|
<House/>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
// Don't do this either
|
// Don't do this either
|
||||||
<button class="btn-icon">
|
<button class="btn-icon">
|
||||||
<Home aria-label="Home icon"/>
|
<House aria-label="Home icon"/>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
// This works but might not be the best solution, see below
|
// This works but might not be the best solution, see below
|
||||||
<button aria-label="Go to home" class="btn-icon">
|
<button aria-label="Go to home" class="btn-icon">
|
||||||
<Home/>
|
<House/>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
// Do this instead
|
// Do this instead
|
||||||
<button class="btn-icon">
|
<button class="btn-icon">
|
||||||
<Home/>
|
<House/>
|
||||||
<span class="visually-hidden">Go to home</span>
|
<span class="visually-hidden">Go to home</span>
|
||||||
</button>
|
</button>
|
||||||
```
|
```
|
||||||
@@ -167,6 +167,7 @@ Although you could provide accessible labels to your elements via the `aria-labe
|
|||||||
generally recommend avoiding this and instead suggest that you use your chosen CSS framework's "
|
generally recommend avoiding this and instead suggest that you use your chosen CSS framework's "
|
||||||
visually hidden" utility whenever possible. You can
|
visually hidden" utility whenever possible. You can
|
||||||
[read more about why `aria-label` might not be the best solution](https://gomakethings.com/revisting-aria-label-versus-a-visually-hidden-class/).
|
[read more about why `aria-label` might not be the best solution](https://gomakethings.com/revisting-aria-label-versus-a-visually-hidden-class/).
|
||||||
|
|
||||||
### Example - Radix UI
|
### Example - Radix UI
|
||||||
|
|
||||||
Use [Radix UI's built-in accessible icon utility component](https://www.radix-ui.com/primitives/docs/utilities/accessible-icon).
|
Use [Radix UI's built-in accessible icon utility component](https://www.radix-ui.com/primitives/docs/utilities/accessible-icon).
|
||||||
@@ -179,6 +180,7 @@ import { AccessibleIcon } from '@radix-ui/react-accessible-icon';
|
|||||||
<ArrowRightIcon />
|
<ArrowRightIcon />
|
||||||
</AccessibleIcon>
|
</AccessibleIcon>
|
||||||
```
|
```
|
||||||
|
|
||||||
### Example - Bootstrap
|
### Example - Bootstrap
|
||||||
|
|
||||||
```html
|
```html
|
||||||
|
|||||||
93
docs/guide/advanced/aliased-names.md
Normal file
@@ -0,0 +1,93 @@
|
|||||||
|
# Aliased Names
|
||||||
|
|
||||||
|
Icons can have multiple names for the same icon. This is because we choose to rename some icons to make them more consistent with the rest of the icon set, or the name was not generic. For example, the `edit-2` icon is renamed to `pen` to make the name more generic, since it is just a pen icon.
|
||||||
|
|
||||||
|
Beside aliases names lucide also includes prefixed and suffixed names to use within your project. This is to prevent import name collisions with other libraries or your own code.
|
||||||
|
|
||||||
|
```tsx
|
||||||
|
// These are all the same icon
|
||||||
|
import {
|
||||||
|
House,
|
||||||
|
HouseIcon,
|
||||||
|
LucideHouse,
|
||||||
|
} from "lucide-react";
|
||||||
|
```
|
||||||
|
|
||||||
|
## Choosing import name style
|
||||||
|
|
||||||
|
To be consistent in your imports or want to change the autocompletion of Lucide icons in your IDE there an option to able the choose the import name style you want.
|
||||||
|
|
||||||
|
This can be done by creating a custom module declaration file to override the lucide imports and turning off the autocomplete in your IDE.
|
||||||
|
|
||||||
|
### Turn off autocomplete in your IDE
|
||||||
|
|
||||||
|
```json [.vscode/settings.json]
|
||||||
|
{
|
||||||
|
"typescript.preferences.autoImportFileExcludePatterns": [
|
||||||
|
"lucide-react", // or
|
||||||
|
"lucide-preact", // or
|
||||||
|
"lucide-react-native", // or
|
||||||
|
"lucide-vue-next",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Create a custom module declaration file
|
||||||
|
|
||||||
|
Only available for `lucide-react`, `lucide-preact`, `lucide-react-native`, `lucide-vue-next` package.
|
||||||
|
This will enable you to choose the import name style you want to use in your project.
|
||||||
|
|
||||||
|
::: code-group
|
||||||
|
|
||||||
|
```ts [React]
|
||||||
|
declare module "lucide-react" {
|
||||||
|
// Prefixed import names
|
||||||
|
export * from "lucide-react/dist/lucide-react.prefixed";
|
||||||
|
// or
|
||||||
|
// Suffixed import names
|
||||||
|
export * from "lucide-react/dist/lucide-react.suffixed";
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
```ts [Vue]
|
||||||
|
declare module "lucide-vue-next" {
|
||||||
|
// Prefixed import names
|
||||||
|
export * from "lucide-vue-next/dist/lucide-vue-next.prefixed";
|
||||||
|
// or
|
||||||
|
// Suffixed import names
|
||||||
|
export * from "lucide-vue-next/dist/lucide-vue-next.suffixed";
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
```ts [Preact]
|
||||||
|
declare module "lucide-preact" {
|
||||||
|
// Prefixed import names
|
||||||
|
export * from "lucide-preact/dist/lucide-preact.prefixed";
|
||||||
|
// or
|
||||||
|
// Suffixed import names
|
||||||
|
export * from "lucide-preact/dist/lucide-preact.suffixed";
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
```ts [React Native]
|
||||||
|
declare module "lucide-react-native" {
|
||||||
|
// Prefixed import names
|
||||||
|
export * from "lucide-react-native/dist/lucide-react-native.prefixed";
|
||||||
|
// or
|
||||||
|
// Suffixed import names
|
||||||
|
export * from "lucide-react-native/dist/lucide-react-native.suffixed";
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
Place this in your project root or in a folder where your tsconfig.json is located, or locate it in your defined type directory.
|
||||||
|
Easiest way is to create a `@types` folder in your project root and name the file `[package-name].d.ts`.
|
||||||
|
|
||||||
|
### Import name styles
|
||||||
|
|
||||||
|
| Import Style | Available imports | Declaration file import |
|
||||||
|
| ------------- | --------------------------- | ----------------------- |
|
||||||
|
| Default | Home, HomeIcon, LucideHome | |
|
||||||
|
| Prefixed | LucideHome | [package].prefixed |
|
||||||
|
| Suffixed | HomeIcon | [package].suffixed |
|
||||||
@@ -52,7 +52,7 @@ Here are rules that should be followed to keep quality and consistency when maki
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
**Tip:** place your icon next to circle or square and blur them both; your icon should not feel much darker than the base shape.
|
**Tip:** place your icon next to the circle or square icon and blur them both; your icon should not feel much darker than the base shape.
|
||||||
|
|
||||||
### 10. Icons should be visually centered by their center of gravity.
|
### 10. Icons should be visually centered by their center of gravity.
|
||||||
|
|
||||||
@@ -76,7 +76,7 @@ Here are rules that should be followed to keep quality and consistency when maki
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
**Tip:** make sure to use arcs or quadratic curves, when using cubic curves control points should have mirrored angles for smooth curves.
|
**Tip:** make sure to use arcs or quadratic curves. When using cubic curves control points should have mirrored angles for smooth curves.
|
||||||
|
|
||||||
### 13. Icons should aim to be pixel perfect so that they will be sharp on low DPI displays.
|
### 13. Icons should aim to be pixel perfect so that they will be sharp on low DPI displays.
|
||||||
|
|
||||||
@@ -142,7 +142,7 @@ For each icon these attributes are applied, corresponding to the above rules.
|
|||||||
### Minify paths
|
### Minify paths
|
||||||
|
|
||||||
The code of paths can sometimes get quite large. To reduce file size we like to minify the code.
|
The code of paths can sometimes get quite large. To reduce file size we like to minify the code.
|
||||||
We recommend to use the [SVGOMG](https://jakearchibald.github.io/svgomg/) to minify paths to 2 points of precision.
|
We recommend to use [Lucide Studio](https://studio.lucide.dev/) to tidy paths to 3 points of precision.
|
||||||
|
|
||||||
### Allowed elements
|
### Allowed elements
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,8 @@ Lucide is an open-source icon library that provides 1000+ vector (svg) files for
|
|||||||
## Available Icons
|
## Available Icons
|
||||||
|
|
||||||
Lucide contains icons with different variants and states, allowing users to choose the most suitable icon for their needs. And if a desired icon isn't available yet, users can open a design request, and the Lucide community contributors will help provide new icons. With more icons to choose from, users have more options to work with in their projects.
|
Lucide contains icons with different variants and states, allowing users to choose the most suitable icon for their needs. And if a desired icon isn't available yet, users can open a design request, and the Lucide community contributors will help provide new icons. With more icons to choose from, users have more options to work with in their projects.
|
||||||
Complete Set of Icons
|
|
||||||
|
### Complete Set of Icons
|
||||||
|
|
||||||
As new applications with specific features arise, Lucide aims to provide a complete set of icons for every project. The community follows a set of design rules when designing new icons. These rules maintain standards for the icons, such as recognizability, consistency in style, and readability at all sizes. While creativity is valued in new icons, recognizable design conventions are important to ensure that the icons are easily identifiable by users.
|
As new applications with specific features arise, Lucide aims to provide a complete set of icons for every project. The community follows a set of design rules when designing new icons. These rules maintain standards for the icons, such as recognizability, consistency in style, and readability at all sizes. While creativity is valued in new icons, recognizable design conventions are important to ensure that the icons are easily identifiable by users.
|
||||||
|
|
||||||
@@ -28,7 +29,8 @@ However, not everyone can understand them easily. Read more about [how to use Lu
|
|||||||
|
|
||||||
## Official Packages
|
## Official Packages
|
||||||
|
|
||||||
Lucide's official packages are designed to work on different platforms, making it easier for users to integrate icons into their projects. The packages are available for various technologies, including [Web (Vanilla)](https://lucide.dev/guide/packages/lucide), [React](https://lucide.dev/guide/packages/lucide-react), [React Native](https://lucide.dev/guide/packages/lucide-react-native), [Vue](https://lucide.dev/guide/packages/lucide-vue), [Vue 3](https://lucide.dev/guide/packages/lucide-vue-next), [Svelte](https://lucide.dev/guide/packages/lucide-svelte), [Preact](https://lucide.dev/guide/packages/lucide-preact), [Solid](https://lucide.dev/guide/packages/lucide-solid), [Angular](https://lucide.dev/guide/packages/lucide-angular), [NodeJS](https://lucide.dev/guide/packages/lucide-static#nodejs) and [Flutter](https://lucide.dev/guide/packages/lucide-flutter).
|
Lucide's official packages are designed to work on different platforms, making it easier for users to integrate icons into their projects. The packages are available for various technologies, including [Web (Vanilla)](https://lucide.dev/guide/packages/lucide), [React](https://lucide.dev/guide/packages/lucide-react), [React Native](https://lucide.dev/guide/packages/lucide-react-native), [Vue](https://lucide.dev/guide/packages/lucide-vue), [Vue 3](https://lucide.dev/guide/packages/lucide-vue-next), [Svelte](https://lucide.dev/guide/packages/lucide-svelte), [Preact](https://lucide.dev/guide/packages/lucide-preact), [Solid](https://lucide.dev/guide/packages/lucide-solid), [Angular](https://lucide.dev/guide/packages/lucide-angular), [Astro](https://lucide.dev/guide/packages/lucide-astro), and [NodeJS](https://lucide.dev/guide/packages/lucide-static#nodejs).
|
||||||
|
|
||||||
## Community
|
## Community
|
||||||
|
|
||||||
If you have any questions about Lucide, feel free to reach out to the community. You can find them on [GitHub](https://github.com/lucide-icons/lucide) and [Discord](https://discord.gg/EH6nSts).
|
If you have any questions about Lucide, feel free to reach out to the community. You can find them on [GitHub](https://github.com/lucide-icons/lucide) and [Discord](https://discord.gg/EH6nSts).
|
||||||
|
|||||||
@@ -22,6 +22,10 @@ yarn add lucide
|
|||||||
npm install lucide
|
npm install lucide
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```sh [bun]
|
||||||
|
bun add lucide
|
||||||
|
```
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
For more details, see the [documentation](packages/lucide.md).
|
For more details, see the [documentation](packages/lucide.md).
|
||||||
@@ -44,6 +48,10 @@ yarn add lucide-react
|
|||||||
npm install lucide-react
|
npm install lucide-react
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```sh [bun]
|
||||||
|
bun add lucide-react
|
||||||
|
```
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
For more details, see the [documentation](packages/lucide-react.md).
|
For more details, see the [documentation](packages/lucide-react.md).
|
||||||
@@ -67,6 +75,10 @@ yarn add lucide-vue-next
|
|||||||
npm install lucide-vue-next
|
npm install lucide-vue-next
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```sh [bun]
|
||||||
|
bun add lucide-vue-next
|
||||||
|
```
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
For more details, see the [documentation](packages/lucide-vue-next.md).
|
For more details, see the [documentation](packages/lucide-vue-next.md).
|
||||||
@@ -90,6 +102,10 @@ yarn add lucide-svelte
|
|||||||
npm install lucide-svelte
|
npm install lucide-svelte
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```sh [bun]
|
||||||
|
bun add lucide-svelte
|
||||||
|
```
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
For more details, see the [documentation](packages/lucide-svelte.md).
|
For more details, see the [documentation](packages/lucide-svelte.md).
|
||||||
@@ -112,6 +128,10 @@ yarn add lucide-solid
|
|||||||
npm install lucide-solid
|
npm install lucide-solid
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```sh [bun]
|
||||||
|
bun add lucide-solid
|
||||||
|
```
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
For more details, see the [documentation](packages/lucide-solid.md).
|
For more details, see the [documentation](packages/lucide-solid.md).
|
||||||
@@ -134,6 +154,10 @@ yarn add lucide-angular
|
|||||||
npm install lucide-angular
|
npm install lucide-angular
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```sh [bun]
|
||||||
|
bun add lucide-angular
|
||||||
|
```
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
For more details, see the [documentation](packages/lucide-angular.md).
|
For more details, see the [documentation](packages/lucide-angular.md).
|
||||||
@@ -156,8 +180,41 @@ yarn add lucide-preact
|
|||||||
npm install lucide-preact
|
npm install lucide-preact
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```sh [bun]
|
||||||
|
bun add lucide-preact
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
|
For more details, see the [documentation](packages/lucide-preact.md).
|
||||||
|
|
||||||
|
## Astro
|
||||||
|
|
||||||
|
Implementation of the lucide icon library for Astro applications.
|
||||||
|
|
||||||
|
::: code-group
|
||||||
|
|
||||||
|
```sh [pnpm]
|
||||||
|
pnpm install @lucide/astro
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh [yarn]
|
||||||
|
yarn add @lucide/astro
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh [npm]
|
||||||
|
npm install @lucide/astro
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh [bun]
|
||||||
|
bun add @lucide/astro
|
||||||
|
```
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
For more details, see the [documentation](packages/lucide-astro.md).
|
||||||
|
|
||||||
## Static usage
|
## Static usage
|
||||||
|
|
||||||
Implementation of the lucide icon library for multiple usages that like to use: SVG files icons, SVG Sprite, Icon Fonts and static SVG strings export in Common JS modules (for NodeJS).
|
Implementation of the lucide icon library for multiple usages that like to use: SVG files icons, SVG Sprite, Icon Fonts and static SVG strings export in Common JS modules (for NodeJS).
|
||||||
@@ -176,6 +233,10 @@ yarn add lucide-static
|
|||||||
npm install lucide-static
|
npm install lucide-static
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```sh [bun]
|
||||||
|
bun add lucide-static
|
||||||
|
```
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
For more details, see the [documentation](packages/lucide-static.md).
|
For more details, see the [documentation](packages/lucide-static.md).
|
||||||
|
|||||||
@@ -18,6 +18,10 @@ yarn add lucide-angular
|
|||||||
npm install lucide-angular
|
npm install lucide-angular
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```sh [bun]
|
||||||
|
bun add lucide-angular
|
||||||
|
```
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
## How to use
|
## How to use
|
||||||
@@ -27,11 +31,11 @@ npm install lucide-angular
|
|||||||
In any Angular module you wish to use Lucide icons in, you have to import `LucideAngularModule`, and pick any icons you wish to use:
|
In any Angular module you wish to use Lucide icons in, you have to import `LucideAngularModule`, and pick any icons you wish to use:
|
||||||
|
|
||||||
```js
|
```js
|
||||||
import { LucideAngularModule, File, Home, Menu, UserCheck } from 'lucide-angular';
|
import { LucideAngularModule, File, House, Menu, UserCheck } from 'lucide-angular';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
LucideAngularModule.pick({File, Home, Menu, UserCheck})
|
LucideAngularModule.pick({File, House, Menu, UserCheck})
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
export class AppModule { }
|
export class AppModule { }
|
||||||
@@ -40,14 +44,17 @@ export class AppModule { }
|
|||||||
or using standalone version:
|
or using standalone version:
|
||||||
|
|
||||||
```js
|
```js
|
||||||
|
import { Component } from '@angular/core';
|
||||||
import { LucideAngularModule, FileIcon } from 'lucide-angular';
|
import { LucideAngularModule, FileIcon } from 'lucide-angular';
|
||||||
|
|
||||||
@NgModule({
|
@Component({
|
||||||
imports: [
|
standalone: true,
|
||||||
LucideAngularModule
|
selector: 'app-root',
|
||||||
]
|
templateUrl: './app.component.html',
|
||||||
|
styleUrl: './app.component.scss',
|
||||||
|
imports: [LucideAngularModule]
|
||||||
})
|
})
|
||||||
export class AppModule {
|
export class AppComponent {
|
||||||
readonly FileIcon = FileIcon;
|
readonly FileIcon = FileIcon;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
@@ -57,7 +64,7 @@ Within your templates you may now use one of the following component tags to ins
|
|||||||
|
|
||||||
```html
|
```html
|
||||||
<lucide-angular name="file" class="my-icon"></lucide-angular>
|
<lucide-angular name="file" class="my-icon"></lucide-angular>
|
||||||
<lucide-icon name="home" class="my-icon"></lucide-icon>
|
<lucide-icon name="house" class="my-icon"></lucide-icon>
|
||||||
<i-lucide name="menu" class="my-icon"></i-lucide>
|
<i-lucide name="menu" class="my-icon"></i-lucide>
|
||||||
<span-lucide name="user-check" class="my-icon"></span-lucide>
|
<span-lucide name="user-check" class="my-icon"></span-lucide>
|
||||||
```
|
```
|
||||||
@@ -81,7 +88,7 @@ You can pass additional props to adjust the icon appearance.
|
|||||||
| `absoluteStrokeWidth` | *boolean* | false |
|
| `absoluteStrokeWidth` | *boolean* | false |
|
||||||
|
|
||||||
```html
|
```html
|
||||||
<i-lucide name="home" [size]="48" color="red" [strokeWidth]="1"></i-lucide>
|
<i-lucide name="house" [size]="48" color="red" [strokeWidth]="1"></i-lucide>
|
||||||
```
|
```
|
||||||
|
|
||||||
### Global configuration
|
### Global configuration
|
||||||
@@ -144,11 +151,11 @@ They can be used in the same way as the official icons.
|
|||||||
|
|
||||||
```js
|
```js
|
||||||
import { LucideAngularModule } from 'lucide-angular';
|
import { LucideAngularModule } from 'lucide-angular';
|
||||||
import { burger } from '@lucide/lab';
|
import { coconut } from '@lucide/lab';
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
imports: [
|
imports: [
|
||||||
LucideAngularModule.pick({ burger })
|
LucideAngularModule.pick({ coconut })
|
||||||
]
|
]
|
||||||
})
|
})
|
||||||
export class AppModule { }
|
export class AppModule { }
|
||||||
|
|||||||
187
docs/guide/packages/lucide-astro.md
Normal file
@@ -0,0 +1,187 @@
|
|||||||
|
# Lucide Astro
|
||||||
|
|
||||||
|
Implementation of the lucide icon library for Astro applications.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
::: code-group
|
||||||
|
|
||||||
|
```sh [pnpm]
|
||||||
|
pnpm add @lucide/astro
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh [yarn]
|
||||||
|
yarn add @lucide/astro
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh [npm]
|
||||||
|
npm install @lucide/astro
|
||||||
|
```
|
||||||
|
|
||||||
|
```sh [bun]
|
||||||
|
bun add @lucide/astro
|
||||||
|
```
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
|
## How to use
|
||||||
|
|
||||||
|
Lucide is built with ES Modules, so it's completely tree-shakable.
|
||||||
|
|
||||||
|
Each icon can be imported as an Astro component, which renders an inline SVG element. This way, only the icons that are imported into your project are included in the final bundle. The rest of the icons are tree-shaken away.
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
Default usage:
|
||||||
|
|
||||||
|
```astro
|
||||||
|
---
|
||||||
|
import { Skull } from '@lucide/astro';
|
||||||
|
---
|
||||||
|
|
||||||
|
<Skull />
|
||||||
|
```
|
||||||
|
|
||||||
|
Additional props can be passed to adjust the icon:
|
||||||
|
|
||||||
|
```astro
|
||||||
|
---
|
||||||
|
import { Camera } from '@lucide/astro';
|
||||||
|
---
|
||||||
|
|
||||||
|
<Camera color="#ff3e98" />
|
||||||
|
```
|
||||||
|
|
||||||
|
For faster builds and load times, you can import icons directly from the `@lucide/astro/icons` directory:
|
||||||
|
|
||||||
|
```astro
|
||||||
|
---
|
||||||
|
import CircleAlert from '@lucide/astro/icons/circle-alert';
|
||||||
|
---
|
||||||
|
|
||||||
|
<CircleAlert color="#ff3e98" />
|
||||||
|
```
|
||||||
|
|
||||||
|
## Props
|
||||||
|
|
||||||
|
| name | type | default |
|
||||||
|
| --------------------- | --------- | ------------ |
|
||||||
|
| `size` | _number_ | 24 |
|
||||||
|
| `color` | _string_ | currentColor |
|
||||||
|
| `stroke-width` | _number_ | 2 |
|
||||||
|
| `absoluteStrokeWidth` | _boolean_ | false |
|
||||||
|
|
||||||
|
### Applying props
|
||||||
|
|
||||||
|
To customize the appearance of an icon, you can pass custom properties as props directly to the component. The component accepts all SVG attributes as props, which allows flexible styling of the SVG elements. See the list of SVG Presentation Attributes on [MDN](https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/Presentation).
|
||||||
|
|
||||||
|
```astro
|
||||||
|
---
|
||||||
|
import { Phone } from '@lucide/astro';
|
||||||
|
---
|
||||||
|
|
||||||
|
<Phone fill="#333" />
|
||||||
|
```
|
||||||
|
|
||||||
|
This results a filled phone icon.
|
||||||
|
|
||||||
|
## Types
|
||||||
|
|
||||||
|
The package includes type definitions for all icons. This is useful if you want to dynamically render icons.
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
```astro
|
||||||
|
---
|
||||||
|
import { House, Library, Cog, type Icon as IconType } from '@lucide/astro';
|
||||||
|
|
||||||
|
type MenuItem = {
|
||||||
|
name: string;
|
||||||
|
href: string;
|
||||||
|
icon: typeof IconType;
|
||||||
|
};
|
||||||
|
|
||||||
|
const menuItems: MenuItem[] = [
|
||||||
|
{
|
||||||
|
name: 'Home',
|
||||||
|
href: '/',
|
||||||
|
icon: House,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Blog',
|
||||||
|
href: '/blog',
|
||||||
|
icon: Library,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Projects',
|
||||||
|
href: '/projects',
|
||||||
|
icon: Cog,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
---
|
||||||
|
|
||||||
|
{
|
||||||
|
menuItems.map((item) => (
|
||||||
|
<a href={item.href}>
|
||||||
|
<item.icon />
|
||||||
|
<span>{item.name}</span>
|
||||||
|
</a>
|
||||||
|
))
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## With Lucide lab or custom icons
|
||||||
|
|
||||||
|
[Lucide lab](https://github.com/lucide-icons/lucide-lab) is a collection of icons that are not part of the Lucide main library.
|
||||||
|
|
||||||
|
They can be used by using the `Icon` component.
|
||||||
|
All props of the regular Lucide icons can be passed to adjust the icon appearance.
|
||||||
|
|
||||||
|
### Using the `Icon` component
|
||||||
|
|
||||||
|
This creates a single icon based on the iconNode passed and renders a Lucide icon component.
|
||||||
|
|
||||||
|
```astro
|
||||||
|
---
|
||||||
|
import { Icon } from '@lucide/astro';
|
||||||
|
import { burger, sausage } from '@lucide/lab';
|
||||||
|
---
|
||||||
|
|
||||||
|
<Icon iconNode={burger} />
|
||||||
|
<Icon iconNode={sausage} color="red"/>
|
||||||
|
```
|
||||||
|
|
||||||
|
## One generic icon component
|
||||||
|
|
||||||
|
It is possible to create one generic icon component to load icons, but it is not recommended.
|
||||||
|
|
||||||
|
::: danger
|
||||||
|
The example below imports all ES Modules, so exercise caution when using it. Importing all icons will significantly increase the build size of the application. This may be passable if you're doing SSG and SSR in server environments. However if you're doing SSR in serverless environments, it could negatively affect your app's performance, as a bigger bundle size will translate to an increase in cold starts.
|
||||||
|
:::
|
||||||
|
|
||||||
|
### Icon Component Example
|
||||||
|
|
||||||
|
```astro
|
||||||
|
---
|
||||||
|
import { icons, type IconProps } from '@lucide/astro';
|
||||||
|
|
||||||
|
interface Props extends IconProps {
|
||||||
|
name: keyof typeof icons;
|
||||||
|
}
|
||||||
|
|
||||||
|
const { name, ...restProps } = Astro.props;
|
||||||
|
const Icon = icons[name];
|
||||||
|
---
|
||||||
|
|
||||||
|
<Icon {...restProps} />
|
||||||
|
```
|
||||||
|
|
||||||
|
### Using the Icon Component
|
||||||
|
|
||||||
|
```astro
|
||||||
|
---
|
||||||
|
import LucideIcon from './LucideIcon.astro';
|
||||||
|
---
|
||||||
|
|
||||||
|
<LucideIcon name="Menu" />
|
||||||
|
```
|
||||||
@@ -22,6 +22,10 @@ yarn add lucide-preact
|
|||||||
npm install lucide-preact
|
npm install lucide-preact
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```sh [bun]
|
||||||
|
bun add lucide-preact
|
||||||
|
```
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
## How to use
|
## How to use
|
||||||
@@ -80,10 +84,10 @@ This creates a single icon based on the iconNode passed and renders a Lucide ico
|
|||||||
|
|
||||||
```jsx
|
```jsx
|
||||||
import { Icon } from 'lucide-preact';
|
import { Icon } from 'lucide-preact';
|
||||||
import { burger } from '@lucide/lab';
|
import { coconut } from '@lucide/lab';
|
||||||
|
|
||||||
const App = () => (
|
const App = () => (
|
||||||
<Icon iconNode={burger} />
|
<Icon iconNode={coconut} />
|
||||||
);
|
);
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -115,7 +119,7 @@ export default Icon;
|
|||||||
import Icon from './Icon';
|
import Icon from './Icon';
|
||||||
|
|
||||||
const App = () => {
|
const App = () => {
|
||||||
return <Icon name="home" />;
|
return <Icon name="house" />;
|
||||||
};
|
};
|
||||||
|
|
||||||
export default App;
|
export default App;
|
||||||
|
|||||||
@@ -20,6 +20,10 @@ yarn add lucide-react-native
|
|||||||
npm install lucide-react-native
|
npm install lucide-react-native
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```sh [bun]
|
||||||
|
bun add lucide-react-native
|
||||||
|
```
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
## How to use
|
## How to use
|
||||||
@@ -74,10 +78,10 @@ This creates a single icon based on the iconNode passed and renders a Lucide ico
|
|||||||
|
|
||||||
```jsx
|
```jsx
|
||||||
import { Icon } from 'lucide-react-native';
|
import { Icon } from 'lucide-react-native';
|
||||||
import { burger } from '@lucide/lab';
|
import { coconut } from '@lucide/lab';
|
||||||
|
|
||||||
const App = () => (
|
const App = () => (
|
||||||
<Icon iconNode={burger} />
|
<Icon iconNode={coconut} />
|
||||||
);
|
);
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -109,7 +113,7 @@ export default Icon;
|
|||||||
import Icon from './Icon';
|
import Icon from './Icon';
|
||||||
|
|
||||||
const App = () => {
|
const App = () => {
|
||||||
return <Icon name="home" />;
|
return <Icon name="house" />;
|
||||||
};
|
};
|
||||||
|
|
||||||
export default App;
|
export default App;
|
||||||
|
|||||||
@@ -18,6 +18,10 @@ yarn add lucide-react
|
|||||||
npm install lucide-react
|
npm install lucide-react
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```sh [bun]
|
||||||
|
bun add lucide-react
|
||||||
|
```
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
## How to use
|
## How to use
|
||||||
@@ -74,115 +78,28 @@ This creates a single icon based on the iconNode passed and renders a Lucide ico
|
|||||||
|
|
||||||
```jsx
|
```jsx
|
||||||
import { Icon } from 'lucide-react';
|
import { Icon } from 'lucide-react';
|
||||||
import { burger } from '@lucide/lab';
|
import { coconut } from '@lucide/lab';
|
||||||
|
|
||||||
const App = () => (
|
const App = () => (
|
||||||
<Icon iconNode={burger} />
|
<Icon iconNode={coconut} />
|
||||||
);
|
);
|
||||||
```
|
```
|
||||||
|
|
||||||
## One generic icon component
|
## Dynamic Icon Component
|
||||||
|
|
||||||
It is possible to create one generic icon component to load icons, but it is not recommended.
|
It is possible to create one generic icon component to load icons, but it is not recommended.
|
||||||
|
Since it is importing all icons during build. This increases build time and the different modules it will create.
|
||||||
|
|
||||||
::: danger
|
`DynamicIcon` is useful for applications that want to show icons dynamically by icon name. For example, when using a content management system with where icon names are stored in a database.
|
||||||
The example below imports all ES Modules, so exercise caution when using it. Importing all icons will significantly increase the build size of the application, negatively affecting its performance. This is especially important to keep in mind when using bundlers like `Webpack`, `Rollup`, or `Vite`.
|
|
||||||
|
|
||||||
This is not the case for the latest NextJS, because it uses server side rendering. The icons will be streamed to the client when needed. For NextJS with Dynamic Imports, see [dynamic imports](#nextjs-example) section for more information.
|
For static use cases, it is recommended to import the icons directly.
|
||||||
:::
|
|
||||||
|
|
||||||
### Icon Component Example
|
The same props can be passed to adjust the icon appearance. The `name` prop is required to load the correct icon.
|
||||||
|
|
||||||
```jsx
|
```jsx
|
||||||
import { icons } from 'lucide-react';
|
import { DynamicIcon } from 'lucide-react/dynamic';
|
||||||
|
|
||||||
const Icon = ({ name, color, size }) => {
|
const App = () => (
|
||||||
const LucideIcon = icons[name];
|
<DynamicIcon name="camera" color="red" size={48} />
|
||||||
|
);
|
||||||
return <LucideIcon color={color} size={size} />;
|
|
||||||
};
|
|
||||||
|
|
||||||
export default Icon;
|
|
||||||
```
|
|
||||||
|
|
||||||
#### Using the Icon Component
|
|
||||||
|
|
||||||
```jsx
|
|
||||||
import Icon from './Icon';
|
|
||||||
|
|
||||||
const App = () => {
|
|
||||||
return <Icon name="Home" />;
|
|
||||||
};
|
|
||||||
|
|
||||||
export default App;
|
|
||||||
```
|
|
||||||
|
|
||||||
#### With Dynamic Imports
|
|
||||||
|
|
||||||
Lucide react exports a dynamic import map `dynamicIconImports`, which is useful for applications that want to show icons dynamically by icon name. For example, when using a content management system with where icon names are stored in a database.
|
|
||||||
|
|
||||||
When using client side rendering, it will fetch the icon component when it's needed. This will reduce the initial bundle size.
|
|
||||||
|
|
||||||
The keys of the dynamic import map are the lucide original icon names (kebab case).
|
|
||||||
|
|
||||||
Example with React suspense:
|
|
||||||
|
|
||||||
```tsx
|
|
||||||
import React, { lazy, Suspense } from 'react';
|
|
||||||
import { LucideProps } from 'lucide-react';
|
|
||||||
import dynamicIconImports from 'lucide-react/dynamicIconImports';
|
|
||||||
|
|
||||||
const fallback = <div style={{ background: '#ddd', width: 24, height: 24 }}/>
|
|
||||||
|
|
||||||
interface IconProps extends Omit<LucideProps, 'ref'> {
|
|
||||||
name: keyof typeof dynamicIconImports;
|
|
||||||
}
|
|
||||||
|
|
||||||
const Icon = ({ name, ...props }: IconProps) => {
|
|
||||||
const LucideIcon = lazy(dynamicIconImports[name]);
|
|
||||||
|
|
||||||
return (
|
|
||||||
<Suspense fallback={fallback}>
|
|
||||||
<LucideIcon {...props} />
|
|
||||||
</Suspense>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
export default Icon
|
|
||||||
```
|
|
||||||
|
|
||||||
##### NextJS Example
|
|
||||||
|
|
||||||
In NextJS, [the dynamic function](https://nextjs.org/docs/pages/building-your-application/optimizing/lazy-loading#nextdynamic) can be used to dynamically load the icon component.
|
|
||||||
|
|
||||||
To make dynamic imports work with NextJS, you need to add `lucide-react` to the [`transpilePackages`](https://nextjs.org/docs/app/api-reference/next-config-js/transpilePackages) option in your `next.config.js` like this:
|
|
||||||
|
|
||||||
```js
|
|
||||||
/** @type {import('next').NextConfig} */
|
|
||||||
const nextConfig = {
|
|
||||||
transpilePackages: ['lucide-react'] // add this
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = nextConfig
|
|
||||||
|
|
||||||
```
|
|
||||||
|
|
||||||
You can then start using it:
|
|
||||||
|
|
||||||
```tsx
|
|
||||||
import dynamic from 'next/dynamic'
|
|
||||||
import { LucideProps } from 'lucide-react';
|
|
||||||
import dynamicIconImports from 'lucide-react/dynamicIconImports';
|
|
||||||
|
|
||||||
interface IconProps extends LucideProps {
|
|
||||||
name: keyof typeof dynamicIconImports;
|
|
||||||
}
|
|
||||||
|
|
||||||
const Icon = ({ name, ...props }: IconProps) => {
|
|
||||||
const LucideIcon = dynamic(dynamicIconImports[name])
|
|
||||||
|
|
||||||
return <LucideIcon {...props} />;
|
|
||||||
};
|
|
||||||
|
|
||||||
export default Icon;
|
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -18,6 +18,10 @@ yarn add lucide-solid
|
|||||||
npm install lucide-solid
|
npm install lucide-solid
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```sh [bun]
|
||||||
|
bun add lucide-solid
|
||||||
|
```
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
## How to use
|
## How to use
|
||||||
@@ -87,7 +91,7 @@ This creates a single icon based on the iconNode passed and renders a Lucide ico
|
|||||||
|
|
||||||
```jsx
|
```jsx
|
||||||
import { Icon } from 'lucide-solid';
|
import { Icon } from 'lucide-solid';
|
||||||
import { burger, sausage } from '@lucide/lab';
|
import { sausage } from '@lucide/lab';
|
||||||
|
|
||||||
const App = () => (
|
const App = () => (
|
||||||
<Icon iconNode={sausage} color="red"/>
|
<Icon iconNode={sausage} color="red"/>
|
||||||
|
|||||||
@@ -33,13 +33,17 @@ yarn add lucide-static
|
|||||||
npm install lucide-static
|
npm install lucide-static
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```sh [bun]
|
||||||
|
bun add lucide-static
|
||||||
|
```
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
### CDN
|
### CDN
|
||||||
|
|
||||||
```html
|
```html
|
||||||
<!-- SVG file for a single icon -->
|
<!-- SVG file for a single icon -->
|
||||||
<img src="https://unpkg.com/lucide-static@latest/icons/home.svg" />
|
<img src="https://unpkg.com/lucide-static@latest/icons/house.svg" />
|
||||||
|
|
||||||
<!-- Icon font -->
|
<!-- Icon font -->
|
||||||
<style>
|
<style>
|
||||||
@@ -62,12 +66,12 @@ To use it in for example html:
|
|||||||
|
|
||||||
```html
|
```html
|
||||||
<!-- SVG file for a single icon -->
|
<!-- SVG file for a single icon -->
|
||||||
<img src="~lucide-static/icons/home.svg" />
|
<img src="~lucide-static/icons/house.svg" />
|
||||||
```
|
```
|
||||||
|
|
||||||
```css
|
```css
|
||||||
.home-icon {
|
.house-icon {
|
||||||
background-image: url(~lucide-static/icons/home.svg);
|
background-image: url(~lucide-static/icons/house.svg);
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -90,7 +94,7 @@ You may need additional loader for this.
|
|||||||
|
|
||||||
```html
|
```html
|
||||||
<!-- Icon Sprite, not recommended for production! -->
|
<!-- Icon Sprite, not recommended for production! -->
|
||||||
<img src="lucide-static/sprite.svg#home" />
|
<img src="lucide-static/sprite.svg#house" />
|
||||||
|
|
||||||
<!-- or -->
|
<!-- or -->
|
||||||
<svg
|
<svg
|
||||||
@@ -132,7 +136,7 @@ and update the SVG as follows
|
|||||||
class="lucide-icon"
|
class="lucide-icon"
|
||||||
>
|
>
|
||||||
<use
|
<use
|
||||||
href="#alert-triangle"
|
href="#triangle-alert"
|
||||||
/>
|
/>
|
||||||
</svg>
|
</svg>
|
||||||
<svg>
|
<svg>
|
||||||
@@ -147,7 +151,7 @@ and update the SVG as follows
|
|||||||
```
|
```
|
||||||
|
|
||||||
```html
|
```html
|
||||||
<div class="icon-home"></div>
|
<div class="icon-house"></div>
|
||||||
```
|
```
|
||||||
|
|
||||||
### Node.js
|
### Node.js
|
||||||
|
|||||||
@@ -7,18 +7,22 @@ Implementation of the lucide icon library for svelte applications.
|
|||||||
::: code-group
|
::: code-group
|
||||||
|
|
||||||
```sh [pnpm]
|
```sh [pnpm]
|
||||||
pnpm install 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]
|
||||||
|
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
|
||||||
|
|
||||||
@@ -32,7 +36,7 @@ Default usage:
|
|||||||
|
|
||||||
```svelte
|
```svelte
|
||||||
<script>
|
<script>
|
||||||
import { Skull } from 'lucide-svelte';
|
import { Skull } from '@lucide/svelte';
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<Skull />
|
<Skull />
|
||||||
@@ -42,20 +46,20 @@ 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 AlertCircle from 'lucide-svelte/icons/alert-circle';
|
import CircleAlert from '@lucide/svelte/icons/circle-alert';
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<AlertCircle color="#ff3e98" />
|
<CircleAlert color="#ff3e98" />
|
||||||
```
|
```
|
||||||
|
|
||||||
## Props
|
## Props
|
||||||
@@ -73,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" />
|
||||||
@@ -87,60 +91,140 @@ The package includes type definitions for all icons. This is useful if you want
|
|||||||
|
|
||||||
### TypeScript Example
|
### TypeScript Example
|
||||||
|
|
||||||
```svelte
|
::: code-group
|
||||||
|
|
||||||
|
```svelte [Svelte 5]
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import Home from 'lucide-svelte/icons/home';
|
import { Home, Library, Cog, type Icon as IconType } from '@lucide/svelte';
|
||||||
import Library from 'lucide-svelte/icons/library';
|
|
||||||
import Cog from 'lucide-svelte/icons/cog';
|
|
||||||
import type { ComponentType } from 'svelte';
|
|
||||||
import type { Icon } from 'lucide-svelte';
|
|
||||||
|
|
||||||
type MenuItem = {
|
type MenuItem = {
|
||||||
name: string;
|
name: string;
|
||||||
href: string;
|
href: string;
|
||||||
icon: ComponentType<Icon>;
|
icon: typeof IconType;
|
||||||
}
|
};
|
||||||
|
|
||||||
const menuItems: MenuItem[] = [
|
const menuItems: MenuItem[] = [
|
||||||
{
|
{
|
||||||
name: 'Home',
|
name: 'Home',
|
||||||
href: '/',
|
href: '/',
|
||||||
icon: Home,
|
icon: Home
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'Blog',
|
name: 'Blog',
|
||||||
href: '/blog',
|
href: '/blog',
|
||||||
icon: Library,
|
icon: Library
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'Projects',
|
name: 'Projects',
|
||||||
href: '/projects',
|
href: '/projects',
|
||||||
icon: Cog,
|
icon: Cog
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
{#each menuItems as item}
|
{#each menuItems as item}
|
||||||
|
{@const Icon = item.icon}
|
||||||
<a href={item.href}>
|
<a href={item.href}>
|
||||||
<svelte:component this={item.icon} />
|
<Icon />
|
||||||
<span>{item.name}</span>
|
<span>{item.name}</span>
|
||||||
</a>
|
</a>
|
||||||
{/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}
|
||||||
|
{@const Icon = item.icon}
|
||||||
|
<a href={item.href}>
|
||||||
|
<Icon />
|
||||||
|
<span>{item.name}</span>
|
||||||
|
</a>
|
||||||
|
{/each}
|
||||||
|
|
||||||
|
```
|
||||||
|
:::
|
||||||
|
|
||||||
### JSDoc Example
|
### JSDoc Example
|
||||||
|
|
||||||
```svelte
|
::: code-group
|
||||||
|
|
||||||
|
```svelte [Svelte 5]
|
||||||
<script>
|
<script>
|
||||||
import Home from 'lucide-svelte/icons/home';
|
import { Home, Library, Cog } from '@lucide/svelte';
|
||||||
import Library from 'lucide-svelte/icons/library';
|
|
||||||
import Cog from 'lucide-svelte/icons/cog';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @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[]} */
|
||||||
@@ -162,8 +246,18 @@ The package includes type definitions for all icons. This is useful if you want
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
</script>
|
</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).
|
||||||
|
|
||||||
## With Lucide lab or custom icons
|
## With Lucide lab or custom icons
|
||||||
@@ -179,11 +273,11 @@ 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 { pear, sausage } from '@lucide/lab';
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<Icon iconNode={burger} />
|
<Icon iconNode={pear} />
|
||||||
<Icon iconNode={sausage} color="red"/>
|
<Icon iconNode={sausage} color="red"/>
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -197,15 +291,30 @@ The example below imports all ES Modules, so exercise caution when using it. Imp
|
|||||||
|
|
||||||
### Icon Component Example
|
### Icon Component Example
|
||||||
|
|
||||||
```svelte
|
::: code-group
|
||||||
|
|
||||||
|
```svelte [Svelte 5]
|
||||||
<script>
|
<script>
|
||||||
import * as icons from 'lucide-svelte';
|
import * as icons from '@lucide/svelte';
|
||||||
|
let { name } = $props();
|
||||||
|
|
||||||
|
const Icon = icons[name];
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<Icon {...props} />
|
||||||
|
```
|
||||||
|
|
||||||
|
```svelte [Svelte 4]
|
||||||
|
<script>
|
||||||
|
import * as icons from '@lucide/svelte';
|
||||||
export let name;
|
export let name;
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<svelte:component this="{icons[name]}" {...$$props} />
|
<svelte:component this={icons[name]} {...$$props} />
|
||||||
```
|
```
|
||||||
|
|
||||||
|
:::
|
||||||
|
|
||||||
#### Using the Icon Component
|
#### Using the Icon Component
|
||||||
|
|
||||||
```svelte
|
```svelte
|
||||||
|
|||||||
@@ -2,12 +2,6 @@
|
|||||||
|
|
||||||
Implementation of the lucide icon library for Vue 3 applications.
|
Implementation of the lucide icon library for Vue 3 applications.
|
||||||
|
|
||||||
## Vue 3 or Vue 2
|
|
||||||
|
|
||||||
::: tip
|
|
||||||
This version of lucide is for Vue 3, For Vue 2 got to [lucide-vue ->](lucide-vue)
|
|
||||||
:::
|
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
::: code-group
|
::: code-group
|
||||||
@@ -24,6 +18,10 @@ yarn add lucide-vue-next
|
|||||||
npm install lucide-vue-next
|
npm install lucide-vue-next
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```sh [bun]
|
||||||
|
bun add lucide-vue-next
|
||||||
|
```
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
## How to use
|
## How to use
|
||||||
@@ -83,11 +81,11 @@ This creates a single icon based on the iconNode passed and renders a Lucide ico
|
|||||||
```vue
|
```vue
|
||||||
<script setup>
|
<script setup>
|
||||||
import { Icon } from 'lucide-vue-next';
|
import { Icon } from 'lucide-vue-next';
|
||||||
import { burger } from '@lucide/lab';
|
import { baseball } from '@lucide/lab';
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<Icon :iconNode="burger" />
|
<Icon :iconNode="baseball" />
|
||||||
</template>
|
</template>
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -2,15 +2,8 @@
|
|||||||
|
|
||||||
Implementation of the lucide icon library for Vue applications.
|
Implementation of the lucide icon library for Vue applications.
|
||||||
|
|
||||||
::: warning
|
::: danger
|
||||||
This package will be deprecated end of 2023. Vue v2 will be EOF at the end of 2023 See [Announcement](https://v2.vuejs.org/lts/). We recommend to migrate to Vue 3.
|
This package is deprecated. Vue 2 is EOF See [Announcement](https://v2.vuejs.org/eol/). Migrate to Vue 3.
|
||||||
The Lucide Vue package will be only maintained for Vue 3 after the deprecation.
|
|
||||||
:::
|
|
||||||
|
|
||||||
## Vue 2 or Vue 3
|
|
||||||
|
|
||||||
::: tip
|
|
||||||
This version of lucide is for Vue 2, For Vue 3 go to [lucide-vue-next ->](lucide-vue-next)
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
@@ -29,6 +22,10 @@ yarn add lucide-vue
|
|||||||
npm install lucide-vue
|
npm install lucide-vue
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```sh [bun]
|
||||||
|
bun add lucide-vue
|
||||||
|
```
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
## How to use
|
## How to use
|
||||||
|
|||||||
@@ -20,6 +20,10 @@ yarn add lucide
|
|||||||
npm install lucide
|
npm install lucide
|
||||||
```
|
```
|
||||||
|
|
||||||
|
```sh [bun]
|
||||||
|
bun add lucide
|
||||||
|
```
|
||||||
|
|
||||||
:::
|
:::
|
||||||
|
|
||||||
### CDN
|
### CDN
|
||||||
@@ -122,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);
|
||||||
```
|
```
|
||||||
@@ -137,11 +153,11 @@ myApp.appendChild(menuIcon);
|
|||||||
They can be used in the same way as the official icons.
|
They can be used in the same way as the official icons.
|
||||||
|
|
||||||
```js
|
```js
|
||||||
import { burger } from '@lucide/lab';
|
import { coconut } from '@lucide/lab';
|
||||||
|
|
||||||
createIcons({
|
createIcons({
|
||||||
icons: {
|
icons: {
|
||||||
burger
|
coconut
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import IconPreview from '~/.vitepress/theme/components/icons/IconPreview.vue'
|
|||||||
import IconPreviewSmall from '~/.vitepress/theme/components/icons/IconPreviewSmall.vue'
|
import IconPreviewSmall from '~/.vitepress/theme/components/icons/IconPreviewSmall.vue'
|
||||||
import IconInfo from '~/.vitepress/theme/components/icons/IconInfo.vue'
|
import IconInfo from '~/.vitepress/theme/components/icons/IconInfo.vue'
|
||||||
import IconContributors from '~/.vitepress/theme/components/icons/IconContributors.vue'
|
import IconContributors from '~/.vitepress/theme/components/icons/IconContributors.vue'
|
||||||
|
import IconShowcase from '~/.vitepress/theme/components/icons/IconShowcase.vue'
|
||||||
import RelatedIcons from '~/.vitepress/theme/components/icons/RelatedIcons.vue'
|
import RelatedIcons from '~/.vitepress/theme/components/icons/RelatedIcons.vue'
|
||||||
import CodeGroup from '~/.vitepress/theme/components/base/CodeGroup.vue'
|
import CodeGroup from '~/.vitepress/theme/components/base/CodeGroup.vue'
|
||||||
import Badge from '~/.vitepress/theme/components/base/Badge.vue'
|
import Badge from '~/.vitepress/theme/components/base/Badge.vue'
|
||||||
@@ -104,6 +105,11 @@ function releaseTagLink(version) {
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<IconShowcase
|
||||||
|
:name="params.name"
|
||||||
|
:iconNode="params.iconNode"
|
||||||
|
/>
|
||||||
|
|
||||||
<RelatedIcons
|
<RelatedIcons
|
||||||
v-if="params.relatedIcons"
|
v-if="params.relatedIcons"
|
||||||
:icons="params.relatedIcons"
|
:icons="params.relatedIcons"
|
||||||
@@ -233,3 +239,12 @@ function releaseTagLink(version) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
section h2.title {
|
||||||
|
text-align: center;
|
||||||
|
font-weight: 500;
|
||||||
|
margin-block-end: 64px;
|
||||||
|
padding-top: 32px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|||||||
|
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 |
@@ -28,7 +28,7 @@
|
|||||||
"@lucide/build-icons": "workspace:*",
|
"@lucide/build-icons": "workspace:*",
|
||||||
"@lucide/helpers": "workspace:*",
|
"@lucide/helpers": "workspace:*",
|
||||||
"@lucide/shared": "workspace:*",
|
"@lucide/shared": "workspace:*",
|
||||||
"@rollup/plugin-replace": "^5.0.2",
|
"@rollup/plugin-replace": "^6.0.1",
|
||||||
"@types/semver": "^7.5.3",
|
"@types/semver": "^7.5.3",
|
||||||
"h3": "^1.8.0",
|
"h3": "^1.8.0",
|
||||||
"nitropack": "2.8.1",
|
"nitropack": "2.8.1",
|
||||||
@@ -39,8 +39,8 @@
|
|||||||
"@floating-ui/vue": "^1.0.3",
|
"@floating-ui/vue": "^1.0.3",
|
||||||
"@headlessui/vue": "^1.7.17",
|
"@headlessui/vue": "^1.7.17",
|
||||||
"@resvg/resvg-wasm": "^2.6.2",
|
"@resvg/resvg-wasm": "^2.6.2",
|
||||||
"@vueuse/components": "^10.7.2",
|
"@vueuse/components": "^12.0.0",
|
||||||
"@vueuse/core": "^10.7.2",
|
"@vueuse/core": "^12.0.0",
|
||||||
"element-to-path": "^1.2.1",
|
"element-to-path": "^1.2.1",
|
||||||
"fuse.js": "^6.5.3",
|
"fuse.js": "^6.5.3",
|
||||||
"jszip": "^3.7.0",
|
"jszip": "^3.7.0",
|
||||||
@@ -57,6 +57,6 @@
|
|||||||
"sitemap": "^7.1.1",
|
"sitemap": "^7.1.1",
|
||||||
"svg-pathdata": "^6.0.3",
|
"svg-pathdata": "^6.0.3",
|
||||||
"svgson": "^5.2.1",
|
"svgson": "^5.2.1",
|
||||||
"vue": "^3.4.13"
|
"vue": "^3.5.13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
11
docs/public/framework-logos/astro-dark.svg
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<svg width="85" height="107" viewBox="0 0 85 107" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M27.5894 91.1365C22.7555 86.7178 21.3444 77.4335 23.3583 70.7072C26.8503 74.948 31.6888 76.2914 36.7005 77.0497C44.4375 78.2199 52.0359 77.7822 59.2232 74.2459C60.0454 73.841 60.8052 73.3027 61.7036 72.7574C62.378 74.714 62.5535 76.6892 62.318 78.6996C61.7452 83.5957 59.3086 87.3778 55.4332 90.2448C53.8835 91.3916 52.2437 92.4167 50.6432 93.4979C45.7262 96.8213 44.3959 100.718 46.2435 106.386C46.2874 106.525 46.3267 106.663 46.426 107C43.9155 105.876 42.0817 104.24 40.6845 102.089C39.2087 99.8193 38.5066 97.3081 38.4696 94.5909C38.4511 93.2686 38.4511 91.9345 38.2733 90.6309C37.8391 87.4527 36.3471 86.0297 33.5364 85.9478C30.6518 85.8636 28.37 87.6469 27.7649 90.4554C27.7187 90.6707 27.6517 90.8837 27.5847 91.1341L27.5894 91.1365Z" fill="white"/>
|
||||||
|
<path d="M27.5894 91.1365C22.7555 86.7178 21.3444 77.4335 23.3583 70.7072C26.8503 74.948 31.6888 76.2914 36.7005 77.0497C44.4375 78.2199 52.0359 77.7822 59.2232 74.2459C60.0454 73.841 60.8052 73.3027 61.7036 72.7574C62.378 74.714 62.5535 76.6892 62.318 78.6996C61.7452 83.5957 59.3086 87.3778 55.4332 90.2448C53.8835 91.3916 52.2437 92.4167 50.6432 93.4979C45.7262 96.8213 44.3959 100.718 46.2435 106.386C46.2874 106.525 46.3267 106.663 46.426 107C43.9155 105.876 42.0817 104.24 40.6845 102.089C39.2087 99.8193 38.5066 97.3081 38.4696 94.5909C38.4511 93.2686 38.4511 91.9345 38.2733 90.6309C37.8391 87.4527 36.3471 86.0297 33.5364 85.9478C30.6518 85.8636 28.37 87.6469 27.7649 90.4554C27.7187 90.6707 27.6517 90.8837 27.5847 91.1341L27.5894 91.1365Z" fill="url(#paint0_linear_1_59)"/>
|
||||||
|
<path d="M0 69.5866C0 69.5866 14.3139 62.6137 28.6678 62.6137L39.4901 29.1204C39.8953 27.5007 41.0783 26.3999 42.4139 26.3999C43.7495 26.3999 44.9325 27.5007 45.3377 29.1204L56.1601 62.6137C73.1601 62.6137 84.8278 69.5866 84.8278 69.5866C84.8278 69.5866 60.5145 3.35233 60.467 3.21944C59.7692 1.2612 58.5911 0 57.0029 0H27.8274C26.2392 0 25.1087 1.2612 24.3634 3.21944C24.3108 3.34983 0 69.5866 0 69.5866Z" fill="white"/>
|
||||||
|
<defs>
|
||||||
|
<linearGradient id="paint0_linear_1_59" x1="22.4702" y1="107" x2="69.1451" y2="84.9468" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#D83333"/>
|
||||||
|
<stop offset="1" stop-color="#F041FF"/>
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 2.2 KiB |
4
docs/public/framework-logos/astro.svg
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
<svg width="85" height="107" viewBox="0 0 85 107" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M27.5893 91.1365C22.7555 86.7178 21.3443 77.4335 23.3583 70.7072C26.8503 74.948 31.6888 76.2914 36.7005 77.0497C44.4374 78.2199 52.0358 77.7822 59.2231 74.2459C60.0453 73.841 60.8052 73.3027 61.7036 72.7574C62.378 74.714 62.5535 76.6892 62.3179 78.6996C61.7452 83.5957 59.3086 87.3778 55.4332 90.2448C53.8835 91.3916 52.2437 92.4167 50.6432 93.4979C45.7262 96.8213 44.3959 100.718 46.2435 106.386C46.2874 106.525 46.3267 106.663 46.426 107C43.9155 105.876 42.0817 104.24 40.6844 102.089C39.2086 99.8193 38.5065 97.3081 38.4696 94.5909C38.4511 93.2686 38.4511 91.9345 38.2733 90.6309C37.8391 87.4527 36.3471 86.0297 33.5364 85.9478C30.6518 85.8636 28.37 87.6469 27.7649 90.4554C27.7187 90.6707 27.6517 90.8837 27.5847 91.1341L27.5893 91.1365Z" fill="#17191E"/>
|
||||||
|
<path d="M0 69.5866C0 69.5866 14.3139 62.6137 28.6678 62.6137L39.4901 29.1204C39.8953 27.5007 41.0783 26.3999 42.4139 26.3999C43.7495 26.3999 44.9325 27.5007 45.3377 29.1204L56.1601 62.6137C73.1601 62.6137 84.8278 69.5866 84.8278 69.5866C84.8278 69.5866 60.5145 3.35233 60.467 3.21944C59.7692 1.2612 58.5911 0 57.0029 0H27.8274C26.2392 0 25.1087 1.2612 24.3634 3.21944C24.3108 3.34983 0 69.5866 0 69.5866Z" fill="#17191E"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1.3 KiB |
BIN
docs/public/framework-logos/lustre.webp
Executable file
|
After Width: | Height: | Size: 2.6 KiB |
6
docs/public/library-logos/reflex-dark.svg
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="81" height="16" viewBox="0 0 81 16" fill="none">
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M29 16H32V10H39V7H32V4H39V1H29V16ZM42 16H52V13H45V1H42V16ZM55 16H65V13H58.0439L58 10H65V7H58V4H65V1H55V16ZM68 7H71V10H68V16H71V10H78V16H81V10H78V7H81V1H78V7H71V1H68V7Z" fill="#1C2024"/>
|
||||||
|
<path d="M16 16V1H26V4H19V7H26V10H19L19.0439 13H26V16H16Z" fill="#1C2024"/>
|
||||||
|
<path d="M10 10V16H13V10H10Z" fill="#1C2024"/>
|
||||||
|
<path d="M0 1V16H3V10H10V7H3V4H10V7H13V1H0Z" fill="#1C2024"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 522 B |
6
docs/public/library-logos/reflex-light.svg
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="81" height="16" viewBox="0 0 81 16" fill="none">
|
||||||
|
<path fill-rule="evenodd" clip-rule="evenodd" d="M29 16H32V10H39V7H32V4H39V1H29V16ZM42 16H52V13H45V1H42V16ZM55 16H65V13H58.0439L58 10H65V7H58V4H65V1H55V16ZM68 7H71V10H68V16H71V10H78V16H81V10H78V7H81V1H78V7H71V1H68V7Z" fill="#FCFCFD"/>
|
||||||
|
<path d="M16 16V1H26V4H19V7H26V10H19L19.0439 13H26V16H16Z" fill="#FCFCFD"/>
|
||||||
|
<path d="M10 10V16H13V10H10Z" fill="#FCFCFD"/>
|
||||||
|
<path d="M0 1V16H3V10H10V7H3V4H10V7H13V1H0Z" fill="#FCFCFD"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 522 B |
25
docs/public/package-logos/dark/lucide-astro.svg
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
<svg width="120" height="22" viewBox="0 0 120 22" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="M74.2 17.17C73.4081 17.1897 72.6251 16.9999 71.93 16.62C71.302 16.2576 70.7943 15.7186 70.47 15.07C70.1179 14.3272 69.9466 13.5117 69.97 12.69C69.97 11.79 70.13 11 70.47 10.32C70.8 9.64858 71.3176 9.08722 71.9601 8.70386C72.6026 8.32051 73.3424 8.1316 74.09 8.16C74.63 8.16 75.14 8.25 75.62 8.42C76.1 8.59 76.52 8.86 76.89 9.22C77.26 9.58 77.55 10.03 77.76 10.59C77.98 11.14 78.08 11.8 78.08 12.57V13.2H70.93V11.8H76.11C76.11 11.4 76.02 11.06 75.86 10.75C75.69 10.45 75.46 10.2 75.16 10.02C74.86 9.84 74.52 9.75 74.12 9.75C73.732 9.74115 73.3498 9.84539 73.02 10.05C72.7 10.25 72.45 10.52 72.27 10.85C72.1 11.18 72.01 11.54 72 11.93V13.13C72 13.65 72.1 14.08 72.28 14.44C72.47 14.8 72.73 15.08 73.06 15.27C73.39 15.47 73.78 15.56 74.23 15.56C74.53 15.56 74.8 15.52 75.04 15.43C75.29 15.35 75.5 15.22 75.67 15.05C75.85 14.89 75.99 14.68 76.07 14.43L78 14.65C77.8833 15.1455 77.6424 15.6032 77.3 15.98C76.97 16.35 76.54 16.65 76 16.85C75.48 17.05 74.88 17.16 74.2 17.16V17.17Z" fill="white"/>
|
||||||
|
<path d="M63.5 17.15C62.8309 17.1645 62.1733 16.9752 61.6143 16.6073C61.0553 16.2394 60.6213 15.7102 60.37 15.09C60.0367 14.3208 59.8763 13.4879 59.9 12.65C59.9 11.68 60.06 10.86 60.38 10.19C60.5513 9.78493 60.8009 9.41767 61.1145 9.10931C61.428 8.80095 61.7994 8.55755 62.2073 8.3931C62.6152 8.22864 63.0516 8.14636 63.4913 8.15098C63.9311 8.15559 64.3656 8.24702 64.77 8.42C65.1 8.59 65.36 8.8 65.55 9.04C65.75 9.28 65.89 9.5 66 9.72H66.08V5.36H68.15V17H66.12V15.62H66C65.9 15.84 65.74 16.06 65.54 16.3C65.2864 16.5868 64.9711 16.8123 64.6177 16.9595C64.2644 17.1068 63.8822 17.1719 63.5 17.15ZM64.07 15.47C64.51 15.47 64.87 15.35 65.19 15.11C65.49 14.88 65.73 14.54 65.89 14.11C66.04 13.7 66.12 13.21 66.12 12.64C66.12 12.07 66.04 11.58 65.88 11.16C65.7484 10.7769 65.5087 10.44 65.19 10.19C64.865 9.95506 64.4708 9.8354 64.07 9.85C63.61 9.85 63.23 9.97 62.92 10.2C62.62 10.44 62.39 10.77 62.23 11.2C62.08 11.61 62 12.1 62 12.64C62 13.18 62.08 13.67 62.23 14.1C62.39 14.52 62.63 14.86 62.93 15.1C63.24 15.34 63.63 15.47 64.07 15.47Z" fill="white"/>
|
||||||
|
<path d="M56.09 17V8.27H58.14V17H56.1H56.09ZM57.12 7.03C56.8 7.03 56.52 6.93 56.28 6.71C56.1684 6.6111 56.0795 6.48938 56.0191 6.35307C55.9587 6.21677 55.9283 6.06907 55.93 5.92C55.93 5.61 56.05 5.35 56.28 5.13C56.52 4.91 56.8 4.8 57.12 4.8C57.45 4.8 57.73 4.91 57.96 5.13C58.2 5.35 58.32 5.61 58.32 5.92C58.32 6.22 58.2 6.49 57.96 6.71C57.73 6.93 57.46 7.03 57.12 7.03Z" fill="white"/>
|
||||||
|
<path d="M50.66 17.17C49.9015 17.2156 49.1466 17.0346 48.4913 16.65C47.836 16.2653 47.3099 15.6945 46.98 15.01C46.6351 14.279 46.464 13.4781 46.48 12.67C46.48 11.78 46.65 11 46.99 10.32C47.33 9.64 47.81 9.12 48.43 8.73C49.102 8.33587 49.8712 8.13837 50.65 8.16C51.35 8.16 51.98 8.29 52.53 8.56C53.0617 8.80313 53.5168 9.18684 53.8464 9.66971C54.1759 10.1526 54.3674 10.7163 54.4 11.3H52.43C52.364 10.895 52.1673 10.5228 51.87 10.24C51.57 9.96 51.17 9.82 50.67 9.82C50.26 9.82 49.89 9.93 49.57 10.16C49.25 10.38 49 10.7 48.83 11.12C48.65 11.55 48.56 12.05 48.56 12.64C48.56 13.24 48.66 13.74 48.83 14.17C49 14.59 49.24 14.92 49.56 15.15C49.88 15.38 50.25 15.49 50.68 15.49C50.98 15.49 51.25 15.44 51.49 15.32C51.73 15.21 51.94 15.04 52.09 14.82C52.26 14.6 52.37 14.33 52.43 14.02H54.4C54.3725 14.6024 54.1878 15.1664 53.8656 15.6524C53.5434 16.1383 53.0957 16.5279 52.57 16.78C51.9746 17.053 51.3248 17.1864 50.67 17.17H50.66Z" fill="white"/>
|
||||||
|
<path d="M42.68 13.33V8.27H44.74V17H42.74V15.45H42.65C42.45 15.94 42.13 16.34 41.68 16.65C41.23 16.95 40.68 17.11 40.03 17.11C39.5054 17.1412 38.9835 17.0151 38.531 16.7479C38.0785 16.4806 37.716 16.0844 37.49 15.61C37.2299 15.0535 37.1033 14.444 37.12 13.83V8.27H39.18V13.51C39.18 14.06 39.33 14.51 39.63 14.83C39.93 15.16 40.33 15.32 40.83 15.32C41.1442 15.3154 41.4523 15.2325 41.7265 15.0789C42.0006 14.9252 42.2321 14.7056 42.4 14.44C42.59 14.14 42.68 13.77 42.68 13.33Z" fill="white"/>
|
||||||
|
<path d="M28.15 17V5.36H30.25V15.23H35.38V17H28.15Z" fill="white"/>
|
||||||
|
<path d="M14 11C14 9.93913 13.5786 8.92172 12.8284 8.17157C12.0783 7.42142 11.0609 7 10 7C8.93913 7 7.92172 7.42142 7.17157 8.17157C6.42143 8.92172 6 9.93913 6 11C6 13.1217 6.84285 15.1566 8.34315 16.6569C9.84344 18.1571 11.8783 19 14 19C16.1217 19 18.1566 18.1571 19.6569 16.6569C21.1571 15.1566 22 13.1217 22 11C22 7.45 20.45 4.25 18 2.06" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
<path d="M10 11C10 12.0609 10.4214 13.0783 11.1716 13.8284C11.9217 14.5786 12.9391 15 14 15C15.0609 15 16.0783 14.5786 16.8284 13.8284C17.5786 13.0783 18 12.0609 18 11C18 8.87827 17.1571 6.84344 15.6569 5.34315C14.1566 3.84285 12.1217 3 10 3C7.87827 3 5.84344 3.84285 4.34315 5.34315C2.84285 6.84344 2 8.87827 2 11C2 14.58 3.57 17.8 6.06 20" stroke="#F56565" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
<path d="M88 13C89.1046 13 90 12.1046 90 11C90 9.89543 89.1046 9 88 9C86.8954 9 86 9.89543 86 11C86 12.1046 86.8954 13 88 13Z" fill="#737374"/>
|
||||||
|
<g clip-path="url(#clip0_2_7)">
|
||||||
|
<path d="M105.193 18.0349C104.283 17.2089 104.018 15.4736 104.397 14.2163C105.054 15.009 105.965 15.2601 106.908 15.4018C108.365 15.6205 109.795 15.5387 111.148 14.8777C111.303 14.8021 111.446 14.7014 111.615 14.5995C111.742 14.9652 111.775 15.3344 111.73 15.7102C111.623 16.6254 111.164 17.3323 110.434 17.8682C110.143 18.0825 109.834 18.2742 109.533 18.4762C108.607 19.0974 108.357 19.8258 108.705 20.8852C108.713 20.9112 108.72 20.937 108.739 21C108.266 20.7899 107.921 20.4841 107.658 20.0821C107.38 19.6578 107.248 19.1884 107.241 18.6805C107.238 18.4334 107.238 18.184 107.204 17.9404C107.123 17.3463 106.842 17.0803 106.313 17.065C105.77 17.0493 105.34 17.3826 105.226 17.9076C105.218 17.9478 105.205 17.9876 105.192 18.0344L105.193 18.0349Z" fill="white"/>
|
||||||
|
<path d="M105.193 18.0349C104.283 17.2089 104.018 15.4736 104.397 14.2163C105.054 15.009 105.965 15.2601 106.908 15.4018C108.365 15.6205 109.795 15.5387 111.148 14.8777C111.303 14.8021 111.446 14.7014 111.615 14.5995C111.742 14.9652 111.775 15.3344 111.73 15.7102C111.623 16.6254 111.164 17.3323 110.434 17.8682C110.143 18.0825 109.834 18.2742 109.533 18.4762C108.607 19.0974 108.357 19.8258 108.705 20.8852C108.713 20.9112 108.72 20.937 108.739 21C108.266 20.7899 107.921 20.4841 107.658 20.0821C107.38 19.6578 107.248 19.1884 107.241 18.6805C107.238 18.4334 107.238 18.184 107.204 17.9404C107.123 17.3463 106.842 17.0803 106.313 17.065C105.77 17.0493 105.34 17.3826 105.226 17.9076C105.218 17.9478 105.205 17.9876 105.192 18.0344L105.193 18.0349Z" fill="url(#paint0_linear_2_7)"/>
|
||||||
|
<path d="M100 14.0068C100 14.0068 102.694 12.7035 105.396 12.7035L107.433 6.44306C107.51 6.14032 107.732 5.93456 107.984 5.93456C108.235 5.93456 108.458 6.14032 108.534 6.44306L110.571 12.7035C113.771 12.7035 115.968 14.0068 115.968 14.0068C115.968 14.0068 111.391 1.6266 111.382 1.60176C111.251 1.23574 111.029 1 110.73 1H105.238C104.939 1 104.726 1.23574 104.586 1.60176C104.576 1.62614 100 14.0068 100 14.0068Z" fill="white"/>
|
||||||
|
</g>
|
||||||
|
<defs>
|
||||||
|
<linearGradient id="paint0_linear_2_7" x1="104.23" y1="21" x2="112.993" y2="16.8303" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop stop-color="#D83333"/>
|
||||||
|
<stop offset="1" stop-color="#F041FF"/>
|
||||||
|
</linearGradient>
|
||||||
|
<clipPath id="clip0_2_7">
|
||||||
|
<rect width="16" height="20" fill="white" transform="translate(100 1)"/>
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 7.2 KiB |
@@ -1,27 +1,30 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 118 22">
|
<svg viewBox="0 0 160 32" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<path fill="#1B1B1F" d="M74.202 17.17c-.875 0-1.63-.181-2.267-.545a3.694 3.694 0 0 1-1.46-1.557c-.341-.674-.512-1.468-.512-2.38 0-.898.17-1.686.512-2.364a3.867 3.867 0 0 1 1.443-1.591c.617-.383 1.342-.574 2.176-.574.538 0 1.045.087 1.523.261.48.17.905.436 1.272.796.371.36.663.818.875 1.375.212.553.319 1.212.319 1.977v.63h-7.154v-1.386h5.182a2.213 2.213 0 0 0-.256-1.05c-.166-.311-.4-.556-.699-.734a1.964 1.964 0 0 0-1.034-.267c-.42 0-.79.103-1.108.307-.318.2-.566.466-.744.796a2.289 2.289 0 0 0-.267 1.073v1.21c0 .508.093.944.278 1.307.186.36.445.637.779.83.333.19.723.284 1.17.284.3 0 .57-.041.813-.125.242-.087.452-.214.63-.38.178-.167.313-.374.404-.62l1.92.216c-.121.508-.352.95-.693 1.33a3.379 3.379 0 0 1-1.295.875c-.527.204-1.13.306-1.807.306Z"/>
|
<rect width="128" height="32" rx="8" fill="#fff"/>
|
||||||
<path fill="#1B1B1F" d="M63.498 17.153c-.685 0-1.299-.176-1.84-.528-.542-.352-.97-.864-1.285-1.534-.314-.67-.471-1.485-.471-2.443 0-.97.159-1.788.477-2.455.322-.67.756-1.176 1.301-1.517a3.344 3.344 0 0 1 1.824-.517c.512 0 .932.087 1.262.261.329.17.59.377.784.62.193.238.342.464.448.676h.086V5.364h2.062V17h-2.023v-1.375h-.125c-.106.212-.259.438-.46.676a2.53 2.53 0 0 1-.795.602c-.33.167-.745.25-1.245.25Zm.574-1.687c.436 0 .807-.117 1.114-.352.307-.239.54-.57.699-.995.159-.424.238-.918.238-1.483 0-.564-.08-1.055-.238-1.471-.156-.417-.387-.74-.693-.972-.303-.23-.676-.346-1.12-.346-.458 0-.84.119-1.147.358-.307.238-.538.568-.694.988-.155.42-.233.902-.233 1.443 0 .546.078 1.033.233 1.46.16.425.392.76.7 1.006.31.243.69.364 1.141.364Z"/>
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 118 22" height="22" width="118" x="4" y="5">
|
||||||
<path fill="#1B1B1F" d="M56.088 17V8.273h2.057V17h-2.057Zm1.034-9.966a1.2 1.2 0 0 1-.84-.324 1.044 1.044 0 0 1-.353-.79c0-.31.117-.573.352-.79.235-.219.515-.329.841-.329.33 0 .61.11.841.33.235.216.352.479.352.79 0 .306-.117.57-.352.79a1.187 1.187 0 0 1-.84.323Z"/>
|
<path fill="#1B1B1F" d="M74.202 17.17c-.875 0-1.63-.181-2.267-.545a3.694 3.694 0 0 1-1.46-1.557c-.341-.674-.512-1.468-.512-2.38 0-.898.17-1.686.512-2.364a3.867 3.867 0 0 1 1.443-1.591c.617-.383 1.342-.574 2.176-.574.538 0 1.045.087 1.523.261.48.17.905.436 1.272.796.371.36.663.818.875 1.375.212.553.319 1.212.319 1.977v.63h-7.154v-1.386h5.182a2.213 2.213 0 0 0-.256-1.05c-.166-.311-.4-.556-.699-.734a1.964 1.964 0 0 0-1.034-.267c-.42 0-.79.103-1.108.307-.318.2-.566.466-.744.796a2.289 2.289 0 0 0-.267 1.073v1.21c0 .508.093.944.278 1.307.186.36.445.637.779.83.333.19.723.284 1.17.284.3 0 .57-.041.813-.125.242-.087.452-.214.63-.38.178-.167.313-.374.404-.62l1.92.216c-.121.508-.352.95-.693 1.33a3.379 3.379 0 0 1-1.295.875c-.527.204-1.13.306-1.807.306Z"/>
|
||||||
<path fill="#1B1B1F" d="M50.66 17.17c-.87 0-1.619-.19-2.244-.573a3.831 3.831 0 0 1-1.437-1.586c-.334-.678-.5-1.458-.5-2.34 0-.887.17-1.67.511-2.347a3.817 3.817 0 0 1 1.443-1.591c.625-.383 1.364-.574 2.216-.574.709 0 1.335.13 1.88.392.55.258.988.623 1.313 1.097.326.47.512 1.019.557 1.647h-1.966c-.08-.42-.269-.77-.568-1.05-.295-.285-.691-.427-1.187-.427-.42 0-.79.114-1.108.341-.319.223-.567.545-.745.966-.174.42-.261.924-.261 1.511 0 .595.087 1.106.261 1.534.175.425.419.752.733.983.319.228.692.341 1.12.341.303 0 .574-.056.812-.17.242-.118.445-.286.608-.506a1.94 1.94 0 0 0 .335-.801H54.4a3.427 3.427 0 0 1-.545 1.642 3.23 3.23 0 0 1-1.284 1.114c-.542.265-1.178.397-1.91.397Z"/>
|
<path fill="#1B1B1F" d="M63.498 17.153c-.685 0-1.299-.176-1.84-.528-.542-.352-.97-.864-1.285-1.534-.314-.67-.471-1.485-.471-2.443 0-.97.159-1.788.477-2.455.322-.67.756-1.176 1.301-1.517a3.344 3.344 0 0 1 1.824-.517c.512 0 .932.087 1.262.261.329.17.59.377.784.62.193.238.342.464.448.676h.086V5.364h2.062V17h-2.023v-1.375h-.125c-.106.212-.259.438-.46.676a2.53 2.53 0 0 1-.795.602c-.33.167-.745.25-1.245.25Zm.574-1.687c.436 0 .807-.117 1.114-.352.307-.239.54-.57.699-.995.159-.424.238-.918.238-1.483 0-.564-.08-1.055-.238-1.471-.156-.417-.387-.74-.693-.972-.303-.23-.676-.346-1.12-.346-.458 0-.84.119-1.147.358-.307.238-.538.568-.694.988-.155.42-.233.902-.233 1.443 0 .546.078 1.033.233 1.46.16.425.392.76.7 1.006.31.243.69.364 1.141.364Z"/>
|
||||||
<path fill="#1B1B1F" d="M42.682 13.33V8.272h2.057V17h-1.995v-1.551h-.09c-.198.489-.521.888-.972 1.199-.447.31-.998.466-1.654.466-.572 0-1.077-.127-1.517-.381a2.645 2.645 0 0 1-1.022-1.12c-.246-.492-.37-1.086-.37-1.784V8.273h2.057v5.238c0 .553.152.993.455 1.319.303.325.7.488 1.193.488.303 0 .596-.074.88-.221.285-.148.518-.368.7-.66.185-.295.278-.664.278-1.107Z"/>
|
<path fill="#1B1B1F" d="M56.088 17V8.273h2.057V17h-2.057Zm1.034-9.966a1.2 1.2 0 0 1-.84-.324 1.044 1.044 0 0 1-.353-.79c0-.31.117-.573.352-.79.235-.219.515-.329.841-.329.33 0 .61.11.841.33.235.216.352.479.352.79 0 .306-.117.57-.352.79a1.187 1.187 0 0 1-.84.323Z"/>
|
||||||
<path fill="#1B1B1F" d="M28.148 17V5.364h2.108v9.869h5.125V17h-7.233Z"/>
|
<path fill="#1B1B1F" d="M50.66 17.17c-.87 0-1.619-.19-2.244-.573a3.831 3.831 0 0 1-1.437-1.586c-.334-.678-.5-1.458-.5-2.34 0-.887.17-1.67.511-2.347a3.817 3.817 0 0 1 1.443-1.591c.625-.383 1.364-.574 2.216-.574.709 0 1.335.13 1.88.392.55.258.988.623 1.313 1.097.326.47.512 1.019.557 1.647h-1.966c-.08-.42-.269-.77-.568-1.05-.295-.285-.691-.427-1.187-.427-.42 0-.79.114-1.108.341-.319.223-.567.545-.745.966-.174.42-.261.924-.261 1.511 0 .595.087 1.106.261 1.534.175.425.419.752.733.983.319.228.692.341 1.12.341.303 0 .574-.056.812-.17.242-.118.445-.286.608-.506a1.94 1.94 0 0 0 .335-.801H54.4a3.427 3.427 0 0 1-.545 1.642 3.23 3.23 0 0 1-1.284 1.114c-.542.265-1.178.397-1.91.397Z"/>
|
||||||
<path stroke="#1B1B1F" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14 11a4 4 0 0 0-8 0 8 8 0 0 0 16 0 11.97 11.97 0 0 0-4-8.944"/>
|
<path fill="#1B1B1F" d="M42.682 13.33V8.272h2.057V17h-1.995v-1.551h-.09c-.198.489-.521.888-.972 1.199-.447.31-.998.466-1.654.466-.572 0-1.077-.127-1.517-.381a2.645 2.645 0 0 1-1.022-1.12c-.246-.492-.37-1.086-.37-1.784V8.273h2.057v5.238c0 .553.152.993.455 1.319.303.325.7.488 1.193.488.303 0 .596-.074.88-.221.285-.148.518-.368.7-.66.185-.295.278-.664.278-1.107Z"/>
|
||||||
<path stroke="#F56565" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 11a4 4 0 0 0 8 0 8 8 0 1 0-16 0c0 3.584 1.571 6.801 4.063 9"/>
|
<path fill="#1B1B1F" d="M28.148 17V5.364h2.108v9.869h5.125V17h-7.233Z"/>
|
||||||
<circle cx="88" cy="11" r="2" fill="#DDD"/>
|
<path stroke="#1B1B1F" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14 11a4 4 0 0 0-8 0 8 8 0 0 0 16 0 11.97 11.97 0 0 0-4-8.944"/>
|
||||||
<path fill="url(#a)" d="m117.917 4.466-.719 11.135L110.322 1l7.595 3.466Zm-4.762 14.399-5.196 2.922-5.196-2.922 1.057-2.526h8.278l1.056 2.526h.001Zm-5.197-12.322 2.723 6.526h-5.445l2.723-6.526h-.001Zm-9.246 9.059L98 4.466 105.596 1l-6.884 14.602Z"/>
|
<path stroke="#F56565" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 11a4 4 0 0 0 8 0 8 8 0 1 0-16 0c0 3.584 1.571 6.801 4.063 9"/>
|
||||||
<path fill="url(#b)" d="m117.917 4.466-.719 11.135L110.322 1l7.595 3.466Zm-4.762 14.399-5.196 2.922-5.196-2.922 1.057-2.526h8.278l1.056 2.526h.001Zm-5.197-12.322 2.723 6.526h-5.445l2.723-6.526h-.001Zm-9.246 9.059L98 4.466 105.596 1l-6.884 14.602Z"/>
|
<circle cx="88" cy="11" r="2" fill="#DDD"/>
|
||||||
<defs>
|
<path fill="url(#a)" d="m117.917 4.466-.719 11.135L110.322 1l7.595 3.466Zm-4.762 14.399-5.196 2.922-5.196-2.922 1.057-2.526h8.278l1.056 2.526h.001Zm-5.197-12.322 2.723 6.526h-5.445l2.723-6.526h-.001Zm-9.246 9.059L98 4.466 105.596 1l-6.884 14.602Z"/>
|
||||||
<linearGradient id="a" x1="102.396" x2="118.171" y1="19.902" y2="12.299" gradientUnits="userSpaceOnUse">
|
<path fill="url(#b)" d="m117.917 4.466-.719 11.135L110.322 1l7.595 3.466Zm-4.762 14.399-5.196 2.922-5.196-2.922 1.057-2.526h8.278l1.056 2.526h.001Zm-5.197-12.322 2.723 6.526h-5.445l2.723-6.526h-.001Zm-9.246 9.059L98 4.466 105.596 1l-6.884 14.602Z"/>
|
||||||
<stop stop-color="#E40035"/>
|
<defs>
|
||||||
<stop offset=".24" stop-color="#F60A48"/>
|
<linearGradient id="a" x1="102.396" x2="118.171" y1="19.902" y2="12.299" gradientUnits="userSpaceOnUse">
|
||||||
<stop offset=".35" stop-color="#F20755"/>
|
<stop stop-color="#E40035"/>
|
||||||
<stop offset=".49" stop-color="#DC087D"/>
|
<stop offset=".24" stop-color="#F60A48"/>
|
||||||
<stop offset=".74" stop-color="#9717E7"/>
|
<stop offset=".35" stop-color="#F20755"/>
|
||||||
<stop offset="1" stop-color="#6C00F5"/>
|
<stop offset=".49" stop-color="#DC087D"/>
|
||||||
</linearGradient>
|
<stop offset=".74" stop-color="#9717E7"/>
|
||||||
<linearGradient id="b" x1="101.679" x2="111.892" y1="3.506" y2="15.322" gradientUnits="userSpaceOnUse">
|
<stop offset="1" stop-color="#6C00F5"/>
|
||||||
<stop stop-color="#FF31D9"/>
|
</linearGradient>
|
||||||
<stop offset="1" stop-color="#FF5BE1" stop-opacity="0"/>
|
<linearGradient id="b" x1="101.679" x2="111.892" y1="3.506" y2="15.322" gradientUnits="userSpaceOnUse">
|
||||||
</linearGradient>
|
<stop stop-color="#FF31D9"/>
|
||||||
</defs>
|
<stop offset="1" stop-color="#FF5BE1" stop-opacity="0"/>
|
||||||
|
</linearGradient>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 4.6 KiB |
26
docs/public/package-logos/lucide-astro.svg
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
<svg width="128" height="32" viewBox="0 0 128 32" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g clip-path="url(#clip0_1_2)">
|
||||||
|
<path d="M120 0H8C3.58172 0 0 3.58172 0 8V24C0 28.4183 3.58172 32 8 32H120C124.418 32 128 28.4183 128 24V8C128 3.58172 124.418 0 120 0Z" fill="white"/>
|
||||||
|
<path d="M78.2 22.17C77.4081 22.1897 76.6251 21.9999 75.93 21.62C75.302 21.2576 74.7943 20.7186 74.47 20.07C74.1179 19.3272 73.9466 18.5117 73.97 17.69C73.97 16.79 74.13 16 74.47 15.32C74.8 14.6486 75.3176 14.0872 75.9601 13.7039C76.6026 13.3205 77.3424 13.1316 78.09 13.16C78.63 13.16 79.14 13.25 79.62 13.42C80.1 13.59 80.52 13.86 80.89 14.22C81.26 14.58 81.55 15.03 81.76 15.59C81.98 16.14 82.08 16.8 82.08 17.57V18.2H74.93V16.8H80.11C80.11 16.4 80.02 16.06 79.86 15.75C79.69 15.45 79.46 15.2 79.16 15.02C78.86 14.84 78.52 14.75 78.12 14.75C77.732 14.7412 77.3498 14.8454 77.02 15.05C76.7 15.25 76.45 15.52 76.27 15.85C76.1 16.18 76.01 16.54 76 16.93V18.13C76 18.65 76.1 19.08 76.28 19.44C76.47 19.8 76.73 20.08 77.06 20.27C77.39 20.47 77.78 20.56 78.23 20.56C78.53 20.56 78.8 20.52 79.04 20.43C79.29 20.35 79.5 20.22 79.67 20.05C79.85 19.89 79.99 19.68 80.07 19.43L82 19.65C81.8833 20.1455 81.6424 20.6032 81.3 20.98C80.97 21.35 80.54 21.65 80 21.85C79.48 22.05 78.88 22.16 78.2 22.16V22.17Z" fill="#1B1B1F"/>
|
||||||
|
<path d="M67.5 22.15C66.8309 22.1645 66.1733 21.9752 65.6143 21.6073C65.0553 21.2394 64.6213 20.7102 64.37 20.09C64.0367 19.3208 63.8763 18.4879 63.9 17.65C63.9 16.68 64.06 15.86 64.38 15.19C64.5513 14.7849 64.8009 14.4177 65.1145 14.1093C65.428 13.8009 65.7994 13.5576 66.2073 13.3931C66.6152 13.2286 67.0516 13.1464 67.4913 13.151C67.9311 13.1556 68.3656 13.247 68.77 13.42C69.1 13.59 69.36 13.8 69.55 14.04C69.75 14.28 69.89 14.5 70 14.72H70.08V10.36H72.15V22H70.12V20.62H70C69.9 20.84 69.74 21.06 69.54 21.3C69.2864 21.5868 68.9711 21.8123 68.6177 21.9595C68.2644 22.1068 67.8822 22.1719 67.5 22.15ZM68.07 20.47C68.51 20.47 68.87 20.35 69.19 20.11C69.49 19.88 69.73 19.54 69.89 19.11C70.04 18.7 70.12 18.21 70.12 17.64C70.12 17.07 70.04 16.58 69.88 16.16C69.7484 15.7769 69.5087 15.44 69.19 15.19C68.865 14.9551 68.4708 14.8354 68.07 14.85C67.61 14.85 67.23 14.97 66.92 15.2C66.62 15.44 66.39 15.77 66.23 16.2C66.08 16.61 66 17.1 66 17.64C66 18.18 66.08 18.67 66.23 19.1C66.39 19.52 66.63 19.86 66.93 20.1C67.24 20.34 67.63 20.47 68.07 20.47Z" fill="#1B1B1F"/>
|
||||||
|
<path d="M60.09 22V13.27H62.14V22H60.1H60.09ZM61.12 12.03C60.8 12.03 60.52 11.93 60.28 11.71C60.1684 11.6111 60.0795 11.4894 60.0191 11.3531C59.9587 11.2168 59.9283 11.0691 59.93 10.92C59.93 10.61 60.05 10.35 60.28 10.13C60.52 9.91 60.8 9.8 61.12 9.8C61.45 9.8 61.73 9.91 61.96 10.13C62.2 10.35 62.32 10.61 62.32 10.92C62.32 11.22 62.2 11.49 61.96 11.71C61.73 11.93 61.46 12.03 61.12 12.03Z" fill="#1B1B1F"/>
|
||||||
|
<path d="M54.66 22.17C53.9015 22.2156 53.1466 22.0346 52.4913 21.65C51.836 21.2653 51.3099 20.6945 50.98 20.01C50.6351 19.279 50.464 18.4781 50.48 17.67C50.48 16.78 50.65 16 50.99 15.32C51.33 14.64 51.81 14.12 52.43 13.73C53.102 13.3359 53.8712 13.1384 54.65 13.16C55.35 13.16 55.98 13.29 56.53 13.56C57.0617 13.8031 57.5168 14.1868 57.8464 14.6697C58.1759 15.1526 58.3674 15.7163 58.4 16.3H56.43C56.364 15.895 56.1673 15.5228 55.87 15.24C55.57 14.96 55.17 14.82 54.67 14.82C54.26 14.82 53.89 14.93 53.57 15.16C53.25 15.38 53 15.7 52.83 16.12C52.65 16.55 52.56 17.05 52.56 17.64C52.56 18.24 52.66 18.74 52.83 19.17C53 19.59 53.24 19.92 53.56 20.15C53.88 20.38 54.25 20.49 54.68 20.49C54.98 20.49 55.25 20.44 55.49 20.32C55.73 20.21 55.94 20.04 56.09 19.82C56.26 19.6 56.37 19.33 56.43 19.02H58.4C58.3725 19.6024 58.1878 20.1664 57.8656 20.6524C57.5434 21.1383 57.0957 21.5279 56.57 21.78C55.9746 22.053 55.3248 22.1864 54.67 22.17H54.66Z" fill="#1B1B1F"/>
|
||||||
|
<path d="M46.68 18.33V13.27H48.74V22H46.74V20.45H46.65C46.45 20.94 46.13 21.34 45.68 21.65C45.23 21.95 44.68 22.11 44.03 22.11C43.5054 22.1412 42.9835 22.0151 42.531 21.7479C42.0785 21.4806 41.716 21.0844 41.49 20.61C41.2299 20.0535 41.1033 19.444 41.12 18.83V13.27H43.18V18.51C43.18 19.06 43.33 19.51 43.63 19.83C43.93 20.16 44.33 20.32 44.83 20.32C45.1442 20.3154 45.4523 20.2325 45.7265 20.0789C46.0006 19.9252 46.2321 19.7056 46.4 19.44C46.59 19.14 46.68 18.77 46.68 18.33Z" fill="#1B1B1F"/>
|
||||||
|
<path d="M32.15 22V10.36H34.25V20.23H39.38V22H32.15Z" fill="#1B1B1F"/>
|
||||||
|
<path d="M18 16C18 14.9391 17.5786 13.9217 16.8284 13.1716C16.0783 12.4214 15.0609 12 14 12C12.9391 12 11.9217 12.4214 11.1716 13.1716C10.4214 13.9217 10 14.9391 10 16C10 18.1217 10.8429 20.1566 12.3431 21.6569C13.8434 23.1571 15.8783 24 18 24C20.1217 24 22.1566 23.1571 23.6569 21.6569C25.1571 20.1566 26 18.1217 26 16C26 12.45 24.45 9.25 22 7.06" stroke="#1B1B1F" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
<path d="M14 16C14 17.0609 14.4214 18.0783 15.1716 18.8284C15.9217 19.5786 16.9391 20 18 20C19.0609 20 20.0783 19.5786 20.8284 18.8284C21.5786 18.0783 22 17.0609 22 16C22 13.8783 21.1571 11.8434 19.6569 10.3431C18.1566 8.84285 16.1217 8 14 8C11.8783 8 9.84344 8.84285 8.34315 10.3431C6.84285 11.8434 6 13.8783 6 16C6 19.58 7.57 22.8 10.06 25" stroke="#F56565" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
<path d="M92 18C93.1046 18 94 17.1046 94 16C94 14.8954 93.1046 14 92 14C90.8954 14 90 14.8954 90 16C90 17.1046 90.8954 18 92 18Z" fill="#DDDDDD"/>
|
||||||
|
<g clip-path="url(#clip1_1_2)">
|
||||||
|
<path d="M108.193 23.0349C107.283 22.2089 107.018 20.4736 107.397 19.2163C108.054 20.009 108.965 20.2601 109.908 20.4018C111.365 20.6205 112.795 20.5387 114.148 19.8777C114.303 19.8021 114.446 19.7014 114.615 19.5995C114.742 19.9652 114.775 20.3344 114.73 20.7102C114.623 21.6254 114.164 22.3323 113.434 22.8682C113.143 23.0825 112.834 23.2742 112.533 23.4762C111.607 24.0974 111.357 24.8258 111.705 25.8852C111.713 25.9112 111.72 25.937 111.739 26C111.266 25.7899 110.921 25.4841 110.658 25.0821C110.38 24.6578 110.248 24.1884 110.241 23.6805C110.238 23.4334 110.238 23.184 110.204 22.9404C110.123 22.3463 109.842 22.0803 109.313 22.065C108.77 22.0493 108.34 22.3826 108.226 22.9076C108.218 22.9478 108.205 22.9876 108.192 23.0344L108.193 23.0349Z" fill="#17191E"/>
|
||||||
|
<path d="M103 19.0068C103 19.0068 105.694 17.7035 108.396 17.7035L110.433 11.4431C110.51 11.1403 110.732 10.9346 110.984 10.9346C111.235 10.9346 111.458 11.1403 111.534 11.4431L113.571 17.7035C116.771 17.7035 118.968 19.0068 118.968 19.0068C118.968 19.0068 114.391 6.6266 114.382 6.60176C114.251 6.23574 114.029 6 113.73 6H108.238C107.939 6 107.726 6.23574 107.586 6.60176C107.576 6.62614 103 19.0068 103 19.0068Z" fill="#17191E"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<defs>
|
||||||
|
<clipPath id="clip0_1_2">
|
||||||
|
<rect width="128" height="32" fill="white"/>
|
||||||
|
</clipPath>
|
||||||
|
<clipPath id="clip1_1_2">
|
||||||
|
<rect width="16" height="20" fill="white" transform="translate(103 6)"/>
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 6.6 KiB |
@@ -1,15 +1,18 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 118 24">
|
<svg viewBox="0 0 160 32" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<path fill="#1B1B1F" d="M74.202 18.17c-.875 0-1.63-.181-2.267-.545a3.694 3.694 0 0 1-1.46-1.557c-.341-.674-.512-1.468-.512-2.38 0-.898.17-1.686.512-2.364a3.867 3.867 0 0 1 1.443-1.591c.617-.383 1.342-.574 2.176-.574.538 0 1.045.087 1.523.261.48.17.905.436 1.272.796.371.36.663.818.875 1.375.212.553.319 1.212.319 1.977v.63h-7.154v-1.386h5.182a2.213 2.213 0 0 0-.256-1.05c-.166-.311-.4-.556-.699-.734a1.964 1.964 0 0 0-1.034-.267c-.42 0-.79.103-1.108.307-.318.2-.566.466-.744.796a2.289 2.289 0 0 0-.267 1.073v1.21c0 .508.093.944.278 1.307.186.36.445.637.779.83.333.19.723.284 1.17.284.3 0 .57-.042.813-.125.242-.087.452-.214.63-.38.178-.167.313-.374.404-.62l1.92.216c-.121.508-.352.95-.693 1.33a3.379 3.379 0 0 1-1.295.875c-.527.204-1.13.306-1.807.306Z"/>
|
<rect width="128" height="32" rx="8" fill="#fff"/>
|
||||||
<path fill="#1B1B1F" d="M63.498 18.153c-.685 0-1.299-.176-1.84-.528-.542-.352-.97-.864-1.285-1.534-.314-.67-.471-1.485-.471-2.443 0-.97.159-1.788.477-2.455.322-.67.756-1.176 1.301-1.517a3.344 3.344 0 0 1 1.824-.517c.512 0 .932.087 1.262.261.329.17.59.377.784.62.193.238.342.464.448.676h.086V6.364h2.062V18h-2.023v-1.375h-.125c-.106.212-.259.438-.46.676a2.53 2.53 0 0 1-.795.602c-.33.167-.745.25-1.245.25Zm.574-1.687c.436 0 .807-.117 1.114-.352.307-.239.54-.57.699-.995.159-.424.238-.918.238-1.483 0-.564-.08-1.055-.238-1.471-.156-.417-.387-.74-.693-.972-.303-.23-.676-.346-1.12-.346-.458 0-.84.119-1.147.358-.307.238-.538.568-.694.988-.155.42-.233.902-.233 1.443 0 .546.078 1.033.233 1.46.16.425.392.76.7 1.006.31.243.69.364 1.141.364Z"/>
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 118 24" height="24" width="118" x="4" y="4">
|
||||||
<path fill="#1B1B1F" d="M56.088 18V9.273h2.057V18h-2.057Zm1.034-9.966a1.2 1.2 0 0 1-.84-.324 1.044 1.044 0 0 1-.353-.79c0-.31.117-.573.352-.79.235-.219.515-.329.841-.329.33 0 .61.11.841.33.235.216.352.479.352.79 0 .306-.117.57-.352.79a1.187 1.187 0 0 1-.84.323Z"/>
|
<path fill="#1B1B1F" d="M74.202 18.17c-.875 0-1.63-.181-2.267-.545a3.694 3.694 0 0 1-1.46-1.557c-.341-.674-.512-1.468-.512-2.38 0-.898.17-1.686.512-2.364a3.867 3.867 0 0 1 1.443-1.591c.617-.383 1.342-.574 2.176-.574.538 0 1.045.087 1.523.261.48.17.905.436 1.272.796.371.36.663.818.875 1.375.212.553.319 1.212.319 1.977v.63h-7.154v-1.386h5.182a2.213 2.213 0 0 0-.256-1.05c-.166-.311-.4-.556-.699-.734a1.964 1.964 0 0 0-1.034-.267c-.42 0-.79.103-1.108.307-.318.2-.566.466-.744.796a2.289 2.289 0 0 0-.267 1.073v1.21c0 .508.093.944.278 1.307.186.36.445.637.779.83.333.19.723.284 1.17.284.3 0 .57-.042.813-.125.242-.087.452-.214.63-.38.178-.167.313-.374.404-.62l1.92.216c-.121.508-.352.95-.693 1.33a3.379 3.379 0 0 1-1.295.875c-.527.204-1.13.306-1.807.306Z"/>
|
||||||
<path fill="#1B1B1F" d="M50.66 18.17c-.87 0-1.619-.19-2.244-.573a3.831 3.831 0 0 1-1.437-1.586c-.334-.678-.5-1.458-.5-2.34 0-.887.17-1.67.511-2.347a3.817 3.817 0 0 1 1.443-1.591c.625-.383 1.364-.574 2.216-.574.709 0 1.335.13 1.88.392.55.258.988.623 1.313 1.097.326.47.512 1.019.557 1.647h-1.966c-.08-.42-.269-.77-.568-1.05-.295-.285-.691-.427-1.187-.427-.42 0-.79.114-1.108.341-.319.223-.567.545-.745.966-.174.42-.261.924-.261 1.511 0 .595.087 1.106.261 1.534.175.425.419.752.733.983.319.228.692.341 1.12.341.303 0 .574-.056.812-.17.242-.118.445-.286.608-.506a1.94 1.94 0 0 0 .335-.801H54.4a3.427 3.427 0 0 1-.545 1.642 3.23 3.23 0 0 1-1.284 1.114c-.542.265-1.178.397-1.91.397Z"/>
|
<path fill="#1B1B1F" d="M63.498 18.153c-.685 0-1.299-.176-1.84-.528-.542-.352-.97-.864-1.285-1.534-.314-.67-.471-1.485-.471-2.443 0-.97.159-1.788.477-2.455.322-.67.756-1.176 1.301-1.517a3.344 3.344 0 0 1 1.824-.517c.512 0 .932.087 1.262.261.329.17.59.377.784.62.193.238.342.464.448.676h.086V6.364h2.062V18h-2.023v-1.375h-.125c-.106.212-.259.438-.46.676a2.53 2.53 0 0 1-.795.602c-.33.167-.745.25-1.245.25Zm.574-1.687c.436 0 .807-.117 1.114-.352.307-.239.54-.57.699-.995.159-.424.238-.918.238-1.483 0-.564-.08-1.055-.238-1.471-.156-.417-.387-.74-.693-.972-.303-.23-.676-.346-1.12-.346-.458 0-.84.119-1.147.358-.307.238-.538.568-.694.988-.155.42-.233.902-.233 1.443 0 .546.078 1.033.233 1.46.16.425.392.76.7 1.006.31.243.69.364 1.141.364Z"/>
|
||||||
<path fill="#1B1B1F" d="M42.682 14.33V9.272h2.057V18h-1.995v-1.551h-.09c-.198.488-.521.888-.972 1.199-.447.31-.998.466-1.654.466-.572 0-1.077-.127-1.517-.381a2.645 2.645 0 0 1-1.022-1.12c-.246-.492-.37-1.086-.37-1.784V9.273h2.057v5.238c0 .553.152.993.455 1.319.303.325.7.488 1.193.488.303 0 .596-.074.88-.221.285-.148.518-.368.7-.66.185-.295.278-.664.278-1.107Z"/>
|
<path fill="#1B1B1F" d="M56.088 18V9.273h2.057V18h-2.057Zm1.034-9.966a1.2 1.2 0 0 1-.84-.324 1.044 1.044 0 0 1-.353-.79c0-.31.117-.573.352-.79.235-.219.515-.329.841-.329.33 0 .61.11.841.33.235.216.352.479.352.79 0 .306-.117.57-.352.79a1.187 1.187 0 0 1-.84.323Z"/>
|
||||||
<path fill="#1B1B1F" d="M28.148 18V6.364h2.108v9.869h5.125V18h-7.233Z"/>
|
<path fill="#1B1B1F" d="M50.66 18.17c-.87 0-1.619-.19-2.244-.573a3.831 3.831 0 0 1-1.437-1.586c-.334-.678-.5-1.458-.5-2.34 0-.887.17-1.67.511-2.347a3.817 3.817 0 0 1 1.443-1.591c.625-.383 1.364-.574 2.216-.574.709 0 1.335.13 1.88.392.55.258.988.623 1.313 1.097.326.47.512 1.019.557 1.647h-1.966c-.08-.42-.269-.77-.568-1.05-.295-.285-.691-.427-1.187-.427-.42 0-.79.114-1.108.341-.319.223-.567.545-.745.966-.174.42-.261.924-.261 1.511 0 .595.087 1.106.261 1.534.175.425.419.752.733.983.319.228.692.341 1.12.341.303 0 .574-.056.812-.17.242-.118.445-.286.608-.506a1.94 1.94 0 0 0 .335-.801H54.4a3.427 3.427 0 0 1-.545 1.642 3.23 3.23 0 0 1-1.284 1.114c-.542.265-1.178.397-1.91.397Z"/>
|
||||||
<path stroke="#1B1B1F" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14 12a4 4 0 0 0-8 0 8 8 0 0 0 16 0 11.97 11.97 0 0 0-4-8.944"/>
|
<path fill="#1B1B1F" d="M42.682 14.33V9.272h2.057V18h-1.995v-1.551h-.09c-.198.488-.521.888-.972 1.199-.447.31-.998.466-1.654.466-.572 0-1.077-.127-1.517-.381a2.645 2.645 0 0 1-1.022-1.12c-.246-.492-.37-1.086-.37-1.784V9.273h2.057v5.238c0 .553.152.993.455 1.319.303.325.7.488 1.193.488.303 0 .596-.074.88-.221.285-.148.518-.368.7-.66.185-.295.278-.664.278-1.107Z"/>
|
||||||
<path stroke="#F56565" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 12a4 4 0 0 0 8 0 8 8 0 1 0-16 0c0 3.584 1.571 6.801 4.063 9"/>
|
<path fill="#1B1B1F" d="M28.148 18V6.364h2.108v9.869h5.125V18h-7.233Z"/>
|
||||||
<circle cx="88" cy="12" r="2" fill="#DDD"/>
|
<path stroke="#1B1B1F" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14 12a4 4 0 0 0-8 0 8 8 0 0 0 16 0 11.97 11.97 0 0 0-4-8.944"/>
|
||||||
<path fill="#673AB8" d="m108 0 10 5.773V17.32l-10 5.774-10-5.774V5.773L108 0Z"/>
|
<path stroke="#F56565" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 12a4 4 0 0 0 8 0 8 8 0 1 0-16 0c0 3.584 1.571 6.801 4.063 9"/>
|
||||||
<path fill="#fff" d="M100.724 17.225c1.329 1.701 5.554.405 9.543-2.711 3.988-3.117 6.269-6.902 4.939-8.604-1.329-1.702-5.554-.405-9.543 2.711-3.988 3.117-6.269 6.902-4.939 8.604Zm.568-.444c-.441-.564-.249-1.672.591-3.067.885-1.468 2.386-3.09 4.224-4.525 1.837-1.435 3.774-2.5 5.412-3.003 1.557-.478 2.678-.397 3.119.168.441.564.248 1.672-.591 3.066-.885 1.469-2.386 3.09-4.224 4.526-1.837 1.435-3.774 2.5-5.412 3.003-1.557.478-2.678.396-3.119-.168Z"/>
|
<circle cx="88" cy="12" r="2" fill="#DDD"/>
|
||||||
<path fill="#fff" d="M115.206 17.225c1.33-1.702-.951-5.487-4.939-8.604-3.989-3.116-8.214-4.413-9.543-2.711-1.33 1.702.951 5.487 4.939 8.604 3.989 3.116 8.214 4.413 9.543 2.71Zm-.568-.444c-.441.565-1.562.646-3.119.168-1.638-.503-3.575-1.568-5.412-3.003-1.838-1.436-3.339-3.057-4.224-4.526-.84-1.394-1.032-2.502-.591-3.066.441-.565 1.562-.646 3.119-.168 1.638.503 3.575 1.568 5.412 3.003 1.838 1.436 3.339 3.057 4.224 4.525.839 1.395 1.032 2.503.591 3.067Z"/>
|
<path fill="#673AB8" d="m108 0 10 5.773V17.32l-10 5.774-10-5.774V5.773L108 0Z"/>
|
||||||
<path fill="#fff" d="M107.965 13.099a1.531 1.531 0 1 0 0-3.062 1.531 1.531 0 0 0 0 3.062Z"/>
|
<path fill="#fff" d="M100.724 17.225c1.329 1.701 5.554.405 9.543-2.711 3.988-3.117 6.269-6.902 4.939-8.604-1.329-1.702-5.554-.405-9.543 2.711-3.988 3.117-6.269 6.902-4.939 8.604Zm.568-.444c-.441-.564-.249-1.672.591-3.067.885-1.468 2.386-3.09 4.224-4.525 1.837-1.435 3.774-2.5 5.412-3.003 1.557-.478 2.678-.397 3.119.168.441.564.248 1.672-.591 3.066-.885 1.469-2.386 3.09-4.224 4.526-1.837 1.435-3.774 2.5-5.412 3.003-1.557.478-2.678.396-3.119-.168Z"/>
|
||||||
|
<path fill="#fff" d="M115.206 17.225c1.33-1.702-.951-5.487-4.939-8.604-3.989-3.116-8.214-4.413-9.543-2.711-1.33 1.702.951 5.487 4.939 8.604 3.989 3.116 8.214 4.413 9.543 2.71Zm-.568-.444c-.441.565-1.562.646-3.119.168-1.638-.503-3.575-1.568-5.412-3.003-1.838-1.436-3.339-3.057-4.224-4.526-.84-1.394-1.032-2.502-.591-3.066.441-.565 1.562-.646 3.119-.168 1.638.503 3.575 1.568 5.412 3.003 1.838 1.436 3.339 3.057 4.224 4.525.839 1.395 1.032 2.503.591 3.067Z"/>
|
||||||
|
<path fill="#fff" d="M107.965 13.099a1.531 1.531 0 1 0 0-3.062 1.531 1.531 0 0 0 0 3.062Z"/>
|
||||||
|
</svg>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.5 KiB |
@@ -1,26 +1,29 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 119 26">
|
<svg viewBox="0 0 160 32" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<g clip-path="url(#a)">
|
<rect width="128" height="32" rx="8" fill="#fff"/>
|
||||||
<path fill="#1B1B1F" d="M74.2 19.17a4.5 4.5 0 0 1-2.27-.55 3.7 3.7 0 0 1-1.46-1.55 5.21 5.21 0 0 1-.5-2.38c0-.9.16-1.69.5-2.37a3.87 3.87 0 0 1 3.62-2.16c.54 0 1.05.09 1.53.26s.9.44 1.27.8c.37.36.66.81.87 1.37.22.55.32 1.21.32 1.98v.63h-7.15V13.8h5.18c0-.4-.09-.74-.25-1.05-.17-.3-.4-.55-.7-.73-.3-.18-.64-.27-1.04-.27a2 2 0 0 0-1.1.3c-.32.2-.57.47-.75.8-.17.33-.26.69-.27 1.08v1.2c0 .52.1.95.28 1.31.19.36.45.64.78.83.33.2.72.29 1.17.29.3 0 .57-.04.81-.13.25-.08.46-.21.63-.38.18-.16.32-.37.4-.62l1.93.22a3 3 0 0 1-.7 1.33c-.33.37-.76.67-1.3.87-.52.2-1.12.31-1.8.31Z"/>
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 119 26" height="26" width="119" x="4" y="3">
|
||||||
<path fill="#1B1B1F" d="M63.5 19.15a3.3 3.3 0 0 1-3.13-2.06 5.73 5.73 0 0 1-.47-2.44c0-.97.16-1.79.48-2.46a3.34 3.34 0 0 1 4.39-1.77c.33.17.59.38.78.62.2.24.34.46.45.68h.08V7.36h2.07V19h-2.03v-1.38H66c-.1.22-.26.44-.46.68a2.53 2.53 0 0 1-2.04.85Zm.57-1.68c.44 0 .8-.12 1.12-.36.3-.23.54-.57.7-1 .15-.41.23-.9.23-1.47s-.08-1.06-.24-1.48a2.1 2.1 0 0 0-.69-.97 1.8 1.8 0 0 0-1.12-.34c-.46 0-.84.12-1.15.35-.3.24-.53.57-.69 1-.15.41-.23.9-.23 1.44 0 .54.08 1.03.23 1.46.16.42.4.76.7 1 .31.24.7.37 1.14.37Z"/>
|
<g clip-path="url(#a)">
|
||||||
<path fill="#1B1B1F" d="M56.09 19v-8.73h2.05V19H56.1Zm1.03-9.97c-.32 0-.6-.1-.84-.32a1.04 1.04 0 0 1-.35-.79c0-.31.12-.57.35-.79.24-.22.52-.33.84-.33.33 0 .61.11.84.33.24.22.36.48.36.79 0 .3-.12.57-.36.79-.23.22-.5.32-.84.32Z"/>
|
<path fill="#1B1B1F" d="M74.2 19.17a4.5 4.5 0 0 1-2.27-.55 3.7 3.7 0 0 1-1.46-1.55 5.21 5.21 0 0 1-.5-2.38c0-.9.16-1.69.5-2.37a3.87 3.87 0 0 1 3.62-2.16c.54 0 1.05.09 1.53.26s.9.44 1.27.8c.37.36.66.81.87 1.37.22.55.32 1.21.32 1.98v.63h-7.15V13.8h5.18c0-.4-.09-.74-.25-1.05-.17-.3-.4-.55-.7-.73-.3-.18-.64-.27-1.04-.27a2 2 0 0 0-1.1.3c-.32.2-.57.47-.75.8-.17.33-.26.69-.27 1.08v1.2c0 .52.1.95.28 1.31.19.36.45.64.78.83.33.2.72.29 1.17.29.3 0 .57-.04.81-.13.25-.08.46-.21.63-.38.18-.16.32-.37.4-.62l1.93.22a3 3 0 0 1-.7 1.33c-.33.37-.76.67-1.3.87-.52.2-1.12.31-1.8.31Z"/>
|
||||||
<path fill="#1B1B1F" d="M50.66 19.17a3.83 3.83 0 0 1-3.68-2.16 5.24 5.24 0 0 1-.5-2.34c0-.89.17-1.67.51-2.35.34-.68.82-1.2 1.44-1.59a4.16 4.16 0 0 1 2.22-.57c.7 0 1.33.13 1.88.4a3.21 3.21 0 0 1 1.87 2.74h-1.97a1.88 1.88 0 0 0-.56-1.06c-.3-.28-.7-.42-1.2-.42-.41 0-.78.11-1.1.34-.32.22-.57.54-.74.96-.18.43-.27.93-.27 1.52 0 .6.1 1.1.27 1.53.17.42.41.75.73.98.32.23.69.34 1.12.34.3 0 .57-.05.81-.17.24-.11.45-.28.6-.5.17-.22.28-.49.34-.8h1.97a3.23 3.23 0 0 1-1.83 2.76 4.3 4.3 0 0 1-1.9.39Z"/>
|
<path fill="#1B1B1F" d="M63.5 19.15a3.3 3.3 0 0 1-3.13-2.06 5.73 5.73 0 0 1-.47-2.44c0-.97.16-1.79.48-2.46a3.34 3.34 0 0 1 4.39-1.77c.33.17.59.38.78.62.2.24.34.46.45.68h.08V7.36h2.07V19h-2.03v-1.38H66c-.1.22-.26.44-.46.68a2.53 2.53 0 0 1-2.04.85Zm.57-1.68c.44 0 .8-.12 1.12-.36.3-.23.54-.57.7-1 .15-.41.23-.9.23-1.47s-.08-1.06-.24-1.48a2.1 2.1 0 0 0-.69-.97 1.8 1.8 0 0 0-1.12-.34c-.46 0-.84.12-1.15.35-.3.24-.53.57-.69 1-.15.41-.23.9-.23 1.44 0 .54.08 1.03.23 1.46.16.42.4.76.7 1 .31.24.7.37 1.14.37Z"/>
|
||||||
<path fill="#1B1B1F" d="M42.68 15.33v-5.06h2.06V19h-2v-1.55h-.09c-.2.49-.52.89-.97 1.2-.45.3-1 .46-1.65.46a2.64 2.64 0 0 1-2.54-1.5 3.95 3.95 0 0 1-.37-1.78v-5.56h2.06v5.24c0 .55.15 1 .45 1.32.3.33.7.49 1.2.49a1.89 1.89 0 0 0 1.57-.88c.19-.3.28-.67.28-1.11Z"/>
|
<path fill="#1B1B1F" d="M56.09 19v-8.73h2.05V19H56.1Zm1.03-9.97c-.32 0-.6-.1-.84-.32a1.04 1.04 0 0 1-.35-.79c0-.31.12-.57.35-.79.24-.22.52-.33.84-.33.33 0 .61.11.84.33.24.22.36.48.36.79 0 .3-.12.57-.36.79-.23.22-.5.32-.84.32Z"/>
|
||||||
<path fill="#1B1B1F" d="M28.15 19V7.36h2.1v9.87h5.13V19h-7.23Z"/>
|
<path fill="#1B1B1F" d="M50.66 19.17a3.83 3.83 0 0 1-3.68-2.16 5.24 5.24 0 0 1-.5-2.34c0-.89.17-1.67.51-2.35.34-.68.82-1.2 1.44-1.59a4.16 4.16 0 0 1 2.22-.57c.7 0 1.33.13 1.88.4a3.21 3.21 0 0 1 1.87 2.74h-1.97a1.88 1.88 0 0 0-.56-1.06c-.3-.28-.7-.42-1.2-.42-.41 0-.78.11-1.1.34-.32.22-.57.54-.74.96-.18.43-.27.93-.27 1.52 0 .6.1 1.1.27 1.53.17.42.41.75.73.98.32.23.69.34 1.12.34.3 0 .57-.05.81-.17.24-.11.45-.28.6-.5.17-.22.28-.49.34-.8h1.97a3.23 3.23 0 0 1-1.83 2.76 4.3 4.3 0 0 1-1.9.39Z"/>
|
||||||
<path stroke="#1B1B1F" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14 13a4 4 0 1 0-8 0 8 8 0 0 0 16 0c0-3.55-1.55-6.75-4-8.94"/>
|
<path fill="#1B1B1F" d="M42.68 15.33v-5.06h2.06V19h-2v-1.55h-.09c-.2.49-.52.89-.97 1.2-.45.3-1 .46-1.65.46a2.64 2.64 0 0 1-2.54-1.5 3.95 3.95 0 0 1-.37-1.78v-5.56h2.06v5.24c0 .55.15 1 .45 1.32.3.33.7.49 1.2.49a1.89 1.89 0 0 0 1.57-.88c.19-.3.28-.67.28-1.11Z"/>
|
||||||
<path stroke="#F56565" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 13a4 4 0 0 0 8 0 8 8 0 1 0-16 0c0 3.58 1.57 6.8 4.06 9"/>
|
<path fill="#1B1B1F" d="M28.15 19V7.36h2.1v9.87h5.13V19h-7.23Z"/>
|
||||||
</g>
|
<path stroke="#1B1B1F" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14 13a4 4 0 1 0-8 0 8 8 0 0 0 16 0c0-3.55-1.55-6.75-4-8.94"/>
|
||||||
<path fill="#54C1DE" d="m112.75 6.34-.63-.2.1-.42c.47-2.3.17-4.14-.89-4.75-1.01-.58-2.67.02-4.34 1.48l-.48.44-.32-.3c-1.75-1.55-3.51-2.2-4.56-1.6-1.02.6-1.31 2.33-.89 4.5l.14.65c-.25.07-.49.15-.71.23-2.06.71-3.37 1.84-3.37 3 0 1.2 1.4 2.4 3.55 3.14l.52.16c-.06.23-.1.46-.15.7-.4 2.13-.09 3.83.92 4.41 1.04.6 2.79-.02 4.5-1.5l.4-.38c.17.17.34.33.52.48 1.65 1.42 3.28 2 4.28 1.41 1.05-.6 1.38-2.42.94-4.64l-.11-.52.36-.11c2.22-.75 3.67-1.94 3.67-3.16 0-1.17-1.35-2.3-3.45-3.02Zm-5.21-3.27c1.43-1.25 2.77-1.73 3.37-1.38.65.37.9 1.88.5 3.86a12 12 0 0 1-.09.39c-.85-.2-1.72-.33-2.59-.41-.5-.72-1.05-1.4-1.64-2.05l.45-.4Zm-5.01 7.29c.36.68.74 1.35 1.16 2-.6-.07-1.2-.17-1.79-.3.18-.57.4-1.14.63-1.7Zm0-1.95c-.23-.55-.44-1.11-.62-1.68.56-.13 1.15-.23 1.76-.3-.41.64-.8 1.3-1.14 1.98Zm.44.97c.51-1.06 1.1-2.09 1.77-3.06 1.17-.1 2.35-.1 3.53 0 .66.97 1.25 2 1.77 3.05a26.12 26.12 0 0 1-1.76 3.07c-1.18.09-2.36.09-3.53.01-.67-.98-1.26-2-1.78-3.07Zm6.95 1.97c.2-.33.39-.68.57-1.02.25.55.46 1.12.65 1.7-.6.14-1.2.24-1.81.31l.6-.99Zm.56-2.94a29.97 29.97 0 0 0-1.15-1.98c.62.08 1.21.18 1.77.3-.18.58-.38 1.13-.62 1.68Zm-3.97-4.33c.4.43.78.9 1.14 1.37-.76-.03-1.53-.03-2.3 0 .37-.47.76-.93 1.16-1.37Zm-4.47-2.37c.65-.37 2.08.16 3.6 1.5l.29.27c-.6.64-1.15 1.33-1.65 2.05-.87.08-1.74.21-2.6.4l-.13-.6c-.36-1.86-.12-3.27.5-3.62Zm-.94 10.16-.48-.15a7.1 7.1 0 0 1-2.27-1.2c-.47-.42-.72-.83-.72-1.16 0-.7 1.05-1.61 2.8-2.22.23-.08.45-.15.68-.2.26.83.57 1.65.94 2.44-.37.8-.69 1.64-.95 2.49Zm4.49 3.77a6.9 6.9 0 0 1-2.17 1.36c-.6.21-1.08.22-1.36.05-.62-.35-.87-1.71-.53-3.54l.15-.64c.86.18 1.73.3 2.61.37.51.72 1.07 1.41 1.67 2.06l-.37.34Zm.94-.93c-.4-.45-.8-.92-1.17-1.4.77.03 1.54.03 2.31 0-.35.48-.73.95-1.14 1.4Zm5.03 1.15c-.11.63-.34 1.04-.63 1.2-.61.36-1.92-.1-3.33-1.31a9.83 9.83 0 0 1-.49-.45c.6-.65 1.13-1.34 1.63-2.07.88-.07 1.76-.2 2.62-.4a6.93 6.93 0 0 1 .2 3.03Zm.7-4.14-.32.1c-.27-.84-.6-1.66-.98-2.45.37-.79.69-1.6.95-2.43l.57.19c1.8.62 2.9 1.53 2.9 2.23 0 .75-1.2 1.73-3.11 2.36Z"/>
|
<path stroke="#F56565" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 13a4 4 0 0 0 8 0 8 8 0 1 0-16 0c0 3.58 1.57 6.8 4.06 9"/>
|
||||||
<path fill="#54C1DE" d="M106.5 11.1a1.73 1.73 0 1 0 0-3.47 1.73 1.73 0 0 0 0 3.47Z"/>
|
</g>
|
||||||
<path fill="#54C1DE" d="M100.25 19.75v4.62h-.71l-2.56-3.13v3.14h-.86v-4.63h.71l2.56 3.13v-3.13h.86Z"/>
|
<path fill="#54C1DE" d="m112.75 6.34-.63-.2.1-.42c.47-2.3.17-4.14-.89-4.75-1.01-.58-2.67.02-4.34 1.48l-.48.44-.32-.3c-1.75-1.55-3.51-2.2-4.56-1.6-1.02.6-1.31 2.33-.89 4.5l.14.65c-.25.07-.49.15-.71.23-2.06.71-3.37 1.84-3.37 3 0 1.2 1.4 2.4 3.55 3.14l.52.16c-.06.23-.1.46-.15.7-.4 2.13-.09 3.83.92 4.41 1.04.6 2.79-.02 4.5-1.5l.4-.38c.17.17.34.33.52.48 1.65 1.42 3.28 2 4.28 1.41 1.05-.6 1.38-2.42.94-4.64l-.11-.52.36-.11c2.22-.75 3.67-1.94 3.67-3.16 0-1.17-1.35-2.3-3.45-3.02Zm-5.21-3.27c1.43-1.25 2.77-1.73 3.37-1.38.65.37.9 1.88.5 3.86a12 12 0 0 1-.09.39c-.85-.2-1.72-.33-2.59-.41-.5-.72-1.05-1.4-1.64-2.05l.45-.4Zm-5.01 7.29c.36.68.74 1.35 1.16 2-.6-.07-1.2-.17-1.79-.3.18-.57.4-1.14.63-1.7Zm0-1.95c-.23-.55-.44-1.11-.62-1.68.56-.13 1.15-.23 1.76-.3-.41.64-.8 1.3-1.14 1.98Zm.44.97c.51-1.06 1.1-2.09 1.77-3.06 1.17-.1 2.35-.1 3.53 0 .66.97 1.25 2 1.77 3.05a26.12 26.12 0 0 1-1.76 3.07c-1.18.09-2.36.09-3.53.01-.67-.98-1.26-2-1.78-3.07Zm6.95 1.97c.2-.33.39-.68.57-1.02.25.55.46 1.12.65 1.7-.6.14-1.2.24-1.81.31l.6-.99Zm.56-2.94a29.97 29.97 0 0 0-1.15-1.98c.62.08 1.21.18 1.77.3-.18.58-.38 1.13-.62 1.68Zm-3.97-4.33c.4.43.78.9 1.14 1.37-.76-.03-1.53-.03-2.3 0 .37-.47.76-.93 1.16-1.37Zm-4.47-2.37c.65-.37 2.08.16 3.6 1.5l.29.27c-.6.64-1.15 1.33-1.65 2.05-.87.08-1.74.21-2.6.4l-.13-.6c-.36-1.86-.12-3.27.5-3.62Zm-.94 10.16-.48-.15a7.1 7.1 0 0 1-2.27-1.2c-.47-.42-.72-.83-.72-1.16 0-.7 1.05-1.61 2.8-2.22.23-.08.45-.15.68-.2.26.83.57 1.65.94 2.44-.37.8-.69 1.64-.95 2.49Zm4.49 3.77a6.9 6.9 0 0 1-2.17 1.36c-.6.21-1.08.22-1.36.05-.62-.35-.87-1.71-.53-3.54l.15-.64c.86.18 1.73.3 2.61.37.51.72 1.07 1.41 1.67 2.06l-.37.34Zm.94-.93c-.4-.45-.8-.92-1.17-1.4.77.03 1.54.03 2.31 0-.35.48-.73.95-1.14 1.4Zm5.03 1.15c-.11.63-.34 1.04-.63 1.2-.61.36-1.92-.1-3.33-1.31a9.83 9.83 0 0 1-.49-.45c.6-.65 1.13-1.34 1.63-2.07.88-.07 1.76-.2 2.62-.4a6.93 6.93 0 0 1 .2 3.03Zm.7-4.14-.32.1c-.27-.84-.6-1.66-.98-2.45.37-.79.69-1.6.95-2.43l.57.19c1.8.62 2.9 1.53 2.9 2.23 0 .75-1.2 1.73-3.11 2.36Z"/>
|
||||||
<path fill="#54C1DE" d="M104.38 22.25v2.08h-.8v-.43c-.2.3-.58.48-1.12.48-.82 0-1.33-.46-1.33-1.07 0-.6.4-1.05 1.48-1.05h.92v-.05c0-.49-.3-.77-.89-.77-.39 0-.77.12-1.08.35l-.33-.6c.45-.3.98-.46 1.52-.44 1.03 0 1.63.48 1.63 1.5Zm-.84.97v-.41h-.87c-.56 0-.72.21-.72.47 0 .3.26.49.7.49a.91.91 0 0 0 .89-.55Z"/>
|
<path fill="#54C1DE" d="M106.5 11.1a1.73 1.73 0 1 0 0-3.47 1.73 1.73 0 0 0 0 3.47Z"/>
|
||||||
<path fill="#54C1DE" d="M107.5 24.15c-.24.16-.52.24-.8.22-.79 0-1.24-.4-1.24-1.2v-1.7h-.58v-.66h.58V20h.84v.81h.95v.66h-.95v1.69c0 .34.17.53.5.53.16 0 .32-.05.45-.14l.25.6Z"/>
|
<path fill="#54C1DE" d="M100.25 19.75v4.62h-.71l-2.56-3.13v3.14h-.86v-4.63h.71l2.56 3.13v-3.13h.86Z"/>
|
||||||
<path fill="#54C1DE" d="M108 19.75a.5.5 0 0 1 .17-.36.53.53 0 0 1 .4-.14c.14 0 .28.04.38.13a.48.48 0 0 1 .17.35c0 .14-.06.26-.17.36a.58.58 0 0 1-.77.01.52.52 0 0 1-.18-.35Zm.12 1.08h.88v3.55h-.88v-3.55Z"/>
|
<path fill="#54C1DE" d="M104.38 22.25v2.08h-.8v-.43c-.2.3-.58.48-1.12.48-.82 0-1.33-.46-1.33-1.07 0-.6.4-1.05 1.48-1.05h.92v-.05c0-.49-.3-.77-.89-.77-.39 0-.77.12-1.08.35l-.33-.6c.45-.3.98-.46 1.52-.44 1.03 0 1.63.48 1.63 1.5Zm-.84.97v-.41h-.87c-.56 0-.72.21-.72.47 0 .3.26.49.7.49a.91.91 0 0 0 .89-.55Z"/>
|
||||||
<path fill="#54C1DE" d="m113.38 20.88-1.52 3.5h-.85l-1.51-3.5h.86l1.1 2.59 1.13-2.6h.78Z"/>
|
<path fill="#54C1DE" d="M107.5 24.15c-.24.16-.52.24-.8.22-.79 0-1.24-.4-1.24-1.2v-1.7h-.58v-.66h.58V20h.84v.81h.95v.66h-.95v1.69c0 .34.17.53.5.53.16 0 .32-.05.45-.14l.25.6Z"/>
|
||||||
<path fill="#54C1DE" d="M117 22.82h-2.69c.1.52.51.85 1.1.85a1.2 1.2 0 0 0 .93-.38l.43.5a1.73 1.73 0 0 1-1.38.58c-1.14 0-1.89-.76-1.89-1.81a1.8 1.8 0 0 1 .5-1.3 1.67 1.67 0 0 1 1.26-.51c1 0 1.73.72 1.73 1.82v.25Zm-2.7-.54h1.95a.97.97 0 0 0-.32-.63.92.92 0 0 0-.65-.23.93.93 0 0 0-.65.23.99.99 0 0 0-.32.63Z"/>
|
<path fill="#54C1DE" d="M108 19.75a.5.5 0 0 1 .17-.36.53.53 0 0 1 .4-.14c.14 0 .28.04.38.13a.48.48 0 0 1 .17.35c0 .14-.06.26-.17.36a.58.58 0 0 1-.77.01.52.52 0 0 1-.18-.35Zm.12 1.08h.88v3.55h-.88v-3.55Z"/>
|
||||||
<circle cx="88" cy="13" r="2" fill="#DDD"/>
|
<path fill="#54C1DE" d="m113.38 20.88-1.52 3.5h-.85l-1.51-3.5h.86l1.1 2.59 1.13-2.6h.78Z"/>
|
||||||
<defs>
|
<path fill="#54C1DE" d="M117 22.82h-2.69c.1.52.51.85 1.1.85a1.2 1.2 0 0 0 .93-.38l.43.5a1.73 1.73 0 0 1-1.38.58c-1.14 0-1.89-.76-1.89-1.81a1.8 1.8 0 0 1 .5-1.3 1.67 1.67 0 0 1 1.26-.51c1 0 1.73.72 1.73 1.82v.25Zm-2.7-.54h1.95a.97.97 0 0 0-.32-.63.92.92 0 0 0-.65-.23.93.93 0 0 0-.65.23.99.99 0 0 0-.32.63Z"/>
|
||||||
<clipPath id="a">
|
<circle cx="88" cy="13" r="2" fill="#DDD"/>
|
||||||
<path fill="#fff" d="M0 2h82v22H0z"/>
|
<defs>
|
||||||
</clipPath>
|
<clipPath id="a">
|
||||||
</defs>
|
<path fill="#fff" d="M0 2h82v22H0z"/>
|
||||||
|
</clipPath>
|
||||||
|
</defs>
|
||||||
|
</svg>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 5.9 KiB After Width: | Height: | Size: 6.1 KiB |
@@ -1,15 +1,18 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 119 22">
|
<svg viewBox="0 0 160 32" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||||
<path fill="#61DAFB" d="M107.5 13.28a2.05 2.05 0 1 0 0-4.1 2.05 2.05 0 0 0 0 4.1Z"/>
|
<rect width="128" height="32" rx="8" fill="#fff"/>
|
||||||
<path stroke="#61DAFB" d="M107.5 15.43c6.08 0 11-1.88 11-4.2 0-2.32-4.92-4.2-11-4.2s-11 1.88-11 4.2c0 2.32 4.92 4.2 11 4.2Z"/>
|
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 119 22" height="22" width="119" x="4" y="5">
|
||||||
<path stroke="#61DAFB" d="M103.86 13.33c3.04 5.26 7.13 8.59 9.14 7.43 2-1.16 1.17-6.37-1.86-11.63C108.1 3.87 104 .55 102 1.71c-2 1.16-1.17 6.36 1.86 11.62Z"/>
|
<path fill="#61DAFB" d="M107.5 13.28a2.05 2.05 0 1 0 0-4.1 2.05 2.05 0 0 0 0 4.1Z"/>
|
||||||
<path stroke="#61DAFB" d="M103.86 9.13C100.83 14.4 100 19.6 102 20.76c2 1.16 6.1-2.17 9.14-7.43C114.17 8.07 115 2.87 113 1.71c-2-1.16-6.1 2.16-9.14 7.42Z"/>
|
<path stroke="#61DAFB" d="M107.5 15.43c6.08 0 11-1.88 11-4.2 0-2.32-4.92-4.2-11-4.2s-11 1.88-11 4.2c0 2.32 4.92 4.2 11 4.2Z"/>
|
||||||
<path fill="#1B1B1F" d="M74.2 17.17a4.5 4.5 0 0 1-2.27-.55 3.7 3.7 0 0 1-1.46-1.55 5.21 5.21 0 0 1-.5-2.38c0-.9.16-1.69.5-2.37a3.87 3.87 0 0 1 3.62-2.16c.54 0 1.05.09 1.53.26s.9.44 1.27.8c.37.36.66.81.87 1.37.22.55.32 1.21.32 1.98v.63h-7.15V11.8h5.18c0-.4-.09-.74-.25-1.05-.17-.3-.4-.55-.7-.73-.3-.18-.64-.27-1.04-.27a2 2 0 0 0-1.1.3c-.32.2-.57.47-.75.8-.17.33-.26.69-.27 1.08v1.2c0 .52.1.95.28 1.31.19.36.45.64.78.83.33.2.72.29 1.17.29.3 0 .57-.04.81-.13.25-.08.46-.21.63-.38.18-.16.32-.37.4-.62l1.93.22a3 3 0 0 1-.7 1.33c-.33.37-.76.67-1.3.87-.52.2-1.12.31-1.8.31Z"/>
|
<path stroke="#61DAFB" d="M103.86 13.33c3.04 5.26 7.13 8.59 9.14 7.43 2-1.16 1.17-6.37-1.86-11.63C108.1 3.87 104 .55 102 1.71c-2 1.16-1.17 6.36 1.86 11.62Z"/>
|
||||||
<path fill="#1B1B1F" d="M63.5 17.15a3.3 3.3 0 0 1-3.13-2.06 5.73 5.73 0 0 1-.47-2.44c0-.97.16-1.79.48-2.46a3.34 3.34 0 0 1 4.39-1.77c.33.17.59.38.78.62.2.24.34.46.45.68h.08V5.36h2.07V17h-2.03v-1.38H66c-.1.22-.26.44-.46.68a2.53 2.53 0 0 1-2.04.85Zm.57-1.68c.44 0 .8-.12 1.12-.36.3-.23.54-.57.7-1 .15-.41.23-.9.23-1.47s-.08-1.06-.24-1.48a2.1 2.1 0 0 0-.69-.97 1.8 1.8 0 0 0-1.12-.34c-.46 0-.84.12-1.15.35-.3.24-.53.57-.69 1-.15.41-.23.9-.23 1.44 0 .54.08 1.03.23 1.46.16.42.4.76.7 1 .31.24.7.37 1.14.37Z"/>
|
<path stroke="#61DAFB" d="M103.86 9.13C100.83 14.4 100 19.6 102 20.76c2 1.16 6.1-2.17 9.14-7.43C114.17 8.07 115 2.87 113 1.71c-2-1.16-6.1 2.16-9.14 7.42Z"/>
|
||||||
<path fill="#1B1B1F" d="M56.09 17V8.27h2.05V17H56.1Zm1.03-9.97c-.32 0-.6-.1-.84-.32a1.04 1.04 0 0 1-.35-.79c0-.31.12-.57.35-.79.24-.22.52-.33.84-.33.33 0 .61.11.84.33.24.22.36.48.36.79 0 .3-.12.57-.36.79-.23.22-.5.32-.84.32Z"/>
|
<path fill="#1B1B1F" d="M74.2 17.17a4.5 4.5 0 0 1-2.27-.55 3.7 3.7 0 0 1-1.46-1.55 5.21 5.21 0 0 1-.5-2.38c0-.9.16-1.69.5-2.37a3.87 3.87 0 0 1 3.62-2.16c.54 0 1.05.09 1.53.26s.9.44 1.27.8c.37.36.66.81.87 1.37.22.55.32 1.21.32 1.98v.63h-7.15V11.8h5.18c0-.4-.09-.74-.25-1.05-.17-.3-.4-.55-.7-.73-.3-.18-.64-.27-1.04-.27a2 2 0 0 0-1.1.3c-.32.2-.57.47-.75.8-.17.33-.26.69-.27 1.08v1.2c0 .52.1.95.28 1.31.19.36.45.64.78.83.33.2.72.29 1.17.29.3 0 .57-.04.81-.13.25-.08.46-.21.63-.38.18-.16.32-.37.4-.62l1.93.22a3 3 0 0 1-.7 1.33c-.33.37-.76.67-1.3.87-.52.2-1.12.31-1.8.31Z"/>
|
||||||
<path fill="#1B1B1F" d="M50.66 17.17a3.83 3.83 0 0 1-3.68-2.16 5.24 5.24 0 0 1-.5-2.34c0-.89.17-1.67.51-2.35.34-.68.82-1.2 1.44-1.59a4.16 4.16 0 0 1 2.22-.57c.7 0 1.33.13 1.88.4a3.21 3.21 0 0 1 1.87 2.74h-1.97a1.88 1.88 0 0 0-.56-1.06c-.3-.28-.7-.42-1.2-.42-.41 0-.78.11-1.1.34-.32.22-.57.54-.74.96-.18.43-.27.93-.27 1.52 0 .6.1 1.1.27 1.53.17.42.41.75.73.98.32.23.69.34 1.12.34.3 0 .57-.05.81-.17.24-.11.45-.28.6-.5.17-.22.28-.49.34-.8h1.97a3.23 3.23 0 0 1-1.83 2.76 4.3 4.3 0 0 1-1.9.39Z"/>
|
<path fill="#1B1B1F" d="M63.5 17.15a3.3 3.3 0 0 1-3.13-2.06 5.73 5.73 0 0 1-.47-2.44c0-.97.16-1.79.48-2.46a3.34 3.34 0 0 1 4.39-1.77c.33.17.59.38.78.62.2.24.34.46.45.68h.08V5.36h2.07V17h-2.03v-1.38H66c-.1.22-.26.44-.46.68a2.53 2.53 0 0 1-2.04.85Zm.57-1.68c.44 0 .8-.12 1.12-.36.3-.23.54-.57.7-1 .15-.41.23-.9.23-1.47s-.08-1.06-.24-1.48a2.1 2.1 0 0 0-.69-.97 1.8 1.8 0 0 0-1.12-.34c-.46 0-.84.12-1.15.35-.3.24-.53.57-.69 1-.15.41-.23.9-.23 1.44 0 .54.08 1.03.23 1.46.16.42.4.76.7 1 .31.24.7.37 1.14.37Z"/>
|
||||||
<path fill="#1B1B1F" d="M42.68 13.33V8.27h2.06V17h-2v-1.55h-.09c-.2.49-.52.89-.97 1.2-.45.3-1 .46-1.65.46a2.64 2.64 0 0 1-2.54-1.5 3.95 3.95 0 0 1-.37-1.78V8.27h2.06v5.24c0 .55.15 1 .45 1.32.3.33.7.49 1.2.49a1.89 1.89 0 0 0 1.57-.88c.19-.3.28-.67.28-1.11Z"/>
|
<path fill="#1B1B1F" d="M56.09 17V8.27h2.05V17H56.1Zm1.03-9.97c-.32 0-.6-.1-.84-.32a1.04 1.04 0 0 1-.35-.79c0-.31.12-.57.35-.79.24-.22.52-.33.84-.33.33 0 .61.11.84.33.24.22.36.48.36.79 0 .3-.12.57-.36.79-.23.22-.5.32-.84.32Z"/>
|
||||||
<path fill="#1B1B1F" d="M28.15 17V5.36h2.1v9.87h5.13V17h-7.23Z"/>
|
<path fill="#1B1B1F" d="M50.66 17.17a3.83 3.83 0 0 1-3.68-2.16 5.24 5.24 0 0 1-.5-2.34c0-.89.17-1.67.51-2.35.34-.68.82-1.2 1.44-1.59a4.16 4.16 0 0 1 2.22-.57c.7 0 1.33.13 1.88.4a3.21 3.21 0 0 1 1.87 2.74h-1.97a1.88 1.88 0 0 0-.56-1.06c-.3-.28-.7-.42-1.2-.42-.41 0-.78.11-1.1.34-.32.22-.57.54-.74.96-.18.43-.27.93-.27 1.52 0 .6.1 1.1.27 1.53.17.42.41.75.73.98.32.23.69.34 1.12.34.3 0 .57-.05.81-.17.24-.11.45-.28.6-.5.17-.22.28-.49.34-.8h1.97a3.23 3.23 0 0 1-1.83 2.76 4.3 4.3 0 0 1-1.9.39Z"/>
|
||||||
<path stroke="#1B1B1F" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14 11a4 4 0 0 0-8 0 8 8 0 0 0 16 0c0-3.55-1.55-6.75-4-8.94"/>
|
<path fill="#1B1B1F" d="M42.68 13.33V8.27h2.06V17h-2v-1.55h-.09c-.2.49-.52.89-.97 1.2-.45.3-1 .46-1.65.46a2.64 2.64 0 0 1-2.54-1.5 3.95 3.95 0 0 1-.37-1.78V8.27h2.06v5.24c0 .55.15 1 .45 1.32.3.33.7.49 1.2.49a1.89 1.89 0 0 0 1.57-.88c.19-.3.28-.67.28-1.11Z"/>
|
||||||
<path stroke="#F56565" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 11a4 4 0 0 0 8 0 8 8 0 1 0-16 0c0 3.58 1.57 6.8 4.06 9"/>
|
<path fill="#1B1B1F" d="M28.15 17V5.36h2.1v9.87h5.13V17h-7.23Z"/>
|
||||||
<circle cx="88" cy="11" r="2" fill="#DDD"/>
|
<path stroke="#1B1B1F" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14 11a4 4 0 0 0-8 0 8 8 0 0 0 16 0c0-3.55-1.55-6.75-4-8.94"/>
|
||||||
|
<path stroke="#F56565" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 11a4 4 0 0 0 8 0 8 8 0 1 0-16 0c0 3.58 1.57 6.8 4.06 9"/>
|
||||||
|
<circle cx="88" cy="11" r="2" fill="#DDD"/>
|
||||||
|
</svg>
|
||||||
</svg>
|
</svg>
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.2 KiB |