Compare commits

..
Author SHA1 Message Date
Eric Fennis 224b4e60c2 Init setup commit lint 2024-07-22 13:46:09 +02:00
314 changed files with 23052 additions and 21053 deletions
-1
View File
@@ -9,7 +9,6 @@ strikethrough
touchpad
ungroup
pilcrow
toc
# Brands
codepen
+2
View File
@@ -17,6 +17,8 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v4
with:
node-version: 18
@@ -1,35 +0,0 @@
name: Close Issue with Banned Phrases
on:
issues:
types: [opened]
jobs:
block_phrases:
runs-on: ubuntu-latest
permissions:
issues: write
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Check for blocked phrases in issue title
run: |
ISSUE_TITLE=$(jq -r '.issue.title' "$GITHUB_EVENT_PATH")
BLOCKED_PHRASES=("twitter" "whatsapp" "logo" "google" "tiktok" "facebook" "slack" "discord")
# Check title and body for blocked phrases
for PHRASE in "${BLOCKED_PHRASES[@]}"
do
if echo "$ISSUE_TITLE" | grep -i "$PHRASE"; then
gh issue close ${{ github.event.issue.number }} --reason "not planned" --comment "This looks like a duplicate, use the [search](https://github.com/lucide-icons/lucide/issues?q=is%3Aissue+$PHRASE) to find similar issues.
Read more about brand guideline rules at [We're not accepting new Brand icons #670](https://github.com/lucide-icons/lucide/issues/670).
Always happy to help on [Discord](https://discord.gg/EH6nSts)."
gh issue lock ${{ github.event.issue.number }} --reason spam
exit 1
fi
done
env:
GH_TOKEN: ${{ github.token }}
+2
View File
@@ -11,6 +11,8 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v4
with:
node-version: 18
+4
View File
@@ -13,6 +13,8 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v4
with:
node-version: 18
@@ -29,6 +31,8 @@ jobs:
steps:
- uses: actions/checkout@v3
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v3.8.1
with:
node-version: 18
+2
View File
@@ -13,6 +13,8 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v4
with:
node-version: 18
+2 -1
View File
@@ -4,7 +4,6 @@ on:
pull_request:
paths:
- packages/lucide-preact/**
- packages/shared/**
- tools/build-icons/**
- tools/rollup-plugins/**
- pnpm-lock.yaml
@@ -15,6 +14,8 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v4
with:
node-version: 18
+2 -1
View File
@@ -4,7 +4,6 @@ on:
pull_request:
paths:
- packages/lucide-react-native/**
- packages/shared/**
- tools/build-icons/**
- tools/rollup-plugins/**
- pnpm-lock.yaml
@@ -15,6 +14,8 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v4
with:
node-version: 18
+4 -1
View File
@@ -4,7 +4,6 @@ on:
pull_request:
paths:
- packages/lucide-react/**
- packages/shared/**
- tools/build-icons/**
- tools/rollup-plugins/**
- scripts/generateNextJSAliases.mjs
@@ -16,6 +15,8 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v4
with:
node-version: 18
@@ -32,6 +33,8 @@ jobs:
steps:
- uses: actions/checkout@v3
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v3.8.1
with:
node-version: 18
-24
View File
@@ -1,24 +0,0 @@
name: Lucide Shared Checks
on:
pull_request:
paths:
- packages/shared/**
- pnpm-lock.yaml
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: pnpm/action-setup@v2
- uses: actions/setup-node@v3.8.1
with:
node-version: 18
cache: 'pnpm'
- name: Install dependencies
run: pnpm install --frozen-lockfile
- name: Test
run: pnpm --filter lucide-react test
+4 -1
View File
@@ -4,7 +4,6 @@ on:
pull_request:
paths:
- packages/lucide-solid/**
- packages/shared/**
- tools/build-icons/**
- tools/rollup-plugins/**
- pnpm-lock.yaml
@@ -15,6 +14,8 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v4
with:
node-version: 18
@@ -31,6 +32,8 @@ jobs:
steps:
- uses: actions/checkout@v3
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v3.8.1
with:
node-version: 18
+2
View File
@@ -13,6 +13,8 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v4
with:
node-version: 18
+4 -1
View File
@@ -4,7 +4,6 @@ on:
pull_request:
paths:
- packages/lucide-svelte/**
- packages/shared/**
- tools/build-icons/**
- tools/rollup-plugins/**
- pnpm-lock.yaml
@@ -15,6 +14,8 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v4
with:
node-version: 18
@@ -31,6 +32,8 @@ jobs:
steps:
- uses: actions/checkout@v3
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v3.8.1
with:
node-version: 18
+4 -1
View File
@@ -4,7 +4,6 @@ on:
pull_request:
paths:
- packages/lucide-vue-next/**
- packages/shared/**
- tools/build-icons/**
- tools/rollup-plugins/**
- pnpm-lock.yaml
@@ -15,6 +14,8 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v4
with:
node-version: 18
@@ -31,6 +32,8 @@ jobs:
steps:
- uses: actions/checkout@v3
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v3.8.1
with:
node-version: 18
+4 -1
View File
@@ -4,7 +4,6 @@ on:
pull_request:
paths:
- packages/lucide-vue/**
- packages/shared/**
- tools/build-icons/**
- tools/rollup-plugins/**
- pnpm-lock.yaml
@@ -15,6 +14,8 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v4
with:
node-version: 18
@@ -31,6 +32,8 @@ jobs:
steps:
- uses: actions/checkout@v3
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v3.8.1
with:
node-version: 18
+4
View File
@@ -14,6 +14,8 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v4
with:
node-version: 18
@@ -30,6 +32,8 @@ jobs:
steps:
- uses: actions/checkout@v3
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v3.8.1
with:
node-version: 18
+16
View File
@@ -0,0 +1,16 @@
name: Validate PR title
on:
pull_request:
types:
- opened
- edited
- synchronize
jobs:
semantic-pull-request:
runs-on: ubuntu-latest
steps:
- uses: amannn/action-semantic-pull-request@v5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+6
View File
@@ -56,6 +56,8 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v4
with:
node-version: 18
@@ -87,6 +89,8 @@ jobs:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v3
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v4
with:
node-version: 18
@@ -117,6 +121,8 @@ jobs:
steps:
- uses: actions/checkout@v4
- uses: pnpm/action-setup@v2
with:
version: 8
- uses: actions/setup-node@v4
with:
node-version: 18
-2
View File
@@ -16,9 +16,7 @@ outlined
packages/**/src/icons/*.js
packages/**/src/icons/*.ts
packages/**/src/icons/*.tsx
packages/**/src/aliases/*.ts
packages/**/src/aliases.ts
!packages/**/src/aliases/index.ts
packages/**/src/dynamicIconImports.ts
packages/**/dynamicIconImports.js
packages/**/dynamicIconImports.d.ts
+1 -1
View File
@@ -72,7 +72,7 @@ pnpm install # Install dependencies, including the workspace packages
### Packages -> PNPM Workspaces
To distribute different packages we use [PNPM workspaces](https://pnpm.io/workspaces). Before you start make sure you are familiar with this concept. The concept of working in workspaces is created by Yarn, they have a well written introduction: [yarn workspaces](https://classic.yarnpkg.com/en/docs/workspaces).
To distribute different packages we use PNPM workspaces. Before you start make sure you are familiar with this concept. The concept of working in workspaces is created by Yarn, they have a well written introduction: [yarn workspaces](https://classic.yarnpkg.com/lang/enhttps://lucide.dev/docs/workspaces).
The configured directory for workspaces is the [packages](https://github.com/lucide-icons/lucide/tree/main/packages) directory, located in the root directory. There you will find all the current packages from lucide.
There are more workspaces defined, see [`pnpm-workspace.yaml`](https://github.com/lucide-icons/lucide/blob/main/pnpm-workspace.yaml).
+1 -1
View File
@@ -1,5 +1,5 @@
{
"$schema": "../category.schema.json",
"title": "Charts",
"icon": "chart-pie"
"icon": "pie-chart"
}
View File
+28
View File
@@ -0,0 +1,28 @@
import type { UserConfig } from '@commitlint/types';
import fs from 'fs/promises'
import path from 'path'
// Read directory
const getAllPackageFromDirectory = async (directory: string) => {
return fs.readdir(path.resolve(process.cwd(), directory))
}
const Configuration: UserConfig = {
extends: ['@commitlint/config-conventional'],
rules: {
'scope-enum': async () => {
const packages = await getAllPackageFromDirectory('packages')
const toolPackages = await getAllPackageFromDirectory('tools')
return [2, 'always', [
'site',
'meta',
...packages,
...toolPackages,
]
]
}
},
};
export default Configuration;
+11 -2
View File
@@ -28,7 +28,7 @@ export default eventHandler((event) => {
.map((_, idx, arr) => arr.slice(0, idx + 1).join('-'))
.reverse()
.find((groupName) => groupName in iconNodes);
if (!(name in iconNodes) && backdropName) {
if (backdropName) {
const iconNode = iconNodes[backdropName];
const LucideIcon = createLucideIcon(backdropName, iconNode);
@@ -39,9 +39,18 @@ export default eventHandler((event) => {
createElement(Backdrop, {
backdropString,
src,
color: '#777',
color: name in iconNodes ? 'red' : '#777',
}),
);
if (name in iconNodes) {
children.push(
createElement(Backdrop, {
backdropString: src,
src: backdropString,
color: 'lime',
}),
);
}
}
const svg = Buffer.from(
@@ -1,37 +0,0 @@
import { eventHandler, setResponseHeader, defaultContentType } from 'h3';
import { renderToString, renderToStaticMarkup } from 'react-dom/server';
import { createElement } from 'react';
import Diff from '../../../lib/SvgPreview/Diff.tsx';
import iconNodes from '../../../data/iconNodes';
import createLucideIcon from 'lucide-react/src/createLucideIcon';
export default eventHandler((event) => {
const { params } = event.context;
const pathData = params.data.split('/');
const data = pathData.at(-1).slice(0, -4);
const [name] = pathData;
const newSrc = Buffer.from(data, 'base64')
.toString('utf8')
.replaceAll('\n', '')
.replace(/<svg[^>]*>|<\/svg>/g, '');
const children = [];
const oldSrc = iconNodes[name]
? renderToStaticMarkup(createElement(createLucideIcon(name, iconNodes[name])))
.replaceAll('\n', '')
.replace(/<svg[^>]*>|<\/svg>/g, '')
: '';
const svg = Buffer.from(
// We can't use jsx here, is not supported here by nitro.
renderToString(createElement(Diff, { oldSrc, newSrc, showGrid: true }, children)),
).toString('utf8');
defaultContentType(event, 'image/svg+xml');
setResponseHeader(event, 'Cache-Control', 'public,max-age=31536000');
return svg;
});
@@ -76,24 +76,5 @@
],
"source": "https://github.com/swisnl/nuxt-lucide-icons",
"documentation": "https://github.com/swisnl/nuxt-lucide-icons/blob/main/README.md"
},
{
"name": "lucide-lustre",
"description": "A library providing https://lucide.dev icons to lustre",
"icon": "/framework-logos/lustre.webp",
"shields": [
{
"alt": "Latest Stable Version",
"src": "https://img.shields.io/hexpm/v/lucide_lustre",
"href": "https://hex.pm/packages/lucide_lustre"
},
{
"alt": "Total Downloads",
"src": "https://img.shields.io/hexpm/dw/lucide_lustre",
"href": "https://hex.pm/packages/lucide_lustre"
}
],
"source": "https://github.com/dinkelspiel/lucide_lustre",
"documentation": "https://github.com/dinkelspiel/lucide_lustre/blob/master/README.md"
}
]
+1 -1
View File
@@ -11,7 +11,7 @@
},
{
"icon": "x",
"link": "https://x.com/ericfennis"
"link": "https://github.com/ericfennis"
}
]
},
+8 -16
View File
@@ -3,16 +3,10 @@ import React from 'react';
interface BackdropProps {
src: string;
color?: string;
outline?: boolean;
backdropString: string;
}
const Backdrop = ({
src,
color = 'red',
outline = true,
backdropString,
}: BackdropProps): JSX.Element => {
const Backdrop = ({ src, color = 'red', backdropString }: BackdropProps): JSX.Element => {
const id = React.useId();
return (
<>
@@ -79,15 +73,13 @@ const Backdrop = ({
opacity={0.75}
dangerouslySetInnerHTML={{ __html: src }}
/>
{outline && (
<g
stroke={color}
strokeWidth={2.25}
opacity={0.75}
mask={`url(#svg-preview-backdrop-mask-outline-${id})`}
dangerouslySetInnerHTML={{ __html: backdropString }}
/>
)}
<g
stroke={color}
strokeWidth={2.25}
opacity={0.75}
mask={`url(#svg-preview-backdrop-mask-outline-${id})`}
dangerouslySetInnerHTML={{ __html: backdropString }}
/>
</g>
</>
);
-71
View File
@@ -1,71 +0,0 @@
import React from 'react';
import Backdrop from './Backdrop.tsx';
import { darkModeCss, Grid } from './index.tsx';
const SvgPreview = React.forwardRef<
SVGSVGElement,
{
oldSrc: string;
newSrc: string;
} & React.SVGProps<SVGSVGElement>
>(({ oldSrc, newSrc, children, ...props }, ref) => {
return (
<svg
ref={ref}
xmlns="http://www.w3.org/2000/svg"
width={24}
height={24}
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
strokeWidth={2}
strokeLinecap="round"
strokeLinejoin="round"
{...props}
>
<style>{darkModeCss}</style>
<Grid
strokeWidth={0.1}
stroke="#777"
strokeOpacity={0.3}
radius={1}
/>
<mask
id="gray"
maskUnits="userSpaceOnUse"
>
<rect
x="0"
y="0"
width="24"
height="24"
fill="#000"
stroke="none"
/>
<g
stroke="#fff"
dangerouslySetInnerHTML={{ __html: oldSrc }}
/>
</mask>
<Backdrop
src=""
outline={false}
backdropString={`<g mask="url('#gray')">${newSrc}</g>`}
color="#777"
/>
<Backdrop
src={oldSrc}
backdropString={newSrc}
color="lime"
/>
<Backdrop
src={newSrc}
backdropString={oldSrc}
color="red"
/>
{children}
</svg>
);
});
export default SvgPreview;
+14 -17
View File
@@ -2,23 +2,7 @@ import React from 'react';
import { PathProps, Path } from './types';
import { getPaths, assert } from './utils';
export const darkModeCss = `
@media screen and (prefers-color-scheme: light) {
.svg-preview-grid-rect { fill: none }
}
@media screen and (prefers-color-scheme: dark) {
.svg-preview-grid-rect { fill: none }
.svg
.svg-preview-grid-group,
.svg-preview-radii-group,
.svg-preview-shadow-mask-group,
.svg-preview-shadow-group {
stroke: #fff;
}
}
`;
export const Grid = ({
const Grid = ({
radius,
fill = '#fff',
...props
@@ -355,6 +339,19 @@ const SvgPreview = React.forwardRef<
>(({ src, children, showGrid = false, ...props }, ref) => {
const paths = typeof src === 'string' ? getPaths(src) : src;
const darkModeCss = `@media screen and (prefers-color-scheme: light) {
.svg-preview-grid-rect { fill: none }
}
@media screen and (prefers-color-scheme: dark) {
.svg-preview-grid-rect { fill: none }
.svg
.svg-preview-grid-group,
.svg-preview-radii-group,
.svg-preview-shadow-mask-group,
.svg-preview-shadow-group {
stroke: #fff;
}
}`;
return (
<svg
ref={ref}
-4
View File
@@ -46,10 +46,6 @@ const sidebar: UserConfig<DefaultTheme.Config>['themeConfig']['sidebar'] = {
text: 'Filled icons',
link: '/guide/advanced/filled-icons',
},
{
text: 'Aliased Names',
link: '/guide/advanced/aliased-names',
},
// {
// text: 'Combining icons',
// },
@@ -42,7 +42,7 @@ onMounted(() => {
font-weight: 400;
background: var(--vp-c-brand-dark);
color: white;
z-index: 99;
z-index: 10;
white-space: nowrap;
padding: 2px 8px;
border-radius: 4px;
@@ -171,14 +171,16 @@ watch(absoluteStrokeWidth, (enabled) => {
margin-top: 32px;
padding: 0;
background: none;
max-width: 280px;
}
@media (min-width: 640px) {
.card {
display: grid;
grid-template-columns: 8fr 10fr;
}
/*
/*
.card-column {
flex: 1;
} */
@@ -75,7 +75,6 @@ defineProps<TeamMember>()
font-weight: 500;
color: var(--vp-c-text-2);
text-align: center;
text-wrap: balance;
margin-bottom: 16px;;
}
@@ -1,98 +1,98 @@
<script setup lang="ts">
import { computed } from 'vue';
import { toPascalCase } from '@lucide/shared';
import ButtonMenu from '../base/ButtonMenu.vue';
import { startCase, camelCase } from 'lodash-es'
import ButtonMenu from '../base/ButtonMenu.vue'
import { useIconStyleContext } from '../../composables/useIconStyle';
import useConfetti from '../../composables/useConfetti';
const props = defineProps<{
name: string;
popoverPosition?: 'top' | 'bottom';
}>();
const { size, color, strokeWidth, absoluteStrokeWidth } = useIconStyleContext();
const { animate, confetti } = useConfetti();
name: string
popoverPosition?: 'top' | 'bottom'
}>()
const { size, color, strokeWidth, absoluteStrokeWidth } = useIconStyleContext()
const { animate, confetti } = useConfetti()
const componentName = computed(() => {
return (toPascalCase(props.name) as string).replace(/\s/g, '');
});
return startCase(camelCase(props.name)).replace(/\s/g, '')
})
function copyJSX() {
let attrs = [''];
let attrs = ['']
if (size.value && size.value !== 24) {
attrs.push(`size={${size.value}}`);
attrs.push(`size={${size.value}}`)
}
if (color.value && color.value !== 'currentColor') {
attrs.push(`color="${color.value}"`);
attrs.push(`color="${color.value}"`)
}
if (strokeWidth.value && strokeWidth.value !== 2) {
attrs.push(`strokeWidth={${strokeWidth.value}}`);
attrs.push(`strokeWidth={${strokeWidth.value}}`)
}
if (absoluteStrokeWidth.value) {
attrs.push(`absoluteStrokeWidth`);
attrs.push(`absoluteStrokeWidth`)
}
const code = `<${componentName.value}${attrs.join(' ')} />`;
const code = `<${componentName.value}${attrs.join(' ')} />`
navigator.clipboard.writeText(code);
navigator.clipboard.writeText(code)
}
function copyComponentName() {
const code = componentName.value;
const code = componentName.value
navigator.clipboard.writeText(code);
navigator.clipboard.writeText(code)
}
function copyVue() {
let attrs = [''];
let attrs = ['']
if (size.value && size.value !== 24) {
attrs.push(`:size="${size.value}"`);
attrs.push(`:size="${size.value}"`)
}
if (color.value && color.value !== 'currentColor') {
attrs.push(`color="${color.value}"`);
attrs.push(`color="${color.value}"`)
}
if (strokeWidth.value && strokeWidth.value !== 2) {
attrs.push(`:stroke-width="${strokeWidth.value}"`);
attrs.push(`:stroke-width="${strokeWidth.value}"`)
}
if (absoluteStrokeWidth.value) {
attrs.push(`absoluteStrokeWidth`);
attrs.push(`absoluteStrokeWidth`)
}
const code = `<${componentName.value}${attrs.join(' ')} />`;
const code = `<${componentName.value}${attrs.join(' ')} />`
navigator.clipboard.writeText(code);
navigator.clipboard.writeText(code)
}
function copyAngular() {
let attrs = [''];
let attrs = ['']
attrs.push(`name="${props.name}"`);
attrs.push(`name="${props.name}"`)
if (size.value && size.value !== 24) {
attrs.push(`[size]="${size.value}"`);
attrs.push(`[size]="${size.value}"`)
}
if (color.value && color.value !== 'currentColor') {
attrs.push(`color="${color.value}"`);
attrs.push(`color="${color.value}"`)
}
if (strokeWidth.value && strokeWidth.value !== 2) {
attrs.push(`[strokeWidth]="${strokeWidth.value}"`);
attrs.push(`[strokeWidth]="${strokeWidth.value}"`)
}
if (absoluteStrokeWidth.value) {
attrs.push(`[absoluteStrokeWidth]="true"`);
attrs.push(`[absoluteStrokeWidth]="true"`)
}
const code = `<lucide-icon${attrs.join(' ')}></lucide-icon>`;
const code = `<lucide-icon${attrs.join(' ')}></lucide-icon>`
navigator.clipboard.writeText(code);
navigator.clipboard.writeText(code)
}
</script>
@@ -106,11 +106,11 @@ function copyAngular() {
data-confetti-text="Copied!"
:popoverPosition="popoverPosition"
:options="[
{ text: 'Copy JSX', onClick: copyJSX },
{ text: 'Copy Component Name', onClick: copyComponentName },
{ text: 'Copy Vue', onClick: copyVue },
{ text: 'Copy Svelte', onClick: copyJSX },
{ text: 'Copy Angular', onClick: copyAngular },
{ text: 'Copy JSX' , onClick: copyJSX },
{ text: 'Copy Component Name' , onClick: copyComponentName },
{ text: 'Copy Vue' , onClick: copyVue },
{ text: 'Copy Svelte' , onClick: copyJSX },
{ text: 'Copy Angular' , onClick: copyAngular },
]"
/>
</template>
@@ -23,7 +23,7 @@ const links = computed(() => [
href: `${githubLink.value}/releases`
},
{
text: 'GitHub',
text: 'Github',
href: `${githubLink.value}`
},
{
-93
View File
@@ -1,93 +0,0 @@
# Aliased Names
Icons can have multiple names for the same icon. This is because we choose to rename some icons to make them more consistent with the rest of the icon set, or the name was not generic. For example, the `edit-2` icon is renamed to `pen` to make the name more generic, since it is just a pen icon.
Beside aliases names lucide also includes prefixed and suffixed names to use within your project. This is to prevent import name collisions with other libraries or your own code.
```tsx
// These are all the same icon
import {
Home,
HomeIcon,
LucideHome,
} from "lucide-react";
```
## Choosing import name style
To be consistent in your imports or want to change the autocompletion of Lucide icons in your IDE there an option to able the choose the import name style you want.
This can be done by creating a custom module declaration file to override the lucide imports and turning off the autocomplete in your IDE.
### Turn off autocomplete in your IDE
```json [.vscode/settings.json]
{
"typescript.preferences.autoImportFileExcludePatterns": [
"lucide-react", // or
"lucide-preact", // or
"lucide-react-native", // or
"lucide-vue-next",
]
}
```
### Create a custom module declaration file
Only available for `lucide-react`, `lucide-preact`, `lucide-react-native`, `lucide-vue-next` package.
This will enable you to choose the import name style you want to use in your project.
::: code-group
```ts [React]
declare module "lucide-react" {
// Prefixed import names
export * from "lucide-react/dist/lucide-react.prefixed";
// or
// Suffixed import names
export * from "lucide-react/dist/lucide-react.suffixed";
}
```
```ts [Vue]
declare module "lucide-vue-next" {
// Prefixed import names
export * from "lucide-vue-next/dist/lucide-vue-next.prefixed";
// or
// Suffixed import names
export * from "lucide-vue-next/dist/lucide-vue-next.suffixed";
}
```
```ts [Preact]
declare module "lucide-preact" {
// Prefixed import names
export * from "lucide-preact/dist/lucide-preact.prefixed";
// or
// Suffixed import names
export * from "lucide-preact/dist/lucide-preact.suffixed";
}
```
```ts [React Native]
declare module "lucide-react-native" {
// Prefixed import names
export * from "lucide-react-native/dist/lucide-react-native.prefixed";
// or
// Suffixed import names
export * from "lucide-react-native/dist/lucide-react-native.suffixed";
}
```
:::
Place this in your project root or in a folder where your tsconfig.json is located, or locate it in your defined type directory.
Easiest way is to create a `@types` folder in your project root and name the file `[package-name].d.ts`.
### Import name styles
| Import Style | Available imports | Declaration file import |
| ------------- | --------------------------- | ----------------------- |
| Default | Home, HomeIcon, LucideHome | |
| Prefixed | LucideHome | [package].prefixed |
| Suffixed | HomeIcon | [package].suffixed |
+3 -3
View File
@@ -52,7 +52,7 @@ Here are rules that should be followed to keep quality and consistency when maki
![optical-volume-high](../../images/optical-volume-high.svg?raw=true "optical-volume-high")
**Tip:** place your icon next to the circle or square icon and blur them both; your icon should not feel much darker than the base shape.
**Tip:** place your icon next to circle or square and blur them both; your icon should not feel much darker than the base shape.
### 10. Icons should be visually centered by their center of gravity.
@@ -76,7 +76,7 @@ Here are rules that should be followed to keep quality and consistency when maki
![curvature-uneven](../../images/curvature-uneven.svg?raw=true "curvature-uneven")
**Tip:** make sure to use arcs or quadratic curves. When using cubic curves control points should have mirrored angles for smooth curves.
**Tip:** make sure to use arcs or quadratic curves, when using cubic curves control points should have mirrored angles for smooth curves.
### 13. Icons should aim to be pixel perfect so that they will be sharp on low DPI displays.
@@ -142,7 +142,7 @@ For each icon these attributes are applied, corresponding to the above rules.
### Minify paths
The code of paths can sometimes get quite large. To reduce file size we like to minify the code.
We recommend to use [SVGOMG](https://jakearchibald.github.io/svgomg/) to minify paths to 2 points of precision.
We recommend to use the [SVGOMG](https://jakearchibald.github.io/svgomg/) to minify paths to 2 points of precision.
### Allowed elements
+1 -1
View File
@@ -28,7 +28,7 @@ However, not everyone can understand them easily. Read more about [how to use Lu
## Official Packages
Lucide's official packages are designed to work on different platforms, making it easier for users to integrate icons into their projects. The packages are available for various technologies, including [Web (Vanilla)](https://lucide.dev/guide/packages/lucide), [React](https://lucide.dev/guide/packages/lucide-react), [React Native](https://lucide.dev/guide/packages/lucide-react-native), [Vue](https://lucide.dev/guide/packages/lucide-vue), [Vue 3](https://lucide.dev/guide/packages/lucide-vue-next), [Svelte](https://lucide.dev/guide/packages/lucide-svelte), [Preact](https://lucide.dev/guide/packages/lucide-preact), [Solid](https://lucide.dev/guide/packages/lucide-solid), [Angular](https://lucide.dev/guide/packages/lucide-angular), [NodeJS](https://lucide.dev/guide/packages/lucide-static#nodejs) and [Flutter](https://lucide.dev/guide/packages/lucide-flutter).
Lucide's official packages are designed to work on different platforms, making it easier for users to integrate icons into their projects. The packages are available for various technologies, including [Web (Vanilla)](https://lucide.dev/guide/packages/lucide), [React](https://lucide.dev/guide/packages/lucide-react), [React Native](https://lucide.dev/guide/packages/lucide-react-native), [Vue](https://lucide.dev/guide/packages/lucide-vue), [Vue 3](https://lucide.dev/guide/packages/lucide-vue-next), [Svelte](https://lucide.dev/guide/packages/lucide-svelte),[Preact](https://lucide.dev/guide/packages/lucide-preact), [Solid](https://lucide.dev/guide/packages/lucide-solid), [Angular](https://lucide.dev/guide/packages/lucide-angular), [NodeJS](https://lucide.dev/guide/packages/lucide-static#nodejs) and [Flutter](https://lucide.dev/guide/packages/lucide-flutter).
## Community
If you have any questions about Lucide, feel free to reach out to the community. You can find them on [GitHub](https://github.com/lucide-icons/lucide) and [Discord](https://discord.gg/EH6nSts).
-24
View File
@@ -37,23 +37,6 @@ import { LucideAngularModule, File, Home, Menu, UserCheck } from 'lucide-angular
export class AppModule { }
```
or using standalone version:
```js
import { Component } from '@angular/core';
import { LucideAngularModule, FileIcon } from 'lucide-angular';
@Component({
standalone: true,
selector: 'app-root',
templateUrl: './app.component.html',
styleUrl: './app.component.scss',
imports: [LucideAngularModule]
})
export class AppComponent {
readonly FileIcon = FileIcon;
}
```
### Step 2: Use the icons in templates
Within your templates you may now use one of the following component tags to insert an icon:
@@ -64,13 +47,6 @@ Within your templates you may now use one of the following component tags to ins
<i-lucide name="menu" class="my-icon"></i-lucide>
<span-lucide name="user-check" class="my-icon"></span-lucide>
```
for standalone
```html
<lucide-angular [img]="FileIcon" class="my-icon"></lucide-angular>
<lucide-icon [img]="FileIcon" class="my-icon"></lucide-icon>
<i-lucide [img]="FileIcon" class="my-icon"></i-lucide>
<span-lucide [img]="FileIcon" class="my-icon"></span-lucide>
```
### Props
-13
View File
@@ -41,19 +41,6 @@ const App = () => {
export default App;
```
Vite loading/performing issues with the dev server can be resolved by import icons directly from the `lucide-solid/icons` directory:
```jsx
import Camera from 'lucide-solid/icons/camera';
// Usage
const App = () => {
return <Camera color="red" size={48} />;
};
export default App;
```
## Props
| name | type | default |
+3 -3
View File
@@ -7,7 +7,7 @@ Implementation of the lucide icon library for svelte applications.
::: code-group
```sh [pnpm]
pnpm add lucide-svelte
pnpm install lucide-svelte
```
```sh [yarn]
@@ -52,10 +52,10 @@ For faster builds and load times, you can import icons directly from the `lucide
```svelte
<script>
import CircleAlert from 'lucide-svelte/icons/circle-alert';
import AlertCircle from 'lucide-svelte/icons/alert-circle';
</script>
<CircleAlert color="#ff3e98" />
<AlertCircle color="#ff3e98" />
```
## Props
+4 -3
View File
@@ -18,8 +18,9 @@ import RelatedIcons from '~/.vitepress/theme/components/icons/RelatedIcons.vue'
import CodeGroup from '~/.vitepress/theme/components/base/CodeGroup.vue'
import Badge from '~/.vitepress/theme/components/base/Badge.vue'
import Label from '~/.vitepress/theme/components/base/Label.vue'
import VPButton from 'vitepress/dist/client/theme-default/components/VPButton.vue';
import { data } from './codeExamples.data'
import { toCamelCase, toPascalCase } from '@lucide/shared'
import { camelCase, startCase } from 'lodash-es'
import { satisfies } from 'semver'
const { params } = useData()
@@ -30,8 +31,8 @@ const tabs = computed(() => data.codeExamples?.map(
const codeExample = computed(() => data.codeExamples?.map(
(codeExample) => {
const pascalCaseName = toPascalCase( params.value.name)
const camelCaseName = toCamelCase(params.value.name)
const pascalCaseName = startCase(camelCase( params.value.name)).replace(/\s/g, '')
const camelCaseName = camelCase(params.value.name)
return codeExample.code
.replace(/\$(?:<[^>]+>)*PascalCase/g, pascalCaseName)
Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 25 KiB

-1
View File
@@ -1,7 +1,6 @@
---
# https://vitepress.dev/reference/default-theme-home-page
layout: home
markdownStyles: false
head:
- - link
+4 -3
View File
@@ -28,17 +28,18 @@
"@lucide/build-icons": "workspace:*",
"@lucide/helpers": "workspace:*",
"@lucide/shared": "workspace:*",
"@rollup/plugin-replace": "^6.0.1",
"@rollup/plugin-replace": "^5.0.2",
"@types/semver": "^7.5.3",
"h3": "^1.8.0",
"nitropack": "2.8.1",
"node-fetch": "2",
"rollup-plugin-copy": "^3.4.0",
"vitepress": "^1.3.1"
"vitepress": "1.0.0-rc.36"
},
"dependencies": {
"@floating-ui/vue": "^1.0.3",
"@headlessui/vue": "^1.7.17",
"@resvg/resvg-wasm": "^2.6.2",
"@resvg/resvg-wasm": "^2.4.1",
"@vueuse/components": "^10.7.2",
"@vueuse/core": "^10.7.2",
"element-to-path": "^1.2.1",
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

+3 -3
View File
@@ -9,7 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M17 12H7" />
<path d="M19 18H5" />
<path d="M21 6H3" />
<line x1="21" x2="3" y1="6" y2="6" />
<line x1="17" x2="7" y1="12" y2="12" />
<line x1="19" x2="5" y1="18" y2="18" />
</svg>

Before

Width:  |  Height:  |  Size: 279 B

After

Width:  |  Height:  |  Size: 332 B

+3 -3
View File
@@ -9,7 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M3 12h18" />
<path d="M3 18h18" />
<path d="M3 6h18" />
<line x1="3" x2="21" y1="6" y2="6" />
<line x1="3" x2="21" y1="12" y2="12" />
<line x1="3" x2="21" y1="18" y2="18" />
</svg>

Before

Width:  |  Height:  |  Size: 279 B

After

Width:  |  Height:  |  Size: 332 B

+3 -3
View File
@@ -9,7 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M15 12H3" />
<path d="M17 18H3" />
<path d="M21 6H3" />
<line x1="21" x2="3" y1="6" y2="6" />
<line x1="15" x2="3" y1="12" y2="12" />
<line x1="17" x2="3" y1="18" y2="18" />
</svg>

Before

Width:  |  Height:  |  Size: 279 B

After

Width:  |  Height:  |  Size: 332 B

+3 -3
View File
@@ -9,7 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M21 12H9" />
<path d="M21 18H7" />
<path d="M21 6H3" />
<line x1="21" x2="3" y1="6" y2="6" />
<line x1="21" x2="9" y1="12" y2="12" />
<line x1="21" x2="7" y1="18" y2="18" />
</svg>

Before

Width:  |  Height:  |  Size: 279 B

After

Width:  |  Height:  |  Size: 332 B

-22
View File
@@ -1,22 +0,0 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"karsa-mistmere"
],
"tags": [
"pottery",
"artifact",
"artefact",
"vase",
"ceramics",
"clay",
"archaeology",
"museum",
"wine",
"oil"
],
"categories": [
"food-beverage",
"gaming"
]
}
-18
View File
@@ -1,18 +0,0 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M10 2v5.632c0 .424-.272.795-.653.982A6 6 0 0 0 6 14c.006 4 3 7 5 8" />
<path d="M10 5H8a2 2 0 0 0 0 4h.68" />
<path d="M14 2v5.632c0 .424.272.795.652.982A6 6 0 0 1 18 14c0 4-3 7-5 8" />
<path d="M14 5h2a2 2 0 0 1 0 4h-.68" />
<path d="M18 22H6" />
<path d="M9 2h6" />
</svg>

Before

Width:  |  Height:  |  Size: 497 B

+1 -2
View File
@@ -1,8 +1,7 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"karsa-mistmere",
"jguddas"
"karsa-mistmere"
],
"tags": [
"bag",
+3 -3
View File
@@ -9,9 +9,9 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<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="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" />
<path d="M8 18h8" />
<path d="M8 22v-6a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v6" />
<path d="M9 6V4a2 2 0 0 1 2-2h2a2 2 0 0 1 2 2v2" />
</svg>

Before

Width:  |  Height:  |  Size: 449 B

After

Width:  |  Height:  |  Size: 449 B

-26
View File
@@ -1,26 +0,0 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"karsa-mistmere",
"jamiemlaw"
],
"tags": [
"plaster",
"band-aid",
"first aid",
"medical",
"health",
"wound",
"injury",
"care",
"treatment",
"healing",
"protection",
"emergency",
"aid",
"safety"
],
"categories": [
"medical"
]
}
-19
View File
@@ -1,19 +0,0 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M10 10.01h.01" />
<path d="M10 14.01h.01" />
<path d="M14 10.01h.01" />
<path d="M14 14.01h.01" />
<path d="M18 6v11.5" />
<path d="M6 6v12" />
<rect x="2" y="6" width="20" height="12" rx="2" />
</svg>

Before

Width:  |  Height:  |  Size: 426 B

+1 -2
View File
@@ -2,8 +2,7 @@
"$schema": "../icon.schema.json",
"contributors": [
"karsa-mistmere",
"ericfennis",
"jamiemlaw"
"ericfennis"
],
"tags": [
"amenities",
+5 -5
View File
@@ -9,9 +9,9 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M10 4 8 6" />
<path d="M17 19v2" />
<path d="M2 12h20" />
<path d="M7 19v2" />
<path d="M9 5 7.621 3.621A2.121 2.121 0 0 0 4 5v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-5" />
<path d="M9 6 6.5 3.5a1.5 1.5 0 0 0-1-.5C4.683 3 4 3.683 4 4.5V17a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-5" />
<line x1="10" x2="8" y1="5" y2="7" />
<line x1="2" x2="22" y1="12" y2="12" />
<line x1="7" x2="7" y1="19" y2="21" />
<line x1="17" x2="17" y1="19" y2="21" />
</svg>

Before

Width:  |  Height:  |  Size: 395 B

After

Width:  |  Height:  |  Size: 480 B

+5 -5
View File
@@ -9,9 +9,9 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M10 17h.01" />
<path d="M10 7v6" />
<path d="M14 7h2a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2h-2" />
<path d="M22 11v2" />
<path d="M6 7H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2" />
<path d="M14 7h2a2 2 0 0 1 2 2v6c0 1-1 2-2 2h-2" />
<path d="M6 7H4a2 2 0 0 0-2 2v6c0 1 1 2 2 2h2" />
<line x1="22" x2="22" y1="11" y2="13" />
<line x1="10" x2="10" y1="7" y2="13" />
<line x1="10" x2="10" y1="17" y2="17.01" />
</svg>

Before

Width:  |  Height:  |  Size: 391 B

After

Width:  |  Height:  |  Size: 445 B

-34
View File
@@ -1,34 +0,0 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"karsa-mistmere"
],
"tags": [
"field glasses",
"lorgnette",
"pince-nez",
"observation",
"sightseeing",
"nature",
"wildlife",
"birdwatching",
"scouting",
"surveillance",
"search",
"discovery",
"monitoring",
"lookout",
"viewpoint",
"travel",
"tourism",
"research"
],
"categories": [
"maps",
"nature",
"photography",
"science",
"travel",
"development"
]
}
-18
View File
@@ -1,18 +0,0 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M10 10h4" />
<path d="M19 7V4a1 1 0 0 0-1-1h-2a1 1 0 0 0-1 1v3" />
<path d="M20 21a2 2 0 0 0 2-2v-3.851c0-1.39-2-2.962-2-4.829V8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v11a2 2 0 0 0 2 2z" />
<path d="M 22 16 L 2 16" />
<path d="M4 21a2 2 0 0 1-2-2v-3.851c0-1.39 2-2.962 2-4.829V8a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v11a2 2 0 0 1-2 2z" />
<path d="M9 7V4a1 1 0 0 0-1-1H6a1 1 0 0 0-1 1v3" />
</svg>

Before

Width:  |  Height:  |  Size: 604 B

+2 -2
View File
@@ -9,7 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M12 21V7" />
<path d="M8 3H2v15h7c1.7 0 3 1.3 3 3V7c0-2.2-1.8-4-4-4Z" />
<path d="m16 12 2 2 4-4" />
<path d="M22 6V4a1 1 0 0 0-1-1h-5a4 4 0 0 0-4 4 4 4 0 0 0-4-4H3a1 1 0 0 0-1 1v13a1 1 0 0 0 1 1h6a3 3 0 0 1 3 3 3 3 0 0 1 3-3h6a1 1 0 0 0 1-1v-1.3" />
<path d="M22 6V3h-6c-2.2 0-4 1.8-4 4v14c0-1.7 1.3-3 3-3h7v-2.3" />
</svg>

Before

Width:  |  Height:  |  Size: 414 B

After

Width:  |  Height:  |  Size: 369 B

+5 -5
View File
@@ -9,10 +9,10 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M12 7v14" />
<path d="M16 12h2" />
<path d="M16 8h2" />
<path d="M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z" />
<path d="M6 12h2" />
<path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z" />
<path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z" />
<path d="M6 8h2" />
<path d="M6 12h2" />
<path d="M16 8h2" />
<path d="M16 12h2" />
</svg>

Before

Width:  |  Height:  |  Size: 470 B

After

Width:  |  Height:  |  Size: 414 B

+2 -2
View File
@@ -9,6 +9,6 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M12 7v14" />
<path d="M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z" />
<path d="M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z" />
<path d="M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z" />
</svg>

Before

Width:  |  Height:  |  Size: 378 B

After

Width:  |  Height:  |  Size: 322 B

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

Before

Width:  |  Height:  |  Size: 532 B

After

Width:  |  Height:  |  Size: 532 B

-19
View File
@@ -1,19 +0,0 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"karsa-mistmere",
"jguddas"
],
"tags": [
"baggage",
"luggage",
"travel",
"suitcase",
"conveyor",
"carousel"
],
"categories": [
"travel",
"transportation"
]
}
-19
View File
@@ -1,19 +0,0 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M10 20v2" />
<path d="M14 20v2" />
<path d="M18 20v2" />
<path d="M21 20H3" />
<path d="M6 20v2" />
<path d="M8 16V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v12" />
<rect x="4" y="6" width="16" height="10" rx="2" />
</svg>

Before

Width:  |  Height:  |  Size: 436 B

-22
View File
@@ -1,22 +0,0 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"colebemis",
"ericfennis",
"peteruithoven"
],
"tags": [
"date",
"month",
"year",
"event",
"single",
"singular",
"once",
"1",
"first"
],
"categories": [
"time"
]
}
-17
View File
@@ -1,17 +0,0 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M11 14h1v4" />
<path d="M16 2v4" />
<path d="M3 10h18" />
<path d="M8 2v4" />
<rect x="3" y="4" width="18" height="18" rx="2" />
</svg>

Before

Width:  |  Height:  |  Size: 356 B

+1 -2
View File
@@ -2,8 +2,7 @@
"$schema": "../icon.schema.json",
"contributors": [
"karsa-mistmere",
"ericfennis",
"jguddas"
"ericfennis"
],
"tags": [
"date",
+3 -3
View File
@@ -9,10 +9,10 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M21 12V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h7.5" />
<path d="M16 2v4" />
<path d="M21 11.75V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h7.25" />
<path d="m22 22-1.875-1.875" />
<path d="M3 10h18" />
<path d="M8 2v4" />
<path d="M3 10h18" />
<circle cx="18" cy="18" r="3" />
<path d="m22 22-1.5-1.5" />
</svg>

Before

Width:  |  Height:  |  Size: 425 B

After

Width:  |  Height:  |  Size: 417 B

+1 -2
View File
@@ -1,8 +1,7 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"danielbayley",
"jguddas"
"danielbayley"
],
"tags": [
"trailer",
+3 -2
View File
@@ -9,8 +9,9 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<rect width="4" height="4" x="2" y="9" />
<rect width="4" height="10" x="10" y="9" />
<path d="M18 19V9a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v8a2 2 0 0 0 2 2h2" />
<path d="M2 9h3a1 1 0 0 1 1 1v2a1 1 0 0 1-1 1H2" />
<path d="M22 17v1a1 1 0 0 1-1 1H10v-9a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1v9" />
<circle cx="8" cy="19" r="2" />
<path d="M10 19h12v-2" />
</svg>

Before

Width:  |  Height:  |  Size: 444 B

After

Width:  |  Height:  |  Size: 432 B

+2 -2
View File
@@ -10,7 +10,7 @@
stroke-linejoin="round"
>
<path d="M13 17V9" />
<path d="M18 17V5" />
<path d="M18 17v-3" />
<path d="M3 3v16a2 2 0 0 0 2 2h16" />
<path d="M8 17v-3" />
<path d="M8 17V5" />
</svg>

Before

Width:  |  Height:  |  Size: 320 B

After

Width:  |  Height:  |  Size: 320 B

-17
View File
@@ -1,17 +0,0 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"karsa-mistmere",
"danielbayley",
"jguddas"
],
"tags": [
"diagram",
"graph",
"timeline",
"planning"
],
"categories": [
"charts"
]
}
-16
View File
@@ -1,16 +0,0 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M10 6h8" />
<path d="M12 16h6" />
<path d="M3 3v16a2 2 0 0 0 2 2h16" />
<path d="M8 11h7" />
</svg>

Before

Width:  |  Height:  |  Size: 318 B

-39
View File
@@ -1,39 +0,0 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"ericfennis"
],
"tags": [
"internet",
"network",
"connection",
"cable",
"lan",
"port",
"router",
"switch",
"hub",
"modem",
"web",
"online",
"networking",
"communication",
"socket",
"plug",
"slot",
"controller",
"connector",
"interface",
"console",
"signal",
"data",
"input",
"output"
],
"categories": [
"communication",
"devices",
"multimedia",
"gaming"
]
}
-17
View File
@@ -1,17 +0,0 @@
<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="m18 8 4 4-4 4" />
<path d="m6 8-4 4 4 4" />
<path d="M8 12h.01" />
<path d="M12 12h.01" />
<path d="M16 12h.01" />
</svg>

Before

Width:  |  Height:  |  Size: 342 B

+1 -2
View File
@@ -2,8 +2,7 @@
"$schema": "../icon.schema.json",
"contributors": [
"karsa-mistmere",
"ericfennis",
"jguddas"
"ericfennis"
],
"tags": [
"smoking",
+6 -5
View File
@@ -9,10 +9,11 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M12 12H3a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h13" />
<path d="M18 8c0-2.5-2-2.5-2-5" />
<path d="m2 2 20 20" />
<path d="M21 12a1 1 0 0 1 1 1v2a1 1 0 0 1-.5.866" />
<path d="M22 8c0-2.5-2-2.5-2-5" />
<line x1="2" x2="22" y1="2" y2="22" />
<path d="M12 12H2v4h14" />
<path d="M22 12v4" />
<path d="M18 12h-.5" />
<path d="M7 12v4" />
<path d="M18 8c0-2.5-2-2.5-2-5" />
<path d="M22 8c0-2.5-2-2.5-2-5" />
</svg>

Before

Width:  |  Height:  |  Size: 443 B

After

Width:  |  Height:  |  Size: 425 B

+1 -2
View File
@@ -2,8 +2,7 @@
"$schema": "../icon.schema.json",
"contributors": [
"karsa-mistmere",
"ericfennis",
"jguddas"
"ericfennis"
],
"tags": [
"smoking"
+4 -4
View File
@@ -9,9 +9,9 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M17 12H3a1 1 0 0 0-1 1v2a1 1 0 0 0 1 1h14" />
<path d="M18 8c0-2.5-2-2.5-2-5" />
<path d="M21 16a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1" />
<path d="M22 8c0-2.5-2-2.5-2-5" />
<path d="M18 12H2v4h16" />
<path d="M22 12v4" />
<path d="M7 12v4" />
<path d="M18 8c0-2.5-2-2.5-2-5" />
<path d="M22 8c0-2.5-2-2.5-2-5" />
</svg>

Before

Width:  |  Height:  |  Size: 415 B

After

Width:  |  Height:  |  Size: 358 B

+1 -2
View File
@@ -3,8 +3,7 @@
"contributors": [
"colebemis",
"csandman",
"ericfennis",
"jguddas"
"ericfennis"
],
"tags": [
"done",
+1 -1
View File
@@ -9,6 +9,6 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M21.801 10A10 10 0 1 1 17 3.335" />
<path d="M22 11.08V12a10 10 0 1 1-5.93-9.14" />
<path d="m9 11 3 3L22 4" />
</svg>

Before

Width:  |  Height:  |  Size: 285 B

After

Width:  |  Height:  |  Size: 288 B

-5
View File
@@ -19,11 +19,6 @@
"code",
"spread",
"rest",
"more",
"further",
"extra",
"overflow",
"dots",
"…",
"..."
],
-22
View File
@@ -1,22 +0,0 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"jordan808",
"jguddas",
"colebemis",
"ericfennis",
"mosch"
],
"tags": [
"north",
"up",
"upgrade",
"improve",
"circle",
"button"
],
"categories": [
"arrows",
"development"
]
}
-19
View File
@@ -1,19 +0,0 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M12 2a10 10 0 0 1 7.38 16.75" />
<path d="m16 12-4-4-4 4" />
<path d="M12 16V8" />
<path d="M2.5 8.875a10 10 0 0 0-.5 3" />
<path d="M2.83 16a10 10 0 0 0 2.43 3.4" />
<path d="M4.636 5.235a10 10 0 0 1 .891-.857" />
<path d="M8.644 21.42a10 10 0 0 0 7.631-.38" />
</svg>

Before

Width:  |  Height:  |  Size: 494 B

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

Before

Width:  |  Height:  |  Size: 295 B

After

Width:  |  Height:  |  Size: 288 B

-17
View File
@@ -1,17 +0,0 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"colebemis",
"jguddas"
],
"tags": [
"time",
"watch",
"alarm",
"warning",
"wrong"
],
"categories": [
"time"
]
}
-16
View File
@@ -1,16 +0,0 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M12 6v6l4 2" />
<path d="M16 21.16a10 10 0 1 1 5-13.516" />
<path d="M20 11.5v6" />
<path d="M20 21.5h.01" />
</svg>

Before

Width:  |  Height:  |  Size: 335 B

-23
View File
@@ -1,23 +0,0 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"colebemis",
"csandman",
"ericfennis",
"karsa-mistmere",
"lscheibel"
],
"tags": [
"weather",
"danger",
"warning",
"alert",
"error",
"sync",
"network",
"exclamation"
],
"categories": [
"development"
]
}
-15
View File
@@ -1,15 +0,0 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M12 12v4" />
<path d="M12 20h.01" />
<path d="M17 18h.5a1 1 0 0 0 0-9h-1.79A7 7 0 1 0 7 17.708" />
</svg>

Before

Width:  |  Height:  |  Size: 322 B

+3 -3
View File
@@ -9,7 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M12 13v8l-4-4" />
<path d="m12 21 4-4" />
<path d="M4.393 15.269A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.436 8.284" />
<path d="M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242" />
<path d="M12 12v9" />
<path d="m8 17 4 4 4-4" />
</svg>

Before

Width:  |  Height:  |  Size: 341 B

After

Width:  |  Height:  |  Size: 333 B

+1 -2
View File
@@ -4,8 +4,7 @@
"colebemis",
"csandman",
"ericfennis",
"karsa-mistmere",
"jguddas"
"karsa-mistmere"
],
"tags": [
"file"
+2 -2
View File
@@ -9,7 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M12 13v8" />
<path d="M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242" />
<path d="m8 17 4-4 4 4" />
<path d="M12 12v9" />
<path d="m16 16-4-4-4 4" />
</svg>

Before

Width:  |  Height:  |  Size: 333 B

After

Width:  |  Height:  |  Size: 334 B

+1 -2
View File
@@ -2,8 +2,7 @@
"$schema": "../icon.schema.json",
"contributors": [
"danielbayley",
"ericfennis",
"jguddas"
"ericfennis"
],
"tags": [
"cubes",
+6 -6
View File
@@ -9,10 +9,10 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M10 18H5a3 3 0 0 1-3-3v-1" />
<path d="M14 2a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2" />
<path d="M20 2a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2" />
<path d="m7 21 3-3-3-3" />
<rect x="14" y="14" width="8" height="8" rx="2" />
<rect x="2" y="2" width="8" height="8" rx="2" />
<rect width="8" height="8" x="2" y="2" rx="2" />
<path d="M14 2c1.1 0 2 .9 2 2v4c0 1.1-.9 2-2 2" />
<path d="M20 2c1.1 0 2 .9 2 2v4c0 1.1-.9 2-2 2" />
<path d="M10 18H5c-1.7 0-3-1.3-3-3v-1" />
<polyline points="7 21 10 18 7 15" />
<rect width="8" height="8" x="14" y="14" rx="2" />
</svg>

Before

Width:  |  Height:  |  Size: 484 B

After

Width:  |  Height:  |  Size: 502 B

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

Before

Width:  |  Height:  |  Size: 763 B

After

Width:  |  Height:  |  Size: 415 B

Some files were not shown because too many files have changed in this diff Show More