Compare commits
29 Commits
remove-umd
...
0.542.0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d52c369b99 | ||
|
|
a7a1973d3f | ||
|
|
b6dfcef41b | ||
|
|
1c5a9dafc1 | ||
|
|
546bb1f391 | ||
|
|
64c1a55e01 | ||
|
|
0e3ac6beb9 | ||
|
|
c7c0e2bead | ||
|
|
85dba80322 | ||
|
|
f8a1a76b83 | ||
|
|
bd50af7afb | ||
|
|
cfabc9f608 | ||
|
|
09f98127c6 | ||
|
|
867c0581af | ||
|
|
987edb14f8 | ||
|
|
9db4dc7e1c | ||
|
|
2150ce75ce | ||
|
|
106e37c3ce | ||
|
|
528ffd6fa5 | ||
|
|
3b92fae633 | ||
|
|
fcf42bf754 | ||
|
|
0b6149c02d | ||
|
|
bc9a8de419 | ||
|
|
26ab33a832 | ||
|
|
ac4c3581c4 | ||
|
|
1ddba6da04 | ||
|
|
8754c9b6fd | ||
|
|
e9febe4fab | ||
|
|
570f7d7e76 |
10
.github/ISSUE_TEMPLATE/01_icon_request.yml
vendored
@@ -7,8 +7,10 @@ body:
|
||||
value: |
|
||||
Before submitting an icon request check if it has already been requested. If there is an open request, please add a 👍.
|
||||
|
||||
**Important note**: No new brand logos are allowed, see https://github.com/lucide-icons/lucide/issues/670.
|
||||
Existing brand icons will also be phased out. For brand icons, consider using https://simpleicons.org, which offers purpose-built SVGs that are also on a 24×24px grid.
|
||||
> [!CAUTION]
|
||||
> New brand logos are **not** allowed, see our official statement: https://github.com/lucide-icons/lucide/blob/main/BRAND_LOGOS_STATEMENT.md.
|
||||
>
|
||||
> Existing brand icons are being phased out. Consider using https://simpleicons.org, which offers purpose-built SVGs that are also on a 24×24px grid.
|
||||
- type: input
|
||||
id: name
|
||||
attributes:
|
||||
@@ -41,9 +43,9 @@ body:
|
||||
required: true
|
||||
- label: I have searched existing icons to make sure it does not already exist and I didn't find any.
|
||||
required: true
|
||||
- label: I am not requesting a brand logo and the art is not protected by copyright.
|
||||
- label: I am not requesting a brand logo and the art is not protected by copyright, see more at https://github.com/lucide-icons/lucide/blob/main/BRAND_LOGOS_STATEMENT.md
|
||||
required: true
|
||||
- label: I am not requesting an icon that includes religious, political imagery or hate symbols.
|
||||
- label: I am not requesting an icon that includes religious, war/violence related, political imagery or hate symbols.
|
||||
required: true
|
||||
- label: I have provided appropriate use cases for the icon(s) requested.
|
||||
required: true
|
||||
|
||||
6
.github/pull_request_template.md
vendored
@@ -25,10 +25,12 @@ Common scopes: icons, docs, studio, site, dev
|
||||
|
||||
### Concept <!-- ONLY for new icons -->
|
||||
<!-- All of these requirements must be fulfilled. -->
|
||||
<!-- IMPORTANT! Please read our official statement on brand logos in Lucide: -->
|
||||
<!-- https://github.com/lucide-icons/lucide/blob/main/BRAND_LOGOS_STATEMENT.md -->
|
||||
- [ ] I have provided valid use cases for each icon.
|
||||
- [ ] I have not added any a brand or logo icon.
|
||||
- [ ] I have [not added any brand or logo icon](https://github.com/lucide-icons/lucide/blob/main/BRAND_LOGOS_STATEMENT.md).
|
||||
- [ ] I have not used any hate symbols.
|
||||
- [ ] I have not included any religious or political imagery.
|
||||
- [ ] I have not included any religious, war/violence related or political imagery.
|
||||
|
||||
### Author, credits & license<!-- ONLY for new icons. -->
|
||||
<!-- Please choose one of the following, and put an "x" next to it. -->
|
||||
|
||||
1
.github/workflows/release.yml
vendored
@@ -48,7 +48,6 @@ jobs:
|
||||
'lucide',
|
||||
'lucide-react',
|
||||
'lucide-react-native',
|
||||
'lucide-vue',
|
||||
'lucide-vue-next',
|
||||
'lucide-angular',
|
||||
'lucide-preact',
|
||||
|
||||
71
BRAND_LOGOS_STATEMENT.md
Normal file
@@ -0,0 +1,71 @@
|
||||
# Our Official Stance on Including Brand Logos in Lucide
|
||||
|
||||
## TL;DR
|
||||
|
||||
Lucide **does not accept** brand logos, and we do not plan to add them in the future.
|
||||
|
||||
This is due to a combination of **legal restrictions**, **design consistency concerns**, and **practical maintenance reasons**.
|
||||
|
||||
If you need brand logos, we recommend [Simple Icons](https://simpleicons.org/), which provides an extensive, legally safer collection of brand marks.
|
||||
|
||||
---
|
||||
|
||||
## 1. Historical Context
|
||||
|
||||
This is not a new debate — other icon sets have gone through the same discussion:
|
||||
|
||||
- **Material Design Icons** [deprecated all brand icons](https://github.com/Templarian/MaterialDesign/issues/6602) because they didn't fit the style, didn't work well in one color, and often looked out of place in a 24×24px grid.
|
||||
- **Feather Icons** [came to the same conclusion](https://github.com/feathericons/feather/issues/763): brand logos have their own style, and forcing them into another inevitably leads to aesthetic compromises.
|
||||
- **Lucide** learned from these examples — we'd rather focus on making a consistent set of non-brand icons that all work together.
|
||||
|
||||
## 2. Legal Considerations
|
||||
|
||||
Most brand logos:
|
||||
- Are **protected by trademark or copyright**.
|
||||
- Have **strict rules** for how they can be used (colors, spacing, proportions, etc.).
|
||||
- **Don't allow modification** — but we'd have to change them to fit Lucide's style.
|
||||
|
||||
This means adding them could:
|
||||
1. Break copyright or trademark law.
|
||||
2. Make both you and the Lucide project legally responsible.
|
||||
3. Force us to review every new request one by one for legal issues — something we simply can't do.
|
||||
|
||||
> **Note:** Simple Icons avoids this by keeping logos exactly as the brand provides them — though even they sometimes face [legal challenges](https://github.com/simple-icons/simple-icons/issues/11236).
|
||||
|
||||
## 3. Design & Consistency
|
||||
|
||||
Lucide is all about **visual consistency**.
|
||||
|
||||
Adding brand logos would:
|
||||
- Break [our own design rules](https://lucide.dev/guide/design/icon-design-guide#icon-design-principles) for shapes, proportions, and stroke.
|
||||
- Mix two fundamentally different categories of graphics (pictograms vs. corporate logos).
|
||||
- Create a library where a subset of icons will always look "out of place".
|
||||
|
||||
If the logos are not in Lucide's style, why include them in Lucide at all? Better to use them from a dedicated brand icon source.
|
||||
|
||||
## 4. Maintenance Burden
|
||||
|
||||
Even with our current **"no brand icon requests"** policy, people still request them regularly.
|
||||
|
||||
Having any brand icons in the set:
|
||||
- Makes people think we might add more in the future.
|
||||
- Leads to repeated requests and the same conversations over and over.
|
||||
- Wastes maintainer time redirecting people to the same explanation.
|
||||
|
||||
Removing them entirely solves this problem.
|
||||
|
||||
## 5. Recommended Alternatives
|
||||
|
||||
If you need brand icons, try:
|
||||
- [Simple Icons](https://simpleicons.org/): offers a huge range of brands, in consistent SVG format, using a 24×24 viewBox, the same as ours.
|
||||
- Official brand asset pages: most major companies provide downloadable SVGs.
|
||||
|
||||
You can use these alongside Lucide without bloating our core library.
|
||||
|
||||
## Final Words
|
||||
|
||||
Lucide is an **icon** set, not a **logo** set.
|
||||
|
||||
Logos belong in dedicated logo resources.
|
||||
|
||||
We're focusing on what Lucide does best: providing a clean, cohesive, and legally safe collection of open-source icons.
|
||||
26
LICENSE
@@ -1,6 +1,6 @@
|
||||
ISC License
|
||||
|
||||
Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2022 as part of Feather (MIT). All other copyright (c) for Lucide are held by Lucide Contributors 2022.
|
||||
Copyright (c) for portions of Lucide are held by Cole Bemis 2013-2023 as part of Feather (MIT). All other copyright (c) for Lucide are held by Lucide Contributors 2025.
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any
|
||||
purpose with or without fee is hereby granted, provided that the above
|
||||
@@ -13,3 +13,27 @@ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
---
|
||||
|
||||
The MIT License (MIT) (for portions derived from Feather)
|
||||
|
||||
Copyright (c) 2013-2023 Cole Bemis
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
@@ -57,6 +57,12 @@ For more info on how to contribute please see the [contribution guidelines](http
|
||||
|
||||
Caught a mistake or want to contribute to the documentation? [Edit this page on Github](https://github.com/lucide-icons/lucide/blob/main/README.md)
|
||||
|
||||
## About brand logos
|
||||
|
||||
Lucide **does not accept** brand logos, and we do not plan to add them in the future. This is due to a combination of **legal restrictions**, **design consistency concerns**, and **practical maintenance reasons**.
|
||||
|
||||
[Click here to read our official statement about brand logos in Lucide.](./BRAND_LOGOS_STATEMENT.md)
|
||||
|
||||
## Community
|
||||
|
||||
Join the community on our [Discord](https://discord.gg/EH6nSts) server!
|
||||
|
||||
@@ -15,8 +15,10 @@ export default eventHandler((event) => {
|
||||
|
||||
const src = Buffer.from(data, 'base64').toString('utf8').replaceAll('\n', '');
|
||||
|
||||
const width = parseInt((src.includes('svg') ? src.match(/width="(\d+)"/)?.[1] : null) ?? '24');
|
||||
const height = parseInt((src.includes('svg') ? src.match(/height="(\d+)"/)?.[1] : null) ?? '24');
|
||||
const width = parseInt((src.includes('<svg ') ? src.match(/width="(\d+)"/)?.[1] : null) ?? '24');
|
||||
const height = parseInt(
|
||||
(src.includes('<svg ') ? src.match(/height="(\d+)"/)?.[1] : null) ?? '24',
|
||||
);
|
||||
|
||||
const children = [];
|
||||
|
||||
|
||||
@@ -17,6 +17,13 @@ export default eventHandler((event) => {
|
||||
.replaceAll('\n', '')
|
||||
.replace(/<svg[^>]*>|<\/svg>/g, '');
|
||||
|
||||
const width = parseInt(
|
||||
(newSrc.includes('<svg ') ? newSrc.match(/width="(\d+)"/)?.[1] : null) ?? '24',
|
||||
);
|
||||
const height = parseInt(
|
||||
(newSrc.includes('<svg ') ? newSrc.match(/height="(\d+)"/)?.[1] : null) ?? '24',
|
||||
);
|
||||
|
||||
const children = [];
|
||||
|
||||
const oldSrc = iconNodes[name]
|
||||
@@ -27,7 +34,9 @@ export default eventHandler((event) => {
|
||||
|
||||
const svg = Buffer.from(
|
||||
// We can't use jsx here, is not supported here by nitro.
|
||||
renderToString(createElement(Diff, { oldSrc, newSrc, showGrid: true }, children)),
|
||||
renderToString(
|
||||
createElement(Diff, { oldSrc, newSrc, showGrid: true, height, width }, children),
|
||||
),
|
||||
).toString('utf8');
|
||||
|
||||
defaultContentType(event, 'image/svg+xml');
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
import { eventHandler, setResponseHeader, defaultContentType } from 'h3';
|
||||
import { Resvg, initWasm } from '@resvg/resvg-wasm';
|
||||
import iconNodes from '../../../data/iconNodes';
|
||||
import wasm from './loadWasm';
|
||||
import { createElement } from 'react';
|
||||
import { renderToStaticMarkup } from 'react-dom/server';
|
||||
import createLucideIcon from 'lucide-react/src/createLucideIcon';
|
||||
|
||||
var initializedResvg = initWasm(wasm);
|
||||
|
||||
@@ -9,27 +13,37 @@ export default eventHandler(async (event) => {
|
||||
await initializedResvg;
|
||||
|
||||
const imageSize = 96;
|
||||
const [iconSizeString, svgData] = params.data.split('/');
|
||||
const name = params.data.split('/').at(-3);
|
||||
const iconSizeString = params.data.split('/').at(-2);
|
||||
const svgData = params.data.split('/').at(-1);
|
||||
const iconSize = parseInt(iconSizeString, 10);
|
||||
const data = svgData.slice(0, -4);
|
||||
|
||||
const prevSvg = iconNodes[name]
|
||||
? renderToStaticMarkup(createElement(createLucideIcon(name, iconNodes[name])))
|
||||
: undefined;
|
||||
|
||||
const src = Buffer.from(data, 'base64').toString('utf8');
|
||||
const svg = (src.includes('<svg') ? src : `<svg>${src}</svg>`)
|
||||
.replace(/(\r\n|\n|\r)/gm, '')
|
||||
.replace(
|
||||
/<svg[^>]*/,
|
||||
/<svg[^>]*>/,
|
||||
`<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="${iconSize}"
|
||||
height="${iconSize}"
|
||||
viewBox="0 0 24 24"
|
||||
height="${prevSvg ? iconSize * 2 : iconSize}"
|
||||
viewBox="0 0 24 ${prevSvg ? 48 : 24}"
|
||||
fill="none"
|
||||
stroke="#fff"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
${prevSvg?.replaceAll('\n', '').replace(/<svg[^>]*>|<\/svg>/g, '')}
|
||||
<g transform="translate(0, ${prevSvg ? 24 : 0})">
|
||||
`,
|
||||
);
|
||||
)
|
||||
.replace(/<\/svg>/, '</g></svg>');
|
||||
|
||||
const resvg = new Resvg(svg, { background: '#000' });
|
||||
const pngData = resvg.render();
|
||||
@@ -39,7 +53,7 @@ export default eventHandler(async (event) => {
|
||||
setResponseHeader(event, 'Cache-Control', 'public,max-age=31536000');
|
||||
|
||||
return `
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="${imageSize}" height="${imageSize}" viewBox="0 0 ${imageSize} ${imageSize}">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="${imageSize}" height="${prevSvg ? imageSize * 2 : imageSize}" viewBox="0 0 ${imageSize} ${prevSvg ? imageSize * 2 : imageSize}">
|
||||
<style>
|
||||
@media screen and (prefers-color-scheme: light) {
|
||||
#fallback-background { fill: transparent; }
|
||||
@@ -52,20 +66,20 @@ export default eventHandler(async (event) => {
|
||||
<mask id="mask">
|
||||
<image
|
||||
width="${imageSize}"
|
||||
height="${imageSize}"
|
||||
height="${prevSvg ? imageSize * 2 : imageSize}"
|
||||
href="data:image/png;base64,${pngBuffer.toString('base64')}"
|
||||
image-rendering="pixelated"
|
||||
/>
|
||||
</mask>
|
||||
<rect
|
||||
id="fallback-background"
|
||||
width="${imageSize}"
|
||||
height="${imageSize}" ry="${imageSize / 24}"
|
||||
width="100%"
|
||||
height="100%" ry="${imageSize / 24}"
|
||||
fill="#fff"
|
||||
/>
|
||||
<rect
|
||||
width="${imageSize}"
|
||||
height="${imageSize}"
|
||||
width="100%"
|
||||
height="100%"
|
||||
fill="#000"
|
||||
mask="url(#mask)"
|
||||
/>
|
||||
|
||||
@@ -7,6 +7,14 @@
|
||||
"dark": "/company-logos/vercel-dark.svg"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "MDN Web Docs",
|
||||
"url": "https://developer.mozilla.org/",
|
||||
"image": {
|
||||
"light": "/company-logos/mdn-light.svg",
|
||||
"dark": "/company-logos/mdn-dark.svg"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Supabase",
|
||||
"url": "https://supabase.com",
|
||||
@@ -23,6 +31,14 @@
|
||||
"dark": "/company-logos/obsidian-dark.svg"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Nuxt",
|
||||
"url": "https://nuxt.com/",
|
||||
"image": {
|
||||
"light": "/company-logos/nuxt-light.svg",
|
||||
"dark": "/company-logos/nuxt-dark.svg"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Open Collective",
|
||||
"url": "https://opencollective.com",
|
||||
|
||||
@@ -53,8 +53,8 @@ const Backdrop = ({
|
||||
<rect
|
||||
x="0"
|
||||
y="0"
|
||||
width="24"
|
||||
height="24"
|
||||
width="100%"
|
||||
height="100%"
|
||||
fill="#fff"
|
||||
stroke="none"
|
||||
/>
|
||||
@@ -67,8 +67,8 @@ const Backdrop = ({
|
||||
<rect
|
||||
x="0"
|
||||
y="0"
|
||||
width="24"
|
||||
height="24"
|
||||
width="100%"
|
||||
height="100%"
|
||||
opacity={0.5}
|
||||
fill={`url(#pattern-${id})`}
|
||||
stroke="none"
|
||||
|
||||
@@ -7,15 +7,17 @@ const SvgPreview = React.forwardRef<
|
||||
{
|
||||
oldSrc: string;
|
||||
newSrc: string;
|
||||
height: number;
|
||||
width: number;
|
||||
} & React.SVGProps<SVGSVGElement>
|
||||
>(({ oldSrc, newSrc, children, ...props }, ref) => {
|
||||
>(({ oldSrc, newSrc, children, height, width, ...props }, ref) => {
|
||||
return (
|
||||
<svg
|
||||
ref={ref}
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width={24}
|
||||
height={24}
|
||||
viewBox="0 0 24 24"
|
||||
width={width}
|
||||
height={height}
|
||||
viewBox={`0 0 ${width} ${height}`}
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
strokeWidth={2}
|
||||
@@ -25,6 +27,8 @@ const SvgPreview = React.forwardRef<
|
||||
>
|
||||
<style>{darkModeCss}</style>
|
||||
<Grid
|
||||
width={width}
|
||||
height={height}
|
||||
strokeWidth={0.1}
|
||||
stroke="#777"
|
||||
strokeOpacity={0.3}
|
||||
@@ -37,8 +41,8 @@ const SvgPreview = React.forwardRef<
|
||||
<rect
|
||||
x="0"
|
||||
y="0"
|
||||
width="24"
|
||||
height="24"
|
||||
width="100%"
|
||||
height="100%"
|
||||
fill="#000"
|
||||
stroke="none"
|
||||
/>
|
||||
|
||||
@@ -178,6 +178,8 @@ const DiamondIcon = createLucideIcon('Diamond', diamond)
|
||||
stroke-width: var(--customize-strokeWidth, 2);
|
||||
width: calc(var(--customize-size, 24) * 1px);
|
||||
height: calc(var(--customize-size, 24) * 1px);
|
||||
max-width: 3rem;
|
||||
max-height: 3rem;
|
||||
}
|
||||
|
||||
html.absolute-stroke-width .lucide-icon.customizable {
|
||||
|
||||
@@ -26,10 +26,9 @@ const iconComponent = computed(() => {
|
||||
<component
|
||||
ref="previewIcon"
|
||||
:is="iconComponent"
|
||||
:width="size"
|
||||
:height="size"
|
||||
:stroke="color"
|
||||
:stroke-width="absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth"
|
||||
:size="size"
|
||||
:color="color"
|
||||
:strokeWidth="absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth"
|
||||
/>
|
||||
<svg class="icon-grid" :viewBox="`0 0 ${size} ${size}`" fill="none" stroke-width="0.1" xmlns="http://www.w3.org/2000/svg">
|
||||
<g :key="`grid-${i}`" v-for="(_, i) in gridLines">
|
||||
|
||||
@@ -110,7 +110,7 @@ const customizingActive = computed(() => {
|
||||
name="size"
|
||||
v-model="size"
|
||||
:min="16"
|
||||
:max="48"
|
||||
:max="256"
|
||||
:step="4"
|
||||
/>
|
||||
</InputField>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
import { ref, inject, Ref } from 'vue';
|
||||
|
||||
export const ICON_STYLE_CONTEXT = Symbol('size');
|
||||
export const ICON_STYLE_CONTEXT = Symbol('style');
|
||||
|
||||
interface IconSizeContext {
|
||||
size: Ref<number>;
|
||||
|
||||
@@ -88,7 +88,11 @@ createIcons({
|
||||
|
||||
### Additional Options
|
||||
|
||||
In the `createIcons` function you can pass some extra parameters to adjust the `nameAttr` or add custom attributes like for example classes.
|
||||
In the `createIcons` function you can pass some extra parameters:
|
||||
|
||||
- you can pass `nameAttr` to adjust the attribute name to replace for
|
||||
- you can pass `attrs` to pass additional custom attributes, for instance CSS classes or stroke options.
|
||||
- you can pass `root` to provide a custom DOM element the icons should be replaced in (useful when manipulating small sections of a large DOM or elements in the shadow DOM)
|
||||
|
||||
Here is a full example:
|
||||
|
||||
@@ -101,7 +105,8 @@ createIcons({
|
||||
'stroke-width': 1,
|
||||
stroke: '#333'
|
||||
},
|
||||
nameAttr: 'data-lucide' // attribute for the icon name.
|
||||
nameAttr: 'data-lucide', // attribute for the icon name.
|
||||
root: element, // DOM element to replace icons in.
|
||||
});
|
||||
```
|
||||
|
||||
|
||||
4
docs/public/company-logos/mdn-dark.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="0 0 361 104.2">
|
||||
<g style="fill:#0F5DBD"><path d="M40.3 0 11.7 92.1H0L28.5 0h11.8zM50.7 0v92.1H40.3V0h10.4zM101.4 0v92.1H91V0h10.4zM91 0 62.5 92.1H50.8L79.3 0H91zM294 95.4h67v8.8h-67v-8.8z"/></g>
|
||||
<g style="fill:#000"><path d="M198.7 72.8h-17.1v-5.5h3.8V51.5c0-3.7-.7-6.3-2.1-7.9-1.4-1.6-3.3-2.3-5.7-2.3-3.2 0-5.6 1.1-7.2 3.4s-2.4 4.6-2.5 6.9v15.6h6v5.5h-17.1v-5.5h3.8V51.5c0-3.8-.7-6.4-2.1-7.9-1.4-1.5-3.3-2.3-5.6-2.3-3.2 0-5.5 1.1-7.2 3.3-1.6 2.2-2.4 4.5-2.5 6.9v15.8h6.9v5.5h-20.2v-5.5h6V42h-6.1v-5.6h13.4v6.4c1.2-2.1 2.7-3.8 4.7-5.2 2-1.3 4.4-2 7.3-2 2.8 0 5.3.7 7.5 2.1 2.2 1.4 3.7 3.5 4.5 6.4 1.1-2.5 2.7-4.5 4.9-6.1 2.2-1.6 4.8-2.4 7.9-2.4 3.5 0 6.5 1.1 8.9 3.3 2.4 2.2 3.7 5.6 3.7 10.2v18.2h6.1v5.5zM241.2 72.8H228v-7.2c-1.2 2.2-2.8 4.1-4.9 5.6-2.1 1.6-4.8 2.4-8.3 2.4-4.8 0-8.7-1.6-11.6-4.9-2.9-3.2-4.3-7.7-4.3-13.3 0-5 1.3-9.6 4-13.7 2.6-4.1 6.9-6.2 12.8-6.2 5.7 0 9.8 2.2 12.3 6.5V22.3h-8.6v-5.6h15.8v50.6h6v5.5zM227.9 56v-4.4c-.1-3-1.2-5.5-3.2-7.3-2-1.8-4.4-2.8-7.2-2.8-3.6 0-6.3 1.3-8.2 3.9-1.9 2.6-2.8 5.8-2.8 9.6 0 4.1 1 7.3 3 9.5s4.5 3.3 7.4 3.3c3.2 0 5.8-1.3 7.8-3.8 2.1-2.6 3.1-5.3 3.2-8zM286.4 72.8h-19.3v-5.5h6V51.5c0-3.7-.7-6.3-2.2-7.9-1.4-1.6-3.4-2.3-5.7-2.3-3.1 0-5.6 1-7.4 3-1.8 2-2.8 4.4-2.9 7v15.9h6v5.5h-19.3v-5.5h6V42h-6.2v-5.6H255v6.2c2.6-4.6 6.8-6.9 12.7-6.9 3.6 0 6.7 1.1 9.2 3.3 2.5 2.2 3.7 5.6 3.7 10.2v18.2h6v5.4z"/></g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
4
docs/public/company-logos/mdn-light.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" viewBox="0 0 361 104.2">
|
||||
<g style="fill:#A4CEFE"><path d="M40.3 0 11.7 92.1H0L28.5 0h11.8zM50.7 0v92.1H40.3V0h10.4zM101.4 0v92.1H91V0h10.4zM91 0 62.5 92.1H50.8L79.3 0H91zM294 95.4h67v8.8h-67v-8.8z"/></g>
|
||||
<g style="fill:#fff"><path d="M198.7 72.8h-17.1v-5.5h3.8V51.5c0-3.7-.7-6.3-2.1-7.9-1.4-1.6-3.3-2.3-5.7-2.3-3.2 0-5.6 1.1-7.2 3.4s-2.4 4.6-2.5 6.9v15.6h6v5.5h-17.1v-5.5h3.8V51.5c0-3.8-.7-6.4-2.1-7.9-1.4-1.5-3.3-2.3-5.6-2.3-3.2 0-5.5 1.1-7.2 3.3-1.6 2.2-2.4 4.5-2.5 6.9v15.8h6.9v5.5h-20.2v-5.5h6V42h-6.1v-5.6h13.4v6.4c1.2-2.1 2.7-3.8 4.7-5.2 2-1.3 4.4-2 7.3-2 2.8 0 5.3.7 7.5 2.1 2.2 1.4 3.7 3.5 4.5 6.4 1.1-2.5 2.7-4.5 4.9-6.1 2.2-1.6 4.8-2.4 7.9-2.4 3.5 0 6.5 1.1 8.9 3.3 2.4 2.2 3.7 5.6 3.7 10.2v18.2h6.1v5.5zM241.2 72.8H228v-7.2c-1.2 2.2-2.8 4.1-4.9 5.6-2.1 1.6-4.8 2.4-8.3 2.4-4.8 0-8.7-1.6-11.6-4.9-2.9-3.2-4.3-7.7-4.3-13.3 0-5 1.3-9.6 4-13.7 2.6-4.1 6.9-6.2 12.8-6.2 5.7 0 9.8 2.2 12.3 6.5V22.3h-8.6v-5.6h15.8v50.6h6v5.5zM227.9 56v-4.4c-.1-3-1.2-5.5-3.2-7.3-2-1.8-4.4-2.8-7.2-2.8-3.6 0-6.3 1.3-8.2 3.9-1.9 2.6-2.8 5.8-2.8 9.6 0 4.1 1 7.3 3 9.5s4.5 3.3 7.4 3.3c3.2 0 5.8-1.3 7.8-3.8 2.1-2.6 3.1-5.3 3.2-8zM286.4 72.8h-19.3v-5.5h6V51.5c0-3.7-.7-6.3-2.2-7.9-1.4-1.6-3.4-2.3-5.7-2.3-3.1 0-5.6 1-7.4 3-1.8 2-2.8 4.4-2.9 7v15.9h6v5.5h-19.3v-5.5h6V42h-6.2v-5.6H255v6.2c2.6-4.6 6.8-6.9 12.7-6.9 3.6 0 6.7 1.1 9.2 3.3 2.5 2.2 3.7 5.6 3.7 10.2v18.2h6v5.4z"/></g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
4
docs/public/company-logos/nuxt-dark.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="200" fill="none" class="text-highlighted block w-auto h-6" viewBox="0 0 800 200">
|
||||
<path fill="#000" d="M377 200c2.16 0 4-1.791 4-4v-93s5 9 14 24l39 67c1.785 3.74 5.744 6 9 6h27V50h-27c-1.798 0-4 1.494-4 4v94l-18-32-36-61c-1.752-3.109-5.521-5-9-5h-26v150h27ZM726 92h13a6 6 0 0 0 6-6V60h28v32h27v24h-27v43c0 10.5 5.057 15 14 15h13v26h-17c-23.052 0-38-14.929-38-40v-44h-19V92ZM591 92v62c0 14.004-5.258 25.809-13 34-7.742 8.191-18.434 12-33 12-14.566 0-26.258-3.809-34-12-7.611-8.191-13-19.996-13-34V92h16c3.412 0 6.769.622 9 3 2.231 2.246 3 3.565 3 7v52c0 8.059.457 13.037 4 17 3.543 3.831 7.914 5 15 5 7.217 0 10.457-1.169 14-5 3.543-3.963 4-8.941 4-17v-52c0-3.435.769-5.622 3-8 1.96-2.09 4.028-2.04 7-2 .411.005 1.586 0 2 0h16ZM676 144l34-52h-26c-3.277 0-6.188 1.176-8 4l-16 24-15-23c-1.812-2.824-5.723-5-9-5h-25l34 51-37 57h26c3.25 0 6.182-3.213 8-6l18-27 19 28c1.818 2.787 4.75 5 8 5h26l-37-56Z"/>
|
||||
<path fill="#00DC82" d="M168 200h111c3.542 0 6.932-1.244 10-3 3.068-1.756 6.23-3.959 8-7 1.77-3.041 3.002-6.49 3-10.001-.002-3.511-1.227-6.959-3-9.998L222 41c-1.77-3.04-3.933-5.245-7-7s-7.458-3-11-3-6.933 1.245-10 3-5.23 3.96-7 7l-19 33-38-64.002c-1.772-3.04-3.932-6.243-7-7.998s-6.458-2-10-2-6.932.245-10 2c-3.068 1.755-6.228 4.958-8 7.998L2 170c-1.773 3.039-1.998 6.487-2 9.998-.002 3.511.23 6.96 2 10.001 1.77 3.04 4.932 5.244 8 7 3.068 1.756 6.458 3 10 3h70c27.737 0 47.925-12.442 62-36l34-59 18-31 55 94h-73l-18 32Zm-79-32H40l73-126 37 63-24.509 42.725C116.144 163.01 105.488 168 89 168Z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.5 KiB |
4
docs/public/company-logos/nuxt-light.svg
Normal file
@@ -0,0 +1,4 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="200" fill="none" class="text-highlighted block w-auto h-6" viewBox="0 0 800 200">
|
||||
<path fill="#fff" d="M377 200c2.16 0 4-1.791 4-4v-93s5 9 14 24l39 67c1.785 3.74 5.744 6 9 6h27V50h-27c-1.798 0-4 1.494-4 4v94l-18-32-36-61c-1.752-3.109-5.521-5-9-5h-26v150h27ZM726 92h13a6 6 0 0 0 6-6V60h28v32h27v24h-27v43c0 10.5 5.057 15 14 15h13v26h-17c-23.052 0-38-14.929-38-40v-44h-19V92ZM591 92v62c0 14.004-5.258 25.809-13 34-7.742 8.191-18.434 12-33 12-14.566 0-26.258-3.809-34-12-7.611-8.191-13-19.996-13-34V92h16c3.412 0 6.769.622 9 3 2.231 2.246 3 3.565 3 7v52c0 8.059.457 13.037 4 17 3.543 3.831 7.914 5 15 5 7.217 0 10.457-1.169 14-5 3.543-3.963 4-8.941 4-17v-52c0-3.435.769-5.622 3-8 1.96-2.09 4.028-2.04 7-2 .411.005 1.586 0 2 0h16ZM676 144l34-52h-26c-3.277 0-6.188 1.176-8 4l-16 24-15-23c-1.812-2.824-5.723-5-9-5h-25l34 51-37 57h26c3.25 0 6.182-3.213 8-6l18-27 19 28c1.818 2.787 4.75 5 8 5h26l-37-56Z"/>
|
||||
<path fill="#00DC82" d="M168 200h111c3.542 0 6.932-1.244 10-3 3.068-1.756 6.23-3.959 8-7 1.77-3.041 3.002-6.49 3-10.001-.002-3.511-1.227-6.959-3-9.998L222 41c-1.77-3.04-3.933-5.245-7-7s-7.458-3-11-3-6.933 1.245-10 3-5.23 3.96-7 7l-19 33-38-64.002c-1.772-3.04-3.932-6.243-7-7.998s-6.458-2-10-2-6.932.245-10 2c-3.068 1.755-6.228 4.958-8 7.998L2 170c-1.773 3.039-1.998 6.487-2 9.998-.002 3.511.23 6.96 2 10.001 1.77 3.04 4.932 5.244 8 7 3.068 1.756 6.458 3 10 3h70c27.737 0 47.925-12.442 62-36l34-59 18-31 55 94h-73l-18 32Zm-79-32H40l73-126 37 63-24.509 42.725C116.144 163.01 105.488 168 89 168Z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.5 KiB |
@@ -5,7 +5,27 @@
|
||||
],
|
||||
"tags": [
|
||||
"fruit",
|
||||
"food"
|
||||
"food",
|
||||
"healthy",
|
||||
"snack",
|
||||
"nutrition",
|
||||
"fresh",
|
||||
"produce",
|
||||
"grocery",
|
||||
"organic",
|
||||
"harvest",
|
||||
"vitamin",
|
||||
"red",
|
||||
"green",
|
||||
"juicy",
|
||||
"sweet",
|
||||
"tart",
|
||||
"bite",
|
||||
"orchard",
|
||||
"plant",
|
||||
"core",
|
||||
"raw",
|
||||
"diet"
|
||||
],
|
||||
"categories": [
|
||||
"food-beverage"
|
||||
|
||||
@@ -9,6 +9,6 @@
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M12 20.94c1.5 0 2.75 1.06 4 1.06 3 0 6-8 6-12.22A4.91 4.91 0 0 0 17 5c-2.22 0-4 1.44-5 2-1-.56-2.78-2-5-2a4.9 4.9 0 0 0-5 4.78C2 14 5 22 8 22c1.25 0 2.5-1.06 4-1.06Z" />
|
||||
<path d="M10 2c1 .5 2 2 2 5" />
|
||||
<path d="M12 6.528V3a1 1 0 0 1 1-1h0" />
|
||||
<path d="M18.237 21A15 15 0 0 0 22 11a6 6 0 0 0-10-4.472A6 6 0 0 0 2 11a15.1 15.1 0 0 0 3.763 10 3 3 0 0 0 3.648.648 5.5 5.5 0 0 1 5.178 0A3 3 0 0 0 18.237 21" />
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 423 B After Width: | Height: | Size: 416 B |
68
icons/brick-wall-shield.json
Normal file
@@ -0,0 +1,68 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"contributors": [
|
||||
"karsa-mistmere",
|
||||
"danielbayley"
|
||||
],
|
||||
"tags": [
|
||||
"firewall",
|
||||
"security",
|
||||
"bricks",
|
||||
"mortar",
|
||||
"cement",
|
||||
"materials",
|
||||
"construction",
|
||||
"builder",
|
||||
"labourer",
|
||||
"quantity surveyor",
|
||||
"blocks",
|
||||
"stone",
|
||||
"cybersecurity",
|
||||
"secure",
|
||||
"safety",
|
||||
"protection",
|
||||
"guardian",
|
||||
"armored",
|
||||
"armoured",
|
||||
"defense",
|
||||
"defence",
|
||||
"defender",
|
||||
"block",
|
||||
"threat",
|
||||
"prevention",
|
||||
"antivirus",
|
||||
"vigilance",
|
||||
"vigilant",
|
||||
"detection",
|
||||
"scan",
|
||||
"find",
|
||||
"strength",
|
||||
"strong",
|
||||
"tough",
|
||||
"invincible",
|
||||
"invincibility",
|
||||
"invulnerable",
|
||||
"undamaged",
|
||||
"audit",
|
||||
"admin",
|
||||
"verification",
|
||||
"crest",
|
||||
"bravery",
|
||||
"knight",
|
||||
"foot soldier",
|
||||
"infantry",
|
||||
"trooper",
|
||||
"pawn",
|
||||
"battle",
|
||||
"war",
|
||||
"military",
|
||||
"army",
|
||||
"cadet",
|
||||
"scout"
|
||||
],
|
||||
"categories": [
|
||||
"security",
|
||||
"home",
|
||||
"connectivity"
|
||||
]
|
||||
}
|
||||
20
icons/brick-wall-shield.svg
Normal file
@@ -0,0 +1,20 @@
|
||||
<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 9v1.258" />
|
||||
<path d="M16 3v5.46" />
|
||||
<path d="M21 9.118V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h5.75" />
|
||||
<path d="M22 17.5c0 2.499-1.75 3.749-3.83 4.474a.5.5 0 0 1-.335-.005c-2.085-.72-3.835-1.97-3.835-4.47V14a.5.5 0 0 1 .5-.499c1 0 2.25-.6 3.12-1.36a.6.6 0 0 1 .76-.001c.875.765 2.12 1.36 3.12 1.36a.5.5 0 0 1 .5.5z" />
|
||||
<path d="M3 15h7" />
|
||||
<path d="M3 9h12.142" />
|
||||
<path d="M8 15v6" />
|
||||
<path d="M8 3v6" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 653 B |
@@ -9,15 +9,15 @@
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<rect width="16" height="20" x="4" y="2" rx="2" ry="2" />
|
||||
<path d="M9 22v-4h6v4" />
|
||||
<path d="M8 6h.01" />
|
||||
<path d="M16 6h.01" />
|
||||
<path d="M12 6h.01" />
|
||||
<path d="M12 10h.01" />
|
||||
<path d="M12 14h.01" />
|
||||
<path d="M12 6h.01" />
|
||||
<path d="M16 10h.01" />
|
||||
<path d="M16 14h.01" />
|
||||
<path d="M16 6h.01" />
|
||||
<path d="M8 10h.01" />
|
||||
<path d="M8 14h.01" />
|
||||
<path d="M8 6h.01" />
|
||||
<path d="M9 22v-3a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v3" />
|
||||
<rect x="4" y="2" width="16" height="20" rx="2" />
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 524 B After Width: | Height: | Size: 545 B |
@@ -9,8 +9,8 @@
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<line x1="2" x2="22" y1="2" y2="22" />
|
||||
<path d="M7 7H4a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h16" />
|
||||
<path d="M9.5 4h5L17 7h3a2 2 0 0 1 2 2v7.5" />
|
||||
<path d="M14.121 15.121A3 3 0 1 1 9.88 10.88" />
|
||||
<path d="M14.564 14.558a3 3 0 1 1-4.122-4.121" />
|
||||
<path d="m2 2 20 20" />
|
||||
<path d="M20 20H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 .819-.175" />
|
||||
<path d="M9.695 4.024A2 2 0 0 1 10.004 4h3.993a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v7.344" />
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 404 B After Width: | Height: | Size: 488 B |
@@ -3,9 +3,19 @@
|
||||
"contributors": [
|
||||
"colebemis",
|
||||
"lscheibel",
|
||||
"ericfennis"
|
||||
"ericfennis",
|
||||
"karsa-mistmere"
|
||||
],
|
||||
"tags": [
|
||||
"photography",
|
||||
"lens",
|
||||
"focus",
|
||||
"capture",
|
||||
"shot",
|
||||
"visual",
|
||||
"image",
|
||||
"device",
|
||||
"equipment",
|
||||
"photo",
|
||||
"webcam",
|
||||
"video"
|
||||
|
||||
@@ -9,6 +9,6 @@
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M14.5 4h-5L7 7H4a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-3l-2.5-3z" />
|
||||
<path d="M13.997 4a2 2 0 0 1 1.76 1.05l.486.9A2 2 0 0 0 18.003 7H20a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V9a2 2 0 0 1 2-2h1.997a2 2 0 0 0 1.759-1.048l.489-.904A2 2 0 0 1 10.004 4z" />
|
||||
<circle cx="12" cy="13" r="3" />
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 349 B After Width: | Height: | Size: 437 B |
@@ -13,5 +13,13 @@
|
||||
],
|
||||
"categories": [
|
||||
"brands"
|
||||
],
|
||||
"aliases": [
|
||||
{
|
||||
"name": "chrome",
|
||||
"deprecated": true,
|
||||
"deprecationReason": "alias.name",
|
||||
"toBeRemovedInVersion": "v1.0"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -9,9 +9,9 @@
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M10.88 21.94 15.46 14" />
|
||||
<path d="M21.17 8H12" />
|
||||
<path d="M3.95 6.06 8.54 14" />
|
||||
<circle cx="12" cy="12" r="10" />
|
||||
<circle cx="12" cy="12" r="4" />
|
||||
<line x1="21.17" x2="12" y1="8" y2="8" />
|
||||
<line x1="3.95" x2="8.54" y1="6.06" y2="14" />
|
||||
<line x1="10.88" x2="15.46" y1="21.94" y2="14" />
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 424 B After Width: | Height: | Size: 377 B |
25
icons/circle-star.json
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"contributors": [
|
||||
"karsa-mistmere"
|
||||
],
|
||||
"tags": [
|
||||
"badge",
|
||||
"medal",
|
||||
"honour",
|
||||
"decoration",
|
||||
"order",
|
||||
"pin",
|
||||
"laurel",
|
||||
"trophy",
|
||||
"medallion",
|
||||
"insignia",
|
||||
"bronze",
|
||||
"silver",
|
||||
"gold"
|
||||
],
|
||||
"categories": [
|
||||
"sports",
|
||||
"gaming"
|
||||
]
|
||||
}
|
||||
14
icons/circle-star.svg
Normal file
@@ -0,0 +1,14 @@
|
||||
<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.051 7.616a1 1 0 0 1 1.909.024l.737 1.452a1 1 0 0 0 .737.535l1.634.256a1 1 0 0 1 .588 1.806l-1.172 1.168a1 1 0 0 0-.282.866l.259 1.613a1 1 0 0 1-1.541 1.134l-1.465-.75a1 1 0 0 0-.912 0l-1.465.75a1 1 0 0 1-1.539-1.133l.258-1.613a1 1 0 0 0-.282-.867l-1.156-1.152a1 1 0 0 1 .572-1.822l1.633-.256a1 1 0 0 0 .737-.535z" />
|
||||
<circle cx="12" cy="12" r="10" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 576 B |
@@ -9,18 +9,18 @@
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M12 20a8 8 0 1 0 0-16 8 8 0 0 0 0 16Z" />
|
||||
<path d="M12 14a2 2 0 1 0 0-4 2 2 0 0 0 0 4Z" />
|
||||
<path d="M12 2v2" />
|
||||
<path d="M12 22v-2" />
|
||||
<path d="m17 20.66-1-1.73" />
|
||||
<path d="M11 10.27 7 3.34" />
|
||||
<path d="m20.66 17-1.73-1" />
|
||||
<path d="m3.34 7 1.73 1" />
|
||||
<path d="m11 13.73-4 6.93" />
|
||||
<path d="M12 22v-2" />
|
||||
<path d="M12 2v2" />
|
||||
<path d="M14 12h8" />
|
||||
<path d="m17 20.66-1-1.73" />
|
||||
<path d="m17 3.34-1 1.73" />
|
||||
<path d="M2 12h2" />
|
||||
<path d="m20.66 17-1.73-1" />
|
||||
<path d="m20.66 7-1.73 1" />
|
||||
<path d="m3.34 17 1.73-1" />
|
||||
<path d="m17 3.34-1 1.73" />
|
||||
<path d="m11 13.73-4 6.93" />
|
||||
<path d="m3.34 7 1.73 1" />
|
||||
<circle cx="12" cy="12" r="2" />
|
||||
<circle cx="12" cy="12" r="8" />
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 658 B After Width: | Height: | Size: 624 B |
23
icons/kayak.json
Normal file
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"contributors": [
|
||||
"jguddas",
|
||||
"jpjacobpadilla"
|
||||
],
|
||||
"tags": [
|
||||
"kayak",
|
||||
"boat",
|
||||
"paddle",
|
||||
"water",
|
||||
"sport",
|
||||
"recreation",
|
||||
"adventure",
|
||||
"outdoors",
|
||||
"equipment",
|
||||
"lake",
|
||||
"ocean"
|
||||
],
|
||||
"categories": [
|
||||
"transportation"
|
||||
]
|
||||
}
|
||||
16
icons/kayak.svg
Normal file
@@ -0,0 +1,16 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M18 17a1 1 0 0 0-1 1v1a2 2 0 1 0 2-2z" />
|
||||
<path d="M20.97 3.61a.45.45 0 0 0-.58-.58C10.2 6.6 6.6 10.2 3.03 20.39a.45.45 0 0 0 .58.58C13.8 17.4 17.4 13.8 20.97 3.61" />
|
||||
<path d="m6.707 6.707 10.586 10.586" />
|
||||
<path d="M7 5a2 2 0 1 0-2 2h1a1 1 0 0 0 1-1z" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 482 B |
33
icons/list-chevrons-down-up.json
Normal file
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"contributors": [
|
||||
"colebemis",
|
||||
"ericfennis",
|
||||
"ocavue",
|
||||
"jguddas",
|
||||
"PeterlitsZo",
|
||||
"mittalyashu",
|
||||
"juliankellydesign"
|
||||
],
|
||||
"tags": [
|
||||
"options",
|
||||
"items",
|
||||
"collapse",
|
||||
"expand",
|
||||
"details",
|
||||
"disclosure",
|
||||
"show",
|
||||
"hide",
|
||||
"toggle",
|
||||
"accordion",
|
||||
"more",
|
||||
"less",
|
||||
"fold",
|
||||
"unfold",
|
||||
"vertical"
|
||||
],
|
||||
"categories": [
|
||||
"text",
|
||||
"arrows"
|
||||
]
|
||||
}
|
||||
17
icons/list-chevrons-down-up.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="m15 18 3-3 3 3" />
|
||||
<path d="m15 6 3 3 3-3" />
|
||||
<path d="M3 12h8" />
|
||||
<path d="M3 18h8" />
|
||||
<path d="M3 6h8" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 335 B |
@@ -4,7 +4,8 @@
|
||||
"colebemis",
|
||||
"csandman",
|
||||
"ericfennis",
|
||||
"karsa-mistmere"
|
||||
"karsa-mistmere",
|
||||
"LieOnLion"
|
||||
],
|
||||
"tags": [
|
||||
"record",
|
||||
|
||||
@@ -9,10 +9,10 @@
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<line x1="2" x2="22" y1="2" y2="22" />
|
||||
<path d="M18.89 13.23A7.12 7.12 0 0 0 19 12v-2" />
|
||||
<path d="M5 10v2a7 7 0 0 0 12 5" />
|
||||
<path d="M12 19v3" />
|
||||
<path d="M15 9.34V5a3 3 0 0 0-5.68-1.33" />
|
||||
<path d="M16.95 16.95A7 7 0 0 1 5 12v-2" />
|
||||
<path d="M18.89 13.23A7 7 0 0 0 19 12v-2" />
|
||||
<path d="m2 2 20 20" />
|
||||
<path d="M9 9v3a3 3 0 0 0 5.12 2.12" />
|
||||
<line x1="12" x2="12" y1="19" y2="22" />
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 471 B After Width: | Height: | Size: 439 B |
@@ -2,13 +2,19 @@
|
||||
"$schema": "../icon.schema.json",
|
||||
"contributors": [
|
||||
"danielbayley",
|
||||
"ericfennis"
|
||||
"ericfennis",
|
||||
"irvineacosta"
|
||||
],
|
||||
"tags": [
|
||||
"drawer",
|
||||
"dock",
|
||||
"show",
|
||||
"reveal"
|
||||
"reveal",
|
||||
"padding",
|
||||
"margin",
|
||||
"guide",
|
||||
"layout",
|
||||
"bleed"
|
||||
],
|
||||
"categories": [
|
||||
"layout"
|
||||
|
||||
@@ -2,14 +2,20 @@
|
||||
"$schema": "../icon.schema.json",
|
||||
"contributors": [
|
||||
"danielbayley",
|
||||
"ericfennis"
|
||||
"ericfennis",
|
||||
"irvineacosta"
|
||||
],
|
||||
"tags": [
|
||||
"sidebar",
|
||||
"primary",
|
||||
"drawer",
|
||||
"show",
|
||||
"reveal"
|
||||
"reveal",
|
||||
"padding",
|
||||
"margin",
|
||||
"guide",
|
||||
"layout",
|
||||
"bleed"
|
||||
],
|
||||
"categories": [
|
||||
"layout"
|
||||
|
||||
24
icons/panel-left-right-dashed.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"contributors": [
|
||||
"danielbayley",
|
||||
"ericfennis",
|
||||
"irvineacosta"
|
||||
],
|
||||
"tags": [
|
||||
"sidebar",
|
||||
"primary",
|
||||
"drawer",
|
||||
"show",
|
||||
"reveal",
|
||||
"padding",
|
||||
"margin",
|
||||
"guide",
|
||||
"layout",
|
||||
"vertical",
|
||||
"bleed"
|
||||
],
|
||||
"categories": [
|
||||
"layout"
|
||||
]
|
||||
}
|
||||
21
icons/panel-left-right-dashed.svg
Normal file
@@ -0,0 +1,21 @@
|
||||
<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="M16 10V9" />
|
||||
<path d="M16 15v-1" />
|
||||
<path d="M16 21v-2" />
|
||||
<path d="M16 5V3" />
|
||||
<path d="M8 10V9" />
|
||||
<path d="M8 15v-1" />
|
||||
<path d="M8 21v-2" />
|
||||
<path d="M8 5V3" />
|
||||
<rect x="3" y="3" width="18" height="18" rx="2" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 450 B |
@@ -2,14 +2,20 @@
|
||||
"$schema": "../icon.schema.json",
|
||||
"contributors": [
|
||||
"danielbayley",
|
||||
"ericfennis"
|
||||
"ericfennis",
|
||||
"irvineacosta"
|
||||
],
|
||||
"tags": [
|
||||
"sidebar",
|
||||
"secondary",
|
||||
"drawer",
|
||||
"show",
|
||||
"reveal"
|
||||
"reveal",
|
||||
"padding",
|
||||
"margin",
|
||||
"guide",
|
||||
"layout",
|
||||
"bleed"
|
||||
],
|
||||
"categories": [
|
||||
"layout"
|
||||
|
||||
24
icons/panel-top-bottom-dashed.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"contributors": [
|
||||
"danielbayley",
|
||||
"ericfennis",
|
||||
"irvineacosta"
|
||||
],
|
||||
"tags": [
|
||||
"sidebar",
|
||||
"primary",
|
||||
"drawer",
|
||||
"show",
|
||||
"reveal",
|
||||
"padding",
|
||||
"margin",
|
||||
"guide",
|
||||
"layout",
|
||||
"horizontal",
|
||||
"bleed"
|
||||
],
|
||||
"categories": [
|
||||
"layout"
|
||||
]
|
||||
}
|
||||
21
icons/panel-top-bottom-dashed.svg
Normal file
@@ -0,0 +1,21 @@
|
||||
<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="M14 16h1" />
|
||||
<path d="M14 8h1" />
|
||||
<path d="M19 16h2" />
|
||||
<path d="M19 8h2" />
|
||||
<path d="M3 16h2" />
|
||||
<path d="M3 8h2" />
|
||||
<path d="M9 16h1" />
|
||||
<path d="M9 8h1" />
|
||||
<rect x="3" y="3" width="18" height="18" rx="2" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 444 B |
@@ -2,13 +2,19 @@
|
||||
"$schema": "../icon.schema.json",
|
||||
"contributors": [
|
||||
"danielbayley",
|
||||
"ericfennis"
|
||||
"ericfennis",
|
||||
"irvineacosta"
|
||||
],
|
||||
"tags": [
|
||||
"menu bar",
|
||||
"drawer",
|
||||
"show",
|
||||
"reveal"
|
||||
"reveal",
|
||||
"padding",
|
||||
"margin",
|
||||
"guide",
|
||||
"layout",
|
||||
"bleed"
|
||||
],
|
||||
"categories": [
|
||||
"layout"
|
||||
|
||||
@@ -3,6 +3,9 @@
|
||||
"contributors": [
|
||||
"danielbayley"
|
||||
],
|
||||
"deprecated": true,
|
||||
"deprecationReason": "icon.brand",
|
||||
"toBeRemovedInVersion": "v1.0",
|
||||
"tags": [
|
||||
"railway",
|
||||
"train",
|
||||
|
||||
39
icons/rose.json
Normal file
@@ -0,0 +1,39 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"contributors": [
|
||||
"danielbayley",
|
||||
"jguddas",
|
||||
"jamiemlaw",
|
||||
"mittalyashu"
|
||||
],
|
||||
"tags": [
|
||||
"roses",
|
||||
"thorns",
|
||||
"petals",
|
||||
"plant",
|
||||
"stem",
|
||||
"leaves",
|
||||
"spring",
|
||||
"bloom",
|
||||
"blossom",
|
||||
"gardening",
|
||||
"botanical",
|
||||
"flora",
|
||||
"florist",
|
||||
"bouquet",
|
||||
"bunch",
|
||||
"gift",
|
||||
"date",
|
||||
"romance",
|
||||
"romantic",
|
||||
"valentines day",
|
||||
"special occasion"
|
||||
],
|
||||
"categories": [
|
||||
"nature",
|
||||
"seasons",
|
||||
"sustainability",
|
||||
"home",
|
||||
"social"
|
||||
]
|
||||
}
|
||||
17
icons/rose.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="M17 10h-1a4 4 0 1 1 4-4v.534" />
|
||||
<path d="M17 6h1a4 4 0 0 1 1.42 7.74l-2.29.87a6 6 0 0 1-5.339-10.68l2.069-1.31" />
|
||||
<path d="M4.5 17c2.8-.5 4.4 0 5.5.8s1.8 2.2 2.3 3.7c-2 .4-3.5.4-4.8-.3-1.2-.6-2.3-1.9-3-4.2" />
|
||||
<path d="M9.77 12C4 15 2 22 2 22" />
|
||||
<circle cx="17" cy="8" r="2" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 508 B |
@@ -9,10 +9,10 @@
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M14 22v-4a2 2 0 1 0-4 0v4" />
|
||||
<path d="m18 10 3.447 1.724a1 1 0 0 1 .553.894V20a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2v-7.382a1 1 0 0 1 .553-.894L6 10" />
|
||||
<path d="M18 5v17" />
|
||||
<path d="m4 6 7.106-3.553a2 2 0 0 1 1.788 0L20 6" />
|
||||
<path d="M6 5v17" />
|
||||
<path d="M14 21v-3a2 2 0 0 0-4 0v3" />
|
||||
<path d="M18 5v16" />
|
||||
<path d="m4 6 7.106-3.79a2 2 0 0 1 1.788 0L20 6" />
|
||||
<path d="m6 11-3.52 2.147a1 1 0 0 0-.48.854V19a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-5a1 1 0 0 0-.48-.853L18 11" />
|
||||
<path d="M6 5v16" />
|
||||
<circle cx="12" cy="9" r="2" />
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 503 B After Width: | Height: | Size: 496 B |
@@ -2,7 +2,8 @@
|
||||
"$schema": "../icon.schema.json",
|
||||
"contributors": [
|
||||
"danielbayley",
|
||||
"karsa-mistmere"
|
||||
"karsa-mistmere",
|
||||
"jguddas"
|
||||
],
|
||||
"tags": [
|
||||
"shape",
|
||||
|
||||
@@ -9,6 +9,6 @@
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M5 9c-1.5 1.5-3 3.2-3 5.5A5.5 5.5 0 0 0 7.5 20c1.8 0 3-.5 4.5-2 1.5 1.5 2.7 2 4.5 2a5.5 5.5 0 0 0 5.5-5.5c0-2.3-1.5-4-3-5.5l-7-7-7 7Z" />
|
||||
<path d="M12 18v4" />
|
||||
<path d="M2 14.499a5.5 5.5 0 0 0 9.591 3.675.6.6 0 0 1 .818.001A5.5 5.5 0 0 0 22 14.5c0-2.29-1.5-4-3-5.5l-5.492-5.312a2 2 0 0 0-3-.02L5 8.999c-1.5 1.5-3 3.2-3 5.5" />
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 381 B After Width: | Height: | Size: 401 B |
25
icons/square-star.json
Normal file
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"contributors": [
|
||||
"karsa-mistmere"
|
||||
],
|
||||
"tags": [
|
||||
"badge",
|
||||
"medal",
|
||||
"honour",
|
||||
"decoration",
|
||||
"order",
|
||||
"pin",
|
||||
"laurel",
|
||||
"trophy",
|
||||
"medallion",
|
||||
"insignia",
|
||||
"bronze",
|
||||
"silver",
|
||||
"gold"
|
||||
],
|
||||
"categories": [
|
||||
"sports",
|
||||
"gaming"
|
||||
]
|
||||
}
|
||||
14
icons/square-star.svg
Normal file
@@ -0,0 +1,14 @@
|
||||
<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.035 7.69a1 1 0 0 1 1.909.024l.737 1.452a1 1 0 0 0 .737.535l1.634.256a1 1 0 0 1 .588 1.806l-1.172 1.168a1 1 0 0 0-.282.866l.259 1.613a1 1 0 0 1-1.541 1.134l-1.465-.75a1 1 0 0 0-.912 0l-1.465.75a1 1 0 0 1-1.539-1.133l.258-1.613a1 1 0 0 0-.282-.866l-1.156-1.153a1 1 0 0 1 .572-1.822l1.633-.256a1 1 0 0 0 .737-.535z" />
|
||||
<rect x="3" y="3" width="18" height="18" rx="2" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 592 B |
@@ -9,9 +9,7 @@
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="m2 7 4.41-4.41A2 2 0 0 1 7.83 2h8.34a2 2 0 0 1 1.42.59L22 7" />
|
||||
<path d="M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8" />
|
||||
<path d="M15 22v-4a2 2 0 0 0-2-2h-2a2 2 0 0 0-2 2v4" />
|
||||
<path d="M2 7h20" />
|
||||
<path d="M22 7v3a2 2 0 0 1-2 2a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 16 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 12 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 8 12a2.7 2.7 0 0 1-1.59-.63.7.7 0 0 0-.82 0A2.7 2.7 0 0 1 4 12a2 2 0 0 1-2-2V7" />
|
||||
<path d="M15 21v-5a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v5" />
|
||||
<path d="M17.774 10.31a1.12 1.12 0 0 0-1.549 0 2.5 2.5 0 0 1-3.451 0 1.12 1.12 0 0 0-1.548 0 2.5 2.5 0 0 1-3.452 0 1.12 1.12 0 0 0-1.549 0 2.5 2.5 0 0 1-3.77-3.248l2.889-4.184A2 2 0 0 1 7 2h10a2 2 0 0 1 1.653.873l2.895 4.192a2.5 2.5 0 0 1-3.774 3.244" />
|
||||
<path d="M4 10.95V19a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8.05" />
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 708 B After Width: | Height: | Size: 587 B |
@@ -9,8 +9,9 @@
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M12 2v1" />
|
||||
<path d="M15.5 21a1.85 1.85 0 0 1-3.5-1v-8H2a10 10 0 0 1 3.428-6.575" />
|
||||
<path d="M17.5 12H22A10 10 0 0 0 9.004 3.455" />
|
||||
<path d="M12 13v7a2 2 0 0 0 4 0" />
|
||||
<path d="M12 2v2" />
|
||||
<path d="M18.656 13h2.336a1 1 0 0 0 .97-1.274 10.284 10.284 0 0 0-12.07-7.51" />
|
||||
<path d="m2 2 20 20" />
|
||||
<path d="M5.961 5.957a10.28 10.28 0 0 0-3.922 5.769A1 1 0 0 0 3 13h10" />
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 383 B After Width: | Height: | Size: 454 B |
@@ -9,7 +9,7 @@
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M22 12a10.06 10.06 1 0 0-20 0Z" />
|
||||
<path d="M12 12v8a2 2 0 0 0 4 0" />
|
||||
<path d="M12 2v1" />
|
||||
<path d="M12 13v7a2 2 0 0 0 4 0" />
|
||||
<path d="M12 2v2" />
|
||||
<path d="M20.992 13a1 1 0 0 0 .97-1.274 10.284 10.284 0 0 0-19.923 0A1 1 0 0 0 3 13z" />
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 315 B After Width: | Height: | Size: 360 B |
@@ -2,9 +2,19 @@
|
||||
"$schema": "../icon.schema.json",
|
||||
"contributors": [
|
||||
"karsa-mistmere",
|
||||
"ericfennis"
|
||||
"ericfennis",
|
||||
"jguddas"
|
||||
],
|
||||
"tags": [
|
||||
"background",
|
||||
"texture",
|
||||
"image",
|
||||
"art",
|
||||
"design",
|
||||
"visual",
|
||||
"decor",
|
||||
"pattern",
|
||||
"screen",
|
||||
"cover",
|
||||
"lock screen"
|
||||
],
|
||||
|
||||
@@ -9,8 +9,9 @@
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<circle cx="8" cy="9" r="2" />
|
||||
<path d="m9 17 6.1-6.1a2 2 0 0 1 2.81.01L22 15V5a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2" />
|
||||
<path d="M8 21h8" />
|
||||
<path d="M12 17v4" />
|
||||
<path d="M8 21h8" />
|
||||
<path d="m9 17 6.1-6.1a2 2 0 0 1 2.81.01L22 15" />
|
||||
<circle cx="8" cy="9" r="2" />
|
||||
<rect x="2" y="3" width="20" height="14" rx="2" />
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 407 B After Width: | Height: | Size: 394 B |
@@ -7,7 +7,9 @@
|
||||
"tags": [
|
||||
"cancel",
|
||||
"close",
|
||||
"cross",
|
||||
"delete",
|
||||
"ex",
|
||||
"remove",
|
||||
"times",
|
||||
"clear",
|
||||
|
||||
@@ -3,27 +3,32 @@ import * as iconAndAliases from './iconsAndAliases';
|
||||
|
||||
/**
|
||||
* Replaces all elements with matching nameAttr with the defined icons
|
||||
* @param {{ icons?: object, nameAttr?: string, attrs?: object }} options
|
||||
* @param {{ icons?: object, nameAttr?: string, attrs?: object, root?: Element | Document }} options
|
||||
*/
|
||||
const createIcons = ({ icons = {}, nameAttr = 'data-lucide', attrs = {} } = {}) => {
|
||||
const createIcons = ({
|
||||
icons = {},
|
||||
nameAttr = 'data-lucide',
|
||||
attrs = {},
|
||||
root = document,
|
||||
}: { icons?: object; nameAttr?: string; attrs?: object; root?: Element | Document } = {}) => {
|
||||
if (!Object.values(icons).length) {
|
||||
throw new Error(
|
||||
"Please provide an icons object.\nIf you want to use all the icons you can import it like:\n `import { createIcons, icons } from 'lucide';\nlucide.createIcons({icons});`",
|
||||
);
|
||||
}
|
||||
|
||||
if (typeof document === 'undefined') {
|
||||
if (typeof root === 'undefined') {
|
||||
throw new Error('`createIcons()` only works in a browser environment.');
|
||||
}
|
||||
|
||||
const elementsToReplace = document.querySelectorAll(`[${nameAttr}]`);
|
||||
const elementsToReplace = root.querySelectorAll(`[${nameAttr}]`);
|
||||
Array.from(elementsToReplace).forEach((element) =>
|
||||
replaceElement(element, { nameAttr, icons, attrs }),
|
||||
);
|
||||
|
||||
/** @todo: remove this block in v1.0 */
|
||||
if (nameAttr === 'data-lucide') {
|
||||
const deprecatedElements = document.querySelectorAll('[icon-name]');
|
||||
const deprecatedElements = root.querySelectorAll('[icon-name]');
|
||||
if (deprecatedElements.length > 0) {
|
||||
console.warn(
|
||||
'[Lucide] Some icons were found with the now deprecated icon-name attribute. These will still be replaced for backwards compatibility, but will no longer be supported in v1.0 and you should switch to data-lucide',
|
||||
|
||||
@@ -27,6 +27,22 @@ describe('createIcons', () => {
|
||||
expect(hasSvg).toBeTruthy();
|
||||
});
|
||||
|
||||
it('should only execute given provided context', () => {
|
||||
document.body.innerHTML = `<div id="context"><i data-lucide="volume-2"></i></div><i data-lucide="funnel"></i>`;
|
||||
|
||||
const context = document.querySelector('#context')!;
|
||||
createIcons({
|
||||
icons,
|
||||
root: context,
|
||||
});
|
||||
|
||||
const hasSvg = !!document.querySelector('svg.lucide-volume-2');
|
||||
const hasUnreplaced = !!document.querySelector('i[data-lucide="funnel"]');
|
||||
|
||||
expect(hasSvg).toBeTruthy();
|
||||
expect(hasUnreplaced).toBeTruthy();
|
||||
});
|
||||
|
||||
it('should add custom attributes', () => {
|
||||
document.body.innerHTML = `<i data-lucide="volume-2" class="lucide"></i>`;
|
||||
|
||||
|
||||
3509
pnpm-lock.yaml
generated
@@ -30,17 +30,23 @@ if (changedFiles.length === 0) {
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
const getImageTagsByFiles = (files: string[], getBaseUrl: (file: string) => string, width?: number) =>
|
||||
const getImageTagsByFiles = (
|
||||
files: string[],
|
||||
getBaseUrl: (file: string) => string,
|
||||
width?: number,
|
||||
linkToLucideStudio = false,
|
||||
) =>
|
||||
files.map((file) => {
|
||||
const svgContent = fs.readFileSync(path.join(process.cwd(), file), 'utf-8');
|
||||
const strippedAttrsSVG = svgContent.replace(/<svg[^>]*>/, '<svg>');
|
||||
const minifiedSvg = minifySvg(strippedAttrsSVG);
|
||||
const name = path.basename(file, '.svg');
|
||||
|
||||
const base64 = Buffer.from(minifiedSvg).toString('base64');
|
||||
const url = getBaseUrl(file);
|
||||
const widthAttr = width ? `width="${width}"` : '';
|
||||
|
||||
return `<img title="${file}" alt="${file}" ${widthAttr} src="${url}/${base64}.svg"/>`;
|
||||
return `${linkToLucideStudio ? `<a title="Open ${name} in lucide studio" target="_blank" href="https://studio.lucide.dev/edit?value=${encodeURI(minifiedSvg)}&name=${name}">` : ''}<img title="${name}" alt="${name}" ${widthAttr} src="${url}/${base64}.svg"/>${linkToLucideStudio ? '</a>' : ''}`;
|
||||
});
|
||||
|
||||
const svgFiles = await readSvgDirectory(ICONS_DIR);
|
||||
@@ -73,25 +79,25 @@ const changeFiles3pxStrokeImageTags = getImageTagsByFiles(
|
||||
() => `${BASE_URL}/stroke-width/3`,
|
||||
).join('');
|
||||
|
||||
const changeFilesLowDPIImageTags16 = getImageTagsByFiles(
|
||||
changedFiles,
|
||||
() => `${BASE_URL}/dpi/16`,
|
||||
).join(' ');
|
||||
const changeFilesLowDPIImageTags16 = getImageTagsByFiles(changedFiles, (file) => {
|
||||
const iconName = path.basename(file, '.svg');
|
||||
return `${BASE_URL}/dpi/${iconName}/16`;
|
||||
}).join(' ');
|
||||
|
||||
const changeFilesLowDPIImageTags24 = getImageTagsByFiles(
|
||||
changedFiles,
|
||||
() => `${BASE_URL}/dpi/24`,
|
||||
).join(' ');
|
||||
const changeFilesLowDPIImageTags24 = getImageTagsByFiles(changedFiles, (file) => {
|
||||
const iconName = path.basename(file, '.svg');
|
||||
return `${BASE_URL}/dpi/${iconName}/24`;
|
||||
}).join(' ');
|
||||
|
||||
const changeFilesLowDPIImageTags32 = getImageTagsByFiles(
|
||||
changedFiles,
|
||||
() => `${BASE_URL}/dpi/32`,
|
||||
).join(' ');
|
||||
const changeFilesLowDPIImageTags32 = getImageTagsByFiles(changedFiles, (file) => {
|
||||
const iconName = path.basename(file, '.svg');
|
||||
return `${BASE_URL}/dpi/${iconName}/32`;
|
||||
}).join(' ');
|
||||
|
||||
const changeFilesLowDPIImageTags48 = getImageTagsByFiles(
|
||||
changedFiles,
|
||||
() => `${BASE_URL}/dpi/48`,
|
||||
).join(' ');
|
||||
const changeFilesLowDPIImageTags48 = getImageTagsByFiles(changedFiles, (file) => {
|
||||
const iconName = path.basename(file, '.svg');
|
||||
return `${BASE_URL}/dpi/${iconName}/48`;
|
||||
}).join(' ');
|
||||
|
||||
const changeFilesXRayImageTags = getImageTagsByFiles(
|
||||
changedFiles,
|
||||
@@ -101,6 +107,7 @@ const changeFilesXRayImageTags = getImageTagsByFiles(
|
||||
return `${BASE_URL}/${iconName}`;
|
||||
},
|
||||
400,
|
||||
true,
|
||||
).join(' ');
|
||||
|
||||
const changeFilesDiffImageTags = getImageTagsByFiles(
|
||||
|
||||