Compare commits
77 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3648e02992 | ||
|
|
64504da1cd | ||
|
|
e166ba4e80 | ||
|
|
1123214b13 | ||
|
|
4140ba5612 | ||
|
|
019f38281c | ||
|
|
633595d1c1 | ||
|
|
df58c3ff2f | ||
|
|
e7abba5273 | ||
|
|
2693da38d3 | ||
|
|
ab59a1ec36 | ||
|
|
315c020279 | ||
|
|
494f7953c8 | ||
|
|
a5ea3a5368 | ||
|
|
6486f76c55 | ||
|
|
e32db96f1f | ||
|
|
73f70c885a | ||
|
|
14c7ea8e13 | ||
|
|
9fc7653dc1 | ||
|
|
2b007e7962 | ||
|
|
bb1e470f3a | ||
|
|
4a1e6bbfa5 | ||
|
|
e5ee997566 | ||
|
|
27c0a136cd | ||
|
|
84b3c46b65 | ||
|
|
1a09e7fb39 | ||
|
|
75e9724072 | ||
|
|
fbaccc7d9f | ||
|
|
c24bc4d7ef | ||
|
|
5c8c8f4362 | ||
|
|
ffd2a62941 | ||
|
|
e77959e1a6 | ||
|
|
149ee36e61 | ||
|
|
88bf60b5d7 | ||
|
|
1e5df716a4 | ||
|
|
fc0ea760e5 | ||
|
|
c85275899a | ||
|
|
288edde1ea | ||
|
|
207ff6c487 | ||
|
|
a1a9a4d839 | ||
|
|
c5804ad9a5 | ||
|
|
c72fb4a28b | ||
|
|
da5ad547b5 | ||
|
|
66cfe527b3 | ||
|
|
d1866225ba | ||
|
|
372735999f | ||
|
|
f3a33346dd | ||
|
|
3373acf596 | ||
|
|
73d5bfc318 | ||
|
|
ddbc074aa3 | ||
|
|
8f4d6b1651 | ||
|
|
d8b08f8fda | ||
|
|
fddacb6260 | ||
|
|
3d0c8691c9 | ||
|
|
47998b05aa | ||
|
|
9a9e051343 | ||
|
|
6c6c8448fa | ||
|
|
49445aad3a | ||
|
|
70656eb4f0 | ||
|
|
930f862547 | ||
|
|
931b7f5376 | ||
|
|
81e44bdc40 | ||
|
|
e6e90944b9 | ||
|
|
f6fd369bfe | ||
|
|
bbf183fe48 | ||
|
|
4f5642b872 | ||
|
|
1dce6a141a | ||
|
|
dbfce919fc | ||
|
|
52adb78df8 | ||
|
|
c5cfbed28c | ||
|
|
1e4fd13852 | ||
|
|
0a0fd1cf6c | ||
|
|
487d03fc4d | ||
|
|
950160ad5a | ||
|
|
b6f5898aee | ||
|
|
a9c1dca801 | ||
|
|
c05c7e333f |
@@ -4,3 +4,7 @@ coverage
|
||||
lib
|
||||
tests
|
||||
node_modules
|
||||
.eslintrc.js
|
||||
docs/images
|
||||
docs/guide/basics/examples
|
||||
packages/lucide-react/dynamicIconImports.js
|
||||
|
||||
41
.eslintrc.js
@@ -1,10 +1,13 @@
|
||||
const DEFAULT_ATTRS = require('./scripts/render/default-attrs.json');
|
||||
|
||||
module.exports = {
|
||||
root: true,
|
||||
env: {
|
||||
browser: true,
|
||||
node: true,
|
||||
},
|
||||
extends: ['airbnb-base', 'prettier'],
|
||||
plugins: ['import', 'prettier'],
|
||||
plugins: ['import', 'prettier', '@html-eslint'],
|
||||
rules: {
|
||||
'no-console': 'off',
|
||||
'no-param-reassign': 'off',
|
||||
@@ -15,6 +18,7 @@ module.exports = {
|
||||
{
|
||||
singleQuote: true,
|
||||
trailingComma: 'all',
|
||||
printWidth: 100
|
||||
},
|
||||
],
|
||||
'import/no-extraneous-dependencies': [
|
||||
@@ -37,4 +41,39 @@ module.exports = {
|
||||
ecmaVersion: 'latest',
|
||||
sourceType: 'module',
|
||||
},
|
||||
overrides: [
|
||||
{
|
||||
files: ['./icons/*.svg'],
|
||||
parser: '@html-eslint/parser',
|
||||
rules: {
|
||||
'prettier/prettier': 'off',
|
||||
'@html-eslint/require-doctype': 'off',
|
||||
'@html-eslint/no-duplicate-attrs': 'error',
|
||||
'@html-eslint/no-inline-styles': 'error',
|
||||
'@html-eslint/require-attrs': [
|
||||
'error',
|
||||
...Object.entries(DEFAULT_ATTRS)
|
||||
.map(([attr, value]) => ({ tag: 'svg', attr, value: String(value) }))
|
||||
],
|
||||
'@html-eslint/indent': ['error', 2],
|
||||
"@html-eslint/no-multiple-empty-lines": ["error", { "max": 0 }],
|
||||
'@html-eslint/no-extra-spacing-attrs': [
|
||||
'error',
|
||||
{
|
||||
enforceBeforeSelfClose: true,
|
||||
},
|
||||
],
|
||||
'@html-eslint/require-closing-tags': [
|
||||
'error',
|
||||
{
|
||||
selfClosing: 'always',
|
||||
allowSelfClosingCustom: true,
|
||||
},
|
||||
],
|
||||
'@html-eslint/element-newline': 'error',
|
||||
'@html-eslint/no-trailing-spaces': 'error',
|
||||
'@html-eslint/quotes': 'error',
|
||||
}
|
||||
},
|
||||
],
|
||||
};
|
||||
|
||||
31
.github/workflows/ci.yml
vendored
@@ -16,32 +16,16 @@ jobs:
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3
|
||||
- uses: pnpm/action-setup@v2
|
||||
with:
|
||||
node-version: 16
|
||||
|
||||
- uses: pnpm/action-setup@v2.0.1
|
||||
name: Install pnpm
|
||||
id: pnpm-install
|
||||
version: 8
|
||||
- uses: actions/setup-node@v3.8.1
|
||||
with:
|
||||
version: 7
|
||||
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-
|
||||
node-version: 18
|
||||
cache: 'pnpm'
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install
|
||||
run: pnpm install --frozen-lockfile
|
||||
|
||||
- name: Fetch tags
|
||||
run: git fetch --all --tags
|
||||
@@ -50,9 +34,6 @@ jobs:
|
||||
id: latest-tag
|
||||
run: echo "LATEST_TAG=$(git describe --tags `git rev-list --tags --max-count=1`)" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install
|
||||
|
||||
- name: Check if we can patch
|
||||
run: .github/workflows/version-up.sh --minor
|
||||
|
||||
|
||||
25
.github/workflows/linting.yml
vendored
Normal file
@@ -0,0 +1,25 @@
|
||||
name: Linting
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- icons/**
|
||||
|
||||
jobs:
|
||||
linting:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: pnpm/action-setup@v2
|
||||
with:
|
||||
version: 8
|
||||
- uses: actions/setup-node@v3.8.1
|
||||
with:
|
||||
node-version: 18
|
||||
cache: 'pnpm'
|
||||
|
||||
- name: Install Dependencies
|
||||
run: pnpm install --frozen-lockfile
|
||||
|
||||
- name: Run Linter
|
||||
run: pnpm lint
|
||||
28
.github/workflows/lucide-angular.yml
vendored
@@ -12,32 +12,16 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3
|
||||
- uses: pnpm/action-setup@v2
|
||||
with:
|
||||
node-version: 16
|
||||
|
||||
- uses: pnpm/action-setup@v2.0.1
|
||||
name: Install pnpm
|
||||
id: pnpm-install
|
||||
version: 8
|
||||
- uses: actions/setup-node@v3.8.1
|
||||
with:
|
||||
version: 7
|
||||
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-
|
||||
node-version: 18
|
||||
cache: 'pnpm'
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install
|
||||
run: pnpm install --frozen-lockfile
|
||||
|
||||
- name: Build
|
||||
run: pnpm --filter lucide-angular build
|
||||
|
||||
31
.github/workflows/lucide-font.yml
vendored
@@ -12,39 +12,20 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3.4.1
|
||||
- uses: pnpm/action-setup@v2
|
||||
with:
|
||||
node-version: 16
|
||||
|
||||
- uses: pnpm/action-setup@v2.0.1
|
||||
name: Install pnpm
|
||||
id: pnpm-install
|
||||
version: 8
|
||||
- uses: actions/setup-node@v3.8.1
|
||||
with:
|
||||
version: 7
|
||||
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-
|
||||
node-version: 18
|
||||
cache: 'pnpm'
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install --filter outline-svg
|
||||
run: pnpm install --frozen-lockfile
|
||||
|
||||
- name: Outline svg Icons
|
||||
run: pnpm build:outline-icons
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install --filter build-font
|
||||
|
||||
- name: Create font in ./lucide-font
|
||||
run: pnpm build:font
|
||||
|
||||
|
||||
29
.github/workflows/lucide-preact.yml
vendored
@@ -5,6 +5,7 @@ on:
|
||||
paths:
|
||||
- packages/lucide-preact/**
|
||||
- tools/build-icons/**
|
||||
- tools/rollup-plugins/**
|
||||
- pnpm-lock.yaml
|
||||
|
||||
jobs:
|
||||
@@ -12,32 +13,16 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3
|
||||
- uses: pnpm/action-setup@v2
|
||||
with:
|
||||
node-version: 16
|
||||
|
||||
- uses: pnpm/action-setup@v2.0.1
|
||||
name: Install pnpm
|
||||
id: pnpm-install
|
||||
version: 8
|
||||
- uses: actions/setup-node@v3.8.1
|
||||
with:
|
||||
version: 7
|
||||
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-
|
||||
node-version: 18
|
||||
cache: 'pnpm'
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install
|
||||
run: pnpm install --frozen-lockfile
|
||||
|
||||
- name: Build
|
||||
run: pnpm --filter lucide-preact build
|
||||
|
||||
29
.github/workflows/lucide-react-native.yml
vendored
@@ -5,6 +5,7 @@ on:
|
||||
paths:
|
||||
- packages/lucide-react-native/**
|
||||
- tools/build-icons/**
|
||||
- tools/rollup-plugins/**
|
||||
- pnpm-lock.yaml
|
||||
|
||||
jobs:
|
||||
@@ -12,32 +13,16 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3
|
||||
- uses: pnpm/action-setup@v2
|
||||
with:
|
||||
node-version: 16
|
||||
|
||||
- uses: pnpm/action-setup@v2.0.1
|
||||
name: Install pnpm
|
||||
id: pnpm-install
|
||||
version: 8
|
||||
- uses: actions/setup-node@v3.8.1
|
||||
with:
|
||||
version: 7
|
||||
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-
|
||||
node-version: 18
|
||||
cache: 'pnpm'
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install
|
||||
run: pnpm install --frozen-lockfile
|
||||
|
||||
- name: Build
|
||||
run: pnpm --filter lucide-react-native build
|
||||
|
||||
29
.github/workflows/lucide-react.yml
vendored
@@ -5,6 +5,7 @@ on:
|
||||
paths:
|
||||
- packages/lucide-react/**
|
||||
- tools/build-icons/**
|
||||
- tools/rollup-plugins/**
|
||||
- scripts/generateNextJSAliases.mjs
|
||||
- pnpm-lock.yaml
|
||||
|
||||
@@ -13,32 +14,16 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3
|
||||
- uses: pnpm/action-setup@v2
|
||||
with:
|
||||
node-version: 16
|
||||
|
||||
- uses: pnpm/action-setup@v2.0.1
|
||||
name: Install pnpm
|
||||
id: pnpm-install
|
||||
version: 8
|
||||
- uses: actions/setup-node@v3.8.1
|
||||
with:
|
||||
version: 7
|
||||
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-
|
||||
node-version: 18
|
||||
cache: 'pnpm'
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install
|
||||
run: pnpm install --frozen-lockfile
|
||||
|
||||
- name: Build
|
||||
run: pnpm --filter lucide-react build
|
||||
|
||||
29
.github/workflows/lucide-solid.yml
vendored
@@ -5,6 +5,7 @@ on:
|
||||
paths:
|
||||
- packages/lucide-solid/**
|
||||
- tools/build-icons/**
|
||||
- tools/rollup-plugins/**
|
||||
- pnpm-lock.yaml
|
||||
|
||||
jobs:
|
||||
@@ -12,32 +13,16 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3
|
||||
- uses: pnpm/action-setup@v2
|
||||
with:
|
||||
node-version: 16
|
||||
|
||||
- uses: pnpm/action-setup@v2.0.1
|
||||
name: Install pnpm
|
||||
id: pnpm-install
|
||||
version: 8
|
||||
- uses: actions/setup-node@v3.8.1
|
||||
with:
|
||||
version: 7
|
||||
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-
|
||||
node-version: 18
|
||||
cache: 'pnpm'
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install
|
||||
run: pnpm install --frozen-lockfile
|
||||
|
||||
- name: Build
|
||||
run: pnpm --filter lucide-solid build
|
||||
|
||||
28
.github/workflows/lucide-static.yml
vendored
@@ -12,32 +12,16 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3
|
||||
- uses: pnpm/action-setup@v2
|
||||
with:
|
||||
node-version: 16
|
||||
|
||||
- uses: pnpm/action-setup@v2.0.1
|
||||
name: Install pnpm
|
||||
id: pnpm-install
|
||||
version: 8
|
||||
- uses: actions/setup-node@v3.8.1
|
||||
with:
|
||||
version: 7
|
||||
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-
|
||||
node-version: 18
|
||||
cache: 'pnpm'
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install
|
||||
run: pnpm install --frozen-lockfile
|
||||
|
||||
- name: Build
|
||||
run: pnpm --filter lucide-static build
|
||||
|
||||
29
.github/workflows/lucide-svelte.yml
vendored
@@ -5,6 +5,7 @@ on:
|
||||
paths:
|
||||
- packages/lucide-svelte/**
|
||||
- tools/build-icons/**
|
||||
- tools/rollup-plugins/**
|
||||
- pnpm-lock.yaml
|
||||
|
||||
jobs:
|
||||
@@ -12,32 +13,16 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3
|
||||
- uses: pnpm/action-setup@v2
|
||||
with:
|
||||
node-version: 16
|
||||
|
||||
- uses: pnpm/action-setup@v2.0.1
|
||||
name: Install pnpm
|
||||
id: pnpm-install
|
||||
version: 8
|
||||
- uses: actions/setup-node@v3.8.1
|
||||
with:
|
||||
version: 7
|
||||
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-
|
||||
node-version: 18
|
||||
cache: 'pnpm'
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install
|
||||
run: pnpm install --frozen-lockfile
|
||||
|
||||
- name: Build
|
||||
run: pnpm --filter lucide-svelte build
|
||||
|
||||
29
.github/workflows/lucide-vue-next.yml
vendored
@@ -5,6 +5,7 @@ on:
|
||||
paths:
|
||||
- packages/lucide-vue-next/**
|
||||
- tools/build-icons/**
|
||||
- tools/rollup-plugins/**
|
||||
- pnpm-lock.yaml
|
||||
|
||||
jobs:
|
||||
@@ -12,32 +13,16 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3
|
||||
- uses: pnpm/action-setup@v2
|
||||
with:
|
||||
node-version: 16
|
||||
|
||||
- uses: pnpm/action-setup@v2.0.1
|
||||
name: Install pnpm
|
||||
id: pnpm-install
|
||||
version: 8
|
||||
- uses: actions/setup-node@v3.8.1
|
||||
with:
|
||||
version: 7
|
||||
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-
|
||||
node-version: 18
|
||||
cache: 'pnpm'
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install
|
||||
run: pnpm install --frozen-lockfile
|
||||
|
||||
- name: Build
|
||||
run: pnpm --filter lucide-vue-next build
|
||||
|
||||
29
.github/workflows/lucide-vue.yml
vendored
@@ -5,6 +5,7 @@ on:
|
||||
paths:
|
||||
- packages/lucide-vue/**
|
||||
- tools/build-icons/**
|
||||
- tools/rollup-plugins/**
|
||||
- pnpm-lock.yaml
|
||||
|
||||
jobs:
|
||||
@@ -12,32 +13,16 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3
|
||||
- uses: pnpm/action-setup@v2
|
||||
with:
|
||||
node-version: 16
|
||||
|
||||
- uses: pnpm/action-setup@v2.0.1
|
||||
name: Install pnpm
|
||||
id: pnpm-install
|
||||
version: 8
|
||||
- uses: actions/setup-node@v3.8.1
|
||||
with:
|
||||
version: 7
|
||||
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-
|
||||
node-version: 18
|
||||
cache: 'pnpm'
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install
|
||||
run: pnpm install --frozen-lockfile
|
||||
|
||||
- name: Build
|
||||
run: pnpm --filter lucide-vue build
|
||||
|
||||
29
.github/workflows/lucide.yml
vendored
@@ -5,6 +5,7 @@ on:
|
||||
paths:
|
||||
- packages/lucide/**
|
||||
- tools/build-icons/**
|
||||
- tools/rollup-plugins/**
|
||||
- pnpm-lock.yaml
|
||||
|
||||
jobs:
|
||||
@@ -12,32 +13,16 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3
|
||||
- uses: pnpm/action-setup@v2
|
||||
with:
|
||||
node-version: 16
|
||||
|
||||
- uses: pnpm/action-setup@v2.0.1
|
||||
name: Install pnpm
|
||||
id: pnpm-install
|
||||
version: 8
|
||||
- uses: actions/setup-node@v3.8.1
|
||||
with:
|
||||
version: 7
|
||||
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-
|
||||
node-version: 18
|
||||
cache: 'pnpm'
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install
|
||||
run: pnpm install --frozen-lockfile
|
||||
|
||||
- name: Build
|
||||
run: pnpm --filter lucide build
|
||||
|
||||
123
.github/workflows/pull-request.yml
vendored
@@ -4,14 +4,65 @@ on:
|
||||
pull_request_target:
|
||||
paths:
|
||||
- 'icons/*.svg'
|
||||
|
||||
permissions:
|
||||
pull-requests: write
|
||||
contents: write
|
||||
branches:
|
||||
- main
|
||||
|
||||
jobs:
|
||||
add-changed-icons-comment:
|
||||
lint-contributors:
|
||||
if: github.repository == 'lucide-icons/lucide'
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
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@v35
|
||||
with:
|
||||
files: icons/*
|
||||
- uses: actions/setup-node@v3.8.1
|
||||
- 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
|
||||
# - name: Fail if contributors have changed
|
||||
# run: git diff --exit-code -- icons/*.json
|
||||
|
||||
generate-changed-icons-comment-data:
|
||||
if: github.repository == 'lucide-icons/lucide'
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
outputs:
|
||||
generate-1px-stroke-width: ${{ steps.generate-1px-stroke-width.outputs.body }}
|
||||
generate-2px-stroke-width: ${{ steps.generate-2px-stroke-width.outputs.body }}
|
||||
generate-3px-stroke-width: ${{ steps.generate-3px-stroke-width.outputs.body }}
|
||||
generate-24px-dpi-preview: ${{ steps.generate-24px-dpi-preview.outputs.body }}
|
||||
generate-cohesion-check-random: ${{ steps.generate-cohesion-check-random.outputs.body }}
|
||||
generate-cohesion-check-squares: ${{ steps.generate-cohesion-check-squares.outputs.body }}
|
||||
generate-x-rays: ${{ steps.generate-x-rays.outputs.body }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
@@ -24,20 +75,24 @@ jobs:
|
||||
files: icons/*.svg
|
||||
- name: Generate 24px dpi preview
|
||||
id: generate-24px-dpi-preview
|
||||
env:
|
||||
CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
|
||||
run: |
|
||||
delimiter="$(openssl rand -hex 8)"
|
||||
echo "body<<$delimiter" >> $GITHUB_OUTPUT
|
||||
for file in ${{ steps.changed-files.outputs.all_changed_files }}; do
|
||||
while IFS= read -r file; do
|
||||
cat "$file" | # get file content
|
||||
tr '\n' ' ' | # remove line breaks
|
||||
sed -e 's/<svg[^>]*>/<svg>/g' | # remove attributes from svg element
|
||||
base64 -w 0 | # encode svg
|
||||
sed "s|.*|<img title=\"$file\" alt=\"$file\" src=\"https://lucide.dev/api/gh-icon/dpi/24/&.svg\"/> |"
|
||||
done | tr '\n' ' ' >> $GITHUB_OUTPUT
|
||||
done <<< "$CHANGED_FILES" | tr '\n' ' ' >> $GITHUB_OUTPUT
|
||||
echo >> $GITHUB_OUTPUT
|
||||
echo "$delimiter" >> $GITHUB_OUTPUT
|
||||
- name: Generate cohesion check random
|
||||
id: generate-cohesion-check-random
|
||||
env:
|
||||
CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
|
||||
run: |
|
||||
delimiter="$(openssl rand -hex 8)"
|
||||
echo "body<<$delimiter" >> $GITHUB_OUTPUT
|
||||
@@ -47,11 +102,13 @@ jobs:
|
||||
sed -e 's/<svg[^>]*>/<svg>/g' | # remove attributes from svg element
|
||||
base64 -w 0 | # encode svg
|
||||
sed "s|.*|<img title=\"$file\" alt=\"$file\" src=\"https://lucide.dev/api/gh-icon/stroke-width/2/&.svg\"/> |"
|
||||
done | tr '\n' ' ' >> $GITHUB_OUTPUT
|
||||
done <<< "$CHANGED_FILES" | tr '\n' ' ' >> $GITHUB_OUTPUT
|
||||
echo >> $GITHUB_OUTPUT
|
||||
echo "$delimiter" >> $GITHUB_OUTPUT
|
||||
- name: Generate cohesion check squares
|
||||
id: generate-cohesion-check-squares
|
||||
env:
|
||||
CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
|
||||
run: |
|
||||
delimiter="$(openssl rand -hex 8)"
|
||||
echo "body<<$delimiter" >> $GITHUB_OUTPUT
|
||||
@@ -61,35 +118,39 @@ jobs:
|
||||
sed -e 's/<svg[^>]*>/<svg>/g' | # remove attributes from svg element
|
||||
base64 -w 0 | # encode svg
|
||||
sed "s|.*|<img title=\"$file\" alt=\"$file\" src=\"https://lucide.dev/api/gh-icon/stroke-width/2/&.svg\"/> |"
|
||||
done | tr '\n' ' ' >> $GITHUB_OUTPUT
|
||||
done <<< "$CHANGED_FILES" | tr '\n' ' ' >> $GITHUB_OUTPUT
|
||||
echo >> $GITHUB_OUTPUT
|
||||
echo "$delimiter" >> $GITHUB_OUTPUT
|
||||
- name: Generate 1px stroke-width
|
||||
id: generate-1px-stroke-width
|
||||
env:
|
||||
CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
|
||||
run: |
|
||||
delimiter="$(openssl rand -hex 8)"
|
||||
echo "body<<$delimiter" >> $GITHUB_OUTPUT
|
||||
for file in ${{ steps.changed-files.outputs.all_changed_files }}; do
|
||||
while IFS= read -r file; do
|
||||
cat "$file" | # get file content
|
||||
tr '\n' ' ' | # remove line breaks
|
||||
sed -e 's/<svg[^>]*>/<svg>/g' | # remove attributes from svg element
|
||||
base64 -w 0 | # encode svg
|
||||
sed "s|.*|<img title=\"$file\" alt=\"$file\" src=\"https://lucide.dev/api/gh-icon/stroke-width/1/&.svg\"/> |"
|
||||
done | tr '\n' ' ' >> $GITHUB_OUTPUT
|
||||
done <<< "$CHANGED_FILES" | tr '\n' ' ' >> $GITHUB_OUTPUT
|
||||
echo >> $GITHUB_OUTPUT
|
||||
echo "$delimiter" >> $GITHUB_OUTPUT
|
||||
- name: Generate 2px stroke-width
|
||||
id: generate-2px-stroke-width
|
||||
env:
|
||||
CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
|
||||
run: |
|
||||
delimiter="$(openssl rand -hex 8)"
|
||||
echo "body<<$delimiter" >> $GITHUB_OUTPUT
|
||||
for file in ${{ steps.changed-files.outputs.all_changed_files }}; do
|
||||
while IFS= read -r file; do
|
||||
cat "$file" | # get file content
|
||||
tr '\n' ' ' | # remove line breaks
|
||||
sed -e 's/<svg[^>]*>/<svg>/g' | # remove attributes from svg element
|
||||
base64 -w 0 | # encode svg
|
||||
sed "s|.*|<img title=\"$file\" alt=\"$file\" src=\"https://lucide.dev/api/gh-icon/stroke-width/2/&.svg\"/> |"
|
||||
done | tr '\n' ' ' >> $GITHUB_OUTPUT
|
||||
done <<< "$CHANGED_FILES" | tr '\n' ' ' >> $GITHUB_OUTPUT
|
||||
echo >> $GITHUB_OUTPUT
|
||||
echo "$delimiter" >> $GITHUB_OUTPUT
|
||||
- name: Generate 3px stroke-width
|
||||
@@ -97,29 +158,39 @@ jobs:
|
||||
run: |
|
||||
delimiter="$(openssl rand -hex 8)"
|
||||
echo "body<<$delimiter" >> $GITHUB_OUTPUT
|
||||
for file in ${{ steps.changed-files.outputs.all_changed_files }}; do
|
||||
while IFS= read -r file; do
|
||||
cat "$file" | # get file content
|
||||
tr '\n' ' ' | # remove line breaks
|
||||
sed -e 's/<svg[^>]*>/<svg>/g' | # remove attributes from svg element
|
||||
base64 -w 0 | # encode svg
|
||||
sed "s|.*|<img title=\"$file\" alt=\"$file\" src=\"https://lucide.dev/api/gh-icon/stroke-width/3/&.svg\"/> |"
|
||||
done | tr '\n' ' ' >> $GITHUB_OUTPUT
|
||||
done <<< "$CHANGED_FILES" | tr '\n' ' ' >> $GITHUB_OUTPUT
|
||||
echo >> $GITHUB_OUTPUT
|
||||
echo "$delimiter" >> $GITHUB_OUTPUT
|
||||
- name: Generate X-rays
|
||||
id: generate-x-rays
|
||||
env:
|
||||
CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
|
||||
run: |
|
||||
delimiter="$(openssl rand -hex 8)"
|
||||
echo "body<<$delimiter" >> $GITHUB_OUTPUT
|
||||
for file in ${{ steps.changed-files.outputs.all_changed_files }}; do
|
||||
while IFS= read -r file; do
|
||||
cat "$file" | # get file content
|
||||
tr '\n' ' ' | # remove line breaks
|
||||
sed -e 's/<svg[^>]*>/<svg>/g' | # remove attributes from svg element
|
||||
base64 -w 0 | # encode svg
|
||||
sed "s|.*|<img width=\"400\" title=\"$file\" alt=\"$file\" src=\"https://lucide.dev/api/gh-icon/$(basename ${file//\.svg/})/&.svg\"/> |"
|
||||
done | tr '\n' ' ' >> $GITHUB_OUTPUT
|
||||
done <<< "$CHANGED_FILES" | tr '\n' ' ' >> $GITHUB_OUTPUT
|
||||
echo >> $GITHUB_OUTPUT
|
||||
echo "$delimiter" >> $GITHUB_OUTPUT
|
||||
|
||||
add-changed-icons-comment:
|
||||
if: github.repository == 'lucide-icons/lucide'
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
pull-requests: write
|
||||
needs: [generate-changed-icons-comment-data]
|
||||
steps:
|
||||
- name: Find Comment
|
||||
uses: peter-evans/find-comment@v2
|
||||
id: fc
|
||||
@@ -134,25 +205,25 @@ jobs:
|
||||
issue-number: ${{ github.event.pull_request.number }}
|
||||
body: |
|
||||
### Added or changed icons
|
||||
${{ steps.generate-2px-stroke-width.outputs.body }}<br/>
|
||||
${{ needs.generate-changed-icons-comment-data.outputs.generate-2px-stroke-width }}<br/>
|
||||
<details>
|
||||
<summary>Preview cohesion</summary>
|
||||
${{ steps.generate-cohesion-check-squares.outputs.body }}<br/>
|
||||
${{ steps.generate-2px-stroke-width.outputs.body }}<br/>
|
||||
${{ steps.generate-cohesion-check-random.outputs.body }}<br/>
|
||||
${{ needs.generate-changed-icons-comment-data.outputs.generate-cohesion-check-squares }}<br/>
|
||||
${{ needs.generate-changed-icons-comment-data.outputs.generate-2px-stroke-width }}<br/>
|
||||
${{ needs.generate-changed-icons-comment-data.outputs.generate-cohesion-check-random }}<br/>
|
||||
</details>
|
||||
<details>
|
||||
<summary>Preview stroke widths</summary>
|
||||
${{ steps.generate-1px-stroke-width.outputs.body }}<br/>
|
||||
${{ steps.generate-2px-stroke-width.outputs.body }}<br/>
|
||||
${{ steps.generate-3px-stroke-width.outputs.body }}<br/>
|
||||
${{ needs.generate-changed-icons-comment-data.outputs.generate-1px-stroke-width }}<br/>
|
||||
${{ needs.generate-changed-icons-comment-data.outputs.generate-2px-stroke-width }}<br/>
|
||||
${{ needs.generate-changed-icons-comment-data.outputs.generate-3px-stroke-width }}<br/>
|
||||
</details>
|
||||
<details>
|
||||
<summary>DPI Preview (24px)</summary>
|
||||
${{ steps.generate-24px-dpi-preview.outputs.body }}<br/>
|
||||
${{ needs.generate-changed-icons-comment-data.outputs.generate-24px-dpi-preview }}
|
||||
</details>
|
||||
<details>
|
||||
<summary>Icon X-rays</summary>
|
||||
${{ steps.generate-x-rays.outputs.body }}
|
||||
${{ needs.generate-changed-icons-comment-data.outputs.generate-x-rays }}
|
||||
</details>
|
||||
edit-mode: replace
|
||||
|
||||
88
.github/workflows/release.yml
vendored
@@ -39,6 +39,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
needs: pre-release
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
package: [
|
||||
'lucide',
|
||||
@@ -53,29 +54,13 @@ jobs:
|
||||
]
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: pnpm/action-setup@v2
|
||||
with:
|
||||
version: 8
|
||||
- uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 18
|
||||
|
||||
- uses: pnpm/action-setup@v2.0.1
|
||||
name: Install pnpm
|
||||
id: pnpm-install
|
||||
with:
|
||||
version: 7
|
||||
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-
|
||||
cache: 'pnpm'
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install --frozen-lockfile
|
||||
@@ -102,30 +87,13 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/download-artifact@v2
|
||||
|
||||
- uses: pnpm/action-setup@v2
|
||||
with:
|
||||
version: 8
|
||||
- uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: 16
|
||||
|
||||
- uses: pnpm/action-setup@v2.0.1
|
||||
name: Install pnpm
|
||||
id: pnpm-install
|
||||
with:
|
||||
version: 7
|
||||
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-
|
||||
node-version: 18
|
||||
cache: 'pnpm'
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install --frozen-lockfile
|
||||
@@ -149,44 +117,24 @@ jobs:
|
||||
if: github.repository == 'lucide-icons/lucide'
|
||||
runs-on: ubuntu-latest
|
||||
needs: pre-release
|
||||
container: ericfennis/lucide-font:latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/setup-node@v3.4.1
|
||||
- uses: pnpm/action-setup@v2
|
||||
with:
|
||||
node-version: 16
|
||||
|
||||
- uses: pnpm/action-setup@v2.0.1
|
||||
name: Install pnpm
|
||||
id: pnpm-install
|
||||
version: 8
|
||||
- uses: actions/setup-node@v3
|
||||
with:
|
||||
version: 7
|
||||
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-
|
||||
node-version: 18
|
||||
cache: 'pnpm'
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install --filter outline-svg
|
||||
run: pnpm install --frozen-lockfile
|
||||
|
||||
- name: Outline svg Icons
|
||||
run: pnpm build:outline-icons
|
||||
|
||||
- name: Create directory
|
||||
run: mkdir lucide-font
|
||||
|
||||
- name: Build font
|
||||
run: fontcustom compile "./outlined" -h -n "lucide" -o ./lucide-font -F
|
||||
- name: Create font in ./lucide-font
|
||||
run: pnpm build:font
|
||||
|
||||
- name: "Upload to Artifacts"
|
||||
uses: actions/upload-artifact@v1
|
||||
|
||||
8
.vscode/settings.json
vendored
@@ -3,5 +3,11 @@
|
||||
"devs",
|
||||
"preact",
|
||||
"Preact"
|
||||
]
|
||||
],
|
||||
"eslint.enable": true,
|
||||
"eslint.validate": [
|
||||
"javascript",
|
||||
"svg"
|
||||
],
|
||||
"svg.preview.background": "transparent"
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@ Here you can find instructions on how to implement the guidelines with different
|
||||
|
||||
#### [Adobe Illustrator Guide](https://lucide.dev/docs/illustrator-guide)
|
||||
|
||||
You can also [download an Adobe Illustrator template](https://lucide.dev/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)
|
||||
|
||||
|
||||
15
README.md
@@ -11,14 +11,14 @@
|
||||
|
||||
Community-run fork of [Feather Icons](https://github.com/feathericons/feather), open for anyone to contribute icons.
|
||||
|
||||
It began after growing disaffection 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.
|
||||
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.
|
||||
|
||||
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!
|
||||
|
||||
### Why choose Lucide over Feather Icons
|
||||
|
||||
- More icons to work with: Lucide already has hundreds of icons more than Feather does.
|
||||
- Official librairies and integrations with popular frameworks and design tools.
|
||||
- Official libraries and integrations with popular frameworks and design tools.
|
||||
- Well maintained code base.
|
||||
- Active community, regularly growing and improving the set.
|
||||
|
||||
@@ -35,7 +35,6 @@ Lucide is trying to expand the icon set as much as possible while staying faithf
|
||||
- [Static (svg sprite, font, icons ..)](#static-svg-sprite-font-icons-)
|
||||
- [Figma](#figma)
|
||||
- [Laravel](#laravel)
|
||||
- [Flutter](#flutter)
|
||||
- [Svelte](#svelte)
|
||||
- [Solid](#solid)
|
||||
- [Hyva](#hyva)
|
||||
@@ -200,16 +199,6 @@ composer require mallardduck/blade-lucide-icons
|
||||
|
||||
For more details, see the [documentation](https://github.com/mallardduck/blade-lucide-icons/blob/main/README.md).
|
||||
|
||||
### Flutter
|
||||
|
||||
Implementation of Lucide icon library for Flutter applications.
|
||||
|
||||
```sh
|
||||
flutter pub add lucide_icons
|
||||
```
|
||||
|
||||
For more details, see the [pub.dev](https://pub.dev/packages/lucide_icons).
|
||||
|
||||
### Svelte
|
||||
|
||||
Implementation of the lucide icon library for Svelte applications.
|
||||
|
||||
@@ -12,8 +12,10 @@
|
||||
},
|
||||
"title": "Lucide Icons category schema",
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": ["$schema", "icon", "title"],
|
||||
"properties": {
|
||||
"title": {
|
||||
"$schema": {
|
||||
"type": "string"
|
||||
},
|
||||
"description": {
|
||||
@@ -22,13 +24,12 @@
|
||||
"icon": {
|
||||
"type": "string"
|
||||
},
|
||||
"title": {
|
||||
"type": "string"
|
||||
},
|
||||
"weight": {
|
||||
"type": "integer"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"title",
|
||||
"icon"
|
||||
],
|
||||
"description": "A JSON Schema for categories defined by Lucide Icons."
|
||||
}
|
||||
|
||||
@@ -17,11 +17,14 @@ export default eventHandler((event) => {
|
||||
|
||||
const children = [];
|
||||
|
||||
// If the icon already exists, it uses the existing icon as the backdrop.
|
||||
// If the icon does not exist but an icon exists that starts with the same group name, that icon
|
||||
// is used as the backdrop
|
||||
const backdropName =
|
||||
name in iconNodes ? name : name.split('-')[0] in iconNodes ? name.split('-')[0] : null;
|
||||
// Finds the longest matching icon to be use as the backdrop.
|
||||
// For `square-dashed-bottom-code` it suggests `square-dashed-bottom-code`.
|
||||
// For `square-dashed-bottom-i-dont-exist` it suggests `square-dashed-bottom`.
|
||||
const backdropName = name
|
||||
.split('-')
|
||||
.map((_, idx, arr) => arr.slice(0, idx + 1).join('-'))
|
||||
.reverse()
|
||||
.find((groupName) => groupName in iconNodes);
|
||||
if (backdropName) {
|
||||
const iconNode = iconNodes[backdropName];
|
||||
|
||||
@@ -29,7 +32,13 @@ export default eventHandler((event) => {
|
||||
const svg = renderToStaticMarkup(createElement(LucideIcon));
|
||||
const backdropString = svg.replace(/<svg[^>]*>|<\/svg>/g, '');
|
||||
|
||||
children.push(createElement(Backdrop, { backdropString, src }));
|
||||
children.push(
|
||||
createElement(Backdrop, {
|
||||
backdropString,
|
||||
src,
|
||||
color: name in iconNodes ? 'red' : '#777',
|
||||
})
|
||||
);
|
||||
}
|
||||
|
||||
const svg = Buffer.from(
|
||||
|
||||
@@ -104,6 +104,7 @@ export default defineConfig({
|
||||
{ text: 'Icons', link: '/icons/' },
|
||||
{ text: 'Guide', link: '/guide/' },
|
||||
{ text: 'Packages', link: '/packages' },
|
||||
{ text: 'Showcase', link: '/showcase' },
|
||||
{ text: 'License', link: '/license' },
|
||||
],
|
||||
sidebar,
|
||||
@@ -118,6 +119,10 @@ export default defineConfig({
|
||||
editLink: {
|
||||
pattern: 'https://github.com/lucide-icons/lucide/edit/main/docs/:path'
|
||||
},
|
||||
carbonAds: {
|
||||
code: 'CWYIC53U',
|
||||
placement: 'lucidedev'
|
||||
}
|
||||
},
|
||||
sitemap: {
|
||||
hostname: 'https://lucide.dev/'
|
||||
|
||||
50
docs/.vitepress/data/companiesData.json
Normal file
@@ -0,0 +1,50 @@
|
||||
[
|
||||
{
|
||||
"name": "Vercel",
|
||||
"url": "https://vercel.com",
|
||||
"image": {
|
||||
"light": "/company-logos/vercel-light.svg",
|
||||
"dark": "/company-logos/vercel-dark.svg"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Supabase",
|
||||
"url": "https://supabase.com",
|
||||
"image": {
|
||||
"light": "/company-logos/supabase-light.svg",
|
||||
"dark": "/company-logos/supabase-dark.svg"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Obsidian",
|
||||
"url": "https://obsidian.md",
|
||||
"image": {
|
||||
"light": "/company-logos/obsidian-light.svg",
|
||||
"dark": "/company-logos/obsidian-dark.svg"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Open Collective",
|
||||
"url": "https://opencollective.com",
|
||||
"image": {
|
||||
"light": "/company-logos/open-collective-light.svg",
|
||||
"dark": "/company-logos/open-collective-dark.svg"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Super",
|
||||
"url": "https://super.so",
|
||||
"image": {
|
||||
"light": "/company-logos/super-light.svg",
|
||||
"dark": "/company-logos/super-dark.svg"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Noodle",
|
||||
"url": "https://noodle.run/",
|
||||
"image": {
|
||||
"light": "/company-logos/noodle-light.svg",
|
||||
"dark": "/company-logos/noodle-dark.svg"
|
||||
}
|
||||
}
|
||||
]
|
||||
18
docs/.vitepress/data/componentLibrariesData.json
Normal file
@@ -0,0 +1,18 @@
|
||||
[
|
||||
{
|
||||
"name": "Shadcn/ui",
|
||||
"url": "https://ui.shadcn.com/",
|
||||
"image": {
|
||||
"light": "/library-logos/shadcn-ui-light.svg",
|
||||
"dark": "/library-logos/shadcn-ui-dark.svg"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Tamagui",
|
||||
"url": "https://tamagui.dev/",
|
||||
"image": {
|
||||
"light": "/library-logos/tamagui.svg",
|
||||
"dark": "/library-logos/tamagui.svg"
|
||||
}
|
||||
}
|
||||
]
|
||||
@@ -1,11 +1,12 @@
|
||||
import React from 'react';
|
||||
|
||||
interface BackdropProps {
|
||||
src: string
|
||||
backdropString: string
|
||||
src: string;
|
||||
color?: string;
|
||||
backdropString: string;
|
||||
}
|
||||
|
||||
const Backdrop = ({ src, backdropString }: BackdropProps): JSX.Element => {
|
||||
const Backdrop = ({ src, color = 'red', backdropString }: BackdropProps): JSX.Element => {
|
||||
return (
|
||||
<>
|
||||
<defs xmlns="http://www.w3.org/2000/svg">
|
||||
@@ -16,8 +17,8 @@ const Backdrop = ({ src, backdropString }: BackdropProps): JSX.Element => {
|
||||
patternUnits="userSpaceOnUse"
|
||||
patternTransform="rotate(45 50 50)"
|
||||
>
|
||||
<line stroke="red" strokeWidth={0.1} y2={1} />
|
||||
<line stroke="red" strokeWidth={0.1} y2={1} />
|
||||
<line stroke={color} strokeWidth={0.1} y2={1} />
|
||||
<line stroke={color} strokeWidth={0.1} y2={1} />
|
||||
</pattern>
|
||||
</defs>
|
||||
<mask id="svg-preview-backdrop-mask-outline" maskUnits="userSpaceOnUse">
|
||||
@@ -29,20 +30,8 @@ const Backdrop = ({ src, backdropString }: BackdropProps): JSX.Element => {
|
||||
<g dangerouslySetInnerHTML={{ __html: src }} strokeWidth={2.05} />
|
||||
<g strokeWidth={1.75} dangerouslySetInnerHTML={{ __html: backdropString }} />
|
||||
</mask>
|
||||
<g
|
||||
strokeWidth={2.25}
|
||||
stroke="url(#pattern)"
|
||||
mask={'url(#svg-preview-backdrop-mask-outline)'}
|
||||
>
|
||||
<rect
|
||||
x="0"
|
||||
y="0"
|
||||
width="24"
|
||||
height="24"
|
||||
fill="url(#pattern)"
|
||||
opacity={0.5}
|
||||
stroke="none"
|
||||
/>
|
||||
<g strokeWidth={2.25} stroke="url(#pattern)" mask={'url(#svg-preview-backdrop-mask-outline)'}>
|
||||
<rect x="0" y="0" width="24" height="24" fill="url(#pattern)" opacity={0.5} stroke="none" />
|
||||
</g>
|
||||
<rect
|
||||
x="0"
|
||||
@@ -58,14 +47,13 @@ const Backdrop = ({ src, backdropString }: BackdropProps): JSX.Element => {
|
||||
y="0"
|
||||
width="24"
|
||||
height="24"
|
||||
fill="red"
|
||||
fill={color}
|
||||
opacity={0.5}
|
||||
stroke="none"
|
||||
mask={'url(#svg-preview-backdrop-mask-fill)'}
|
||||
/>
|
||||
</>
|
||||
)
|
||||
}
|
||||
|
||||
);
|
||||
};
|
||||
|
||||
export default Backdrop;
|
||||
|
||||
@@ -199,6 +199,28 @@ const Radii = ({
|
||||
);
|
||||
};
|
||||
|
||||
const Handles = ({
|
||||
paths,
|
||||
...props
|
||||
}: { paths: Path[] } & PathProps<
|
||||
'strokeWidth' | 'stroke' | 'strokeDasharray' | 'strokeOpacity',
|
||||
any
|
||||
>) => {
|
||||
console.log(paths);
|
||||
return (
|
||||
<g className="svg-preview-handles-group" {...props}>
|
||||
{paths.map(({ c, prev, next, cp1, cp2 }) => (
|
||||
<>
|
||||
{cp1 && <path d={`M${prev.x} ${prev.y} ${cp1.x} ${cp1.y}`} />}
|
||||
{cp1 && <circle cy={cp1.y} cx={cp1.x} r={0.25} />}
|
||||
{cp2 && <path d={`M${next.x} ${next.y} ${cp2.x} ${cp2.y}`} />}
|
||||
{cp2 && <circle cy={cp2.y} cx={cp2.x} r={0.25} />}
|
||||
</>
|
||||
))}
|
||||
</g>
|
||||
);
|
||||
};
|
||||
|
||||
const SvgPreview = React.forwardRef<
|
||||
SVGSVGElement,
|
||||
{
|
||||
@@ -238,6 +260,7 @@ const SvgPreview = React.forwardRef<
|
||||
<style>{darkModeCss}</style>
|
||||
{showGrid && <Grid strokeWidth={0.1} stroke="#777" strokeOpacity={0.3} radius={1} />}
|
||||
<Shadow paths={paths} strokeWidth={4} stroke="#777" radius={1} strokeOpacity={0.15} />
|
||||
<Handles paths={paths} strokeWidth={0.12} stroke="#777" strokeOpacity={0.6} />
|
||||
<ColoredPath
|
||||
paths={paths}
|
||||
colors={[
|
||||
@@ -263,6 +286,7 @@ const SvgPreview = React.forwardRef<
|
||||
strokeOpacity={0.3}
|
||||
/>
|
||||
<ControlPath radius={1} paths={paths} pointSize={1} stroke="#fff" strokeWidth={0.125} />
|
||||
<Handles paths={paths} strokeWidth={0.12} stroke="#FFF" strokeOpacity={0.3} />
|
||||
{children}
|
||||
</svg>
|
||||
);
|
||||
|
||||
@@ -8,7 +8,9 @@ export type Path = {
|
||||
prev: Point;
|
||||
next: Point;
|
||||
isStart: boolean;
|
||||
circle: { x: number; y: number; r: number };
|
||||
circle?: { x: number; y: number; r: number };
|
||||
cp1?: Point;
|
||||
cp2?: Point;
|
||||
c: ReturnType<typeof getCommands>[number];
|
||||
};
|
||||
|
||||
|
||||
@@ -63,7 +63,7 @@ export const getPaths = (src: string) => {
|
||||
c: typeof commands[number],
|
||||
next: Point,
|
||||
d?: string,
|
||||
circle?: Path['circle']
|
||||
extras?: { circle?: Path['circle']; cp1?: Path['cp1']; cp2?: Path['cp2'] }
|
||||
) => {
|
||||
assert(prev);
|
||||
paths.push({
|
||||
@@ -71,7 +71,7 @@ export const getPaths = (src: string) => {
|
||||
d: d || `M ${prev.x} ${prev.y} L ${next.x} ${next.y}`,
|
||||
prev,
|
||||
next,
|
||||
circle,
|
||||
...extras,
|
||||
isStart: start === prev,
|
||||
});
|
||||
prev = next;
|
||||
@@ -110,7 +110,10 @@ export const getPaths = (src: string) => {
|
||||
}
|
||||
case SVGPathData.CURVE_TO: {
|
||||
assert(prev);
|
||||
addPath(c, c, `M ${prev.x} ${prev.y} ${encodeSVGPath(c)}`);
|
||||
addPath(c, c, `M ${prev.x} ${prev.y} ${encodeSVGPath(c)}`, {
|
||||
cp1: { x: c.x1, y: c.y1 },
|
||||
cp2: { x: c.x2, y: c.y2 },
|
||||
});
|
||||
break;
|
||||
}
|
||||
case SVGPathData.SMOOTH_CURVE_TO: {
|
||||
@@ -146,13 +149,20 @@ export const getPaths = (src: string) => {
|
||||
y1: prev.y - reflectedCp1.y,
|
||||
x2: c.x2,
|
||||
y2: c.y2,
|
||||
})}`
|
||||
})}`,
|
||||
{
|
||||
cp1: reflectedCp1,
|
||||
cp2: { x: c.x2, y: c.y2 },
|
||||
}
|
||||
);
|
||||
break;
|
||||
}
|
||||
case SVGPathData.QUAD_TO: {
|
||||
assert(prev);
|
||||
addPath(c, c, `M ${prev.x} ${prev.y} ${encodeSVGPath(c)}`);
|
||||
addPath(c, c, `M ${prev.x} ${prev.y} ${encodeSVGPath(c)}`, {
|
||||
cp1: { x: c.x1, y: c.y1 },
|
||||
cp2: { x: c.x1, y: c.y1 },
|
||||
});
|
||||
break;
|
||||
}
|
||||
case SVGPathData.SMOOTH_QUAD_TO: {
|
||||
@@ -197,7 +207,11 @@ export const getPaths = (src: string) => {
|
||||
y: c.y,
|
||||
x1: prevCP.x,
|
||||
y1: prevCP.y,
|
||||
})}`
|
||||
})}`,
|
||||
{
|
||||
cp1: { x: prevCP.x, y: prevCP.y },
|
||||
cp2: { x: prevCP.x, y: prevCP.y },
|
||||
}
|
||||
);
|
||||
break;
|
||||
}
|
||||
@@ -218,7 +232,7 @@ export const getPaths = (src: string) => {
|
||||
c,
|
||||
c,
|
||||
`M ${prev.x} ${prev.y} A${c.rX} ${c.rY} ${c.xRot} ${c.lArcFlag} ${c.sweepFlag} ${c.x} ${c.y}`,
|
||||
c.rX === c.rY ? { ...center, r: c.rX } : undefined
|
||||
{ circle: c.rX === c.rY ? { ...center, r: c.rX } : undefined }
|
||||
);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1,41 +1,29 @@
|
||||
import {
|
||||
BUNDLED_LANGUAGES,
|
||||
type IThemeRegistration
|
||||
} from 'shiki'
|
||||
bundledLanguages,
|
||||
type ThemeRegistration
|
||||
} from 'shikiji'
|
||||
import {
|
||||
getHighlighter,
|
||||
} from 'shiki-processor'
|
||||
} from 'shikiji'
|
||||
|
||||
|
||||
type CodeExampleType = {
|
||||
title: string,
|
||||
lang: string,
|
||||
codes: {
|
||||
language?: string,
|
||||
code: string,
|
||||
metastring?: string,
|
||||
}[],
|
||||
language: string,
|
||||
code: string,
|
||||
}[]
|
||||
|
||||
const getIconCodes = (): CodeExampleType => {
|
||||
return [
|
||||
{
|
||||
lang: 'html',
|
||||
language: 'html',
|
||||
title: 'HTML',
|
||||
codes: [
|
||||
{
|
||||
language: 'html',
|
||||
code: `<i data-lucide="Name"></i>
|
||||
`,
|
||||
},
|
||||
],
|
||||
code: `<i data-lucide="Name"></i>`
|
||||
},
|
||||
{
|
||||
lang: 'tsx',
|
||||
language: 'tsx',
|
||||
title: 'React',
|
||||
codes: [
|
||||
{
|
||||
language: 'tsx',
|
||||
code: `import { PascalCase } from 'lucide-react';
|
||||
code: `import { PascalCase } from 'lucide-react';
|
||||
|
||||
const App = () => {
|
||||
return (
|
||||
@@ -45,17 +33,11 @@ const App = () => {
|
||||
|
||||
export default App;
|
||||
`,
|
||||
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
lang: 'vue',
|
||||
title: 'Vue 3',
|
||||
codes: [
|
||||
{
|
||||
language: 'vue',
|
||||
code: `<script setup>
|
||||
language: 'vue',
|
||||
title: 'Vue',
|
||||
code: `<script setup>
|
||||
import { PascalCase } from 'lucide-vue-next';
|
||||
</script>
|
||||
|
||||
@@ -63,33 +45,21 @@ export default App;
|
||||
<PascalCase />
|
||||
</template>
|
||||
`,
|
||||
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
lang: 'svelte',
|
||||
language: 'svelte',
|
||||
title: 'Svelte',
|
||||
codes: [
|
||||
{
|
||||
language: 'svelte',
|
||||
code: `<script>
|
||||
code: `<script>
|
||||
import { PascalCase } from 'lucide-svelte';
|
||||
</script>
|
||||
|
||||
<PascalCase />
|
||||
`,
|
||||
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
lang: 'preact',
|
||||
language: 'tsx',
|
||||
title: 'Preact',
|
||||
codes: [
|
||||
{
|
||||
language: 'tsx',
|
||||
code: `import { PascalCase } from 'lucide-preact';
|
||||
code: `import { PascalCase } from 'lucide-preact';
|
||||
|
||||
const App = () => {
|
||||
return (
|
||||
@@ -99,17 +69,11 @@ const App = () => {
|
||||
|
||||
export default App;
|
||||
`,
|
||||
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
lang: 'solid',
|
||||
language: 'tsx',
|
||||
title: 'Solid',
|
||||
codes: [
|
||||
{
|
||||
language: 'tsx',
|
||||
code: `import { PascalCase } from 'lucide-solid';
|
||||
code: `import { PascalCase } from 'lucide-solid';
|
||||
|
||||
const App = () => {
|
||||
return (
|
||||
@@ -119,17 +83,11 @@ const App = () => {
|
||||
|
||||
export default App;
|
||||
`,
|
||||
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
lang: 'angular',
|
||||
language: 'tsx',
|
||||
title: 'Angular',
|
||||
codes: [
|
||||
{
|
||||
language: 'tsx',
|
||||
code: `// app.module.ts
|
||||
code: `// app.module.ts
|
||||
import { LucideAngularModule, PascalCase } from 'lucide-angular';
|
||||
|
||||
@NgModule({
|
||||
@@ -141,54 +99,38 @@ import { LucideAngularModule, PascalCase } from 'lucide-angular';
|
||||
// app.component.html
|
||||
<lucide-icon name="Name"></lucide-icon>
|
||||
`,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
lang: 'html',
|
||||
language: 'html',
|
||||
title: 'Icon Font',
|
||||
codes: [
|
||||
{
|
||||
language: 'html',
|
||||
code: `<style>
|
||||
code: `<style>
|
||||
@import ('~lucide-static/font/Lucide.css');
|
||||
</style>
|
||||
|
||||
<div class="icon-Name"></div>
|
||||
`,
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
lang: 'dart',
|
||||
title: 'Flutter',
|
||||
codes: [
|
||||
{
|
||||
language: 'dart',
|
||||
code: `Icon(LucideIcons.Name);
|
||||
`,
|
||||
},
|
||||
],
|
||||
},
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
export type ThemeOptions =
|
||||
| IThemeRegistration
|
||||
| { light: IThemeRegistration; dark: IThemeRegistration }
|
||||
| ThemeRegistration
|
||||
| { light: ThemeRegistration; dark: ThemeRegistration }
|
||||
|
||||
const highLightCode = async (code: string, lang: string, active?: boolean) => {
|
||||
const highlighter = await getHighlighter({
|
||||
themes: ['material-theme-palenight'],
|
||||
langs: [...BUNDLED_LANGUAGES],
|
||||
processors: []
|
||||
themes: ['github-light', 'github-dark'],
|
||||
langs: Object.keys(bundledLanguages)
|
||||
})
|
||||
|
||||
const highlightedCode = highlighter.codeToHtml(code, {
|
||||
lang,
|
||||
// lineOptions,
|
||||
theme: 'material-theme-palenight'
|
||||
}).replace('background-color: #292D3E', '')
|
||||
themes: {
|
||||
light: 'github-light',
|
||||
dark: 'github-dark'
|
||||
},
|
||||
defaultColor: false
|
||||
}).replace('shiki-themes', 'shiki-themes vp-code')
|
||||
|
||||
return `<div class="language-${lang} ${active ? 'active' : ''}">
|
||||
<button title="Copy Code" class="copy"></button>
|
||||
@@ -201,16 +143,15 @@ const highLightCode = async (code: string, lang: string, active?: boolean) => {
|
||||
export default async function createCodeExamples() {
|
||||
const codes = getIconCodes();
|
||||
|
||||
const codeExamplePromises = codes.map(async (codeTemplate, index) => {
|
||||
const { title, lang, codes } = codeTemplate;
|
||||
const codeExamplePromises = codes.map(async ({ title, language, code }, index) => {
|
||||
const isFirst = index === 0;
|
||||
|
||||
const code = await highLightCode(codes[0].code, codes[0].language || lang, isFirst);
|
||||
const codeString = await highLightCode(code, language, isFirst);
|
||||
|
||||
return {
|
||||
title,
|
||||
language: codes[0].language || lang,
|
||||
code,
|
||||
language: language,
|
||||
code: codeString,
|
||||
};
|
||||
})
|
||||
|
||||
|
||||
@@ -7,5 +7,6 @@
|
||||
<style scoped>
|
||||
.container {
|
||||
padding: 32px;
|
||||
padding-top: 33px;
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -36,6 +36,7 @@ const component = computed(() => props.href ? 'a' : 'div')
|
||||
border-radius: 6px;
|
||||
background-color: var(--vp-c-bg-alt);
|
||||
color: var(--vp-c-text-1);
|
||||
text-decoration: none;
|
||||
/* width: 56px;
|
||||
height: 56px; */
|
||||
font-size: 16px;
|
||||
|
||||
56
docs/.vitepress/theme/components/base/Card.vue
Normal file
@@ -0,0 +1,56 @@
|
||||
<script setup lang="ts">
|
||||
import { computed } from 'vue';
|
||||
|
||||
const props = defineProps<{
|
||||
href?: string;
|
||||
}>()
|
||||
|
||||
const isExternal = computed(() => {
|
||||
return props.href?.startsWith('http') ?? false
|
||||
})
|
||||
|
||||
const component = computed(() => {
|
||||
return props.href ? 'a' : 'div'
|
||||
})
|
||||
|
||||
const rel = computed(() => {
|
||||
return isExternal.value ? 'noreferrer noopener' : undefined
|
||||
})
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<component
|
||||
:is="component"
|
||||
:href="href"
|
||||
:rel="rel"
|
||||
class="card"
|
||||
>
|
||||
<slot />
|
||||
</component>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
.card {
|
||||
border: 1px solid var(--vp-c-bg-soft);
|
||||
border-radius: 12px;
|
||||
background-color: var(--vp-c-bg-soft);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 24px;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.card[href] {
|
||||
display: block;
|
||||
border: 1px solid var(--vp-c-bg-soft);
|
||||
border-radius: 12px;
|
||||
height: 100%;
|
||||
background-color: var(--vp-c-bg-soft);
|
||||
transition: border-color .25s,background-color .25s;
|
||||
}
|
||||
|
||||
.card[href]:hover {
|
||||
border-color: var(--vp-c-brand-1);
|
||||
}
|
||||
|
||||
</style>
|
||||
36
docs/.vitepress/theme/components/base/CardGrid.vue
Normal file
@@ -0,0 +1,36 @@
|
||||
<template>
|
||||
<div class="grid">
|
||||
<slot />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
.grid {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: stretch;
|
||||
justify-content: center;
|
||||
align-content: space-evenly;
|
||||
box-sizing: border-box;
|
||||
margin: -8px;
|
||||
}
|
||||
|
||||
.grid > * {
|
||||
flex-basis: 100%;
|
||||
box-sizing: border-box;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
@media (min-width: 960px) {
|
||||
.grid > * {
|
||||
flex-basis: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1280px) {
|
||||
.grid > * {
|
||||
flex-basis: 33.33%;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -54,7 +54,7 @@ const value = computed({
|
||||
flex-shrink: 0;
|
||||
}
|
||||
.color-picker {
|
||||
background: var(--color-picker-bg, var(--vp-c-bg-soft));
|
||||
background: var(--color-picker-bg, var(--vp-c-bg-alt));
|
||||
border-radius: 8px;
|
||||
color: var(--vp-c-text-2);
|
||||
padding: 4px 8px;
|
||||
@@ -71,10 +71,10 @@ const value = computed({
|
||||
.color-input-text {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
padding: 0 8px;
|
||||
padding: 0 0 0 8px;
|
||||
border: none;
|
||||
background: transparent;
|
||||
color: var(--vp-c-text-2);
|
||||
color: var(--vp-c-text-1);
|
||||
font-size: 14px;
|
||||
text-align: left;
|
||||
border-radius: 8px;
|
||||
|
||||
63
docs/.vitepress/theme/components/base/GridSection.vue
Normal file
@@ -0,0 +1,63 @@
|
||||
<script setup lang="ts">
|
||||
import { computed } from 'vue';
|
||||
import CardGrid from './CardGrid.vue';
|
||||
|
||||
const props = defineProps<{
|
||||
title: string,
|
||||
headingLevel: 1 | 2 | 3 | 4 | 5 | 6,
|
||||
}>()
|
||||
|
||||
const headingElement = computed(() => `h${props.headingLevel}`)
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<section>
|
||||
<component :is="headingElement" class="name">{{ title }}</component>
|
||||
<CardGrid>
|
||||
<slot />
|
||||
</CardGrid>
|
||||
</section>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
.name {
|
||||
font-size: 32px;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
|
||||
section {
|
||||
margin-bottom: 96px;
|
||||
}
|
||||
|
||||
.grid {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: stretch;
|
||||
justify-content: center;
|
||||
align-content: space-evenly;
|
||||
box-sizing: border-box;
|
||||
margin: -8px;
|
||||
}
|
||||
|
||||
.grid > * {
|
||||
flex-basis: 100%;
|
||||
box-sizing: border-box;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
@media (min-width: 960px) {
|
||||
.grid > * {
|
||||
flex-basis: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1280px) {
|
||||
.grid > * {
|
||||
flex-basis: 33.33%;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
</style>
|
||||
@@ -49,7 +49,7 @@ const percentage = computed<string>(() => `${((Number(props.modelValue) - props.
|
||||
width: 100%;
|
||||
line-height: 10px;
|
||||
height: 20px;
|
||||
--bar-color: var(--slider-bar-color, var(--vp-c-bg-soft));
|
||||
--bar-color: var(--slider-bar-color, var(--vp-input-switch-bg-color));
|
||||
}
|
||||
|
||||
.slider:hover input{
|
||||
|
||||
@@ -10,7 +10,7 @@ import { data } from './HomeHeroBefore.data'
|
||||
:href="`https://github.com/lucide-icons/lucide/releases/tag/${data.version}`"
|
||||
target="_blank"
|
||||
rel="noreferrer noopener"
|
||||
>{{ data.version }}</Badge>
|
||||
>v{{ data.version }}</Badge>
|
||||
</HomeContainer>
|
||||
</template>
|
||||
|
||||
|
||||
@@ -67,7 +67,10 @@ watch(absoluteStrokeWidth, (enabled) => {
|
||||
Lucide has a lot of customization options to match the icons with your UI.
|
||||
</p>
|
||||
|
||||
<div class="customizer">
|
||||
<div
|
||||
class="customizer"
|
||||
style="--color-picker-bg: var(--vp-input-switch-bg-color)"
|
||||
>
|
||||
<InputField
|
||||
id="icon-color"
|
||||
label="Color"
|
||||
|
||||
@@ -1,48 +1,50 @@
|
||||
<script setup lang="ts">
|
||||
import { onMounted } from 'vue'
|
||||
import { useCategoryView } from '../../composables/useCategoryView'
|
||||
import { onMounted } from 'vue';
|
||||
import { useCategoryView } from '../../composables/useCategoryView';
|
||||
|
||||
interface Header {
|
||||
level: number
|
||||
title: string
|
||||
slug: string
|
||||
iconCount: number
|
||||
link: string
|
||||
children: Header[]
|
||||
level: number;
|
||||
title: string;
|
||||
slug: string;
|
||||
iconCount: number;
|
||||
link: string;
|
||||
children: Header[];
|
||||
}
|
||||
|
||||
type MenuItem = Omit<Header, 'slug' | 'children'> & {
|
||||
children?: MenuItem[]
|
||||
}
|
||||
children?: MenuItem[];
|
||||
};
|
||||
|
||||
const props = defineProps<{
|
||||
headers: MenuItem[]
|
||||
root?: boolean
|
||||
}>()
|
||||
headers: MenuItem[];
|
||||
root?: boolean;
|
||||
}>();
|
||||
|
||||
const { selectedCategory } = useCategoryView()
|
||||
const { selectedCategory } = useCategoryView();
|
||||
|
||||
function onClick(event: Event) {
|
||||
const target = (event.target as HTMLElement).nodeName === 'span' ? (event.target as HTMLElement).parentNode : event.target as HTMLElement
|
||||
const id = '#' + (target as HTMLAnchorElement).href!.split('#')[1]
|
||||
const decodedId = decodeURIComponent(id)
|
||||
const target =
|
||||
(event.target as HTMLElement).nodeName === 'span'
|
||||
? (event.target as HTMLElement).parentNode
|
||||
: (event.target as HTMLElement);
|
||||
const href = (target as HTMLAnchorElement)?.href;
|
||||
|
||||
selectedCategory.value = decodedId.replace('#', '')
|
||||
if (href) {
|
||||
const id = '#' + href.split('#')[1];
|
||||
const decodedId = decodeURIComponent(id);
|
||||
|
||||
const heading = document.querySelector<HTMLAnchorElement>(decodedId)
|
||||
heading?.focus()
|
||||
selectedCategory.value = decodedId.replace('#', '');
|
||||
|
||||
const heading = document.querySelector<HTMLAnchorElement>(decodedId);
|
||||
heading?.focus();
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<ul :class="root ? 'root' : 'nested'">
|
||||
<li v-for="{ children, link, title, iconCount } in headers">
|
||||
<a
|
||||
class="outline-link"
|
||||
:href="link"
|
||||
@click="onClick"
|
||||
:title="title"
|
||||
>
|
||||
<a class="outline-link" :href="link" @click="onClick" :title="title">
|
||||
<span>
|
||||
{{ title }}
|
||||
</span>
|
||||
|
||||
@@ -10,6 +10,7 @@ import { useRouter } from 'vitepress';
|
||||
import IconInfo from './IconInfo.vue';
|
||||
import Badge from '../base/Badge.vue';
|
||||
import { computedAsync } from '@vueuse/core';
|
||||
import { satisfies } from 'semver';
|
||||
|
||||
const props = defineProps<{
|
||||
iconName: string
|
||||
@@ -25,6 +26,12 @@ const icon = computedAsync<IconEntity | null>(async () => {
|
||||
const emit = defineEmits(['close'])
|
||||
const isOpen = computed(() => !!icon.value)
|
||||
|
||||
function releaseTagLink(version) {
|
||||
const shouldAddV = satisfies(version, `<0.266.0`)
|
||||
|
||||
return `https://github.com/lucide-icons/lucide/releases/tag/${shouldAddV ? 'v' : ''}${version}`
|
||||
}
|
||||
|
||||
function onClose() {
|
||||
emit('close')
|
||||
}
|
||||
@@ -43,7 +50,7 @@ const Expand = createLucideIcon('Expand', expand)
|
||||
<Badge
|
||||
v-if="icon.createdRelease"
|
||||
class="version"
|
||||
:href="`https://github.com/lucide-icons/lucide/releases/tag/v${icon.createdRelease.version}`"
|
||||
:href="releaseTagLink(icon.createdRelease.version)"
|
||||
target="_blank"
|
||||
rel="noreferrer noopener"
|
||||
>v{{ icon.createdRelease.version }}</Badge>
|
||||
|
||||
@@ -1,93 +1,92 @@
|
||||
<script setup lang="ts">
|
||||
import { ref, computed, defineAsyncComponent } from 'vue'
|
||||
import type { IconEntity, Category } from '../../types'
|
||||
import useSearch from '../../composables/useSearch'
|
||||
import InputSearch from '../base/InputSearch.vue'
|
||||
import useSearchInput from '../../composables/useSearchInput'
|
||||
import StickyBar from './StickyBar.vue'
|
||||
import IconsCategory from './IconsCategory.vue'
|
||||
import { useFetch } from '@vueuse/core'
|
||||
import useFetchTags from '../../composables/useFetchTags'
|
||||
import useFetchCategories from '../../composables/useFetchCategories'
|
||||
import { ref, computed, defineAsyncComponent } from 'vue';
|
||||
import type { IconEntity, Category } from '../../types';
|
||||
import useSearch from '../../composables/useSearch';
|
||||
import InputSearch from '../base/InputSearch.vue';
|
||||
import useSearchInput from '../../composables/useSearchInput';
|
||||
import StickyBar from './StickyBar.vue';
|
||||
import IconsCategory from './IconsCategory.vue';
|
||||
import { useFetch } from '@vueuse/core';
|
||||
import useFetchTags from '../../composables/useFetchTags';
|
||||
import useFetchCategories from '../../composables/useFetchCategories';
|
||||
|
||||
const props = defineProps<{
|
||||
icons: IconEntity[]
|
||||
categories: Category[]
|
||||
iconCategories: Record<string, string[]>
|
||||
}>()
|
||||
icons: IconEntity[];
|
||||
categories: Category[];
|
||||
iconCategories: Record<string, string[]>;
|
||||
}>();
|
||||
|
||||
const activeIconName = ref(null)
|
||||
const { searchInput, searchQuery, searchQueryThrottled } = useSearchInput()
|
||||
const activeIconName = ref(null);
|
||||
const { searchInput, searchQuery, searchQueryDebounced } = useSearchInput();
|
||||
|
||||
const isSearching = computed(() => !!searchQuery.value)
|
||||
const isSearching = computed(() => !!searchQuery.value);
|
||||
|
||||
function setActiveIconName(name: string) {
|
||||
activeIconName.value = name
|
||||
activeIconName.value = name;
|
||||
}
|
||||
|
||||
const { execute: fetchTags, data: tags } = useFetchTags()
|
||||
const { execute: fetchCategories, data: categoriesMap } = useFetchCategories()
|
||||
const { execute: fetchTags, data: tags } = useFetchTags();
|
||||
const { execute: fetchCategories, data: categoriesMap } = useFetchCategories();
|
||||
|
||||
const mappedIcons = computed(() => {
|
||||
if(tags.value == null) {
|
||||
return props.icons
|
||||
if (tags.value == null) {
|
||||
return props.icons;
|
||||
}
|
||||
return props.icons.map((icon) => {
|
||||
const iconTags = tags.value[icon.name]
|
||||
const iconCategories = categoriesMap.value?.[icon.name] ?? []
|
||||
const iconTags = tags.value[icon.name];
|
||||
const iconCategories = categoriesMap.value?.[icon.name] ?? [];
|
||||
|
||||
return {
|
||||
...icon,
|
||||
tags: iconTags,
|
||||
categories: iconCategories,
|
||||
}
|
||||
})
|
||||
})
|
||||
};
|
||||
});
|
||||
});
|
||||
|
||||
const searchResults = useSearch(searchQuery, mappedIcons, [
|
||||
{ name: 'name', weight: 2 },
|
||||
{ name: 'tags', weight: 1 },
|
||||
])
|
||||
]);
|
||||
|
||||
const categories = computed(() => {
|
||||
if( !props.categories?.length || !props.icons?.length ) return []
|
||||
if (!props.categories?.length || !props.icons?.length) return [];
|
||||
|
||||
return props.categories.map(({ name, title }) => {
|
||||
const categoryIcons = props.icons.filter((icon) => {
|
||||
const iconCategories = props.iconCategories[icon.name]
|
||||
return props.categories
|
||||
.map(({ name, title }) => {
|
||||
const categoryIcons = props.icons.filter((icon) => {
|
||||
const iconCategories = props.iconCategories[icon.name];
|
||||
|
||||
return iconCategories?.includes(name)
|
||||
return iconCategories?.includes(name);
|
||||
});
|
||||
|
||||
const searchedCategoryIcons = isSearching
|
||||
? categoryIcons.filter((icon) =>
|
||||
searchResults.value.some((item) => item?.name === icon?.name)
|
||||
)
|
||||
: categoryIcons;
|
||||
|
||||
return {
|
||||
title,
|
||||
name,
|
||||
icons: searchedCategoryIcons,
|
||||
};
|
||||
})
|
||||
|
||||
const searchedCategoryIcons = isSearching
|
||||
? categoryIcons.filter(icon => searchResults.value.some((item) => item?.name === icon?.name))
|
||||
: categoryIcons;
|
||||
|
||||
return {
|
||||
title,
|
||||
name,
|
||||
icons: searchedCategoryIcons,
|
||||
};
|
||||
})
|
||||
.filter(({ icons }) => icons.length)
|
||||
})
|
||||
.filter(({ icons }) => icons.length);
|
||||
});
|
||||
|
||||
function onFocusSearchInput() {
|
||||
if (tags.value == null) {
|
||||
fetchTags()
|
||||
fetchTags();
|
||||
}
|
||||
if (categoriesMap.value == null) {
|
||||
fetchCategories()
|
||||
fetchCategories();
|
||||
}
|
||||
}
|
||||
|
||||
const NoResults = defineAsyncComponent(() =>
|
||||
import('./NoResults.vue')
|
||||
)
|
||||
const NoResults = defineAsyncComponent(() => import('./NoResults.vue'));
|
||||
|
||||
const IconDetailOverlay = defineAsyncComponent(() =>
|
||||
import('./IconDetailOverlay.vue')
|
||||
)
|
||||
const IconDetailOverlay = defineAsyncComponent(() => import('./IconDetailOverlay.vue'));
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@@ -100,11 +99,7 @@ const IconDetailOverlay = defineAsyncComponent(() =>
|
||||
@focus="onFocusSearchInput"
|
||||
/>
|
||||
</StickyBar>
|
||||
<NoResults
|
||||
v-if="categories.length === 0"
|
||||
:searchQuery="searchQuery"
|
||||
@clear="searchQuery = ''"
|
||||
/>
|
||||
<NoResults v-if="categories.length === 0" :searchQuery="searchQuery" @clear="searchQuery = ''" />
|
||||
<IconsCategory
|
||||
v-for="category in categories"
|
||||
:key="category.name"
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
<script setup lang="ts">
|
||||
import { ref, computed, watch, defineAsyncComponent } from 'vue'
|
||||
import type { IconEntity } from '../../types'
|
||||
import { useMediaQuery, useOffsetPagination } from '@vueuse/core'
|
||||
import IconGrid from './IconGrid.vue'
|
||||
import InputSearch from '../base/InputSearch.vue'
|
||||
import useSearch from '../../composables/useSearch'
|
||||
import EndOfPage from '../base/EndOfPage.vue'
|
||||
import useSearchInput from '../../composables/useSearchInput'
|
||||
import StickyBar from './StickyBar.vue'
|
||||
import useFetchTags from '../../composables/useFetchTags'
|
||||
import useFetchCategories from '../../composables/useFetchCategories'
|
||||
import { ref, computed, watch, defineAsyncComponent } from 'vue';
|
||||
import type { IconEntity } from '../../types';
|
||||
import { useMediaQuery, useOffsetPagination } from '@vueuse/core';
|
||||
import IconGrid from './IconGrid.vue';
|
||||
import InputSearch from '../base/InputSearch.vue';
|
||||
import useSearch from '../../composables/useSearch';
|
||||
import EndOfPage from '../base/EndOfPage.vue';
|
||||
import useSearchInput from '../../composables/useSearchInput';
|
||||
import StickyBar from './StickyBar.vue';
|
||||
import useFetchTags from '../../composables/useFetchTags';
|
||||
import useFetchCategories from '../../composables/useFetchCategories';
|
||||
|
||||
const props = defineProps<{
|
||||
icons: IconEntity[]
|
||||
}>()
|
||||
icons: IconEntity[];
|
||||
}>();
|
||||
|
||||
const activeIconName = ref(null)
|
||||
const activeIconName = ref(null);
|
||||
|
||||
const isExtraLargeScreen = useMediaQuery('(min-width: 1440px)');
|
||||
const isLargeScreen = useMediaQuery('(min-width: 1280px)');
|
||||
@@ -23,84 +23,78 @@ const isMediumScreen = useMediaQuery('(min-width: 960px)');
|
||||
const isSmallScreen = useMediaQuery('(min-width: 640px)');
|
||||
|
||||
const pageSize = computed(() => {
|
||||
if(isExtraLargeScreen.value) {
|
||||
if (isExtraLargeScreen.value) {
|
||||
return 16 * 20;
|
||||
}
|
||||
if(isLargeScreen.value) {
|
||||
if (isLargeScreen.value) {
|
||||
return 16 * 12;
|
||||
}
|
||||
if(isMediumScreen.value) {
|
||||
if (isMediumScreen.value) {
|
||||
return 13 * 12;
|
||||
}
|
||||
|
||||
if(isSmallScreen.value) {
|
||||
if (isSmallScreen.value) {
|
||||
return 10 * 10;
|
||||
}
|
||||
|
||||
return 10 * 5;
|
||||
})
|
||||
});
|
||||
|
||||
const { execute: fetchTags, data: tags } = useFetchTags()
|
||||
const { execute: fetchCategories, data: categories } = useFetchCategories()
|
||||
const { execute: fetchTags, data: tags } = useFetchTags();
|
||||
const { execute: fetchCategories, data: categories } = useFetchCategories();
|
||||
|
||||
const mappedIcons = computed(() => {
|
||||
if(tags.value == null) {
|
||||
return props.icons
|
||||
if (tags.value == null) {
|
||||
return props.icons;
|
||||
}
|
||||
|
||||
return props.icons.map((icon) => {
|
||||
const iconTags = tags.value[icon.name]
|
||||
const iconCategories = categories.value?.[icon.name] ?? []
|
||||
const iconTags = tags.value[icon.name];
|
||||
const iconCategories = categories.value?.[icon.name] ?? [];
|
||||
|
||||
return {
|
||||
...icon,
|
||||
tags: iconTags,
|
||||
categories: iconCategories,
|
||||
}
|
||||
})
|
||||
})
|
||||
};
|
||||
});
|
||||
});
|
||||
|
||||
const { searchInput, searchQuery, searchQueryThrottled } = useSearchInput()
|
||||
const searchResults = useSearch(searchQueryThrottled, mappedIcons, [
|
||||
const { searchInput, searchQuery, searchQueryDebounced } = useSearchInput();
|
||||
const searchResults = useSearch(searchQueryDebounced, mappedIcons, [
|
||||
{ name: 'name', weight: 3 },
|
||||
{ name: 'tags', weight: 2 },
|
||||
{ name: 'categories', weight: 1 },
|
||||
])
|
||||
|
||||
const { next, currentPage } = useOffsetPagination( { pageSize })
|
||||
]);
|
||||
|
||||
const { next, currentPage } = useOffsetPagination({ pageSize });
|
||||
|
||||
const paginatedIcons = computed(() => {
|
||||
const end = pageSize.value * currentPage.value
|
||||
const end = pageSize.value * currentPage.value;
|
||||
|
||||
return searchResults.value.slice(0, end)
|
||||
})
|
||||
return searchResults.value.slice(0, end);
|
||||
});
|
||||
|
||||
function setActiveIconName(name: string) {
|
||||
activeIconName.value = name
|
||||
activeIconName.value = name;
|
||||
}
|
||||
|
||||
watch(searchQueryThrottled, (searchString) => {
|
||||
currentPage.value = 1
|
||||
})
|
||||
watch(searchQueryDebounced, (searchString) => {
|
||||
currentPage.value = 1;
|
||||
});
|
||||
|
||||
function onFocusSearchInput() {
|
||||
if (tags.value == null) {
|
||||
fetchTags()
|
||||
fetchTags();
|
||||
}
|
||||
if (categories.value == null) {
|
||||
fetchCategories()
|
||||
fetchCategories();
|
||||
}
|
||||
}
|
||||
|
||||
const NoResults = defineAsyncComponent(() =>
|
||||
import('./NoResults.vue')
|
||||
)
|
||||
|
||||
const IconDetailOverlay = defineAsyncComponent(() =>
|
||||
import('./IconDetailOverlay.vue')
|
||||
)
|
||||
const NoResults = defineAsyncComponent(() => import('./NoResults.vue'));
|
||||
|
||||
const IconDetailOverlay = defineAsyncComponent(() => import('./IconDetailOverlay.vue'));
|
||||
</script>
|
||||
|
||||
<template>
|
||||
@@ -124,7 +118,7 @@ const IconDetailOverlay = defineAsyncComponent(() =>
|
||||
:icons="paginatedIcons"
|
||||
@setActiveIcon="setActiveIconName"
|
||||
/>
|
||||
<EndOfPage @end-of-page="next" class="bottom-page"/>
|
||||
<EndOfPage @end-of-page="next" class="bottom-page" />
|
||||
<IconDetailOverlay
|
||||
v-if="activeIconName != null"
|
||||
:iconName="activeIconName"
|
||||
|
||||
@@ -1,24 +1,30 @@
|
||||
<script setup lang="ts">
|
||||
import {data} from './PackageList.data'
|
||||
import GridSection from '../base/GridSection.vue'
|
||||
import PackageListItem from "./PackageListItem.vue";</script>
|
||||
|
||||
<template>
|
||||
<section class="package-group">
|
||||
<h1 class="name">Packages</h1>
|
||||
<div class="grid package-list" ref="container">
|
||||
<div v-for="packageData in data.packages" class="item">
|
||||
<PackageListItem :packageData="packageData"/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section class="package-group">
|
||||
<h2 class="name">Third-party packages</h2>
|
||||
<div class="grid package-list" ref="container">
|
||||
<div v-for="packageData in data.thirdPartyPackages" class="item">
|
||||
<PackageListItem :packageData="packageData"/>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<GridSection
|
||||
title="Packages"
|
||||
:headingLevel="1"
|
||||
class="package-group"
|
||||
>
|
||||
<PackageListItem
|
||||
v-for="packageData in data.packages"
|
||||
:packageData="packageData"
|
||||
/>
|
||||
</GridSection>
|
||||
|
||||
<GridSection
|
||||
title="Third-party packages"
|
||||
:headingLevel="2"
|
||||
class="package-group"
|
||||
>
|
||||
<PackageListItem
|
||||
v-for="packageData in data.thirdPartyPackages"
|
||||
:packageData="packageData"
|
||||
/>
|
||||
</GridSection>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
@@ -26,7 +32,7 @@ import PackageListItem from "./PackageListItem.vue";</script>
|
||||
font-size: 32px;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
margin-bottom: 24px;
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
|
||||
.package-group {
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
import { useRouter } from 'vitepress';
|
||||
import {PackageItem} from "../../types";
|
||||
import VPButton from 'vitepress/dist/client/theme-default/components/VPButton.vue';
|
||||
import Card from '../base/Card.vue'
|
||||
|
||||
const { go } = useRouter()
|
||||
const props = defineProps<{
|
||||
@@ -10,48 +11,42 @@ const props = defineProps<{
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<article class="package">
|
||||
<header class="package-header">
|
||||
<div class="package-icon-well">
|
||||
<img :src="packageData.icon" alt="" class="package-icon" :class="{[packageData.iconClass]: true, light: packageData.iconDark}" />
|
||||
<img v-if="packageData.iconDark" :src="packageData.iconDark" alt="" class="package-icon dark" :class="packageData.iconClass" />
|
||||
<div>
|
||||
<Card class="package">
|
||||
<header class="package-header">
|
||||
<div class="package-icon-well">
|
||||
<img :src="packageData.icon" alt="" class="package-icon" :class="{[packageData.iconClass]: true, light: packageData.iconDark}" />
|
||||
<img v-if="packageData.iconDark" :src="packageData.iconDark" alt="" class="package-icon dark" :class="packageData.iconClass" />
|
||||
</div>
|
||||
<div class="package-title">
|
||||
<h2 class="title">{{ props.packageData.name }}</h2>
|
||||
<a v-for="shield in props.packageData.shields" :href="shield.href" class="package-shield" rel="noreferrer noopener">
|
||||
<img :src="shield.src" :alt="shield.href" />
|
||||
</a>
|
||||
</div>
|
||||
</header>
|
||||
<div class="package-details">
|
||||
{{ packageData.description }}
|
||||
</div>
|
||||
<div class="package-title">
|
||||
<h2 class="title">{{ props.packageData.name }}</h2>
|
||||
<a v-for="shield in props.packageData.shields" :href="shield.href" class="package-shield" rel="noreferrer noopener">
|
||||
<img :src="shield.src" :alt="shield.href" />
|
||||
</a>
|
||||
</div>
|
||||
</header>
|
||||
<div class="package-details">
|
||||
{{ packageData.description }}
|
||||
</div>
|
||||
<footer class="package-footer">
|
||||
<VPButton
|
||||
:href="packageData.documentation"
|
||||
text="Guide"
|
||||
theme="brand"
|
||||
@click="go(packageData.documentation)"
|
||||
/>
|
||||
<VPButton
|
||||
:href="packageData.source"
|
||||
text="Source"
|
||||
theme="alt"
|
||||
@click="go(packageData.source)"
|
||||
/>
|
||||
</footer>
|
||||
</article>
|
||||
<footer class="package-footer">
|
||||
<VPButton
|
||||
:href="packageData.documentation"
|
||||
text="Guide"
|
||||
theme="brand"
|
||||
@click="go(packageData.documentation)"
|
||||
/>
|
||||
<VPButton
|
||||
:href="packageData.source"
|
||||
text="Source"
|
||||
theme="alt"
|
||||
@click="go(packageData.source)"
|
||||
/>
|
||||
</footer>
|
||||
</Card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
.package {
|
||||
border: 1px solid var(--vp-c-bg-soft);
|
||||
border-radius: 12px;
|
||||
background-color: var(--vp-c-bg-soft);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 24px;
|
||||
}
|
||||
.package {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
||||
72
docs/.vitepress/theme/components/showcase/ShowcaseList.vue
Normal file
@@ -0,0 +1,72 @@
|
||||
<script setup lang="ts">
|
||||
import companies from '../../../data/companiesData.json'
|
||||
import componentLibraries from '../../../data/componentLibrariesData.json'
|
||||
import GridSection from '../base/GridSection.vue'
|
||||
import ShowcaseListItem from "./ShowcaseListItem.vue";
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<GridSection
|
||||
title="Used by"
|
||||
:headingLevel="1"
|
||||
class="package-group"
|
||||
>
|
||||
<ShowcaseListItem
|
||||
v-for="company in companies"
|
||||
:showcaseItem="company"
|
||||
/>
|
||||
</GridSection>
|
||||
|
||||
<GridSection
|
||||
title="Used in"
|
||||
:headingLevel="1"
|
||||
class="package-group"
|
||||
>
|
||||
<ShowcaseListItem
|
||||
v-for="componentLibrary in componentLibraries"
|
||||
:showcaseItem="componentLibrary"
|
||||
/>
|
||||
</GridSection>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
.name {
|
||||
font-size: 32px;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
|
||||
.package-group {
|
||||
margin-bottom: 96px;
|
||||
}
|
||||
|
||||
.grid {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
align-items: stretch;
|
||||
justify-content: center;
|
||||
align-content: space-evenly;
|
||||
box-sizing: border-box;
|
||||
margin: -8px;
|
||||
}
|
||||
|
||||
.grid > * {
|
||||
flex-basis: 100%;
|
||||
box-sizing: border-box;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
@media (min-width: 960px) {
|
||||
.grid > * {
|
||||
flex-basis: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 1280px) {
|
||||
.grid > * {
|
||||
flex-basis: 33.33%;
|
||||
}
|
||||
}
|
||||
|
||||
</style>
|
||||
@@ -0,0 +1,52 @@
|
||||
<script setup lang="ts">
|
||||
import { useRouter } from 'vitepress';
|
||||
import { ShowcaseItem } from "../../types";
|
||||
import Card from '../base/Card.vue'
|
||||
|
||||
const { go } = useRouter()
|
||||
defineProps<{
|
||||
showcaseItem: ShowcaseItem,
|
||||
}>()
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div>
|
||||
<Card
|
||||
class="company"
|
||||
:href="showcaseItem.url"
|
||||
:aria-label="showcaseItem.name"
|
||||
>
|
||||
<img
|
||||
:src="showcaseItem.image.light"
|
||||
class="logo light"
|
||||
:alt="`${showcaseItem.name} logo`"
|
||||
/>
|
||||
<img
|
||||
:src="showcaseItem.image.dark"
|
||||
class="logo dark"
|
||||
:alt="`${showcaseItem.name} logo`"
|
||||
/>
|
||||
</Card>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<style scoped>
|
||||
.company {
|
||||
display: flex;
|
||||
height: 100%;
|
||||
padding: 48px 0;
|
||||
}
|
||||
|
||||
.logo {
|
||||
height:64px;
|
||||
width: 240px;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
html.dark .logo.dark {
|
||||
display: none;
|
||||
}
|
||||
html:not(.dark) .logo.light {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
@@ -1,43 +1,40 @@
|
||||
import { refThrottled } from '@vueuse/core';
|
||||
import { useDebounce } from '@vueuse/core';
|
||||
import { nextTick, onMounted, ref, watch } from 'vue';
|
||||
|
||||
const useSearchInput = () => {
|
||||
const searchInput = ref()
|
||||
const searchInput = ref();
|
||||
const searchQuery = ref(
|
||||
typeof window === 'undefined'
|
||||
? ''
|
||||
: (
|
||||
new URLSearchParams(window.location.search).get('search')
|
||||
|| ''
|
||||
)
|
||||
)
|
||||
const searchQueryThrottled = refThrottled(searchQuery, 400)
|
||||
? ''
|
||||
: new URLSearchParams(window.location.search).get('search') || ''
|
||||
);
|
||||
const searchQueryDebounced = useDebounce(searchQuery, 250);
|
||||
|
||||
watch(searchQueryThrottled, (searchString) => {
|
||||
watch(searchQueryDebounced, (searchString) => {
|
||||
const newUrl = new URL(window.location.href);
|
||||
|
||||
if(searchString === '') {
|
||||
if (searchString === '') {
|
||||
newUrl.searchParams.delete('search');
|
||||
} else {
|
||||
newUrl.searchParams.set('search', searchString);
|
||||
}
|
||||
|
||||
nextTick(() => {
|
||||
window.history.replaceState({}, '', newUrl)
|
||||
})
|
||||
})
|
||||
window.history.replaceState({}, '', newUrl);
|
||||
});
|
||||
});
|
||||
|
||||
onMounted(() => {
|
||||
const searchParams = new URLSearchParams(window.location.search);
|
||||
if(searchParams.has('focus')) {
|
||||
searchInput.value.focus()
|
||||
if (searchParams.has('focus')) {
|
||||
searchInput.value.focus();
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
return {
|
||||
searchInput,
|
||||
searchQuery,
|
||||
searchQueryThrottled
|
||||
searchQueryDebounced,
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -44,3 +44,14 @@ export interface Release {
|
||||
version: string
|
||||
date: string
|
||||
}
|
||||
|
||||
interface ShowcaseItemImage {
|
||||
light: string
|
||||
dark: string
|
||||
}
|
||||
|
||||
export interface ShowcaseItem {
|
||||
name: string
|
||||
url: string
|
||||
image: ShowcaseItemImage
|
||||
}
|
||||
|
||||
@@ -11,5 +11,5 @@
|
||||
/* layout stuff */
|
||||
display: flex;
|
||||
gap: 0.25em;
|
||||
items-align: center;
|
||||
}
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
@@ -14,15 +14,15 @@ The Illustrator template is created following guidelines from the [Icon Design G
|
||||
|
||||
**Workflow:**
|
||||
|
||||
1. Download and open the [Illustrator template](https://github.com/lucide-icons/lucide/blob/main/docs/templates/illustrator_template.ai).
|
||||
1. Download and open the [Illustrator template](https://github.com/lucide-icons/lucide/blob/main/docs/public/templates/illustrator_template.ai).
|
||||
|
||||
2. You can now remove the content from the example logo layer ("Draw") and start creating.
|
||||
|
||||
3. Verify that you follow the [Icon Design Guidelines](icon-design-guide.md).
|
||||
|
||||
4. Before you export the file as an SVG make sure to check that you followed the guidelines and remove all unecessary layers (especially "Padding" and "Grid").
|
||||
4. Before you export the file as an SVG make sure to check that you followed the guidelines and remove all unnecessary layers (especially "Padding" and "Grid").
|
||||
|
||||
5. Export the file with the export menu under: `Export > Export As..` than safe the file as SVG. Select the following options in the SVG Options dialog:
|
||||
5. Export the file with the export menu under: `Export > Export As..` then save the file as SVG. Select the following options in the SVG Options dialog:
|
||||
|
||||

|
||||
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
# lucide_icons
|
||||
|
||||
Lucide Icons ([lucide.dev](https://lucide.dev)) for Flutter. Visit the website for the full list of icons
|
||||
|
||||
## Example
|
||||
```dart
|
||||
Icon(LucideIcons.activity);
|
||||
```
|
||||
@@ -4,7 +4,7 @@ Implementation of the lucide icon library for React Native applications
|
||||
|
||||
## Installation
|
||||
|
||||
First, ensure that you have `react-native-svg@^12.0.0` installed. Then, install the package:
|
||||
First, ensure that you have `react-native-svg` (version between 12 and 14) installed. Then, install the package:
|
||||
|
||||
::: code-group
|
||||
|
||||
|
||||
@@ -99,8 +99,6 @@ export default App;
|
||||
|
||||
#### With Dynamic Imports
|
||||
|
||||
> :warning: This is experimental and only works with bundlers that support 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.
|
||||
@@ -134,7 +132,21 @@ 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 load the icon component dynamically.
|
||||
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'
|
||||
|
||||
@@ -2,6 +2,11 @@
|
||||
|
||||
Implementation of the lucide icon library for Vue applications.
|
||||
|
||||
::: warning
|
||||
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.
|
||||
The Lucide Vue package will be only maintained for Vue 3 after the deprecation.
|
||||
:::
|
||||
|
||||
## Vue 2 or Vue 3
|
||||
|
||||
::: tip
|
||||
|
||||
@@ -21,6 +21,7 @@ import Label from '../.vitepress/theme/components/base/Label.vue'
|
||||
import VPButton from 'vitepress/dist/client/theme-default/components/VPButton.vue';
|
||||
import { data } from './codeExamples.data'
|
||||
import { camelCase, startCase } from 'lodash-es'
|
||||
import { satisfies } from 'semver'
|
||||
|
||||
const { params } = useData()
|
||||
|
||||
@@ -35,6 +36,12 @@ const codeExample = computed(() => data.codeExamples?.map(
|
||||
}
|
||||
).join('') ?? []
|
||||
)
|
||||
|
||||
function releaseTagLink(version) {
|
||||
const shouldAddV = satisfies(version, `<0.266.0`)
|
||||
|
||||
return `https://github.com/lucide-icons/lucide/releases/tag/${shouldAddV ? 'v' : ''}${version}`
|
||||
}
|
||||
</script>
|
||||
|
||||
<div :class="$style.layout">
|
||||
@@ -61,7 +68,7 @@ const codeExample = computed(() => data.codeExamples?.map(
|
||||
>
|
||||
<Label>Created:</Label>
|
||||
<Badge
|
||||
:href="`https://github.com/lucide-icons/lucide/releases/tag/v${params.createdRelease.version}`"
|
||||
:href="releaseTagLink(params.createdRelease.version)"
|
||||
target="_blank"
|
||||
rel="noreferrer noopener"
|
||||
>
|
||||
@@ -74,7 +81,7 @@ const codeExample = computed(() => data.codeExamples?.map(
|
||||
>
|
||||
<Label>Last changed:</Label>
|
||||
<Badge
|
||||
:href="`https://github.com/lucide-icons/lucide/releases/tag/v${params.changedRelease.version}`"
|
||||
:href="releaseTagLink(params.changedRelease.version)"
|
||||
target="_blank"
|
||||
rel="noreferrer noopener"
|
||||
>
|
||||
|
||||
|
Before Width: | Height: | Size: 56 KiB After Width: | Height: | Size: 57 KiB |
@@ -25,11 +25,12 @@
|
||||
"license": "ISC",
|
||||
"devDependencies": {
|
||||
"@rollup/plugin-replace": "^5.0.2",
|
||||
"@types/semver": "^7.5.3",
|
||||
"h3": "^1.8.0",
|
||||
"nitropack": "npm:nitropack-edge@latest",
|
||||
"node-fetch": "2",
|
||||
"rollup-plugin-copy": "^3.4.0",
|
||||
"vitepress": "1.0.0-rc.10"
|
||||
"vitepress": "1.0.0-rc.30"
|
||||
},
|
||||
"dependencies": {
|
||||
"@floating-ui/vue": "^1.0.1",
|
||||
@@ -49,8 +50,7 @@
|
||||
"react-dom": "^18.2.0",
|
||||
"sandpack-vue3": "^3.1.6",
|
||||
"semver": "^7.5.2",
|
||||
"shiki": "^0.14.2",
|
||||
"shiki-processor": "^0.1.3",
|
||||
"shikiji": "^0.7.4",
|
||||
"simple-git": "^3.18.0",
|
||||
"sitemap": "^7.1.1",
|
||||
"svg-pathdata": "^6.0.3",
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
layout: page
|
||||
outline: 2
|
||||
outlineTitle: Packages
|
||||
sidebar: true
|
||||
---
|
||||
<script setup>
|
||||
import PageContainer from '.vitepress/theme/components/PageContainer.vue'
|
||||
|
||||
28
docs/public/company-logos/noodle-dark.svg
Normal file
@@ -0,0 +1,28 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="10 -10 304 120">
|
||||
<g clip-path="url(#a)">
|
||||
<g clip-path="url(#b)">
|
||||
<path fill="url(#c)" d="M72 0H28A28 28 0 0 0 0 28v44a28 28 0 0 0 28 28h44a28 28 0 0 0 28-28V28A28 28 0 0 0 72 0Z"/>
|
||||
<path stroke="#161616" stroke-linecap="round" stroke-linejoin="round" stroke-width="4" d="m47.81 54.34 26.63-6.66-19.73-19.1-26.63 6.67 19.73 19.1Z"/>
|
||||
<path stroke="#161616" stroke-linecap="round" stroke-linejoin="round" stroke-width="4" d="m47.81 54.34 18.23-4.56c.67 5.86-.29 11.8-2.76 17.15a31.87 31.87 0 0 0-19.65 3.01 31.87 31.87 0 0 0-15.5-12.43 32.2 32.2 0 0 1 6.18-16.23l13.5 13.06Z"/>
|
||||
<path stroke="#161616" stroke-linecap="round" stroke-linejoin="round" stroke-width="4" d="m33.37 67.04 5.17-19.32 11.84-2.96m-2.57 9.58 26.63-6.66-19.73-19.1-26.63 6.67 19.73 19.1Zm0 0 18.23-4.56c.67 5.86-.29 11.8-2.76 17.15a31.87 31.87 0 0 0-19.65 3.01 31.87 31.87 0 0 0-15.5-12.43 32.2 32.2 0 0 1 6.18-16.23l13.5 13.06Z"/>
|
||||
</g>
|
||||
<path fill="#161616" d="M281.5 67.51c-2.63 0-4.9-.54-6.8-1.64a11.08 11.08 0 0 1-4.39-4.67 15.64 15.64 0 0 1-1.53-7.14c0-2.7.51-5.05 1.53-7.09a11.6 11.6 0 0 1 4.33-4.77 12.14 12.14 0 0 1 6.53-1.72c1.62 0 3.14.26 4.57.78 1.44.51 2.72 1.3 3.82 2.39a11.18 11.18 0 0 1 2.62 4.12c.64 1.66.96 3.64.96 5.93v1.9h-21.46v-4.16h15.54a6.63 6.63 0 0 0-.76-3.16 5.58 5.58 0 0 0-2.1-2.2 5.9 5.9 0 0 0-3.1-.8c-1.26 0-2.37.31-3.33.92-.95.6-1.7 1.4-2.23 2.4a6.88 6.88 0 0 0-.8 3.21v3.63c0 1.53.28 2.83.83 3.92a5.96 5.96 0 0 0 2.34 2.5c1 .56 2.17.84 3.51.84.9 0 1.71-.12 2.44-.37a5.4 5.4 0 0 0 1.89-1.14c.53-.5.94-1.12 1.21-1.86l5.76.65a9 9 0 0 1-2.08 3.99c-1 1.12-2.3 2-3.88 2.62-1.58.61-3.39.92-5.42.92Z"/>
|
||||
<path fill="#161616" d="M263.56 32.1V67h-6.17V32.1h6.17Z"/>
|
||||
<path fill="#161616" d="M236.87 67.46a9.9 9.9 0 0 1-5.52-1.58 10.77 10.77 0 0 1-3.85-4.6 17.18 17.18 0 0 1-1.42-7.34c0-2.9.48-5.36 1.43-7.36a10.6 10.6 0 0 1 3.9-4.55 10.03 10.03 0 0 1 5.48-1.55c1.53 0 2.8.26 3.78.78a7.13 7.13 0 0 1 2.35 1.86c.58.72 1.03 1.4 1.35 2.03h.26V32.09h6.18V67h-6.06v-4.13h-.38c-.32.64-.78 1.32-1.38 2.03a7.6 7.6 0 0 1-6.12 2.56Zm1.72-5.06c1.3 0 2.42-.35 3.34-1.06a6.6 6.6 0 0 0 2.1-2.98c.48-1.27.72-2.76.72-4.45 0-1.7-.24-3.17-.72-4.42a6.28 6.28 0 0 0-2.08-2.91 5.38 5.38 0 0 0-3.36-1.04c-1.37 0-2.52.36-3.44 1.07a6.5 6.5 0 0 0-2.08 2.97c-.47 1.26-.7 2.7-.7 4.33 0 1.64.23 3.1.7 4.38a6.84 6.84 0 0 0 2.1 3.02 5.4 5.4 0 0 0 3.42 1.09Z"/>
|
||||
<path fill="#161616" d="M209.37 67.51c-2.56 0-4.77-.56-6.65-1.69a11.46 11.46 0 0 1-4.36-4.72 15.52 15.52 0 0 1-1.53-7.09c0-2.7.5-5.07 1.53-7.1a11.43 11.43 0 0 1 4.36-4.75 12.68 12.68 0 0 1 6.65-1.68c2.56 0 4.78.56 6.65 1.68a11.32 11.32 0 0 1 4.35 4.74 15.47 15.47 0 0 1 1.55 7.11c0 2.7-.52 5.07-1.55 7.1a11.34 11.34 0 0 1-4.35 4.71 12.68 12.68 0 0 1-6.65 1.7Zm.04-4.94c1.38 0 2.54-.38 3.47-1.14a6.89 6.89 0 0 0 2.08-3.1c.47-1.3.7-2.74.7-4.34 0-1.6-.23-3.05-.7-4.34a6.88 6.88 0 0 0-2.08-3.12 5.27 5.27 0 0 0-3.47-1.16c-1.42 0-2.6.39-3.55 1.16a7 7 0 0 0-2.1 3.12c-.45 1.3-.68 2.74-.68 4.34 0 1.6.23 3.04.68 4.33a7 7 0 0 0 2.1 3.1 5.46 5.46 0 0 0 3.55 1.15Z"/>
|
||||
<path fill="#161616" d="M180.17 67.51c-2.56 0-4.77-.56-6.65-1.69a11.46 11.46 0 0 1-4.36-4.72 15.52 15.52 0 0 1-1.54-7.09c0-2.7.51-5.07 1.54-7.1a11.43 11.43 0 0 1 4.36-4.75 12.68 12.68 0 0 1 6.65-1.68c2.56 0 4.77.56 6.65 1.68a11.32 11.32 0 0 1 4.34 4.74 15.49 15.49 0 0 1 1.55 7.11c0 2.7-.51 5.07-1.55 7.1a11.34 11.34 0 0 1-4.34 4.71 12.68 12.68 0 0 1-6.65 1.7Zm.03-4.94c1.39 0 2.55-.38 3.48-1.14a6.89 6.89 0 0 0 2.08-3.1c.47-1.3.7-2.74.7-4.34 0-1.6-.23-3.05-.7-4.34a6.88 6.88 0 0 0-2.08-3.12 5.26 5.26 0 0 0-3.48-1.16c-1.42 0-2.6.39-3.54 1.16a7 7 0 0 0-2.1 3.12c-.45 1.3-.68 2.74-.68 4.34 0 1.6.23 3.04.68 4.33a7 7 0 0 0 2.1 3.1 5.46 5.46 0 0 0 3.54 1.15Z"/>
|
||||
<path fill="#161616" d="M162.13 32.1V67h-5.62l-16.45-23.78h-.3V67h-6.32V32.1h5.66l16.43 23.79h.31v-23.8h6.3Z"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="a">
|
||||
<path fill="#161616" d="M0 0h293.14v100H0z"/>
|
||||
</clipPath>
|
||||
<clipPath id="b">
|
||||
<path fill="#161616" d="M0 0h100v100H0z"/>
|
||||
</clipPath>
|
||||
<linearGradient id="c" x1="0" x2="100" y1="50" y2="50" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#F77062"/>
|
||||
<stop offset="1" stop-color="#FE5196"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.2 KiB |
28
docs/public/company-logos/noodle-light.svg
Normal file
@@ -0,0 +1,28 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="10 -10 304 120">
|
||||
<g clip-path="url(#a)">
|
||||
<g clip-path="url(#b)">
|
||||
<path fill="url(#c)" d="M72 0H28A28 28 0 0 0 0 28v44a28 28 0 0 0 28 28h44a28 28 0 0 0 28-28V28A28 28 0 0 0 72 0Z"/>
|
||||
<path stroke="#161616" stroke-linecap="round" stroke-linejoin="round" stroke-width="4" d="m47.81 54.34 26.63-6.66-19.73-19.1-26.63 6.67 19.73 19.1Z"/>
|
||||
<path stroke="#161616" stroke-linecap="round" stroke-linejoin="round" stroke-width="4" d="m47.81 54.34 18.23-4.56c.67 5.86-.29 11.8-2.76 17.15a31.87 31.87 0 0 0-19.65 3.01 31.87 31.87 0 0 0-15.5-12.43 32.2 32.2 0 0 1 6.18-16.23l13.5 13.06Z"/>
|
||||
<path stroke="#161616" stroke-linecap="round" stroke-linejoin="round" stroke-width="4" d="m33.37 67.04 5.17-19.32 11.84-2.96m-2.57 9.58 26.63-6.66-19.73-19.1-26.63 6.67 19.73 19.1Zm0 0 18.23-4.56c.67 5.86-.29 11.8-2.76 17.15a31.87 31.87 0 0 0-19.65 3.01 31.87 31.87 0 0 0-15.5-12.43 32.2 32.2 0 0 1 6.18-16.23l13.5 13.06Z"/>
|
||||
</g>
|
||||
<path fill="#fff" d="M281.5 67.51c-2.63 0-4.9-.54-6.8-1.64a11.08 11.08 0 0 1-4.39-4.67 15.64 15.64 0 0 1-1.53-7.14c0-2.7.51-5.05 1.53-7.09a11.6 11.6 0 0 1 4.33-4.77 12.14 12.14 0 0 1 6.53-1.72c1.62 0 3.14.26 4.57.78 1.44.51 2.72 1.3 3.82 2.39a11.18 11.18 0 0 1 2.62 4.12c.64 1.66.96 3.64.96 5.93v1.9h-21.46v-4.16h15.54a6.63 6.63 0 0 0-.76-3.16 5.58 5.58 0 0 0-2.1-2.2 5.9 5.9 0 0 0-3.1-.8c-1.26 0-2.37.31-3.33.92-.95.6-1.7 1.4-2.23 2.4a6.88 6.88 0 0 0-.8 3.21v3.63c0 1.53.28 2.83.83 3.92a5.96 5.96 0 0 0 2.34 2.5c1 .56 2.17.84 3.51.84.9 0 1.71-.12 2.44-.37a5.4 5.4 0 0 0 1.89-1.14c.53-.5.94-1.12 1.21-1.86l5.76.65a9 9 0 0 1-2.08 3.99c-1 1.12-2.3 2-3.88 2.62-1.58.61-3.39.92-5.42.92Z"/>
|
||||
<path fill="#fff" d="M263.56 32.1V67h-6.17V32.1h6.17Z"/>
|
||||
<path fill="#fff" d="M236.87 67.46a9.9 9.9 0 0 1-5.52-1.58 10.77 10.77 0 0 1-3.85-4.6 17.18 17.18 0 0 1-1.42-7.34c0-2.9.48-5.36 1.43-7.36a10.6 10.6 0 0 1 3.9-4.55 10.03 10.03 0 0 1 5.48-1.55c1.53 0 2.8.26 3.78.78a7.13 7.13 0 0 1 2.35 1.86c.58.72 1.03 1.4 1.35 2.03h.26V32.09h6.18V67h-6.06v-4.13h-.38c-.32.64-.78 1.32-1.38 2.03a7.6 7.6 0 0 1-6.12 2.56Zm1.72-5.06c1.3 0 2.42-.35 3.34-1.06a6.6 6.6 0 0 0 2.1-2.98c.48-1.27.72-2.76.72-4.45 0-1.7-.24-3.17-.72-4.42a6.28 6.28 0 0 0-2.08-2.91 5.38 5.38 0 0 0-3.36-1.04c-1.37 0-2.52.36-3.44 1.07a6.5 6.5 0 0 0-2.08 2.97c-.47 1.26-.7 2.7-.7 4.33 0 1.64.23 3.1.7 4.38a6.84 6.84 0 0 0 2.1 3.02 5.4 5.4 0 0 0 3.42 1.09Z"/>
|
||||
<path fill="#fff" d="M209.37 67.51c-2.56 0-4.77-.56-6.65-1.69a11.46 11.46 0 0 1-4.36-4.72 15.52 15.52 0 0 1-1.53-7.09c0-2.7.5-5.07 1.53-7.1a11.43 11.43 0 0 1 4.36-4.75 12.68 12.68 0 0 1 6.65-1.68c2.56 0 4.78.56 6.65 1.68a11.32 11.32 0 0 1 4.35 4.74 15.47 15.47 0 0 1 1.55 7.11c0 2.7-.52 5.07-1.55 7.1a11.34 11.34 0 0 1-4.35 4.71 12.68 12.68 0 0 1-6.65 1.7Zm.04-4.94c1.38 0 2.54-.38 3.47-1.14a6.89 6.89 0 0 0 2.08-3.1c.47-1.3.7-2.74.7-4.34 0-1.6-.23-3.05-.7-4.34a6.88 6.88 0 0 0-2.08-3.12 5.27 5.27 0 0 0-3.47-1.16c-1.42 0-2.6.39-3.55 1.16a7 7 0 0 0-2.1 3.12c-.45 1.3-.68 2.74-.68 4.34 0 1.6.23 3.04.68 4.33a7 7 0 0 0 2.1 3.1 5.46 5.46 0 0 0 3.55 1.15Z"/>
|
||||
<path fill="#fff" d="M180.17 67.51c-2.56 0-4.77-.56-6.65-1.69a11.46 11.46 0 0 1-4.36-4.72 15.52 15.52 0 0 1-1.54-7.09c0-2.7.51-5.07 1.54-7.1a11.43 11.43 0 0 1 4.36-4.75 12.68 12.68 0 0 1 6.65-1.68c2.56 0 4.77.56 6.65 1.68a11.32 11.32 0 0 1 4.34 4.74 15.49 15.49 0 0 1 1.55 7.11c0 2.7-.51 5.07-1.55 7.1a11.34 11.34 0 0 1-4.34 4.71 12.68 12.68 0 0 1-6.65 1.7Zm.03-4.94c1.39 0 2.55-.38 3.48-1.14a6.89 6.89 0 0 0 2.08-3.1c.47-1.3.7-2.74.7-4.34 0-1.6-.23-3.05-.7-4.34a6.88 6.88 0 0 0-2.08-3.12 5.26 5.26 0 0 0-3.48-1.16c-1.42 0-2.6.39-3.54 1.16a7 7 0 0 0-2.1 3.12c-.45 1.3-.68 2.74-.68 4.34 0 1.6.23 3.04.68 4.33a7 7 0 0 0 2.1 3.1 5.46 5.46 0 0 0 3.54 1.15Z"/>
|
||||
<path fill="#fff" d="M162.13 32.1V67h-5.62l-16.45-23.78h-.3V67h-6.32V32.1h5.66l16.43 23.79h.31v-23.8h6.3Z"/>
|
||||
</g>
|
||||
<defs>
|
||||
<clipPath id="a">
|
||||
<path fill="#fff" d="M0 0h293.14v100H0z"/>
|
||||
</clipPath>
|
||||
<clipPath id="b">
|
||||
<path fill="#fff" d="M0 0h100v100H0z"/>
|
||||
</clipPath>
|
||||
<linearGradient id="c" x1="0" x2="100" y1="50" y2="50" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#F77062"/>
|
||||
<stop offset="1" stop-color="#FE5196"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.1 KiB |
14
docs/public/company-logos/obsidian-dark.svg
Normal file
@@ -0,0 +1,14 @@
|
||||
<svg alt="Obsidian" height="22" viewBox="0 0 143 25" width="126" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill="#A88BFA" d="m6.91927 14.5955c.64053-.1907 1.67255-.4839 2.85923-.5565-.71191-1.7968-.88376-3.3691-.74554-4.76905.15962-1.61678.72977-2.9662 1.28554-4.11442.1186-.24501.2326-.47313.3419-.69198.1549-.30984.3004-.60109.4365-.8953.2266-.48978.3948-.92231.4798-1.32416.0836-.39515.0841-.74806-.0148-1.08657-.099-.338982-.3093-.703864-.7093-1.1038132-.5222-.1353116-1.1017-.0165173-1.53613.3742922l-5.15591 4.638241c-.28758.25871-.47636.60929-.53406.99179l-.44455 2.94723c.69903.6179 2.42435 2.41414 3.47374 4.90644.09364.2224.1819.4505.26358.6838z"></path>
|
||||
<path fill="#A88BFA" d="m2.97347 10.3512c-.02431.1037-.05852.205-.10221.3024l-2.724986 6.0735c-.279882.6238-.15095061 1.3552.325357 1.8457l4.288349 4.4163c2.1899-3.2306 1.87062-6.2699.87032-8.6457-.75846-1.8013-1.90801-3.2112-2.65683-3.9922z"></path>
|
||||
<path fill="#A88BFA" d="m5.7507 23.5094c.07515.012.15135.0192.2281.0215.81383.0244 2.18251.0952 3.29249.2997.90551.1669 2.70051.6687 4.17761 1.1005 1.1271.3294 2.2886-.5707 2.4522-1.7336.1192-.8481.343-1.8075.7553-2.6869l-.0095.0033c-.6982-1.9471-1.5865-3.2044-2.5178-4.0073-.9284-.8004-1.928-1.1738-2.8932-1.3095-1.60474-.2257-3.07497.1961-4.00103.4682.55465 2.3107.38396 5.0295-1.48417 7.8441z"></path>
|
||||
<path fill="#A88BFA" d="m17.3708 19.3102c.9267-1.3985 1.5868-2.4862 1.9352-3.0758.1742-.295.1427-.6648-.0638-.9383-.5377-.7126-1.5666-2.1607-2.1272-3.5015-.5764-1.3785-.6624-3.51876-.6673-4.56119-.0019-.39626-.1275-.78328-.3726-1.09465l-3.3311-4.23183c-.0117.19075-.0392.37998-.0788.56747-.1109.52394-.32 1.04552-.5585 1.56101-.1398.30214-.3014.62583-.4646.95284-.1086.21764-.218.4368-.3222.652-.5385 1.11265-1.0397 2.32011-1.1797 3.73901-.1299 1.31514.0478 2.84484.8484 4.67094.1333.0113.2675.0262.4023.0452 1.1488.1615 2.3546.6115 3.4647 1.5685.9541.8226 1.8163 2.0012 2.5152 3.6463z"></path>
|
||||
<path fill="#151515" d="m39.752 4.5038c-5.952 0-10.248 3.744-10.248 8.88s4.296 8.88 10.248 8.88c5.928 0 10.224-3.744 10.224-8.88s-4.296-8.88-10.224-8.88zm0 3.47999c3.576 0 6.144 2.13601 6.144 5.40001s-2.568 5.4-6.144 5.4c-3.6 0-6.168-2.136-6.168-5.4s2.568-5.40001 6.168-5.40001z"></path>
|
||||
<path fill="#151515" d="m55.4847 20.5598c.864.936 2.472 1.704 4.584 1.704 4.32 0 6.8401-2.976 6.8401-6.576 0-3.624-2.5201-6.60001-6.8401-6.60001-2.112 0-3.72.79201-4.584 1.70401v-6.02401h-3.84v17.23201h3.84zm-.12-4.944c0-1.992 1.704-3.432 3.912-3.432 2.112 0 3.888 1.248 3.888 3.504s-1.776 3.48-3.888 3.48c-2.208 0-3.912-1.416-3.912-3.408z"></path>
|
||||
<path fill="#151515" d="m67.3181 19.9118c1.464 1.488 4.272 2.352 7.2 2.352 3.96 0 6.936-1.44 6.936-4.392 0-2.88-2.832-3.432-6.072-3.816-2.736-.312-3.576-.384-3.576-1.08 0-.648.864-1.056 2.496-1.056 1.968 0 3.672.6 4.824 1.656l1.992-2.304c-1.272-1.224-3.648-2.18401-6.624-2.18401-4.008 0-6.48 1.72801-6.48 4.32001 0 2.712 2.52 3.312 5.544 3.696 2.832.336 4.032.336 4.032 1.176 0 .792-1.056 1.128-2.784 1.128-2.16 0-4.152-.672-5.664-2.064z"></path>
|
||||
<path fill="#151515" d="m82.8395 8.05579h3.912v-3.288h-3.912zm3.864 1.29601h-3.84v12.648h3.84z"></path>
|
||||
<path fill="#151515" d="m99.8264 20.5598v1.44h3.8396v-17.23201h-3.8396v6.02401c-.864-.912-2.472-1.70401-4.584-1.70401-4.32 0-6.84 2.97601-6.84 6.60001 0 3.6 2.52 6.576 6.84 6.576 2.112 0 3.72-.768 4.584-1.704zm.12-4.944v.144c0 1.992-1.704 3.408-3.912 3.408-2.112 0-3.888-1.224-3.888-3.48s1.776-3.504 3.888-3.504c2.208 0 3.912 1.44 3.912 3.432z"></path>
|
||||
<path fill="#151515" d="m105.996 8.05579h3.912v-3.288h-3.912zm3.864 1.29601h-3.84v12.648h3.84z"></path>
|
||||
<path fill="#151515" d="m116.863 22.2638c2.232 0 4.056-.648 5.208-1.656.648 1.2 2.184 1.92 4.992 1.392v-2.832c-1.344.288-1.632-.024-1.632-.696v-4.608c0-3.168-2.376-4.77601-6.408-4.77601-3.48 0-6.264 1.51201-7.056 3.79201l3.456.936c.384-.984 1.704-1.704 3.432-1.704 2.04 0 2.856.768 2.856 1.728v.072l-5.04.456c-2.976.288-5.16 1.512-5.16 3.984 0 2.496 2.232 3.912 5.352 3.912zm4.848-5.112c0 1.464-2.184 2.304-4.152 2.304-1.488 0-2.328-.432-2.328-1.248 0-.84.672-1.152 1.992-1.272l4.488-.456z"></path>
|
||||
<path fill="#151515" d="m128.379 21.9998h3.84v-6.048c0-2.184 1.2-3.456 3.288-3.456 1.968 0 3 1.296 3 3.432v6.072h3.84v-7.2c0-3.504-2.232-5.71201-5.52-5.71201-2.04 0-3.624.76801-4.608 1.80001v-1.536h-3.84z"></path>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.2 KiB |
14
docs/public/company-logos/obsidian-light.svg
Normal file
@@ -0,0 +1,14 @@
|
||||
<svg alt="Obsidian" height="22" viewBox="0 0 143 25" width="126" xmlns="http://www.w3.org/2000/svg">
|
||||
<path fill="#A88BFA" d="m6.91927 14.5955c.64053-.1907 1.67255-.4839 2.85923-.5565-.71191-1.7968-.88376-3.3691-.74554-4.76905.15962-1.61678.72977-2.9662 1.28554-4.11442.1186-.24501.2326-.47313.3419-.69198.1549-.30984.3004-.60109.4365-.8953.2266-.48978.3948-.92231.4798-1.32416.0836-.39515.0841-.74806-.0148-1.08657-.099-.338982-.3093-.703864-.7093-1.1038132-.5222-.1353116-1.1017-.0165173-1.53613.3742922l-5.15591 4.638241c-.28758.25871-.47636.60929-.53406.99179l-.44455 2.94723c.69903.6179 2.42435 2.41414 3.47374 4.90644.09364.2224.1819.4505.26358.6838z"></path>
|
||||
<path fill="#A88BFA" d="m2.97347 10.3512c-.02431.1037-.05852.205-.10221.3024l-2.724986 6.0735c-.279882.6238-.15095061 1.3552.325357 1.8457l4.288349 4.4163c2.1899-3.2306 1.87062-6.2699.87032-8.6457-.75846-1.8013-1.90801-3.2112-2.65683-3.9922z"></path>
|
||||
<path fill="#A88BFA" d="m5.7507 23.5094c.07515.012.15135.0192.2281.0215.81383.0244 2.18251.0952 3.29249.2997.90551.1669 2.70051.6687 4.17761 1.1005 1.1271.3294 2.2886-.5707 2.4522-1.7336.1192-.8481.343-1.8075.7553-2.6869l-.0095.0033c-.6982-1.9471-1.5865-3.2044-2.5178-4.0073-.9284-.8004-1.928-1.1738-2.8932-1.3095-1.60474-.2257-3.07497.1961-4.00103.4682.55465 2.3107.38396 5.0295-1.48417 7.8441z"></path>
|
||||
<path fill="#A88BFA" d="m17.3708 19.3102c.9267-1.3985 1.5868-2.4862 1.9352-3.0758.1742-.295.1427-.6648-.0638-.9383-.5377-.7126-1.5666-2.1607-2.1272-3.5015-.5764-1.3785-.6624-3.51876-.6673-4.56119-.0019-.39626-.1275-.78328-.3726-1.09465l-3.3311-4.23183c-.0117.19075-.0392.37998-.0788.56747-.1109.52394-.32 1.04552-.5585 1.56101-.1398.30214-.3014.62583-.4646.95284-.1086.21764-.218.4368-.3222.652-.5385 1.11265-1.0397 2.32011-1.1797 3.73901-.1299 1.31514.0478 2.84484.8484 4.67094.1333.0113.2675.0262.4023.0452 1.1488.1615 2.3546.6115 3.4647 1.5685.9541.8226 1.8163 2.0012 2.5152 3.6463z"></path>
|
||||
<path fill="#fff" d="m39.752 4.5038c-5.952 0-10.248 3.744-10.248 8.88s4.296 8.88 10.248 8.88c5.928 0 10.224-3.744 10.224-8.88s-4.296-8.88-10.224-8.88zm0 3.47999c3.576 0 6.144 2.13601 6.144 5.40001s-2.568 5.4-6.144 5.4c-3.6 0-6.168-2.136-6.168-5.4s2.568-5.40001 6.168-5.40001z"></path>
|
||||
<path fill="#fff" d="m55.4847 20.5598c.864.936 2.472 1.704 4.584 1.704 4.32 0 6.8401-2.976 6.8401-6.576 0-3.624-2.5201-6.60001-6.8401-6.60001-2.112 0-3.72.79201-4.584 1.70401v-6.02401h-3.84v17.23201h3.84zm-.12-4.944c0-1.992 1.704-3.432 3.912-3.432 2.112 0 3.888 1.248 3.888 3.504s-1.776 3.48-3.888 3.48c-2.208 0-3.912-1.416-3.912-3.408z"></path>
|
||||
<path fill="#fff" d="m67.3181 19.9118c1.464 1.488 4.272 2.352 7.2 2.352 3.96 0 6.936-1.44 6.936-4.392 0-2.88-2.832-3.432-6.072-3.816-2.736-.312-3.576-.384-3.576-1.08 0-.648.864-1.056 2.496-1.056 1.968 0 3.672.6 4.824 1.656l1.992-2.304c-1.272-1.224-3.648-2.18401-6.624-2.18401-4.008 0-6.48 1.72801-6.48 4.32001 0 2.712 2.52 3.312 5.544 3.696 2.832.336 4.032.336 4.032 1.176 0 .792-1.056 1.128-2.784 1.128-2.16 0-4.152-.672-5.664-2.064z"></path>
|
||||
<path fill="#fff" d="m82.8395 8.05579h3.912v-3.288h-3.912zm3.864 1.29601h-3.84v12.648h3.84z"></path>
|
||||
<path fill="#fff" d="m99.8264 20.5598v1.44h3.8396v-17.23201h-3.8396v6.02401c-.864-.912-2.472-1.70401-4.584-1.70401-4.32 0-6.84 2.97601-6.84 6.60001 0 3.6 2.52 6.576 6.84 6.576 2.112 0 3.72-.768 4.584-1.704zm.12-4.944v.144c0 1.992-1.704 3.408-3.912 3.408-2.112 0-3.888-1.224-3.888-3.48s1.776-3.504 3.888-3.504c2.208 0 3.912 1.44 3.912 3.432z"></path>
|
||||
<path fill="#fff" d="m105.996 8.05579h3.912v-3.288h-3.912zm3.864 1.29601h-3.84v12.648h3.84z"></path>
|
||||
<path fill="#fff" d="m116.863 22.2638c2.232 0 4.056-.648 5.208-1.656.648 1.2 2.184 1.92 4.992 1.392v-2.832c-1.344.288-1.632-.024-1.632-.696v-4.608c0-3.168-2.376-4.77601-6.408-4.77601-3.48 0-6.264 1.51201-7.056 3.79201l3.456.936c.384-.984 1.704-1.704 3.432-1.704 2.04 0 2.856.768 2.856 1.728v.072l-5.04.456c-2.976.288-5.16 1.512-5.16 3.984 0 2.496 2.232 3.912 5.352 3.912zm4.848-5.112c0 1.464-2.184 2.304-4.152 2.304-1.488 0-2.328-.432-2.328-1.248 0-.84.672-1.152 1.992-1.272l4.488-.456z"></path>
|
||||
<path fill="#fff" d="m128.379 21.9998h3.84v-6.048c0-2.184 1.2-3.456 3.288-3.456 1.968 0 3 1.296 3 3.432v6.072h3.84v-7.2c0-3.504-2.232-5.71201-5.52-5.71201-2.04 0-3.624.76801-4.608 1.80001v-1.536h-3.84z"></path>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 4.2 KiB |
5
docs/public/company-logos/open-collective-dark.svg
Normal file
@@ -0,0 +1,5 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="22 268.7 600 106">
|
||||
<path fill="#b8d3f4" d="M109 321.8c0 6.7-1.9 13.1-5.3 18.4l13.6 13.7c6.7-8.9 10.8-20.1 10.8-32.1s-4.2-23.2-10.8-32.1l-13.6 13.7c3.3 5.3 5.3 11.5 5.3 18.4z"/>
|
||||
<path fill="#3385ff" d="M75.1 355.9c-18.6 0-33.9-15.4-33.9-34.1 0-18.7 15.3-34.1 33.9-34.1 6.9 0 13.1 2 18.3 5.6l13.6-13.7c-8.9-6.7-20-10.9-32-10.9-29.2 0-53.1 23.7-53.1 53.3s23.9 53 53.1 53c12.2 0 23.4-4.2 32.2-10.9l-13.6-13.7c-5.2 3.5-11.6 5.5-18.5 5.5z"/>
|
||||
<path fill="#000" d="M604.45 333.8c-3.4 0-6.4-1.4-8.5-3.8-.1-.2-.1-.5.1-.6l19.9-8.4 5.8-2.5c.2-.1.2-.2.2-.4a18 18 0 0 0-18.1-13.9c-9.2.4-17 7.8-17.3 17.1a18.01 18.01 0 0 0 34.6 7.8c.1-.2 0-.5-.2-.5l-5.8-1.1c-.1 0-.4 0-.4.2-2.1 3.6-5.9 6.1-10.3 6.1zm0-23c3.4 0 6.5 1.5 8.5 3.9.1.2.1.5-.1.6 0 0-19.2 8.2-19.4 8.3-.2.1-.5-.1-.5-.2v-.9c-.1-6.6 5.1-11.7 11.5-11.7zM585.75 304.8h-5.7c-.1 0-.2.1-.4.2l-9.2 27.1c-.2.6-.9.6-1.2 0l-9.2-27.1c0-.1-.1-.2-.4-.2h-5.7c-.2 0-.4.2-.4.5l11.7 34.1c0 .1.1.2.4.2h8.1c.1 0 .2-.1.4-.2l11.7-34.1c.2-.2.1-.5-.1-.5zM548.25 304.8h-5.8c-.2 0-.4.1-.4.4v34.1c0 .2.1.4.4.4h5.8c.2 0 .4-.1.4-.4v-34.1c0-.1-.2-.4-.4-.4zM548.25 293.7h-5.8c-.2 0-.4.1-.4.4v5.8c0 .2.1.4.4.4h5.8c.2 0 .4-.1.4-.4V294c0-.2-.2-.3-.4-.3zM536.25 304.8h-6.5c-.1 0-.2-.1-.2-.2v-14.8c0-.2-.1-.4-.4-.4h-5.8c-.2 0-.4.1-.4.4v14.8c0 .1-.1.2-.2.2h-6.4c-.2 0-.4.1-.4.4v5.8c0 .2.1.4.4.4h6.4c.1 0 .2.1.2.2v27.7c0 .2.1.4.4.4h5.8c.2 0 .4-.1.4-.4v-27.7c0-.1.1-.2.2-.2h6.5c.2 0 .4-.1.4-.4v-5.8c0-.1-.3-.4-.4-.4zM498.25 333.8c-7.1 0-12.7-6.4-11.4-13.8.7-4 4.7-8.2 8.8-9 4.4-.9 8.5.6 11.1 3.6.1.1.4.1.5 0l4.1-4.1c.1-.1.1-.4 0-.5-3.4-3.8-8.5-6-14.1-5.8-9.1.5-16.7 7.9-17.2 17.1-.5 10.3 7.7 18.9 18 18.9 5.2 0 10-2.3 13.3-5.8.1-.1.1-.2 0-.4l-4.1-4.1c-.1-.1-.4-.1-.5 0-2 2.4-5.1 3.9-8.5 3.9zM459.45 333.8c-3.4 0-6.4-1.4-8.5-3.8-.1-.2-.1-.5.1-.6l19.9-8.4 5.8-2.5c.2-.1.2-.2.2-.4a18 18 0 0 0-18.1-13.9c-9.2.4-17 7.8-17.3 17.1a18.01 18.01 0 0 0 34.6 7.8c.1-.2 0-.5-.2-.5l-5.8-1.1c-.1 0-.4 0-.4.2-2.1 3.6-6 6.1-10.3 6.1zm0-23c3.4 0 6.5 1.5 8.5 3.9.1.2.1.5-.1.6 0 0-19.2 8.2-19.4 8.3-.2.1-.5-.1-.5-.2v-.9c-.1-6.6 5.1-11.7 11.5-11.7zM436.55 289.4h-5.8c-.2 0-.4.1-.4.4v49.6c0 .2.1.4.4.4h5.8c.2 0 .4-.1.4-.4v-49.6c0-.3-.3-.4-.4-.4zM423.85 289.4h-5.8c-.2 0-.4.1-.4.4v49.6c0 .2.1.4.4.4h5.8c.2 0 .4-.1.4-.4v-49.6c-.1-.3-.3-.4-.4-.4zM395.45 310.8c6.4 0 11.5 5.2 11.5 11.5s-5.2 11.5-11.5 11.5-11.5-5.2-11.5-11.5 5.1-11.5 11.5-11.5zm0-6.6a17.99 17.99 0 1 0-.03 35.98 17.99 17.99 0 0 0 .03-35.98zM362.35 333.8c-7.1 0-12.7-6.4-11.4-13.8.7-4 4.7-8.2 8.8-9 4.4-.9 8.5.6 11.1 3.6.1.1.4.1.5 0l4.1-4.1c.1-.1.1-.4 0-.5-3.4-3.8-8.5-6-14.1-5.8-9.1.5-16.7 7.9-17.2 17.1-.5 10.3 7.7 18.9 18 18.9 5.2 0 10-2.3 13.3-5.8.1-.1.1-.2 0-.4l-4.1-4.1c-.1-.1-.4-.1-.5 0-2 2.4-5.1 3.9-8.5 3.9zM303.45 304.2c-3.8 0-8.2 2.4-10.2 5.2-.1.2-.6.1-.6-.1v-4.1c0-.1-.1-.4-.4-.4h-5.8c-.1 0-.4.1-.4.4v34.3c0 .1.1.4.4.4h5.8c.1 0 .4-.1.4-.4v-17.1c0-6.5 4.4-11.1 10.7-11.1 8.3 0 10.8 5.5 10.8 11.9v16.4c0 .1.1.4.4.4h5.8c.1 0 .4-.1.4-.4v-16.4c0-10.1-4.8-19-17.3-19zM265.15 333.8c-3.4 0-6.4-1.4-8.5-3.8-.1-.2-.1-.5.1-.6l19.9-8.4 5.8-2.5c.2-.1.2-.2.2-.4a18 18 0 0 0-18.1-13.9c-9.2.4-17 7.8-17.3 17.1a18.01 18.01 0 0 0 34.6 7.8c.1-.2 0-.5-.2-.5l-5.8-1.1c-.1 0-.4 0-.4.2-2.2 3.6-6 6.1-10.3 6.1zm0-23c3.4 0 6.5 1.5 8.5 3.9.1.2.1.5-.1.6 0 0-19.2 8.2-19.4 8.3-.2.1-.5-.1-.5-.2v-.9c0-6.6 5.2-11.7 11.5-11.7zM225.75 303.9c-4.5.1-8.1 1.9-10.6 4.9-.2.2-.6.1-.6-.2v-3.3c0-.2-.1-.4-.4-.4h-5.8c-.2 0-.4.1-.4.4V355c0 .2.1.4.4.4h5.7c.2 0 .4-.1.4-.4v-19.6c0-.4.4-.5.6-.2 2.5 3 6.2 4.9 10.9 4.9 11 0 19.8-10 17.7-21.3-1.4-8.9-9.2-15-17.9-14.9zm2.2 29.4c-7.8 1.3-14.6-5.5-13.3-13.3.8-4.7 4.6-8.7 9.4-9.4 7.8-1.3 14.6 5.5 13.3 13.3-.7 4.8-4.6 8.5-9.4 9.4zM186.75 304.2a17.99 17.99 0 1 0 0 36 17.99 17.99 0 1 0 0-36zm0 6.6c6.4 0 11.5 5.2 11.5 11.5s-5.2 11.5-11.5 11.5-11.5-5.2-11.5-11.5 5.2-11.5 11.5-11.5z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.7 KiB |
5
docs/public/company-logos/open-collective-light.svg
Normal file
@@ -0,0 +1,5 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="22 268.7 600 106">
|
||||
<path fill="#b8d3f4" d="M109 321.8c0 6.7-1.9 13.1-5.3 18.4l13.6 13.7c6.7-8.9 10.8-20.1 10.8-32.1s-4.2-23.2-10.8-32.1l-13.6 13.7c3.3 5.3 5.3 11.5 5.3 18.4z"/>
|
||||
<path fill="#3385ff" d="M75.1 355.9c-18.6 0-33.9-15.4-33.9-34.1 0-18.7 15.3-34.1 33.9-34.1 6.9 0 13.1 2 18.3 5.6l13.6-13.7c-8.9-6.7-20-10.9-32-10.9-29.2 0-53.1 23.7-53.1 53.3s23.9 53 53.1 53c12.2 0 23.4-4.2 32.2-10.9l-13.6-13.7c-5.2 3.5-11.6 5.5-18.5 5.5z"/>
|
||||
<path fill="#fff" d="M604.45 333.8c-3.4 0-6.4-1.4-8.5-3.8-.1-.2-.1-.5.1-.6l19.9-8.4 5.8-2.5c.2-.1.2-.2.2-.4a18 18 0 0 0-18.1-13.9c-9.2.4-17 7.8-17.3 17.1a18.01 18.01 0 0 0 34.6 7.8c.1-.2 0-.5-.2-.5l-5.8-1.1c-.1 0-.4 0-.4.2-2.1 3.6-5.9 6.1-10.3 6.1zm0-23c3.4 0 6.5 1.5 8.5 3.9.1.2.1.5-.1.6 0 0-19.2 8.2-19.4 8.3-.2.1-.5-.1-.5-.2v-.9c-.1-6.6 5.1-11.7 11.5-11.7zM585.75 304.8h-5.7c-.1 0-.2.1-.4.2l-9.2 27.1c-.2.6-.9.6-1.2 0l-9.2-27.1c0-.1-.1-.2-.4-.2h-5.7c-.2 0-.4.2-.4.5l11.7 34.1c0 .1.1.2.4.2h8.1c.1 0 .2-.1.4-.2l11.7-34.1c.2-.2.1-.5-.1-.5zM548.25 304.8h-5.8c-.2 0-.4.1-.4.4v34.1c0 .2.1.4.4.4h5.8c.2 0 .4-.1.4-.4v-34.1c0-.1-.2-.4-.4-.4zM548.25 293.7h-5.8c-.2 0-.4.1-.4.4v5.8c0 .2.1.4.4.4h5.8c.2 0 .4-.1.4-.4V294c0-.2-.2-.3-.4-.3zM536.25 304.8h-6.5c-.1 0-.2-.1-.2-.2v-14.8c0-.2-.1-.4-.4-.4h-5.8c-.2 0-.4.1-.4.4v14.8c0 .1-.1.2-.2.2h-6.4c-.2 0-.4.1-.4.4v5.8c0 .2.1.4.4.4h6.4c.1 0 .2.1.2.2v27.7c0 .2.1.4.4.4h5.8c.2 0 .4-.1.4-.4v-27.7c0-.1.1-.2.2-.2h6.5c.2 0 .4-.1.4-.4v-5.8c0-.1-.3-.4-.4-.4zM498.25 333.8c-7.1 0-12.7-6.4-11.4-13.8.7-4 4.7-8.2 8.8-9 4.4-.9 8.5.6 11.1 3.6.1.1.4.1.5 0l4.1-4.1c.1-.1.1-.4 0-.5-3.4-3.8-8.5-6-14.1-5.8-9.1.5-16.7 7.9-17.2 17.1-.5 10.3 7.7 18.9 18 18.9 5.2 0 10-2.3 13.3-5.8.1-.1.1-.2 0-.4l-4.1-4.1c-.1-.1-.4-.1-.5 0-2 2.4-5.1 3.9-8.5 3.9zM459.45 333.8c-3.4 0-6.4-1.4-8.5-3.8-.1-.2-.1-.5.1-.6l19.9-8.4 5.8-2.5c.2-.1.2-.2.2-.4a18 18 0 0 0-18.1-13.9c-9.2.4-17 7.8-17.3 17.1a18.01 18.01 0 0 0 34.6 7.8c.1-.2 0-.5-.2-.5l-5.8-1.1c-.1 0-.4 0-.4.2-2.1 3.6-6 6.1-10.3 6.1zm0-23c3.4 0 6.5 1.5 8.5 3.9.1.2.1.5-.1.6 0 0-19.2 8.2-19.4 8.3-.2.1-.5-.1-.5-.2v-.9c-.1-6.6 5.1-11.7 11.5-11.7zM436.55 289.4h-5.8c-.2 0-.4.1-.4.4v49.6c0 .2.1.4.4.4h5.8c.2 0 .4-.1.4-.4v-49.6c0-.3-.3-.4-.4-.4zM423.85 289.4h-5.8c-.2 0-.4.1-.4.4v49.6c0 .2.1.4.4.4h5.8c.2 0 .4-.1.4-.4v-49.6c-.1-.3-.3-.4-.4-.4zM395.45 310.8c6.4 0 11.5 5.2 11.5 11.5s-5.2 11.5-11.5 11.5-11.5-5.2-11.5-11.5 5.1-11.5 11.5-11.5zm0-6.6a17.99 17.99 0 1 0-.03 35.98 17.99 17.99 0 0 0 .03-35.98zM362.35 333.8c-7.1 0-12.7-6.4-11.4-13.8.7-4 4.7-8.2 8.8-9 4.4-.9 8.5.6 11.1 3.6.1.1.4.1.5 0l4.1-4.1c.1-.1.1-.4 0-.5-3.4-3.8-8.5-6-14.1-5.8-9.1.5-16.7 7.9-17.2 17.1-.5 10.3 7.7 18.9 18 18.9 5.2 0 10-2.3 13.3-5.8.1-.1.1-.2 0-.4l-4.1-4.1c-.1-.1-.4-.1-.5 0-2 2.4-5.1 3.9-8.5 3.9zM303.45 304.2c-3.8 0-8.2 2.4-10.2 5.2-.1.2-.6.1-.6-.1v-4.1c0-.1-.1-.4-.4-.4h-5.8c-.1 0-.4.1-.4.4v34.3c0 .1.1.4.4.4h5.8c.1 0 .4-.1.4-.4v-17.1c0-6.5 4.4-11.1 10.7-11.1 8.3 0 10.8 5.5 10.8 11.9v16.4c0 .1.1.4.4.4h5.8c.1 0 .4-.1.4-.4v-16.4c0-10.1-4.8-19-17.3-19zM265.15 333.8c-3.4 0-6.4-1.4-8.5-3.8-.1-.2-.1-.5.1-.6l19.9-8.4 5.8-2.5c.2-.1.2-.2.2-.4a18 18 0 0 0-18.1-13.9c-9.2.4-17 7.8-17.3 17.1a18.01 18.01 0 0 0 34.6 7.8c.1-.2 0-.5-.2-.5l-5.8-1.1c-.1 0-.4 0-.4.2-2.2 3.6-6 6.1-10.3 6.1zm0-23c3.4 0 6.5 1.5 8.5 3.9.1.2.1.5-.1.6 0 0-19.2 8.2-19.4 8.3-.2.1-.5-.1-.5-.2v-.9c0-6.6 5.2-11.7 11.5-11.7zM225.75 303.9c-4.5.1-8.1 1.9-10.6 4.9-.2.2-.6.1-.6-.2v-3.3c0-.2-.1-.4-.4-.4h-5.8c-.2 0-.4.1-.4.4V355c0 .2.1.4.4.4h5.7c.2 0 .4-.1.4-.4v-19.6c0-.4.4-.5.6-.2 2.5 3 6.2 4.9 10.9 4.9 11 0 19.8-10 17.7-21.3-1.4-8.9-9.2-15-17.9-14.9zm2.2 29.4c-7.8 1.3-14.6-5.5-13.3-13.3.8-4.7 4.6-8.7 9.4-9.4 7.8-1.3 14.6 5.5 13.3 13.3-.7 4.8-4.6 8.5-9.4 9.4zM186.75 304.2a17.99 17.99 0 1 0 0 36 17.99 17.99 0 1 0 0-36zm0 6.6c6.4 0 11.5 5.2 11.5 11.5s-5.2 11.5-11.5 11.5-11.5-5.2-11.5-11.5 5.2-11.5 11.5-11.5z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.7 KiB |
23
docs/public/company-logos/supabase-dark.svg
Normal file
@@ -0,0 +1,23 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 581 113" fill="#1F1F1F">
|
||||
<path d="M151.4 66.76c.6 5.6 5.7 15.2 20.48 15.2 12.88 0 19.08-8.2 19.08-16.2 0-7.2-4.9-13.1-14.59-15.1l-7-1.5c-2.69-.5-4.49-2-4.49-4.4 0-2.8 2.8-4.9 6.3-4.9 5.6 0 7.69 3.7 8.09 6.6l11.09-2.5c-.6-5.3-5.3-14.2-19.28-14.2-10.6 0-18.38 7.3-18.38 16.1 0 6.9 4.3 12.6 13.78 14.7l6.5 1.5c3.8.8 5.3 2.6 5.3 4.8 0 2.6-2.1 4.9-6.5 4.9-5.8 0-8.7-3.6-9-7.5l-11.38 2.5Z"/>
|
||||
<path d="M233.42 80.46h12.69c-.2-1.7-.5-5.1-.5-8.9v-40.3h-13.29v28.6c0 5.7-3.4 9.7-9.29 9.7-6.2 0-9-4.4-9-9.9v-28.4h-13.28v31.1c0 10.7 6.8 19.4 18.68 19.4 5.2 0 10.9-2 13.6-6.6 0 2 .2 4.3.4 5.3Z"/>
|
||||
<path d="M273.08 99.47v-23.8c2.4 3.3 7.39 6 14.18 6 13.89 0 23.18-11 23.18-25.91 0-14.6-8.3-25.6-22.68-25.6-7.39 0-12.88 3.3-15.08 7.1v-6h-12.89v68.2h13.29Zm24.27-43.61c0 8.8-5.4 13.9-12.19 13.9-6.79 0-12.28-5.2-12.28-13.9s5.5-13.8 12.28-13.8c6.8 0 12.2 5.1 12.2 13.8Z"/>
|
||||
<path d="M317.96 67.06c0 7.7 6.4 14.8 16.89 14.8 7.29 0 11.98-3.4 14.48-7.3 0 1.9.2 4.6.5 5.9h12.19c-.3-1.7-.6-5.2-.6-7.8v-24.2c0-9.9-5.8-18.7-21.38-18.7-13.19 0-20.28 8.5-21.08 16.2l11.8 2.5c.4-4.3 3.59-8 9.38-8 5.6 0 8.3 2.9 8.3 6.4 0 1.7-.9 3.1-3.7 3.5l-12.09 1.8c-8.2 1.2-14.69 6.1-14.69 14.9Zm19.68 4.9c-4.3 0-6.39-2.8-6.39-5.7 0-3.8 2.7-5.7 6.1-6.2l11.08-1.7v2.2c0 8.7-5.2 11.4-10.79 11.4Z"/>
|
||||
<path d="M387.7 80.46v-6c2.6 4.2 7.8 7.2 14.59 7.2 13.99 0 23.18-11.1 23.18-26 0-14.6-8.3-25.7-22.68-25.7-7.3 0-12.69 3.2-14.89 6.7V8.04h-13.08v72.41h12.88Zm24.48-24.7c0 9-5.4 14-12.19 14-6.7 0-12.29-5.1-12.29-14 0-9 5.6-13.9 12.29-13.9 6.8 0 12.19 4.9 12.19 13.9Z"/>
|
||||
<path d="M432.99 67.06c0 7.7 6.4 14.8 16.88 14.8 7.3 0 12-3.4 14.49-7.3 0 1.9.2 4.6.5 5.9h12.19c-.3-1.7-.6-5.2-.6-7.8v-24.2c0-9.9-5.8-18.7-21.38-18.7-13.19 0-20.28 8.5-21.08 16.2l11.79 2.5c.4-4.3 3.6-8 9.39-8 5.6 0 8.29 2.9 8.29 6.4 0 1.7-.9 3.1-3.7 3.5l-12.08 1.8c-8.2 1.2-14.69 6.1-14.69 14.9Zm19.68 4.9c-4.3 0-6.4-2.8-6.4-5.7 0-3.8 2.7-5.7 6.1-6.2l11.09-1.7v2.2c0 8.7-5.2 11.4-10.79 11.4Z"/>
|
||||
<path d="M485.64 66.76c.6 5.6 5.7 15.2 20.48 15.2 12.9 0 19.09-8.2 19.09-16.2 0-7.2-4.9-13.1-14.59-15.1l-7-1.5c-2.7-.5-4.49-2-4.49-4.4 0-2.8 2.8-4.9 6.3-4.9 5.6 0 7.69 3.7 8.09 6.6l11.09-2.5c-.6-5.3-5.3-14.2-19.28-14.2-10.6 0-18.39 7.3-18.39 16.1 0 6.9 4.3 12.6 13.79 14.7l6.5 1.5c3.8.8 5.29 2.6 5.29 4.8 0 2.6-2.1 4.9-6.5 4.9-5.79 0-8.69-3.6-8.99-7.5l-11.38 2.5Z"/>
|
||||
<path d="M545.38 50.26c.3-4.5 4.1-9.7 11-9.7 7.59 0 10.78 4.8 10.99 9.7h-21.99Zm23.28 12.8c-1.6 4.4-5 7.5-11.19 7.5-6.59 0-12.09-4.7-12.38-11.2h35.16c0-.2.2-2.2.2-4.1 0-15.8-9.09-25.5-24.28-25.5-12.58 0-24.17 10.2-24.17 25.9 0 16.6 11.89 26.3 25.37 26.3 12.1 0 19.88-7.1 22.38-15.6l-11.09-3.3Z"/>
|
||||
<path fill="url(#a)" d="M63.7 110.28a4.9 4.9 0 0 1-8.72-2.97l-1-67.25h45.21a9.79 9.79 0 0 1 7.67 15.88L63.7 110.28Z"/>
|
||||
<path fill="url(#b)" fill-opacity=".2" d="M63.7 110.28a4.9 4.9 0 0 1-8.72-2.97l-1-67.25h45.21a9.79 9.79 0 0 1 7.67 15.88L63.7 110.28Z"/>
|
||||
<path fill="#3ECF8E" d="M45.32 2.07a4.9 4.9 0 0 1 8.72 2.97l.44 67.25H9.83a9.79 9.79 0 0 1-7.66-15.87L45.32 2.07Z"/>
|
||||
<defs>
|
||||
<linearGradient id="a" x1="53.97" x2="94.16" y1="54.97" y2="71.83" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#249361"/>
|
||||
<stop offset="1" stop-color="#3ECF8E"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="b" x1="36.16" x2="54.48" y1="30.58" y2="65.08" gradientUnits="userSpaceOnUse">
|
||||
<stop/>
|
||||
<stop offset="1" stop-opacity="0"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.4 KiB |
23
docs/public/company-logos/supabase-light.svg
Normal file
@@ -0,0 +1,23 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 581 113" fill="#fff">
|
||||
<path d="M151.4 66.76c.6 5.6 5.7 15.2 20.48 15.2 12.88 0 19.08-8.2 19.08-16.2 0-7.2-4.9-13.1-14.59-15.1l-7-1.5c-2.69-.5-4.49-2-4.49-4.4 0-2.8 2.8-4.9 6.3-4.9 5.6 0 7.69 3.7 8.09 6.6l11.09-2.5c-.6-5.3-5.3-14.2-19.28-14.2-10.6 0-18.38 7.3-18.38 16.1 0 6.9 4.3 12.6 13.78 14.7l6.5 1.5c3.8.8 5.3 2.6 5.3 4.8 0 2.6-2.1 4.9-6.5 4.9-5.8 0-8.7-3.6-9-7.5l-11.38 2.5Z"/>
|
||||
<path d="M233.42 80.46h12.69c-.2-1.7-.5-5.1-.5-8.9v-40.3h-13.29v28.6c0 5.7-3.4 9.7-9.29 9.7-6.2 0-9-4.4-9-9.9v-28.4h-13.28v31.1c0 10.7 6.8 19.4 18.68 19.4 5.2 0 10.9-2 13.6-6.6 0 2 .2 4.3.4 5.3Z"/>
|
||||
<path d="M273.08 99.47v-23.8c2.4 3.3 7.39 6 14.18 6 13.89 0 23.18-11 23.18-25.91 0-14.6-8.3-25.6-22.68-25.6-7.39 0-12.88 3.3-15.08 7.1v-6h-12.89v68.2h13.29Zm24.27-43.61c0 8.8-5.4 13.9-12.19 13.9-6.79 0-12.28-5.2-12.28-13.9s5.5-13.8 12.28-13.8c6.8 0 12.2 5.1 12.2 13.8Z"/>
|
||||
<path d="M317.96 67.06c0 7.7 6.4 14.8 16.89 14.8 7.29 0 11.98-3.4 14.48-7.3 0 1.9.2 4.6.5 5.9h12.19c-.3-1.7-.6-5.2-.6-7.8v-24.2c0-9.9-5.8-18.7-21.38-18.7-13.19 0-20.28 8.5-21.08 16.2l11.8 2.5c.4-4.3 3.59-8 9.38-8 5.6 0 8.3 2.9 8.3 6.4 0 1.7-.9 3.1-3.7 3.5l-12.09 1.8c-8.2 1.2-14.69 6.1-14.69 14.9Zm19.68 4.9c-4.3 0-6.39-2.8-6.39-5.7 0-3.8 2.7-5.7 6.1-6.2l11.08-1.7v2.2c0 8.7-5.2 11.4-10.79 11.4Z"/>
|
||||
<path d="M387.7 80.46v-6c2.6 4.2 7.8 7.2 14.59 7.2 13.99 0 23.18-11.1 23.18-26 0-14.6-8.3-25.7-22.68-25.7-7.3 0-12.69 3.2-14.89 6.7V8.04h-13.08v72.41h12.88Zm24.48-24.7c0 9-5.4 14-12.19 14-6.7 0-12.29-5.1-12.29-14 0-9 5.6-13.9 12.29-13.9 6.8 0 12.19 4.9 12.19 13.9Z"/>
|
||||
<path d="M432.99 67.06c0 7.7 6.4 14.8 16.88 14.8 7.3 0 12-3.4 14.49-7.3 0 1.9.2 4.6.5 5.9h12.19c-.3-1.7-.6-5.2-.6-7.8v-24.2c0-9.9-5.8-18.7-21.38-18.7-13.19 0-20.28 8.5-21.08 16.2l11.79 2.5c.4-4.3 3.6-8 9.39-8 5.6 0 8.29 2.9 8.29 6.4 0 1.7-.9 3.1-3.7 3.5l-12.08 1.8c-8.2 1.2-14.69 6.1-14.69 14.9Zm19.68 4.9c-4.3 0-6.4-2.8-6.4-5.7 0-3.8 2.7-5.7 6.1-6.2l11.09-1.7v2.2c0 8.7-5.2 11.4-10.79 11.4Z"/>
|
||||
<path d="M485.64 66.76c.6 5.6 5.7 15.2 20.48 15.2 12.9 0 19.09-8.2 19.09-16.2 0-7.2-4.9-13.1-14.59-15.1l-7-1.5c-2.7-.5-4.49-2-4.49-4.4 0-2.8 2.8-4.9 6.3-4.9 5.6 0 7.69 3.7 8.09 6.6l11.09-2.5c-.6-5.3-5.3-14.2-19.28-14.2-10.6 0-18.39 7.3-18.39 16.1 0 6.9 4.3 12.6 13.79 14.7l6.5 1.5c3.8.8 5.29 2.6 5.29 4.8 0 2.6-2.1 4.9-6.5 4.9-5.79 0-8.69-3.6-8.99-7.5l-11.38 2.5Z"/>
|
||||
<path d="M545.38 50.26c.3-4.5 4.1-9.7 11-9.7 7.59 0 10.78 4.8 10.99 9.7h-21.99Zm23.28 12.8c-1.6 4.4-5 7.5-11.19 7.5-6.59 0-12.09-4.7-12.38-11.2h35.16c0-.2.2-2.2.2-4.1 0-15.8-9.09-25.5-24.28-25.5-12.58 0-24.17 10.2-24.17 25.9 0 16.6 11.89 26.3 25.37 26.3 12.1 0 19.88-7.1 22.38-15.6l-11.09-3.3Z"/>
|
||||
<path fill="url(#a)" d="M63.7 110.28a4.9 4.9 0 0 1-8.72-2.97l-1-67.25h45.21a9.79 9.79 0 0 1 7.67 15.88L63.7 110.28Z"/>
|
||||
<path fill="url(#b)" fill-opacity=".2" d="M63.7 110.28a4.9 4.9 0 0 1-8.72-2.97l-1-67.25h45.21a9.79 9.79 0 0 1 7.67 15.88L63.7 110.28Z"/>
|
||||
<path fill="#3ECF8E" d="M45.32 2.07a4.9 4.9 0 0 1 8.72 2.97l.44 67.25H9.83a9.79 9.79 0 0 1-7.66-15.87L45.32 2.07Z"/>
|
||||
<defs>
|
||||
<linearGradient id="a" x1="53.97" x2="94.16" y1="54.97" y2="71.83" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#249361"/>
|
||||
<stop offset="1" stop-color="#3ECF8E"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="b" x1="36.16" x2="54.48" y1="30.58" y2="65.08" gradientUnits="userSpaceOnUse">
|
||||
<stop/>
|
||||
<stop offset="1" stop-opacity="0"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.4 KiB |
9
docs/public/company-logos/super-dark.svg
Normal file
@@ -0,0 +1,9 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 151 31">
|
||||
<path fill="#111" d="M49.37 7.6c-8.39 0-10.49 1.8-11.13 5.39-.62 3.58.93 5.06 8.1 5.06 4.2 0 5.39 0 5.2 1.04-.2 1.06-1.4 1.06-4.4 1.06-3 0-4.19 0-3.96-1.2H36.9c-.74 4.2 1.13 5.4 9.53 5.4 8.39 0 10.68-1.2 11.42-5.4.65-3.58-1.2-5.1-8.39-5.1-4.2 0-5.39-.02-5.2-1.03.2-1.06 1.4-1.06 4.4-1.06 2.38 0 4.19 0 3.96 1.2h5.97c.65-3.69-.83-5.36-9.23-5.36Z"/>
|
||||
<path fill="#FFC158" d="M.84 15.81C.84 4.45 4.63.66 16 .66c11.37 0 15.15 3.79 15.15 15.15S27.36 30.96 16 30.96C4.63 30.96.84 27.17.84 15.81Z"/>
|
||||
<path fill="#fff" fill-rule="evenodd" d="m16.16 8.37-5.8 8.87c-.18.28.02.65.36.65h5.32l-.99 5.37c-.08.46.52.7.77.31l5.8-8.86a.42.42 0 0 0-.36-.66H15.94l1-5.37c.08-.46-.52-.7-.78-.31Z" clip-rule="evenodd"/>
|
||||
<path fill="#111" d="m77.04 8.18-1.38 7.78c-.53 3-2.9 4.2-5.33 4.2s-4.37-1.2-3.82-4.2l1.39-7.78h-6.71l-1.42 7.78c-1.08 5.97 2.14 8.39 7.63 8.39 4.28 0 7.04-1.81 7.04-1.81l.4 1.2h6.08l2.8-15.56h-6.68Z"/>
|
||||
<path fill="#111" d="M98.83 7.6c-4.27 0-6.41 1.8-6.41 1.8l.23-1.19h-6.7l-4.09 22.75h6.71l1.51-8.39s1.52 1.8 5.8 1.8c5.48 0 10.05-1.8 11.24-8.38 1.15-6.62-2.8-8.4-8.29-8.4Zm1.55 8.36c-.53 3-2.9 4.2-5.33 4.2s-4.37-1.2-3.82-4.2c.53-3 2.9-4.2 5.33-4.2s4.34 1.2 3.82 4.2Z"/>
|
||||
<path fill="#111" d="M121.08 7.6c-7.3 0-11.67 2.26-12.76 8.23-1.08 5.97 2.47 8.52 9.77 8.52 5.13 0 7.92-.9 10.55-3.23l-3.91-2.49c-.86.52-1.78 1.52-5.89 1.52-2.76 0-4-1.03-3.94-3.13h15.72c.1-.39.2-.77.26-1.2 1.05-6-2.5-8.22-9.8-8.22Zm-5.52 6.42c.78-1.68 2-2.26 4.76-2.26 2.73 0 3.78.55 3.95 2.26h-8.71Z"/>
|
||||
<path fill="#111" d="m140.33 9.37.23-1.2h-6.7l-2.8 15.56h6.7l1.19-6.58c.76-4.2 3.91-4.78 6.35-4.78 2.4 0 3.19.26 4.76.62l.86-4.78c-.86-.26-2.9-.61-4.77-.61-4.27 0-5.82 1.77-5.82 1.77Z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
9
docs/public/company-logos/super-light.svg
Normal file
@@ -0,0 +1,9 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 151 31">
|
||||
<path fill="#fff" d="M49.37 7.6c-8.39 0-10.49 1.8-11.13 5.39-.62 3.58.93 5.06 8.1 5.06 4.2 0 5.39 0 5.2 1.04-.2 1.06-1.4 1.06-4.4 1.06-3 0-4.19 0-3.96-1.2H36.9c-.74 4.2 1.13 5.4 9.53 5.4 8.39 0 10.68-1.2 11.42-5.4.65-3.58-1.2-5.1-8.39-5.1-4.2 0-5.39-.02-5.2-1.03.2-1.06 1.4-1.06 4.4-1.06 2.38 0 4.19 0 3.96 1.2h5.97c.65-3.69-.83-5.36-9.23-5.36Z"/>
|
||||
<path fill="#FFC158" d="M.84 15.81C.84 4.45 4.63.66 16 .66c11.37 0 15.15 3.79 15.15 15.15S27.36 30.96 16 30.96C4.63 30.96.84 27.17.84 15.81Z"/>
|
||||
<path fill="#fff" fill-rule="evenodd" d="m16.16 8.37-5.8 8.87c-.18.28.02.65.36.65h5.32l-.99 5.37c-.08.46.52.7.77.31l5.8-8.86a.42.42 0 0 0-.36-.66H15.94l1-5.37c.08-.46-.52-.7-.78-.31Z" clip-rule="evenodd"/>
|
||||
<path fill="#fff" d="m77.04 8.18-1.38 7.78c-.53 3-2.9 4.2-5.33 4.2s-4.37-1.2-3.82-4.2l1.39-7.78h-6.71l-1.42 7.78c-1.08 5.97 2.14 8.39 7.63 8.39 4.28 0 7.04-1.81 7.04-1.81l.4 1.2h6.08l2.8-15.56h-6.68Z"/>
|
||||
<path fill="#fff" d="M98.83 7.6c-4.27 0-6.41 1.8-6.41 1.8l.23-1.19h-6.7l-4.09 22.75h6.71l1.51-8.39s1.52 1.8 5.8 1.8c5.48 0 10.05-1.8 11.24-8.38 1.15-6.62-2.8-8.4-8.29-8.4Zm1.55 8.36c-.53 3-2.9 4.2-5.33 4.2s-4.37-1.2-3.82-4.2c.53-3 2.9-4.2 5.33-4.2s4.34 1.2 3.82 4.2Z"/>
|
||||
<path fill="#fff" d="M121.08 7.6c-7.3 0-11.67 2.26-12.76 8.23-1.08 5.97 2.47 8.52 9.77 8.52 5.13 0 7.92-.9 10.55-3.23l-3.91-2.49c-.86.52-1.78 1.52-5.89 1.52-2.76 0-4-1.03-3.94-3.13h15.72c.1-.39.2-.77.26-1.2 1.05-6-2.5-8.22-9.8-8.22Zm-5.52 6.42c.78-1.68 2-2.26 4.76-2.26 2.73 0 3.78.55 3.95 2.26h-8.71Z"/>
|
||||
<path fill="#fff" d="m140.33 9.37.23-1.2h-6.7l-2.8 15.56h6.7l1.19-6.58c.76-4.2 3.91-4.78 6.35-4.78 2.4 0 3.19.26 4.76.62l.86-4.78c-.86-.26-2.9-.61-4.77-.61-4.27 0-5.82 1.77-5.82 1.77Z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
1
docs/public/company-logos/vercel-dark.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="64" role="img" viewBox="-20 -20 343 104"><path d="M141.68 16.25c-11.04 0-19 7.2-19 18s8.96 18 20 18c6.67 0 12.55-2.64 16.19-7.09l-7.65-4.42c-2.02 2.21-5.09 3.5-8.54 3.5-4.79 0-8.86-2.5-10.37-6.5h28.02c.22-1.12.35-2.28.35-3.5 0-10.79-7.96-17.99-19-17.99zm-9.46 14.5c1.25-3.99 4.67-6.5 9.45-6.5 4.79 0 8.21 2.51 9.45 6.5h-18.9zm117.14-14.5c-11.04 0-19 7.2-19 18s8.96 18 20 18c6.67 0 12.55-2.64 16.19-7.09l-7.65-4.42c-2.02 2.21-5.09 3.5-8.54 3.5-4.79 0-8.86-2.5-10.37-6.5h28.02c.22-1.12.35-2.28.35-3.5 0-10.79-7.96-17.99-19-17.99zm-9.45 14.5c1.25-3.99 4.67-6.5 9.45-6.5 4.79 0 8.21 2.51 9.45 6.5h-18.9zm-39.03 3.5c0 6 3.92 10 10 10 4.12 0 7.21-1.87 8.8-4.92l7.68 4.43c-3.18 5.3-9.14 8.49-16.48 8.49-11.05 0-19-7.2-19-18s7.96-18 19-18c7.34 0 13.29 3.19 16.48 8.49l-7.68 4.43c-1.59-3.05-4.68-4.92-8.8-4.92-6.07 0-10 4-10 10zm82.48-29v46h-9v-46h9zM37.59.25l36.95 64H.64l36.95-64zm92.38 5l-27.71 48-27.71-48h10.39l17.32 30 17.32-30h10.39zm58.91 12v9.69c-1-.29-2.06-.49-3.2-.49-5.81 0-10 4-10 10v14.8h-9v-34h9v9.2c0-5.08 5.91-9.2 13.2-9.2z" fill="#000"></path></svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
1
docs/public/company-logos/vercel-light.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="64" role="img" viewBox="-20 -20 343 104"><path d="M141.68 16.25c-11.04 0-19 7.2-19 18s8.96 18 20 18c6.67 0 12.55-2.64 16.19-7.09l-7.65-4.42c-2.02 2.21-5.09 3.5-8.54 3.5-4.79 0-8.86-2.5-10.37-6.5h28.02c.22-1.12.35-2.28.35-3.5 0-10.79-7.96-17.99-19-17.99zm-9.46 14.5c1.25-3.99 4.67-6.5 9.45-6.5 4.79 0 8.21 2.51 9.45 6.5h-18.9zm117.14-14.5c-11.04 0-19 7.2-19 18s8.96 18 20 18c6.67 0 12.55-2.64 16.19-7.09l-7.65-4.42c-2.02 2.21-5.09 3.5-8.54 3.5-4.79 0-8.86-2.5-10.37-6.5h28.02c.22-1.12.35-2.28.35-3.5 0-10.79-7.96-17.99-19-17.99zm-9.45 14.5c1.25-3.99 4.67-6.5 9.45-6.5 4.79 0 8.21 2.51 9.45 6.5h-18.9zm-39.03 3.5c0 6 3.92 10 10 10 4.12 0 7.21-1.87 8.8-4.92l7.68 4.43c-3.18 5.3-9.14 8.49-16.48 8.49-11.05 0-19-7.2-19-18s7.96-18 19-18c7.34 0 13.29 3.19 16.48 8.49l-7.68 4.43c-1.59-3.05-4.68-4.92-8.8-4.92-6.07 0-10 4-10 10zm82.48-29v46h-9v-46h9zM37.59.25l36.95 64H.64l36.95-64zm92.38 5l-27.71 48-27.71-48h10.39l17.32 30 17.32-30h10.39zm58.91 12v9.69c-1-.29-2.06-.49-3.2-.49-5.81 0-10 4-10 10v14.8h-9v-34h9v9.2c0-5.08 5.91-9.2 13.2-9.2z" fill="white"></path></svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
@@ -1,5 +1,18 @@
|
||||
<svg width="30" height="33" viewBox="0 0 20 22" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M10 0 0 3.57l1.53 13.22 8.47 4.7 8.47-4.7L20 3.57 10 0Z" fill="#DD0031"/>
|
||||
<path d="M10 0v21.48l8.47-4.7L20 3.58 10 0Z" fill="#C3002F"/>
|
||||
<path d="M10 2.37 3.75 16.4h2.33l1.26-3.14h5.3l1.26 3.14h2.33L10 2.37Zm1.83 8.95H8.17L10 6.92l1.83 4.4Z" fill="#fff"/>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 223 236" width="32">
|
||||
<path fill="url(#b)" d="m222.08 39.2-8.02 125.91L137.39 0l84.69 39.2Zm-53.1 162.82-57.94 33.05-57.93-33.05 11.78-28.56h92.3l11.78 28.56ZM111.03 62.68l30.36 73.8H80.68l30.36-73.8ZM7.94 165.12 0 39.19 84.69 0 7.94 165.12Z"/>
|
||||
<path fill="url(#c)" d="m222.08 39.2-8.02 125.91L137.39 0l84.69 39.2Zm-53.1 162.82-57.94 33.05-57.93-33.05 11.78-28.56h92.3l11.78 28.56ZM111.03 62.68l30.36 73.8H80.68l30.36-73.8ZM7.94 165.12 0 39.19 84.69 0 7.94 165.12Z"/>
|
||||
<defs>
|
||||
<linearGradient id="b" x1="49.01" x2="225.83" y1="213.75" y2="129.72" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#E40035"/>
|
||||
<stop offset=".24" stop-color="#F60A48"/>
|
||||
<stop offset=".35" stop-color="#F20755"/>
|
||||
<stop offset=".49" stop-color="#DC087D"/>
|
||||
<stop offset=".74" stop-color="#9717E7"/>
|
||||
<stop offset="1" stop-color="#6C00F5"/>
|
||||
</linearGradient>
|
||||
<linearGradient id="c" x1="41.02" x2="156.74" y1="28.34" y2="160.34" gradientUnits="userSpaceOnUse">
|
||||
<stop stop-color="#FF31D9"/>
|
||||
<stop offset="1" stop-color="#FF5BE1" stop-opacity="0"/>
|
||||
</linearGradient>
|
||||
</defs>
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 373 B After Width: | Height: | Size: 1.2 KiB |
5
docs/public/library-logos/shadcn-ui-dark.svg
Normal file
@@ -0,0 +1,5 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1144 256" fill="#000">
|
||||
<path d="M1108.1 192V98.9h22V192h-22Zm11-106.3a12.8 12.8 0 0 1-11.7-7.3c-.7-1.4-1-3-1-4.6a11 11 0 0 1 3.8-8.4c2.4-2.3 5.6-3.6 9-3.5 3.5 0 6.4 1.2 9 3.5a11 11 0 0 1 3.7 8.4c0 3.3-1.3 6.1-3.8 8.4a12.7 12.7 0 0 1-9 3.5ZM1063.6 152.8V99h22V192h-21.3v-16.5h-1a28 28 0 0 1-10.4 12.7c-4.7 3.4-10.6 5-17.6 5a28.2 28.2 0 0 1-27-16c-2.7-5.2-4-11.6-4-19V98.9h22v55.9c0 5.9 1.5 10.6 4.8 14 3.2 3.5 7.4 5.3 12.7 5.3 3.2 0 6.4-.8 9.4-2.4 3-1.6 5.6-4 7.4-7 2-3.2 3-7.1 3-11.8ZM990.3 62l-40 148.7H931L971 62h19.2Z"/>
|
||||
<path fill-rule="evenodd" d="M213.7 122.3a8 8 0 0 1 0 11.4l-80 80a8 8 0 0 1-11.4-11.4l80-80a8 8 0 0 1 11.4 0ZM197.7 34.3a8 8 0 0 1 0 11.4l-152 152a8 8 0 0 1-11.4-11.4l152-152a8 8 0 0 1 11.4 0Z" clip-rule="evenodd"/>
|
||||
<path d="M857.5 137.5V192h-21.9V98.9h21v15.8h1c2.1-5 5.7-9.4 10.3-12.4 4.7-3 10.6-4.6 17.5-4.6a33 33 0 0 1 16.8 4.1c4.8 2.8 8.7 7 11.2 12 2.6 5.2 4 11.5 3.9 19V192h-22v-55.9c0-6.2-1.5-11-4.8-14.6a17 17 0 0 0-13.3-5.3c-3.8 0-7.2.9-10.2 2.6-3 1.7-5.4 4.2-7 7.2-1.6 3.2-2.5 7-2.5 11.5ZM777.7 193.8a40.9 40.9 0 0 1-39.3-23 55.8 55.8 0 0 1-5.3-25 55 55 0 0 1 5.5-25c3.4-7 8.7-13 15.4-17 6.6-4 14.5-6.1 23.6-6.1a46 46 0 0 1 20 4.2 34.3 34.3 0 0 1 20 29.3h-21a20 20 0 0 0-6-11.3c-3.2-3-7.4-4.5-12.7-4.5-4.2 0-8.4 1.2-11.8 3.6-3.4 2.4-6 5.8-8 10.3a42 42 0 0 0-2.8 16.2c0 6.3 1 11.8 2.8 16.3 1.9 4.5 4.5 8 7.9 10.5a20 20 0 0 0 11.9 3.6c3.2 0 6.1-.6 8.7-1.8 2.5-1.2 4.8-3 6.4-5.4 1.9-2.5 3-5.4 3.6-8.5h21a34.5 34.5 0 0 1-19.5 29.4 45.9 45.9 0 0 1-20.4 4.2ZM664.1 193.6a35.2 35.2 0 0 1-33.3-22 61 61 0 0 1-5-26c0-10.4 1.7-19.1 5-26.2 3.5-7.2 8.1-12.6 14-16.2a35.7 35.7 0 0 1 32.9-2.7c3.2 1.6 6 3.8 8.3 6.6 1.9 2.2 3.5 4.6 4.8 7.2h1V67.9h22V192h-21.6v-14.7h-1.4c-1.3 2.6-3 5-4.9 7.2a27 27 0 0 1-21.8 9.1Zm6.2-18a19 19 0 0 0 11.9-3.7c3.2-2.6 5.7-6.1 7.4-10.6a45 45 0 0 0 2.5-15.8c0-6-.8-11.3-2.5-15.7a22.4 22.4 0 0 0-7.4-10.4 19.1 19.1 0 0 0-12-3.7c-4.8 0-8.9 1.3-12.2 3.8-3.2 2.6-5.7 6-7.4 10.6a44.4 44.4 0 0 0-2.5 15.4c0 5.8.9 11 2.5 15.5 1.7 4.6 4.2 8.1 7.5 10.8 3.3 2.5 7.4 3.8 12.2 3.8ZM558.4 193.9c-5.9 0-11.2-1-16-3.2a26 26 0 0 1-11.1-9.4c-2.7-4.2-4-9.3-4-15.4 0-5.3 1-9.6 2.9-13 1.8-3.4 4.6-6.3 7.9-8.3a40 40 0 0 1 11.3-4.7c4.3-1 8.7-1.9 13.2-2.3l13.3-1.5c3.4-.5 5.8-1.3 7.4-2.2 1.5-1 2.3-2.6 2.3-4.7v-.3c0-4.6-1.4-8.2-4-10.7-2.8-2.5-6.7-3.7-11.8-3.7a21 21 0 0 0-12.7 3.5 17.4 17.4 0 0 0-6.3 8.3l-20.5-2.9a32.7 32.7 0 0 1 21.6-22.8 58.2 58.2 0 0 1 31.2-1.3c4.4 1 8.5 2.7 12.2 5.2 3.7 2.4 6.8 5.8 8.9 9.7 2.2 4.2 3.3 9.3 3.3 15.5V192h-21v-12.8h-.8a26.8 26.8 0 0 1-14.6 12.7c-3.6 1.3-7.9 2-12.7 2Zm5.7-16.1c4.4 0 8.2-1 11.4-2.6 3.1-1.7 5.7-4.1 7.5-7 1.8-3 2.7-6.2 2.7-9.6v-11c-.7.6-1.9 1.1-3.6 1.6a196.3 196.3 0 0 1-11.4 2.3l-5.2.7c-3.2.4-6.2 1.2-8.7 2.2-2.4.8-4.5 2.3-6.2 4.2-1.5 1.8-2.2 4-2.2 7 0 4 1.5 7 4.4 9 3 2.1 6.7 3.2 11.3 3.2ZM448.9 137.5V192h-22V67.9h21.5v46.8h1c2.1-5 5.7-9.4 10.2-12.4a31 31 0 0 1 17.6-4.6c6.4 0 12 1.3 16.9 4 4.8 2.8 8.5 6.7 11.1 12 2.7 5.1 4 11.5 4 19V192h-21.9v-55.9c0-6.2-1.6-11.1-4.9-14.6a17.2 17.2 0 0 0-13.4-5.3c-3.9 0-7.4.9-10.4 2.6-3 1.6-5.5 4.2-7.2 7.2-1.7 3.2-2.5 7-2.5 11.5ZM406.9 123.5l-20 2.2a16 16 0 0 0-8.6-10 20.1 20.1 0 0 0-8.6-1.6c-4.6 0-8.4 1-11.5 3-3 2-4.6 4.5-4.6 7.6a8 8 0 0 0 3 6.6c2 1.7 5.5 3.1 10.2 4.2l15.9 3.4a40 40 0 0 1 19.6 9c4.3 4.2 6.5 9.6 6.6 16.2 0 5.6-1.8 11-5.2 15.5a33 33 0 0 1-14 10.5 53 53 0 0 1-20.6 3.7 47.8 47.8 0 0 1-27.5-7.1 28.8 28.8 0 0 1-12.5-20l21.4-2.2c1 4.2 3 7.4 6.2 9.6 3.2 2.1 7.3 3.2 12.3 3.2 5.2 0 9.4-1.1 12.6-3.2 3.2-2.2 4.8-4.8 4.8-8a8.3 8.3 0 0 0-3.1-6.6c-2-1.7-5.2-3-9.5-4l-15.9-3.3c-8.9-1.9-15.5-5-19.8-9.4a23 23 0 0 1-6.3-16.9c0-5.7 1.5-10.7 4.6-14.9 3.2-4.2 7.6-7.5 13.3-9.8a51.5 51.5 0 0 1 19.7-3.5c10.9 0 19.5 2.3 25.8 7 6.3 4.6 10.2 10.9 11.7 18.8Z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.7 KiB |
5
docs/public/library-logos/shadcn-ui-light.svg
Normal file
@@ -0,0 +1,5 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="#fff" viewBox="0 0 1144 256">
|
||||
<path d="M1108.1 192V98.9h22V192h-22Zm11-106.3a12.8 12.8 0 0 1-11.7-7.3c-.7-1.4-1-3-1-4.6a11 11 0 0 1 3.8-8.4c2.4-2.3 5.6-3.6 9-3.5 3.5 0 6.4 1.2 9 3.5a11 11 0 0 1 3.7 8.4c0 3.3-1.3 6.1-3.8 8.4a12.7 12.7 0 0 1-9 3.5ZM1063.6 152.8V99h22V192h-21.3v-16.5h-1a28 28 0 0 1-10.4 12.7c-4.7 3.4-10.6 5-17.6 5a28.2 28.2 0 0 1-27-16c-2.7-5.2-4-11.6-4-19V98.9h22v55.9c0 5.9 1.5 10.6 4.8 14 3.2 3.5 7.4 5.3 12.7 5.3 3.2 0 6.4-.8 9.4-2.4 3-1.6 5.6-4 7.4-7 2-3.2 3-7.1 3-11.8ZM990.3 62l-40 148.7H931L971 62h19.2Z"/>
|
||||
<path fill-rule="evenodd" d="M213.7 122.3a8 8 0 0 1 0 11.4l-80 80a8 8 0 0 1-11.4-11.4l80-80a8 8 0 0 1 11.4 0ZM197.7 34.3a8 8 0 0 1 0 11.4l-152 152a8 8 0 0 1-11.4-11.4l152-152a8 8 0 0 1 11.4 0Z" clip-rule="evenodd"/>
|
||||
<path d="M857.5 137.5V192h-21.9V98.9h21v15.8h1c2.1-5 5.7-9.4 10.3-12.4 4.7-3 10.6-4.6 17.5-4.6a33 33 0 0 1 16.8 4.1c4.8 2.8 8.7 7 11.2 12 2.6 5.2 4 11.5 3.9 19V192h-22v-55.9c0-6.2-1.5-11-4.8-14.6a17 17 0 0 0-13.3-5.3c-3.8 0-7.2.9-10.2 2.6-3 1.7-5.4 4.2-7 7.2-1.6 3.2-2.5 7-2.5 11.5ZM777.7 193.8a40.9 40.9 0 0 1-39.3-23 55.8 55.8 0 0 1-5.3-25 55 55 0 0 1 5.5-25c3.4-7 8.7-13 15.4-17 6.6-4 14.5-6.1 23.6-6.1a46 46 0 0 1 20 4.2 34.3 34.3 0 0 1 20 29.3h-21a20 20 0 0 0-6-11.3c-3.2-3-7.4-4.5-12.7-4.5-4.2 0-8.4 1.2-11.8 3.6-3.4 2.4-6 5.8-8 10.3a42 42 0 0 0-2.8 16.2c0 6.3 1 11.8 2.8 16.3 1.9 4.5 4.5 8 7.9 10.5a20 20 0 0 0 11.9 3.6c3.2 0 6.1-.6 8.7-1.8 2.5-1.2 4.8-3 6.4-5.4 1.9-2.5 3-5.4 3.6-8.5h21a34.5 34.5 0 0 1-19.5 29.4 45.9 45.9 0 0 1-20.4 4.2ZM664.1 193.6a35.2 35.2 0 0 1-33.3-22 61 61 0 0 1-5-26c0-10.4 1.7-19.1 5-26.2 3.5-7.2 8.1-12.6 14-16.2a35.7 35.7 0 0 1 32.9-2.7c3.2 1.6 6 3.8 8.3 6.6 1.9 2.2 3.5 4.6 4.8 7.2h1V67.9h22V192h-21.6v-14.7h-1.4c-1.3 2.6-3 5-4.9 7.2a27 27 0 0 1-21.8 9.1Zm6.2-18a19 19 0 0 0 11.9-3.7c3.2-2.6 5.7-6.1 7.4-10.6a45 45 0 0 0 2.5-15.8c0-6-.8-11.3-2.5-15.7a22.4 22.4 0 0 0-7.4-10.4 19.1 19.1 0 0 0-12-3.7c-4.8 0-8.9 1.3-12.2 3.8-3.2 2.6-5.7 6-7.4 10.6a44.4 44.4 0 0 0-2.5 15.4c0 5.8.9 11 2.5 15.5 1.7 4.6 4.2 8.1 7.5 10.8 3.3 2.5 7.4 3.8 12.2 3.8ZM558.4 193.9c-5.9 0-11.2-1-16-3.2a26 26 0 0 1-11.1-9.4c-2.7-4.2-4-9.3-4-15.4 0-5.3 1-9.6 2.9-13 1.8-3.4 4.6-6.3 7.9-8.3a40 40 0 0 1 11.3-4.7c4.3-1 8.7-1.9 13.2-2.3l13.3-1.5c3.4-.5 5.8-1.3 7.4-2.2 1.5-1 2.3-2.6 2.3-4.7v-.3c0-4.6-1.4-8.2-4-10.7-2.8-2.5-6.7-3.7-11.8-3.7a21 21 0 0 0-12.7 3.5 17.4 17.4 0 0 0-6.3 8.3l-20.5-2.9a32.7 32.7 0 0 1 21.6-22.8 58.2 58.2 0 0 1 31.2-1.3c4.4 1 8.5 2.7 12.2 5.2 3.7 2.4 6.8 5.8 8.9 9.7 2.2 4.2 3.3 9.3 3.3 15.5V192h-21v-12.8h-.8a26.8 26.8 0 0 1-14.6 12.7c-3.6 1.3-7.9 2-12.7 2Zm5.7-16.1c4.4 0 8.2-1 11.4-2.6 3.1-1.7 5.7-4.1 7.5-7 1.8-3 2.7-6.2 2.7-9.6v-11c-.7.6-1.9 1.1-3.6 1.6a196.3 196.3 0 0 1-11.4 2.3l-5.2.7c-3.2.4-6.2 1.2-8.7 2.2-2.4.8-4.5 2.3-6.2 4.2-1.5 1.8-2.2 4-2.2 7 0 4 1.5 7 4.4 9 3 2.1 6.7 3.2 11.3 3.2ZM448.9 137.5V192h-22V67.9h21.5v46.8h1c2.1-5 5.7-9.4 10.2-12.4a31 31 0 0 1 17.6-4.6c6.4 0 12 1.3 16.9 4 4.8 2.8 8.5 6.7 11.1 12 2.7 5.1 4 11.5 4 19V192h-21.9v-55.9c0-6.2-1.6-11.1-4.9-14.6a17.2 17.2 0 0 0-13.4-5.3c-3.9 0-7.4.9-10.4 2.6-3 1.6-5.5 4.2-7.2 7.2-1.7 3.2-2.5 7-2.5 11.5ZM406.9 123.5l-20 2.2a16 16 0 0 0-8.6-10 20.1 20.1 0 0 0-8.6-1.6c-4.6 0-8.4 1-11.5 3-3 2-4.6 4.5-4.6 7.6a8 8 0 0 0 3 6.6c2 1.7 5.5 3.1 10.2 4.2l15.9 3.4a40 40 0 0 1 19.6 9c4.3 4.2 6.5 9.6 6.6 16.2 0 5.6-1.8 11-5.2 15.5a33 33 0 0 1-14 10.5 53 53 0 0 1-20.6 3.7 47.8 47.8 0 0 1-27.5-7.1 28.8 28.8 0 0 1-12.5-20l21.4-2.2c1 4.2 3 7.4 6.2 9.6 3.2 2.1 7.3 3.2 12.3 3.2 5.2 0 9.4-1.1 12.6-3.2 3.2-2.2 4.8-4.8 4.8-8a8.3 8.3 0 0 0-3.1-6.6c-2-1.7-5.2-3-9.5-4l-15.9-3.3c-8.9-1.9-15.5-5-19.8-9.4a23 23 0 0 1-6.3-16.9c0-5.7 1.5-10.7 4.6-14.9 3.2-4.2 7.6-7.5 13.3-9.8a51.5 51.5 0 0 1 19.7-3.5c10.9 0 19.5 2.3 25.8 7 6.3 4.6 10.2 10.9 11.7 18.8Z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.7 KiB |
43
docs/public/library-logos/tamagui.svg
Normal file
@@ -0,0 +1,43 @@
|
||||
<svg
|
||||
width="373"
|
||||
height="41"
|
||||
viewBox="0 0 373 41"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
>
|
||||
<polygon
|
||||
shapeRendering="crispEdges"
|
||||
fill="#f76808"
|
||||
points="24.3870968 40.1612903 24.3870968 8.67741935 32.2580645 8.67741935 32.2580645 0.806451613 0.774193548 0.806451613 0.774193548 8.67741935 8.64516129 8.67741935 8.64516129 40.1612903"
|
||||
/>
|
||||
<path
|
||||
shapeRendering="crispEdges"
|
||||
fill="#f5d90a"
|
||||
d="M87.3548387,0.806451613 L87.3548387,8.67741935 L95.2258065,8.67741935 L95.2258065,40.1612903 L79.483871,40.1612903 L79.483871,24.4193548 L71.6129032,24.4193548 L71.6129032,40.1612903 L55.8709677,40.1612903 L55.8709677,8.67741935 L63.7419355,8.67741935 L63.7419355,0.806451613 L87.3548387,0.806451613 Z M79.483871,8.67741935 L71.6129032,8.67741935 L71.6129032,16.5483871 L79.483871,16.5483871 L79.483871,8.67741935 Z"
|
||||
fillRule="nonzero"
|
||||
/>
|
||||
<polygon
|
||||
shapeRendering="crispEdges"
|
||||
fill="#30a46c"
|
||||
points="130.645161 40.1612903 130.645161 22.4516129 138.516129 22.4516129 138.516129 40.1612903 154.258065 40.1612903 154.258065 0.806451613 142.451613 0.806451613 142.451613 8.67741935 126.709677 8.67741935 126.709677 0.806451613 114.903226 0.806451613 114.903226 40.1612903"
|
||||
/>
|
||||
<path
|
||||
fill="#0091ff"
|
||||
d="M205.419355,0.806451613 L205.419355,8.67741935 L213.290323,8.67741935 L213.290323,40.1612903 L197.548387,40.1612903 L197.548387,24.4193548 L189.677419,24.4193548 L189.677419,40.1612903 L173.935484,40.1612903 L173.935484,8.67741935 L181.806452,8.67741935 L181.806452,0.806451613 L205.419355,0.806451613 Z M197.548387,8.67741935 L189.677419,8.67741935 L189.677419,16.5483871 L197.548387,16.5483871 L197.548387,8.67741935 Z"
|
||||
fillRule="nonzero"
|
||||
/>
|
||||
<polygon
|
||||
shapeRendering="crispEdges"
|
||||
fill="#8e4ec6"
|
||||
points="264.451613 40.1612903 264.451613 32.2903226 272.322581 32.2903226 272.322581 16.5483871 256.580645 16.5483871 256.580645 32.2903226 248.709677 32.2903226 248.709677 8.67741935 272.322581 8.67741935 272.322581 0.806451613 240.83871 0.806451613 240.83871 8.67741935 232.967742 8.67741935 232.967742 32.2903226 240.83871 32.2903226 240.83871 40.1612903"
|
||||
/>
|
||||
<polygon
|
||||
shapeRendering="crispEdges"
|
||||
fill="#d6409f"
|
||||
points="323.483871 40.1612903 323.483871 32.2903226 331.354839 32.2903226 331.354839 0.806451613 315.612903 0.806451613 315.612903 32.2903226 307.741935 32.2903226 307.741935 0.806451613 292 0.806451613 292 32.2903226 299.870968 32.2903226 299.870968 40.1612903"
|
||||
/>
|
||||
<polygon
|
||||
shapeRendering="crispEdges"
|
||||
fill="#e5484d"
|
||||
points="372.677419 40.1612903 372.677419 0.806451613 356.935484 0.806451613 356.935484 40.1612903"
|
||||
/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.6 KiB |
22
docs/showcase.md
Normal file
@@ -0,0 +1,22 @@
|
||||
---
|
||||
layout: page
|
||||
outline: 2
|
||||
outlineTitle: Showcase
|
||||
---
|
||||
<script setup>
|
||||
import PageContainer from '.vitepress/theme/components/PageContainer.vue'
|
||||
import ShowcaseList from '.vitepress/theme/components/showcase/ShowcaseList.vue'
|
||||
</script>
|
||||
|
||||
<div class="VPDoc content">
|
||||
<PageContainer>
|
||||
<ShowcaseList />
|
||||
</PageContainer>
|
||||
</div>
|
||||
|
||||
<style scoped>
|
||||
.container {
|
||||
margin: 0 auto;
|
||||
max-width: 1200px;
|
||||
}
|
||||
</style>
|
||||
@@ -12,13 +12,17 @@
|
||||
},
|
||||
"title": "Lucide Icons icon schema",
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"required": ["$schema", "categories", "tags"],
|
||||
"properties": {
|
||||
"tags": {
|
||||
"$schema": {
|
||||
"type": "string"
|
||||
},
|
||||
"aliases": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"minItems": 1,
|
||||
"uniqueItems": true
|
||||
},
|
||||
"categories": {
|
||||
@@ -33,6 +37,15 @@
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"minItems": 1,
|
||||
"uniqueItems": true
|
||||
},
|
||||
"tags": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"minItems": 1,
|
||||
"uniqueItems": true
|
||||
}
|
||||
},
|
||||
|
||||
@@ -17,5 +17,8 @@
|
||||
"devices",
|
||||
"notifications",
|
||||
"time"
|
||||
],
|
||||
"aliases": [
|
||||
"alarm-check"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
Before Width: | Height: | Size: 386 B After Width: | Height: | Size: 386 B |
21
icons/alarm-smoke.json
Normal file
@@ -0,0 +1,21 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"contributors": [
|
||||
"danielbayley"
|
||||
],
|
||||
"tags": [
|
||||
"fire",
|
||||
"alert",
|
||||
"warning",
|
||||
"detector",
|
||||
"carbon monoxide",
|
||||
"safety",
|
||||
"equipment",
|
||||
"amenities"
|
||||
],
|
||||
"categories": [
|
||||
"home",
|
||||
"devices",
|
||||
"travel"
|
||||
]
|
||||
}
|
||||
17
icons/alarm-smoke.svg
Normal file
@@ -0,0 +1,17 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M4 8a2 2 0 0 1-2-2V3h20v3a2 2 0 0 1-2 2Z" />
|
||||
<path d="m19 8-.8 3c-.1.6-.6 1-1.2 1H7c-.6 0-1.1-.4-1.2-1L5 8" />
|
||||
<path d="M16 21c0-2.5 2-2.5 2-5" />
|
||||
<path d="M11 21c0-2.5 2-2.5 2-5" />
|
||||
<path d="M6 21c0-2.5 2-2.5 2-5" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 445 B |
22
icons/anvil.json
Normal file
@@ -0,0 +1,22 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"contributors": [
|
||||
"danielbayley"
|
||||
],
|
||||
"tags": [
|
||||
"metal",
|
||||
"iron",
|
||||
"alloy",
|
||||
"materials",
|
||||
"heavy",
|
||||
"weight",
|
||||
"blacksmith",
|
||||
"forge",
|
||||
"acme"
|
||||
],
|
||||
"categories": [
|
||||
"buildings",
|
||||
"tools",
|
||||
"gaming"
|
||||
]
|
||||
}
|
||||
17
icons/anvil.svg
Normal file
@@ -0,0 +1,17 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M7 10c-2.8 0-5-2.2-5-5h5" />
|
||||
<path d="M7 4v8h7a8 8 0 0 0 8-8Z" />
|
||||
<path d="M9 12v5" />
|
||||
<path d="M15 12v5" />
|
||||
<path d="M5 20a3 3 0 0 1 3-3h8a3 3 0 0 1 3 3v1H5Z" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 390 B |
@@ -2,7 +2,8 @@
|
||||
"$schema": "../icon.schema.json",
|
||||
"contributors": [
|
||||
"karsa-mistmere",
|
||||
"ericfennis"
|
||||
"ericfennis",
|
||||
"danielbayley"
|
||||
],
|
||||
"tags": [
|
||||
"unarchive",
|
||||
|
||||
@@ -3,7 +3,8 @@
|
||||
"contributors": [
|
||||
"colebemis",
|
||||
"ericfennis",
|
||||
"karsa-mistmere"
|
||||
"karsa-mistmere",
|
||||
"danielbayley"
|
||||
],
|
||||
"tags": [
|
||||
"index",
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M19 9V6a2 2 0 0 0-2-2H7a2 2 0 0 0-2 2v3" />
|
||||
<path d="M3 11v5a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-5a2 2 0 0 0-4 0v2H7v-2a2 2 0 0 0-4 0Z" />
|
||||
<path d="M3 16a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-5a2 2 0 0 0-4 0v2H7v-2a2 2 0 0 0-4 0Z" />
|
||||
<path d="M5 18v2" />
|
||||
<path d="M19 18v2" />
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 403 B After Width: | Height: | Size: 401 B |
@@ -10,9 +10,12 @@
|
||||
"physics",
|
||||
"particle",
|
||||
"element",
|
||||
"molecule"
|
||||
"molecule",
|
||||
"electricity",
|
||||
"energy",
|
||||
"chemistry"
|
||||
],
|
||||
"categories": [
|
||||
"science"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
35
icons/audio-lines.json
Normal file
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"contributors": [
|
||||
"danielbayley"
|
||||
],
|
||||
"tags": [
|
||||
"graphic equaliser",
|
||||
"sound",
|
||||
"noise",
|
||||
"listen",
|
||||
"hearing",
|
||||
"hertz",
|
||||
"frequency",
|
||||
"wavelength",
|
||||
"vibrate",
|
||||
"sine",
|
||||
"synthesizer",
|
||||
"synthesiser",
|
||||
"levels",
|
||||
"track",
|
||||
"music",
|
||||
"playback",
|
||||
"radio",
|
||||
"broadcast",
|
||||
"airwaves",
|
||||
"voice",
|
||||
"vocals",
|
||||
"singer",
|
||||
"song"
|
||||
],
|
||||
"categories": [
|
||||
"multimedia",
|
||||
"communication"
|
||||
]
|
||||
}
|
||||
18
icons/audio-lines.svg
Normal file
@@ -0,0 +1,18 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M2 10v3" />
|
||||
<path d="M6 6v11" />
|
||||
<path d="M10 3v18" />
|
||||
<path d="M14 8v7" />
|
||||
<path d="M18 5v13" />
|
||||
<path d="M22 10v3" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 349 B |
34
icons/audio-waveform.json
Normal file
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"contributors": [
|
||||
"danielbayley"
|
||||
],
|
||||
"tags": [
|
||||
"sound",
|
||||
"noise",
|
||||
"listen",
|
||||
"hearing",
|
||||
"hertz",
|
||||
"frequency",
|
||||
"wavelength",
|
||||
"vibrate",
|
||||
"sine",
|
||||
"synthesizer",
|
||||
"synthesiser",
|
||||
"levels",
|
||||
"track",
|
||||
"music",
|
||||
"playback",
|
||||
"radio",
|
||||
"broadcast",
|
||||
"airwaves",
|
||||
"voice",
|
||||
"vocals",
|
||||
"singer",
|
||||
"song"
|
||||
],
|
||||
"categories": [
|
||||
"multimedia",
|
||||
"communication"
|
||||
]
|
||||
}
|
||||
@@ -9,7 +9,5 @@
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M14 19a6 6 0 0 0-12 0" />
|
||||
<circle cx="8" cy="9" r="4" />
|
||||
<path d="M22 19a6 6 0 0 0-6-6 4 4 0 1 0 0-8" />
|
||||
<path d="M2 13a2 2 0 0 0 2-2V7a2 2 0 0 1 4 0v13a2 2 0 0 0 4 0V4a2 2 0 0 1 4 0v13a2 2 0 0 0 4 0v-4a2 2 0 0 1 2-2" />
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 328 B After Width: | Height: | Size: 326 B |
@@ -8,7 +8,18 @@
|
||||
"karsa-mistmere"
|
||||
],
|
||||
"tags": [
|
||||
"hatchet"
|
||||
"hatchet",
|
||||
"weapon",
|
||||
"chop",
|
||||
"sharp",
|
||||
"equipment",
|
||||
"fireman",
|
||||
"firefighter",
|
||||
"brigade",
|
||||
"lumberjack",
|
||||
"woodcutter",
|
||||
"logger",
|
||||
"forestry"
|
||||
],
|
||||
"categories": [
|
||||
"tools",
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M4 20V10a4 4 0 0 1 4-4h8a4 4 0 0 1 4 4v10a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2Z" />
|
||||
<path d="M4 10a4 4 0 0 1 4-4h8a4 4 0 0 1 4 4v10a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2Z" />
|
||||
<path d="M9 6V4a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v2" />
|
||||
<path d="M8 21v-5a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v5" />
|
||||
<path d="M8 10h8" />
|
||||
|
||||
|
Before Width: | Height: | Size: 452 B After Width: | Height: | Size: 449 B |
@@ -1,5 +1,8 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"contributors": [
|
||||
"danielbayley"
|
||||
],
|
||||
"tags": [
|
||||
"statistics",
|
||||
"diagram",
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"contributors": [
|
||||
"danielbayley"
|
||||
],
|
||||
"tags": [
|
||||
"statistics",
|
||||
"diagram",
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
"tags": [
|
||||
"power",
|
||||
"electricity",
|
||||
"energy",
|
||||
"accumulator",
|
||||
"charge"
|
||||
],
|
||||
@@ -17,4 +18,4 @@
|
||||
"connectivity",
|
||||
"devices"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
"tags": [
|
||||
"power",
|
||||
"electricity",
|
||||
"energy",
|
||||
"accumulator",
|
||||
"charge"
|
||||
],
|
||||
@@ -15,4 +16,4 @@
|
||||
"connectivity",
|
||||
"devices"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
"tags": [
|
||||
"power",
|
||||
"electricity",
|
||||
"energy",
|
||||
"accumulator",
|
||||
"charge"
|
||||
],
|
||||
@@ -15,4 +16,4 @@
|
||||
"connectivity",
|
||||
"devices"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@
|
||||
"tags": [
|
||||
"power",
|
||||
"electricity",
|
||||
"energy",
|
||||
"accumulator",
|
||||
"charge"
|
||||
],
|
||||
@@ -15,4 +16,4 @@
|
||||
"connectivity",
|
||||
"devices"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||