Compare commits
38 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
571cab88ee | ||
|
|
68c5ed6097 | ||
|
|
85efb8e1b6 | ||
|
|
00c3487dff | ||
|
|
cec73c5217 | ||
|
|
8f1c7eb737 | ||
|
|
0dd10483c9 | ||
|
|
a0c447cece | ||
|
|
7cf928e94c | ||
|
|
8caf6efe72 | ||
|
|
a9fec942ff | ||
|
|
00cbc81331 | ||
|
|
4e3af5c601 | ||
|
|
632dda526a | ||
|
|
c858240c01 | ||
|
|
1fb70e67ee | ||
|
|
b533cf8480 | ||
|
|
51fd3af446 | ||
|
|
f3c3fea228 | ||
|
|
29574a6385 | ||
|
|
5c96b8d848 | ||
|
|
2c38fac9b1 | ||
|
|
0b88415247 | ||
|
|
9b25845258 | ||
|
|
49973ff32b | ||
|
|
714f63d0d3 | ||
|
|
762cf32666 | ||
|
|
216f42cdcb | ||
|
|
b80c2805b2 | ||
|
|
d80a267c81 | ||
|
|
07fa908631 | ||
|
|
1bdf6febac | ||
|
|
78e1057515 | ||
|
|
9d6d0c340d | ||
|
|
77f3f49ce7 | ||
|
|
a55620d6ba | ||
|
|
dad9648e20 | ||
|
|
b3b39afb95 |
@@ -1,4 +1,4 @@
|
||||
{
|
||||
module.exports = {
|
||||
"env": {
|
||||
"browser": true,
|
||||
"node": true
|
||||
25
.github/workflows/font.yml
vendored
@@ -2,21 +2,31 @@ name: Build Lucide
|
||||
on:
|
||||
push:
|
||||
branches: [ master ]
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
|
||||
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
|
||||
jobs:
|
||||
Build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
|
||||
- name: Clone 'Lucide'
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Update repos
|
||||
run: sudo apt-get update
|
||||
|
||||
- name: Install FontForge
|
||||
run: sudo apt-get install zlib1g-dev fontforge woff2
|
||||
run: sudo apt-get install zlib1g-dev fontforge
|
||||
|
||||
- name: Install NodeJS and Yarn
|
||||
run: sudo apt-get install nodejs yarn
|
||||
|
||||
- name: Clone sfnt2woff-zopfli repo
|
||||
run: git clone https://github.com/bramstein/sfnt2woff-zopfli.git sfnt2woff-zopfli
|
||||
|
||||
|
||||
- name: Install and move sfnt2woff-zopfli
|
||||
run: |
|
||||
cd sfnt2woff-zopfli
|
||||
@@ -26,6 +36,7 @@ jobs:
|
||||
- name: Clone woff2
|
||||
run: git clone --recursive https://github.com/google/woff2.git
|
||||
|
||||
|
||||
- name: Install woff2
|
||||
run: |
|
||||
cd woff2
|
||||
@@ -34,12 +45,20 @@ jobs:
|
||||
|
||||
- name: Install Font Custom dependency
|
||||
run: sudo gem install fontcustom
|
||||
|
||||
- name: Install "outline-stroke"
|
||||
run: sudo yarn add svg-outline-stroke svgson
|
||||
|
||||
- name: "Outline SVG"
|
||||
run: mkdir converted_icons && node scripts/outline_svg.js
|
||||
|
||||
|
||||
- name: Build 'Lucide'
|
||||
run: echo "Building Featherity font" && fontcustom compile ./icons -h -n Featherity -o build -F
|
||||
run: echo "Building Lucide font" && fontcustom compile ./converted_icons -h -n Lucide -o build -F
|
||||
|
||||
|
||||
- name: Zip 'Lucide'
|
||||
run: zip -r Featherity.zip build
|
||||
run: zip -r Lucide.zip build
|
||||
|
||||
- name: 'Upload to Artifacts'
|
||||
uses: actions/upload-artifact@v1.0.0
|
||||
|
||||
2
.gitignore
vendored
@@ -4,7 +4,7 @@
|
||||
node_modules
|
||||
dist
|
||||
build
|
||||
lib
|
||||
/lib
|
||||
sandbox
|
||||
stash
|
||||
coverage
|
||||
|
||||
@@ -4,3 +4,4 @@ stats
|
||||
node_modules
|
||||
tests
|
||||
scripts
|
||||
site
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
:+1::tada: First off, thanks for taking the time to contribute! :tada::+1:
|
||||
|
||||
The following is a set of guidelines for contributing to Featherity. Feel free to propose changes to this document in a pull request.
|
||||
The following is a set of guidelines for contributing to Lucide. Feel free to propose changes to this document in a pull request.
|
||||
|
||||
## Pull Requests
|
||||
|
||||
@@ -22,3 +22,6 @@ Guidelines for pull requests:
|
||||
Before creating an icon request, please search to see if someone has requested the icon already. If there is an open request, please add a :+1:.
|
||||
|
||||
If the icon has not already been requested, [create an issue](https://github.com/lucide-icons/lucide/issues/new?title=Icon%20Request:) with a title of `Icon request: <icon name>` and add as much information as possible.
|
||||
|
||||
## Icon Requests from Feather
|
||||
If you are a designer who wants to contribute to Lucide but you don't know what icons to work on, then have a look at the Requests from Feather. All open, unfinished and valid requests can be found in [Feather Icon Requests](https://github.com/lucide-icons/lucide/issues/119).
|
||||
|
||||
19
README.md
@@ -1,3 +1,5 @@
|
||||
<p align=center><img width="410" src="https://lucide.netlify.app/logo-text.svg" alt="Lucide Logo"></p>
|
||||
|
||||
# Lucide
|
||||
|
||||

|
||||
@@ -8,13 +10,20 @@
|
||||
|
||||
Lucide is a community-run fork of [Feather Icons](https://github.com/feathericons/feather), open for anyone to contribute icons.
|
||||
|
||||
Note that we are completely independent from Feather, so **icons submitted here won't get added to Feather Icons or its associated librairies**.
|
||||
|
||||
## Table of Contents
|
||||
|
||||
* [Installation](#installation)
|
||||
* [Package managers](#package-managers)
|
||||
* [CDN](#cdn)
|
||||
* [Usage](#usage)
|
||||
* [Unpkg](#with-unpkg)
|
||||
* [ESModules](#with-esmodules)
|
||||
* [Options](#additional-options)
|
||||
* [Treeshake library](#treeshake-the-library-only-use-the-icons-you-use)
|
||||
* [Custom binding](#custom-element-binding)
|
||||
* [Figma](#figma)
|
||||
* [Contributing](#contributing)
|
||||
* [Community](#community)
|
||||
* [License](#license)
|
||||
|
||||
## Installation
|
||||
@@ -64,7 +73,7 @@ Here is a complete example with unpkg
|
||||
|
||||
### With ESModules
|
||||
|
||||
To reduce bundle size, lucide is build to be fully threeshakeble.
|
||||
To reduce bundle size, lucide is built to be fully treeshakable.
|
||||
The `createIcons` function will search for HTMLElements with the attribute `icon-name` and replace it with the svg from the given icon name.
|
||||
|
||||
```html
|
||||
@@ -75,7 +84,7 @@ The `createIcons` function will search for HTMLElements with the attribute `icon
|
||||
```js
|
||||
import { createIcons, icons } from 'lucide';
|
||||
|
||||
// Caustion, this will import all the icons and bundle them.
|
||||
// Caution, this will import all the icons and bundle them.
|
||||
createIcons({icons});
|
||||
|
||||
// Recommended way, to include only the icons you need.
|
||||
@@ -109,7 +118,7 @@ createIcons({
|
||||
});
|
||||
```
|
||||
|
||||
#### Threeshake the library, only use the icons you use
|
||||
#### Treeshake the library, only use the icons you use
|
||||
|
||||
```js
|
||||
import { createIcons, Menu, ArrowRight, Globe } from 'lucide';
|
||||
|
||||
19
categories.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"arrows": [],
|
||||
"brands": [],
|
||||
"code": [],
|
||||
"connectivity": ["airplay"],
|
||||
"cursors": [],
|
||||
"development": [],
|
||||
"devices": ["alarm-clock"],
|
||||
"file-system": [],
|
||||
"layout": [],
|
||||
"maths": ["activity"],
|
||||
"multimedia": [],
|
||||
"notifications": ["alert-circle", "alert-octagon", "alert-triangle"],
|
||||
"nature": [],
|
||||
"shopping": [],
|
||||
"shapes": [],
|
||||
"sports": [],
|
||||
"text-edit": ["align-center","align-right","align-left","align-justify" ]
|
||||
}
|
||||
78
docs/ICON_DESIGN_GUIDE.md
Normal file
@@ -0,0 +1,78 @@
|
||||
# Icon Design Guide
|
||||
|
||||
Here are rules that should be followed to keep quality and consistency when making icons for Lucide.
|
||||
|
||||
## Summary of the rules we have
|
||||
|
||||
1. Icons must be designed on a **24 by 24 pixels** canvas.
|
||||
2. Icons must have a **1 pixel padding** within the canvas.
|
||||
3. Icons must have a **stroke width of 2 pixels**.
|
||||
4. Icons must use **round joins**.
|
||||
5. Icons must use **round caps**.
|
||||
6. Icons must use **centered strokes**.
|
||||
7. Shapes (such as rectangles) in icons must have **border radius of 2 pixels**.
|
||||
8. Distinct elements must have **2 pixels of spacing between each other**.
|
||||
|
||||
## The Rules Visualized
|
||||
|
||||
### 1. Icons must be designed on a 24 by 24 pixels canvas.
|
||||
|
||||

|
||||
|
||||
### 2. Icons must have a 1 pixel padding within the canvas.
|
||||
|
||||

|
||||
|
||||
### 3. Icons must have a stroke width of 2 pixels.
|
||||
|
||||

|
||||
|
||||
### 4. Icons must use round joins.
|
||||
|
||||

|
||||
|
||||
### 5. Icons must use round caps.
|
||||
|
||||

|
||||
|
||||
### 6. Icons must use centered strokes.
|
||||
|
||||

|
||||
|
||||
### 7. Shapes (such as squares) in icons must have border radius of 2 pixels.
|
||||
|
||||

|
||||
|
||||
### 8. Distinct elements must have 2 pixels of spacing between each other.
|
||||
|
||||

|
||||
|
||||
## Code Conventions
|
||||
|
||||
Before an icon is added to the library, we like to have readable and optimized svg code.
|
||||
|
||||
### Global Attributes
|
||||
|
||||
For each icon these attributes are applied, corresponding to the above rules.
|
||||
|
||||
```xml
|
||||
<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"
|
||||
>
|
||||
<!-- SVGElements -->
|
||||
</svg>
|
||||
```
|
||||
|
||||
### Minify paths
|
||||
|
||||
Code of paths can get really big.
|
||||
To reduce file size we like to minify the code.
|
||||
We recommend to use the [SVGOMG](https://jakearchibald.github.io/svgomg/) to minify paths.
|
||||
37
docs/INKSCAPE_GUIDE.md
Normal file
@@ -0,0 +1,37 @@
|
||||
# Inkscape Setup Guide
|
||||
|
||||
This guide shows the steps to setup Inkscape for creating icons that conform to the Featherity design
|
||||
guidelines.
|
||||
|
||||
## Setting up The Canvas
|
||||
|
||||
When opening a new document, Inkscape will create a canvas of a default size. To change the size to 24x24:
|
||||
|
||||
1. Open the Document Properties dialog (File -> Document Properties).
|
||||
2. On the “Page Size” tab, under “Custom Size” set the Units to `px` and set both Height and Width to 24.
|
||||

|
||||
3. On the “Grid” tab, select `Rectangular Grid` and click “New Grid”.
|
||||

|
||||
4. Set the Grid Units to `px` and set Spacing X and Spacing Y both to 1.
|
||||

|
||||
5. Close the Document Properties dialog.
|
||||
6. To center the canvas in the viewport, select View -> Zoom -> Drawing.
|
||||
|
||||
## Setting up The Paths
|
||||
|
||||
1. Create a path or shape.
|
||||
2. With the path selected, open the Stroke and Fill panel by pressing `Ctrl+Shift+F` on your keyboard.
|
||||

|
||||
3. On the “Stroke Style” tab:
|
||||
* Set Stroke Width to `2px`.
|
||||
* Select the rounded join type.
|
||||
* Select the rounded cap type.
|
||||
4. If the shape is a rectangle, select the rectangle and in the top of the screen below the menu bar, set `Rx` and `Ry` to `2px`.
|
||||

|
||||
|
||||
## Saving A File
|
||||
|
||||
1. When ready to save the file, click Save As and select “Optimized SVG” as the file type.
|
||||

|
||||
2. After clicking Save, to conform with the other icons in the package, set Pretty Printing to use spaces and set the indentation depth to 2.
|
||||

|
||||
BIN
docs/images/1px-padding.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
docs/images/24px-24px.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
docs/images/2px-border-radius.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
docs/images/2px-element-spacing.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
docs/images/2px-stroke.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
docs/images/centered-strokes.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
docs/images/corner-radius.png
Normal file
|
After Width: | Height: | Size: 2.7 KiB |
BIN
docs/images/grid-1.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
docs/images/grid-2.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
docs/images/optimize-settings.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
docs/images/page-size.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
docs/images/round-caps.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
docs/images/round-joints.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
docs/images/save-as.png
Normal file
|
After Width: | Height: | Size: 56 KiB |
BIN
docs/images/strokes.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
14
icons/album.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"
|
||||
>
|
||||
<rect x="3" y="3" width="18" height="18" rx="2" ry="2" />
|
||||
<polyline points="11 3 11 11 14 8 17 11 17 3" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 319 B |
@@ -9,8 +9,7 @@
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<line x1="18" y1="10" x2="6" y2="10" />
|
||||
<line x1="21" y1="6" x2="3" y2="6" />
|
||||
<line x1="21" y1="14" x2="3" y2="14" />
|
||||
<line x1="18" y1="18" x2="6" y2="18" />
|
||||
<line x1="17" y1="12" x2="7" y2="12" />
|
||||
<line x1="19" y1="18" x2="5" y2="18" />
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 374 B After Width: | Height: | Size: 332 B |
@@ -9,8 +9,7 @@
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<line x1="21" y1="10" x2="3" y2="10" />
|
||||
<line x1="21" y1="6" x2="3" y2="6" />
|
||||
<line x1="21" y1="14" x2="3" y2="14" />
|
||||
<line x1="21" y1="18" x2="3" y2="18" />
|
||||
<line x1="3" y1="6" x2="21" y2="6" />
|
||||
<line x1="3" y1="12" x2="21" y2="12" />
|
||||
<line x1="3" y1="18" x2="21" y2="18" />
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 374 B After Width: | Height: | Size: 332 B |
@@ -9,8 +9,7 @@
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<line x1="17" y1="10" x2="3" y2="10" />
|
||||
<line x1="21" y1="6" x2="3" y2="6" />
|
||||
<line x1="21" y1="14" x2="3" y2="14" />
|
||||
<line x1="15" y1="12" x2="3" y2="12" />
|
||||
<line x1="17" y1="18" x2="3" y2="18" />
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 374 B After Width: | Height: | Size: 332 B |
@@ -9,8 +9,7 @@
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<line x1="21" y1="10" x2="7" y2="10" />
|
||||
<line x1="21" y1="6" x2="3" y2="6" />
|
||||
<line x1="21" y1="14" x2="3" y2="14" />
|
||||
<line x1="21" y1="12" x2="9" y2="12" />
|
||||
<line x1="21" y1="18" x2="7" y2="18" />
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 374 B After Width: | Height: | Size: 332 B |
14
icons/axe.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="m14 12-8.501 8.501c-0.828 0.828-2.17 0.828-2.998 0-1e-3 -1e-3 -1e-3 -1e-3 -2e-3 -0-0.828-0.828-0.828-2.17 0-2.998l8.501-8.501" />
|
||||
<path d="m9 7 4-4 6 6h3s-0.051 0.254-0.13 0.648c-0.538 2.691-2.477 4.888-5.081 5.756-1.003 0.334-1.789 0.596-1.789 0.596v-3z" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 480 B |
15
icons/beaker.svg
Normal file
@@ -0,0 +1,15 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M4.5 3h15" />
|
||||
<path d="M6 3v16a2 2 0 002 2h8a2 2 0 002-2V3" />
|
||||
<path d="M6 14h12" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 308 B |
23
icons/building.svg
Normal file
@@ -0,0 +1,23 @@
|
||||
<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"
|
||||
>
|
||||
<rect x="4" y="2" width="16" height="20" 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="M16 10h.01" />
|
||||
<path d="M16 14h.01" />
|
||||
<path d="M8 10h.01" />
|
||||
<path d="M8 14h.01" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 524 B |
@@ -10,6 +10,6 @@
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<line x1="2" y1="2" x2="22" y2="22" />
|
||||
<path d="M9.5 4h5L17 7h3a2 2 0 012 2v7.5M7 7H4a2 2 0 00-2 2v9a2 2 0 002 2h16"/>
|
||||
<path d="M14.121 15.121A3 3 0 119.88 10.88"/>
|
||||
<path d="M9.5 4h5L17 7h3a2 2 0 012 2v7.5M7 7H4a2 2 0 00-2 2v9a2 2 0 002 2h16" />
|
||||
<path d="M14.121 15.121A3 3 0 119.88 10.88" />
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 379 B After Width: | Height: | Size: 381 B |
17
icons/clover.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="M16.2 3.8a2.7 2.7 0 00-3.81 0l-.4.38-.4-.4a2.7 2.7 0 00-3.82 0C6.73 4.85 6.67 6.64 8 8l4 4 4-4c1.33-1.36 1.27-3.15.2-4.2z" />
|
||||
<path d="M8 8c-1.36-1.33-3.15-1.27-4.2-.2a2.7 2.7 0 000 3.81l.38.4-.4.4a2.7 2.7 0 000 3.82C4.85 17.27 6.64 17.33 8 16" />
|
||||
<path d="M16 16c1.36 1.33 3.15 1.27 4.2.2a2.7 2.7 0 000-3.81l-.38-.4.4-.4a2.7 2.7 0 000-3.82C19.15 6.73 17.36 6.67 16 8" />
|
||||
<path d="M7.8 20.2a2.7 2.7 0 003.81 0l.4-.38.4.4a2.7 2.7 0 003.82 0c1.06-1.06 1.12-2.85-.21-4.21l-4-4-4 4c-1.33 1.36-1.27 3.15-.2 4.2z" />
|
||||
<path d="M7 17L2 22" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 762 B |
15
icons/file-check-2.svg
Normal file
@@ -0,0 +1,15 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M4 22h14a2 2 0 002-2V7.5L14.5 2H6a2 2 0 00-2 2v4" />
|
||||
<path d="M14 2v6h6" />
|
||||
<path d="M3 15l2 2 4-4" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 326 B |
15
icons/file-check.svg
Normal file
@@ -0,0 +1,15 @@
|
||||
<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.5 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V7.5L14.5 2z" />
|
||||
<polyline points="14 2 14 8 20 8" />
|
||||
<path d="M9 15l2 2 4-4" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 356 B |
16
icons/file-code.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="M4 22h14a2 2 0 002-2V7.5L14.5 2H6a2 2 0 00-2 2v4" />
|
||||
<path d="M14 2v6h6" />
|
||||
<path d="M9 18l3-3-3-3" />
|
||||
<path d="M5 12l-3 3 3 3" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 356 B |
17
icons/file-digit.svg
Normal file
@@ -0,0 +1,17 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M4 22h14a2 2 0 002-2V7.5L14.5 2H6a2 2 0 00-2 2v4" />
|
||||
<path d="M14 2v6h6" />
|
||||
<path d="M10 12h2v6" />
|
||||
<rect x="2" y="12" width="4" height="6" />
|
||||
<path d="M10 18h4" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 392 B |
15
icons/file-minus-2.svg
Normal file
@@ -0,0 +1,15 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M4 22h14a2 2 0 002-2V7.5L14.5 2H6a2 2 0 00-2 2v4" />
|
||||
<path d="M14 2v6h6" />
|
||||
<path d="M3 15h6" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 320 B |
@@ -9,7 +9,7 @@
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" />
|
||||
<path d="M14.5 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V7.5L14.5 2z" />
|
||||
<polyline points="14 2 14 8 20 8" />
|
||||
<line x1="9" y1="15" x2="15" y2="15" />
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 363 B After Width: | Height: | Size: 369 B |
16
icons/file-plus-2.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="M4 22h14a2 2 0 002-2V7.5L14.5 2H6a2 2 0 00-2 2v4" />
|
||||
<path d="M14 2v6h6" />
|
||||
<path d="M3 15h6" />
|
||||
<path d="M6 12v6" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 343 B |
@@ -9,7 +9,7 @@
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" />
|
||||
<path d="M14.5 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V7.5L14.5 2z" />
|
||||
<polyline points="14 2 14 8 20 8" />
|
||||
<line x1="12" y1="18" x2="12" y2="12" />
|
||||
<line x1="9" y1="15" x2="15" y2="15" />
|
||||
|
||||
|
Before Width: | Height: | Size: 406 B After Width: | Height: | Size: 412 B |
16
icons/file-search.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="M4 22h14a2 2 0 002-2V7.5L14.5 2H6a2 2 0 00-2 2v3" />
|
||||
<path d="M14 2v6h6" />
|
||||
<path d="M5 17a3 3 0 100-6 3 3 0 000 6z" />
|
||||
<path d="M9 18l-1.5-1.5" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 373 B |
@@ -9,9 +9,9 @@
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z" />
|
||||
<path d="M14.5 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V7.5L14.5 2z" />
|
||||
<polyline points="14 2 14 8 20 8" />
|
||||
<line x1="16" y1="13" x2="8" y2="13" />
|
||||
<line x1="16" y1="17" x2="8" y2="17" />
|
||||
<polyline points="10 9 9 9 8 9" />
|
||||
<line x1="10" y1="9" x2="8" y2="9" />
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 442 B After Width: | Height: | Size: 451 B |
16
icons/file-x-2.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="M4 22h14a2 2 0 002-2V7.5L14.5 2H6a2 2 0 00-2 2v4" />
|
||||
<path d="M14 2v6h6" />
|
||||
<path d="M3 12.5l5 5" />
|
||||
<path d="M8 12.5l-5 5" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 352 B |
16
icons/file-x.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="M14.5 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V7.5L14.5 2z" />
|
||||
<polyline points="14 2 14 8 20 8" />
|
||||
<line x1="9.5" y1="12.5" x2="14.5" y2="17.5" />
|
||||
<line x1="14.5" y1="12.5" x2="9.5" y2="17.5" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 427 B |
@@ -9,6 +9,6 @@
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M13 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V9z" />
|
||||
<polyline points="13 2 13 9 20 9" />
|
||||
<path d="M14.5 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V7.5L14.5 2z" />
|
||||
<polyline points="14 2 14 8 20 8" />
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 321 B After Width: | Height: | Size: 327 B |
15
icons/files.svg
Normal file
@@ -0,0 +1,15 @@
|
||||
<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.5 2H8.6c-.4 0-.8.2-1.1.5-.3.3-.5.7-.5 1.1v12.8c0 .4.2.8.5 1.1.3.3.7.5 1.1.5h9.8c.4 0 .8-.2 1.1-.5.3-.3.5-.7.5-1.1V6.5L15.5 2z" />
|
||||
<path d="M3 7.6v12.8c0 .4.2.8.5 1.1.3.3.7.5 1.1.5h9.8" />
|
||||
<path d="M15 2v5h5" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 438 B |
15
icons/flask-conical.svg
Normal file
@@ -0,0 +1,15 @@
|
||||
<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 2v8L4.72 20.55a1 1 0 00.9 1.45h12.76a1 1 0 00.9-1.45L14 10V2" />
|
||||
<path d="M8.5 2h7" />
|
||||
<path d="M7 16h10" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 336 B |
17
icons/flask-round.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="M10 2v7.31" />
|
||||
<path d="M14 9.3V1.99" />
|
||||
<path d="M8.5 2h7" />
|
||||
<path d="M14 9.3a6.5 6.5 0 11-4 0" />
|
||||
<path d="M5.58 16.5h12.85" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 358 B |
@@ -9,6 +9,6 @@
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M12 15l3.5-3.5"/>
|
||||
<path d="M20.3 18c.4-1 .7-2.2.7-3.4C21 9.8 17 6 12 6s-9 3.8-9 8.6c0 1.2.3 2.4.7 3.4"/>
|
||||
<path d="M12 15l3.5-3.5" />
|
||||
<path d="M20.3 18c.4-1 .7-2.2.7-3.4C21 9.8 17 6 12 6s-9 3.8-9 8.6c0 1.2.3 2.4.7 3.4" />
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 326 B After Width: | Height: | Size: 328 B |
17
icons/gavel.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="M14 13l-7.5 7.5c-.83.83-2.17.83-3 0 0 0 0 0 0 0a2.12 2.12 0 010-3L11 10" />
|
||||
<path d="M16 16l6-6" />
|
||||
<path d="M8 8l6-6" />
|
||||
<path d="M9 7l8 8" />
|
||||
<path d="M21 11l-8-8" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 396 B |
15
icons/hammer.svg
Normal file
@@ -0,0 +1,15 @@
|
||||
<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 12l-8.5 8.5c-.83.83-2.17.83-3 0 0 0 0 0 0 0a2.12 2.12 0 010-3L12 9" />
|
||||
<path d="M17.64 15L22 10.64" />
|
||||
<path d="M20.91 11.7l-1.25-1.25c-.6-.6-.93-1.4-.93-2.25v-.86L16.01 4.6a5.56 5.56 0 00-3.94-1.64H9l.92.82A6.18 6.18 0 0112 8.4v1.56l2 2h2.47l2.26 1.91" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 484 B |
16
icons/hard-hat.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="M2 18a1 1 0 001 1h18a1 1 0 001-1v-2a1 1 0 00-1-1H3a1 1 0 00-1 1v2z" />
|
||||
<path d="M10 10V5a1 1 0 011-1h2a1 1 0 011 1v5" />
|
||||
<path d="M4 15v-3a6 6 0 016-6h0" />
|
||||
<path d="M14 6h0a6 6 0 016 6v3" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 417 B |
@@ -9,6 +9,6 @@
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M9 11l-6 6v3h9l3-3"/>
|
||||
<path d="M22 12l-4.6 4.6a2 2 0 01-2.8 0l-5.2-5.2a2 2 0 010-2.8L14 4"/>
|
||||
<path d="M9 11l-6 6v3h9l3-3" />
|
||||
<path d="M22 12l-4.6 4.6a2 2 0 01-2.8 0l-5.2-5.2a2 2 0 010-2.8L14 4" />
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 314 B After Width: | Height: | Size: 316 B |
16
icons/indent.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"
|
||||
>
|
||||
<polyline points="3 8 7 12 3 16" />
|
||||
<line x1="21" y1="12" x2="11" y2="12" />
|
||||
<line x1="21" y1="6" x2="11" y2="6" />
|
||||
<line x1="21" y1="18" x2="11" y2="18" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 373 B |
13
icons/laptop.svg
Normal file
@@ -0,0 +1,13 @@
|
||||
<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="M20 16V7a2 2 0 00-2-2H6a2 2 0 00-2 2v9m16 0H4m16 0l1.28 2.55a1 1 0 01-.9 1.45H3.62a1 1 0 01-.9-1.45L4 16" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 364 B |
17
icons/lasso-select.svg
Normal file
@@ -0,0 +1,17 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M7 22a5 5 0 01-2-4" />
|
||||
<path d="M7 16.93c.96.43 1.96.74 2.99.91" />
|
||||
<path d="M3.34 14A6.8 6.8 0 012 10c0-4.42 4.48-8 10-8s10 3.58 10 8a7.19 7.19 0 01-.33 2" />
|
||||
<path d="M5 18a2 2 0 100-4 2 2 0 000 4z" />
|
||||
<path d="M14.33 22h-.09a.35.35 0 01-.24-.32v-10a.34.34 0 01.33-.34c.08 0 .15.03.21.08l7.34 6a.33.33 0 01-.21.59h-4.49l-2.57 3.85a.35.35 0 01-.28.14v0z" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 588 B |
15
icons/lasso.svg
Normal file
@@ -0,0 +1,15 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M7 22a5 5 0 01-2-4" />
|
||||
<path d="M3.3 14A6.8 6.8 0 012 10c0-4.4 4.5-8 10-8s10 3.6 10 8-4.5 8-10 8a12 12 0 01-5-1" />
|
||||
<path d="M5 18a2 2 0 100-4 2 2 0 000 4z" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 385 B |
18
icons/list-checks.svg
Normal file
@@ -0,0 +1,18 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<line x1="10" y1="6" x2="21" y2="6" />
|
||||
<line x1="10" y1="12" x2="21" y2="12" />
|
||||
<line x1="10" y1="18" x2="21" y2="18" />
|
||||
<polyline points="3 6 4 7 6 5" />
|
||||
<polyline points="3 12 4 13 6 11" />
|
||||
<polyline points="3 18 4 19 6 17" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 449 B |
18
icons/list-ordered.svg
Normal file
@@ -0,0 +1,18 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<line x1="10" y1="6" x2="21" y2="6" />
|
||||
<line x1="10" y1="12" x2="21" y2="12" />
|
||||
<line x1="10" y1="18" x2="21" y2="18" />
|
||||
<path d="M4 6H5V10" />
|
||||
<path d="M4 10H6" />
|
||||
<path d="M6 18H4C4 17 6 16 6 15C6 13.9999 5 13.5 4 14" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 443 B |
@@ -9,7 +9,7 @@
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<line x1="3" y1="12" x2="21" y2="12" />
|
||||
<line x1="3" y1="6" x2="21" y2="6" />
|
||||
<line x1="3" y1="18" x2="21" y2="18" />
|
||||
<line x1="4" y1="12" x2="20" y2="12" />
|
||||
<line x1="4" y1="6" x2="20" y2="6" />
|
||||
<line x1="4" y1="18" x2="20" y2="18" />
|
||||
</svg>
|
||||
|
||||
|
Before Width: | Height: | Size: 332 B After Width: | Height: | Size: 332 B |
16
icons/outdent.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"
|
||||
>
|
||||
<polyline points="7 8 3 12 7 16" />
|
||||
<line x1="21" y1="12" x2="11" y2="12" />
|
||||
<line x1="21" y1="6" x2="11" y2="6" />
|
||||
<line x1="21" y1="18" x2="11" y2="18" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 373 B |
15
icons/pipette.svg
Normal file
@@ -0,0 +1,15 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M2 22l2-2h3l7-7" />
|
||||
<path d="M4 20v-3l7-7" />
|
||||
<path d="M14.29 13.3a1 1 0 001.41 0l.8-.8c.27-.27.27-.72 0-1s-.28-.72 0-1l4.08-4.08a2 2 0 000-2.83l-.17-.17a2 2 0 00-2.83 0L13.5 7.51c-.28.27-.73.27-1 0s-.73-.28-1 0l-.8.79a1 1 0 000 1.41l3.59 3.59z" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 472 B |
17
icons/ruler.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="m16.0 2.0 6 6-14 14-6-6 14-14" />
|
||||
<path d="m7.5 10.5 2 2" />
|
||||
<path d="m10.5 7.5 2 2" />
|
||||
<path d="m13.5 4.5 2 2" />
|
||||
<path d="m4.5 13.5 2 2" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 379 B |
15
icons/shovel.svg
Normal file
@@ -0,0 +1,15 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M2 22v-5l5-5 5 5-5 5z" />
|
||||
<path d="M9.5 14.5L16 8" />
|
||||
<path d="M17 2l5 5-.5.5a3.53 3.53 0 01-5 0s0 0 0 0a3.53 3.53 0 010-5L17 2" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 355 B |
|
Before Width: | Height: | Size: 376 B After Width: | Height: | Size: 376 B |
4
netlify.toml
Normal file
@@ -0,0 +1,4 @@
|
||||
[build]
|
||||
base = "site/"
|
||||
publish = "build/"
|
||||
command = "yarn deploy"
|
||||
13
package.json
@@ -1,27 +1,26 @@
|
||||
{
|
||||
"name": "lucide",
|
||||
"description": "Lucide is a community-run fork of Feather Icons, open for anyone to contribute icons.",
|
||||
"version": "0.1.1",
|
||||
"version": "0.11.0",
|
||||
"license": "ISC",
|
||||
"amdName": "lucide",
|
||||
"homepage": "https://featherity.netlify.app",
|
||||
"homepage": "https://lucide.netlify.app",
|
||||
"url": "https://github.com/owner/project/issues",
|
||||
"repository": "github:lucide-icons/lucide",
|
||||
"source": "build/lucide.js",
|
||||
"main": "dist/cjs/lucide.js",
|
||||
"main:umd": "dist/umd/lucide.js",
|
||||
"module": "lib/lucide.js",
|
||||
"module": "dist/esm/lucide.js",
|
||||
"unpkg": "dist/umd/lucide.min.js",
|
||||
"sideEffects": false,
|
||||
"scripts": {
|
||||
"start": "babel-watch --watch src",
|
||||
"clean": "rimraf lib && rimraf dist && rimraf build",
|
||||
"build": "yarn clean && yarn build:move && yarn build:icons && yarn build:es && yarn build:esbrowser && yarn build:bundles",
|
||||
"build": "yarn clean && yarn build:move && yarn build:icons && yarn build:es && yarn build:bundles",
|
||||
"build:move": "cp -av src build",
|
||||
"build:icons": "npx babel-node ./scripts/buildIcons.js --presets @babel/env",
|
||||
"build:es": "babel build -d lib --source-maps --ignore '**/*.test.js','**/__mocks__'",
|
||||
"build:esbrowser": "BROWSER_COMPAT=true yarn build:es -d dist/esm",
|
||||
"build:bundles": "BROWSER_COMPAT=true rollup -c rollup.config.js",
|
||||
"build:es": "babel build -d dist/esm --ignore '**/*.test.js','**/__mocks__'",
|
||||
"build:bundles": "rollup -c rollup.config.js",
|
||||
"optimize": "npx babel-node ./scripts/optimizeSvgs.js --presets @babel/env",
|
||||
"test": "jest"
|
||||
},
|
||||
|
||||
2
packages/site/next-env.d.ts
vendored
@@ -1,2 +0,0 @@
|
||||
/// <reference types="next" />
|
||||
/// <reference types="next/types/global" />
|
||||
@@ -1,32 +0,0 @@
|
||||
{
|
||||
"private": true,
|
||||
"name": "site",
|
||||
"version": "1.0.0",
|
||||
"author": "John Letey",
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
"build": "next build",
|
||||
"export": "next export",
|
||||
"deploy": "yarn build && yarn export"
|
||||
},
|
||||
"dependencies": {
|
||||
"@chakra-ui/core": "^0.8.0",
|
||||
"@emotion/core": "^10.0.28",
|
||||
"@emotion/styled": "^10.0.27",
|
||||
"downloadjs": "^1.4.7",
|
||||
"emotion-theming": "^10.0.27",
|
||||
"fuse.js": "^6.0.4",
|
||||
"jszip": "^3.4.0",
|
||||
"next": "^9.4.4",
|
||||
"query-string": "^6.13.0",
|
||||
"react": "^16.13.1",
|
||||
"react-dom": "^16.13.1",
|
||||
"use-query-params": "^1.1.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^14.0.11",
|
||||
"@types/react": "^16.9.35",
|
||||
"@types/react-dom": "^16.9.8",
|
||||
"typescript": "^3.9.5"
|
||||
}
|
||||
}
|
||||
@@ -1,58 +0,0 @@
|
||||
import { Box, Divider, Flex, Text, Link, Icon, useColorMode } from "@chakra-ui/core";
|
||||
import { StringParam, useQueryParam } from "use-query-params";
|
||||
import { useKeyBindings } from "../lib/key";
|
||||
|
||||
const Layout = ({ children }) => {
|
||||
const [, setQuery] = useQueryParam("query", StringParam);
|
||||
const { colorMode, toggleColorMode } = useColorMode();
|
||||
|
||||
useKeyBindings({
|
||||
Escape: {
|
||||
fn: () => setQuery(""),
|
||||
},
|
||||
KeyT: {
|
||||
fn: () => toggleColorMode(),
|
||||
},
|
||||
});
|
||||
|
||||
return (
|
||||
<Box h="100vh">
|
||||
<Flex mb={16} w="full">
|
||||
<Flex
|
||||
alignItems="center"
|
||||
justifyContent="space-between"
|
||||
pt={4}
|
||||
pb={4}
|
||||
maxW="1250px"
|
||||
margin="0 auto"
|
||||
w="full"
|
||||
px={8}
|
||||
>
|
||||
<Flex justifyContent="center" alignItems="center">
|
||||
<Text
|
||||
fontSize="4xl"
|
||||
onClick={() => setQuery("")}
|
||||
style={{ cursor: "pointer" }}
|
||||
>
|
||||
Featherity
|
||||
</Text>
|
||||
</Flex>
|
||||
<Flex justifyContent="center" alignItems="center">
|
||||
<Link href="https://github.com/lucide-icons/lucide" isExternal style={{ fontSize: "18px", marginRight: '24px' }}>
|
||||
Github
|
||||
</Link>
|
||||
<div onClick={toggleColorMode} style={{ cursor: "pointer" }}>
|
||||
<Icon name={colorMode == "light" ? "moon" : "sun"} size="24px" />
|
||||
</div>
|
||||
</Flex>
|
||||
</Flex>
|
||||
</Flex>
|
||||
<Flex margin="0 auto" direction="column" maxW="1250px" px={8}>
|
||||
{children}
|
||||
<Divider marginTop={10} marginBottom={10} />
|
||||
</Flex>
|
||||
</Box>
|
||||
);
|
||||
};
|
||||
|
||||
export default Layout;
|
||||
@@ -1,23 +0,0 @@
|
||||
import Fuse from "fuse.js";
|
||||
import { useEffect, useState } from "react";
|
||||
|
||||
function useSearch(icons, query) {
|
||||
const fuse = new Fuse(Object.values(icons), {
|
||||
threshold: 0.2,
|
||||
keys: ["name", "tags"],
|
||||
});
|
||||
|
||||
const [results, setResults] = useState(Object.values(icons));
|
||||
|
||||
useEffect(() => {
|
||||
if (query.trim()) {
|
||||
setResults(fuse.search(query.trim()));
|
||||
} else {
|
||||
setResults(Object.values(icons));
|
||||
}
|
||||
}, [query]);
|
||||
|
||||
return results;
|
||||
}
|
||||
|
||||
export default useSearch;
|
||||
@@ -1,74 +0,0 @@
|
||||
import { theme as chakraTheme } from "@chakra-ui/core";
|
||||
|
||||
const theme = {
|
||||
...chakraTheme,
|
||||
fonts: {
|
||||
...chakraTheme.fonts,
|
||||
body: `Jost,-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"`,
|
||||
},
|
||||
icons: {
|
||||
...chakraTheme.icons,
|
||||
sun: {
|
||||
path: (
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="currentColor"
|
||||
stroke="currentColor"
|
||||
strokeWidth="2"
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
>
|
||||
<circle cx="12" cy="12" r="5" />
|
||||
<line x1="12" y1="1" x2="12" y2="3" />
|
||||
<line x1="12" y1="21" x2="12" y2="23" />
|
||||
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64" />
|
||||
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78" />
|
||||
<line x1="1" y1="12" x2="3" y2="12" />
|
||||
<line x1="21" y1="12" x2="23" y2="12" />
|
||||
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36" />
|
||||
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22" />
|
||||
</svg>
|
||||
),
|
||||
},
|
||||
moon: {
|
||||
path: (
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="currentColor"
|
||||
stroke="currentColor"
|
||||
strokeWidth="2"
|
||||
strokeLinecap="round"
|
||||
strokeLinejoin="round"
|
||||
>
|
||||
<path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z" />
|
||||
</svg>
|
||||
),
|
||||
},
|
||||
search: {
|
||||
path: (
|
||||
<svg
|
||||
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"
|
||||
>
|
||||
<circle cx="11" cy="11" r="8" />
|
||||
<line x1="21" y1="21" x2="16.65" y2="16.65" />
|
||||
</svg>
|
||||
),
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
export default theme;
|
||||
@@ -1,47 +0,0 @@
|
||||
import { CSSReset, ThemeProvider, ColorModeProvider } from "@chakra-ui/core";
|
||||
import { useRouter } from "next/router";
|
||||
import { QueryParamProvider } from "use-query-params";
|
||||
import customTheme from "../lib/theme";
|
||||
import Head from "next/head";
|
||||
|
||||
const QueryProvider = ({ children }) => {
|
||||
const router = useRouter();
|
||||
|
||||
const history = {
|
||||
push: ({ search }: Location) =>
|
||||
router.push({ search, pathname: router.pathname }),
|
||||
|
||||
replace: ({ search }: Location) =>
|
||||
router.replace({ search, pathname: router.pathname }),
|
||||
};
|
||||
|
||||
const location = {
|
||||
search: router.asPath.replace(/[^?]+/u, ""),
|
||||
} as Location;
|
||||
|
||||
return (
|
||||
<QueryParamProvider history={history} location={location}>
|
||||
{children}
|
||||
</QueryParamProvider>
|
||||
);
|
||||
};
|
||||
|
||||
const App = ({ Component, pageProps }) => {
|
||||
return (
|
||||
<>
|
||||
<Head>
|
||||
<title>Featherity</title>
|
||||
</Head>
|
||||
<QueryProvider>
|
||||
<ThemeProvider theme={customTheme}>
|
||||
<ColorModeProvider>
|
||||
<CSSReset />
|
||||
<Component {...pageProps} />
|
||||
</ColorModeProvider>
|
||||
</ThemeProvider>
|
||||
</QueryProvider>
|
||||
</>
|
||||
);
|
||||
};
|
||||
|
||||
export default App;
|
||||
@@ -1,31 +0,0 @@
|
||||
import Document, { Head, Html, Main, NextScript } from "next/document";
|
||||
|
||||
class MyDocument extends Document {
|
||||
render() {
|
||||
return (
|
||||
<Html>
|
||||
<Head>
|
||||
<link
|
||||
href="https://indestructibletype.com/fonts/Jost.css"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
</Head>
|
||||
<style jsx global>{`
|
||||
* {
|
||||
-webkit-transition: none !important;
|
||||
-moz-transition: none !important;
|
||||
-o-transition: none !important;
|
||||
-ms-transition: none !important;
|
||||
transition: none !important;
|
||||
}
|
||||
`}</style>
|
||||
<body>
|
||||
<Main />
|
||||
<NextScript />
|
||||
</body>
|
||||
</Html>
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export default MyDocument;
|
||||
@@ -1,143 +0,0 @@
|
||||
import {
|
||||
Button,
|
||||
Flex,
|
||||
Grid,
|
||||
Icon,
|
||||
Input,
|
||||
InputGroup,
|
||||
InputLeftElement,
|
||||
Stack,
|
||||
Text,
|
||||
useToast,
|
||||
} from "@chakra-ui/core";
|
||||
import copy from "copy-to-clipboard";
|
||||
import download from "downloadjs";
|
||||
import JSZip from "jszip";
|
||||
import { useEffect, useRef, useState } from "react";
|
||||
import { StringParam, useQueryParam } from "use-query-params";
|
||||
import Layout from "../components/Layout";
|
||||
import { getAllData } from "../lib/icons";
|
||||
import useSearch from "../lib/search";
|
||||
|
||||
function generateZip(icons) {
|
||||
const zip = new JSZip();
|
||||
Object.values(icons).forEach((icon) =>
|
||||
// @ts-ignore
|
||||
zip.file(`${icon.name}.svg`, icon.src)
|
||||
);
|
||||
return zip.generateAsync({ type: "blob" });
|
||||
}
|
||||
|
||||
const IndexPage = ({ data }) => {
|
||||
const [query, setQuery] = useQueryParam("query", StringParam);
|
||||
const results = useSearch(data, query || "");
|
||||
const toast = useToast();
|
||||
|
||||
const inputElement = useRef(null);
|
||||
function handleKeyDown(event) {
|
||||
if (event.key === "/" && inputElement.current !== document.activeElement) {
|
||||
event.preventDefault();
|
||||
inputElement.current.focus();
|
||||
}
|
||||
}
|
||||
|
||||
useEffect(() => {
|
||||
window.addEventListener("keydown", handleKeyDown);
|
||||
return () => window.removeEventListener("keydown", handleKeyDown);
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<Layout>
|
||||
<Flex direction="column" align="center" justify="center">
|
||||
<Text fontSize="3xl" as="b">
|
||||
Simply beautiful open source icons, community-sourced
|
||||
</Text>
|
||||
<Stack isInline marginTop={3} marginBottom={10}>
|
||||
<Button
|
||||
onClick={async () => {
|
||||
const zip = await generateZip(data);
|
||||
download(zip, "feather.zip");
|
||||
}}
|
||||
>
|
||||
Download all
|
||||
</Button>
|
||||
</Stack>
|
||||
</Flex>
|
||||
<InputGroup position="sticky" top={2} zIndex={1}>
|
||||
<InputLeftElement children={<Icon name="search" />} />
|
||||
<Input
|
||||
ref={inputElement}
|
||||
placeholder={`Search ${
|
||||
Object.keys(data).length
|
||||
} icons (Press "/" to focus)`}
|
||||
value={query}
|
||||
onChange={(event) => setQuery(event.target.value)}
|
||||
marginBottom={5}
|
||||
/>
|
||||
</InputGroup>
|
||||
{results.length > 0 ? (
|
||||
<Grid
|
||||
templateColumns={`repeat(auto-fill, minmax(160px, 1fr))`}
|
||||
gap={5}
|
||||
>
|
||||
{results.map((icon) => {
|
||||
// @ts-ignore
|
||||
const actualIcon = icon.item ? icon.item : icon;
|
||||
return (
|
||||
<Button
|
||||
variant="ghost"
|
||||
borderWidth="1px"
|
||||
rounded="lg"
|
||||
padding={16}
|
||||
onClick={(event) => {
|
||||
if (event.shiftKey) {
|
||||
copy(actualIcon.src);
|
||||
toast({
|
||||
title: "Copied!",
|
||||
description: `Icon "${actualIcon.name}" copied to clipboard.`,
|
||||
status: "success",
|
||||
duration: 1500,
|
||||
});
|
||||
} else {
|
||||
download(
|
||||
actualIcon.src,
|
||||
`${actualIcon.name}.svg`,
|
||||
"image/svg+xml"
|
||||
);
|
||||
}
|
||||
}}
|
||||
key={actualIcon.name}
|
||||
alignItems="center"
|
||||
>
|
||||
<Flex direction="column" align="center" justify="center">
|
||||
<div dangerouslySetInnerHTML={{ __html: actualIcon.src }} />
|
||||
<Text marginTop={5}>{actualIcon.name}</Text>
|
||||
</Flex>
|
||||
</Button>
|
||||
);
|
||||
})}
|
||||
</Grid>
|
||||
) : (
|
||||
<Text
|
||||
fontSize="2xl"
|
||||
fontWeight="bold"
|
||||
textAlign="center"
|
||||
style={{ wordBreak: "break-word" }}
|
||||
>
|
||||
No results found for "{query}"
|
||||
</Text>
|
||||
)}
|
||||
</Layout>
|
||||
);
|
||||
};
|
||||
|
||||
export async function getStaticProps() {
|
||||
let data = getAllData();
|
||||
return {
|
||||
props: {
|
||||
data,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
export default IndexPage;
|
||||
55
scripts/outline_svg.js
Normal file
@@ -0,0 +1,55 @@
|
||||
const { promises: fs } = require("fs");
|
||||
const outlineStroke = require("svg-outline-stroke");
|
||||
const { parse, stringify } = require("svgson");
|
||||
|
||||
const inputDir = `./icons/`;
|
||||
const outputDir = `./converted_icons/`;
|
||||
|
||||
async function init() {
|
||||
try {
|
||||
const files = await fs.readdir(inputDir);
|
||||
for (let file of files) {
|
||||
const icon = await fs.readFile(`${inputDir}${file}`);
|
||||
const scaled = await parse(icon.toString(), {
|
||||
transformNode: transformForward
|
||||
});
|
||||
const outlined = await outlineStroke(stringify(scaled));
|
||||
const outlinedWithoutAttrs = await parse(outlined, {
|
||||
transformNode: transformBackwards
|
||||
});
|
||||
await fs.writeFile(
|
||||
`${outputDir}${file}`,
|
||||
stringify(outlinedWithoutAttrs)
|
||||
);
|
||||
}
|
||||
} catch (err) {
|
||||
console.log(err);
|
||||
}
|
||||
}
|
||||
|
||||
init();
|
||||
|
||||
function transformForward(node) {
|
||||
if (node.name === "svg") {
|
||||
return {
|
||||
...node,
|
||||
attributes: {
|
||||
...node.attributes,
|
||||
width: 960,
|
||||
height: 960
|
||||
}
|
||||
};
|
||||
}
|
||||
return node;
|
||||
}
|
||||
|
||||
function transformBackwards(node) {
|
||||
if (node.name === "svg") {
|
||||
const { width, height, ...attributes } = node.attributes;
|
||||
return {
|
||||
...node,
|
||||
attributes
|
||||
};
|
||||
}
|
||||
return node;
|
||||
}
|
||||
4
site/.eslintrc.js
Normal file
@@ -0,0 +1,4 @@
|
||||
const { builtinModules } = require('module')
|
||||
const rootConfig = require('../.eslintrc.js')
|
||||
|
||||
module.exports = rootConfig;
|
||||
3
site/babel.config.js
Normal file
@@ -0,0 +1,3 @@
|
||||
module.exports = {
|
||||
presets: ['next/babel'],
|
||||
};
|
||||
7
site/jest.config.js
Normal file
@@ -0,0 +1,7 @@
|
||||
module.exports = {
|
||||
testPathIgnorePatterns: ['<rootDir>/.next/', '<rootDir>/node_modules/'],
|
||||
setupFilesAfterEnv: ['<rootDir>/setupTests.js'],
|
||||
transform: {
|
||||
'^.+\\.(js|jsx|ts|tsx)$': '<rootDir>/node_modules/babel-jest',
|
||||
},
|
||||
};
|
||||
7
site/next-env.d.ts
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
/// <reference types="next" />
|
||||
/// <reference types="next/types/global" />
|
||||
|
||||
declare module "*.svg" {
|
||||
const content: any;
|
||||
export default content;
|
||||
}
|
||||
43
site/package.json
Normal file
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"private": true,
|
||||
"name": "site",
|
||||
"version": "1.0.0",
|
||||
"author": "John Letey",
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
"build": "next build",
|
||||
"export": "next export -o build",
|
||||
"deploy": "yarn build && yarn export",
|
||||
"test": "jest"
|
||||
},
|
||||
"dependencies": {
|
||||
"@chakra-ui/core": "^1.0.0-rc.8",
|
||||
"downloadjs": "^1.4.7",
|
||||
"framer-motion": "^2.9.4",
|
||||
"fuse.js": "^6.0.4",
|
||||
"jszip": "^3.4.0",
|
||||
"lodash": "^4.17.20",
|
||||
"lucide-react": "^0.1.2-beta.4",
|
||||
"next": "^9.5.4",
|
||||
"react": "^16.13.1",
|
||||
"react-color": "2.17.3",
|
||||
"react-dom": "^16.13.1",
|
||||
"react-spring": "^8.0.27",
|
||||
"react-svg-loader": "^3.0.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@testing-library/dom": "^7.24.4",
|
||||
"@testing-library/jest-dom": "^5.11.4",
|
||||
"@testing-library/react": "^11.0.4",
|
||||
"@testing-library/react-hooks": "^3.4.2",
|
||||
"@types/node": "^14.0.11",
|
||||
"@types/react": "^16.9.35",
|
||||
"@types/react-dom": "^16.9.8",
|
||||
"babel-jest": "^26.5.2",
|
||||
"babel-loader": "^8.1.0",
|
||||
"cheerio": "^1.0.0-rc.3",
|
||||
"jest": "^26.5.2",
|
||||
"react-test-renderer": "^16.13.1",
|
||||
"typescript": "^3.9.5"
|
||||
}
|
||||
}
|
||||
BIN
site/public/android-chrome-192x192.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
site/public/android-chrome-512x512.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
site/public/apple-touch-icon.png
Normal file
|
After Width: | Height: | Size: 8.6 KiB |
8
site/public/browserconfig.xml
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<browserconfig>
|
||||
<msapplication>
|
||||
<tile>
|
||||
<TileColor>#F56565</TileColor>
|
||||
</tile>
|
||||
</msapplication>
|
||||
</browserconfig>
|
||||
BIN
site/public/favicon-16x16.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
site/public/favicon-32x32.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
BIN
site/public/favicon.ico
Normal file
|
After Width: | Height: | Size: 15 KiB |
24
site/public/favicon.svg
Normal file
@@ -0,0 +1,24 @@
|
||||
<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"
|
||||
>
|
||||
<style>
|
||||
.path {
|
||||
stroke: #2D3748;
|
||||
}
|
||||
@media (prefers-color-scheme: dark) {
|
||||
.path {
|
||||
stroke: #fff;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<path d="M14 12C14 9.79086 12.2091 8 10 8C7.79086 8 6 9.79086 6 12C6 16.4183 9.58172 20 14 20C18.4183 20 22 16.4183 22 12C22 8.446 20.455 5.25285 18 3.05557" class="path"/>
|
||||
<path d="M10 12C10 14.2091 11.7909 16 14 16C16.2091 16 18 14.2091 18 12C18 7.58172 14.4183 4 10 4C5.58172 4 2 7.58172 2 12C2 15.5841 3.57127 18.8012 6.06253 21" stroke="#F56565" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 720 B |
5
site/public/logo-text.svg
Normal file
@@ -0,0 +1,5 @@
|
||||
<svg width="82" height="24" viewBox="0 0 82 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M28.52 5.4h2.14v10.84h5.28V18h-7.42V5.4zm15.24 3.16h2.06V18h-1.58l-.26-1.14h-.08a5.26 5.26 0 01-1.26.94c-.507.267-1.12.4-1.84.4-1 0-1.8-.28-2.4-.84-.6-.56-.9-1.4-.9-2.52V8.56h2.06v6.06c0 .733.166 1.247.5 1.54.346.293.76.44 1.24.44.52 0 .98-.107 1.38-.32.4-.227.76-.52 1.08-.88V8.56zm9.297 8.08c.427 0 .8-.047 1.12-.14.334-.107.633-.227.9-.36l.42 1.48a4.7 4.7 0 01-1.16.42 6.55 6.55 0 01-1.5.16c-.693 0-1.347-.1-1.96-.3a4.782 4.782 0 01-1.58-.92 4.593 4.593 0 01-1.06-1.54c-.253-.613-.38-1.327-.38-2.14 0-.747.12-1.42.36-2.02.24-.613.58-1.133 1.02-1.56.44-.427.967-.753 1.58-.98a5.786 5.786 0 012.02-.34c.413 0 .827.033 1.24.1.427.067.894.22 1.4.46l-.46 1.5a3.995 3.995 0 00-1.96-.52c-.92 0-1.666.287-2.24.86-.573.573-.86 1.387-.86 2.44 0 .64.087 1.18.26 1.62.187.427.427.773.72 1.04.294.267.62.46.98.58.373.107.753.16 1.14.16zM57.211 18V8.56h2.06V18h-2.06zm1.04-11.78c-.36 0-.646-.107-.86-.32a1.18 1.18 0 01-.32-.84c0-.333.107-.607.32-.82.214-.227.5-.34.86-.34.347 0 .627.113.84.34.227.213.34.487.34.82 0 .347-.113.627-.34.84-.213.213-.493.32-.84.32zM68.33 3.78h2.06V18h-1.62l-.24-1.04h-.08c-.347.4-.734.707-1.16.92-.427.213-.98.32-1.66.32-.534 0-1.047-.1-1.54-.3a3.997 3.997 0 01-1.3-.94c-.374-.413-.674-.927-.9-1.54-.227-.613-.34-1.32-.34-2.12 0-.747.093-1.42.28-2.02.2-.6.48-1.113.84-1.54a3.71 3.71 0 011.36-.98c.533-.24 1.14-.36 1.82-.36.466 0 .92.073 1.36.22.44.147.813.353 1.12.62V3.78zm0 7.12c-.56-.64-1.234-.96-2.02-.96-.347 0-.68.06-1 .18-.32.12-.607.313-.86.58a2.834 2.834 0 00-.6 1.02c-.147.413-.22.92-.22 1.52s.066 1.113.2 1.54c.146.427.333.78.56 1.06.226.28.486.487.78.62.306.12.62.18.94.18.48 0 .9-.107 1.26-.32a2.93 2.93 0 00.96-.9V10.9zm12.858 2.74h-6.62v.08c0 .96.28 1.687.84 2.18.56.493 1.3.74 2.22.74.507 0 .96-.04 1.36-.12a6.47 6.47 0 001.24-.42l.4 1.5a6.51 6.51 0 01-1.38.42c-.533.12-1.12.18-1.76.18-.68 0-1.327-.093-1.94-.28a4.449 4.449 0 01-1.62-.88 4.253 4.253 0 01-1.08-1.52c-.267-.613-.4-1.347-.4-2.2 0-.733.107-1.4.32-2a4.56 4.56 0 01.94-1.56c.413-.44.907-.773 1.48-1a5.077 5.077 0 011.94-.36c.613 0 1.167.1 1.66.3.507.2.933.487 1.28.86.36.36.633.807.82 1.34.2.52.3 1.1.3 1.74v1zm-2.12-1.44c0-.32-.04-.62-.12-.9-.08-.28-.2-.52-.36-.72a1.605 1.605 0 00-.64-.5c-.253-.133-.56-.2-.92-.2-.667 0-1.213.213-1.64.64-.413.427-.667 1-.76 1.72l4.44-.04z" fill="#2D3748"/>
|
||||
<path d="M14 12a4 4 0 00-8 0 8 8 0 1016 0 11.97 11.97 0 00-4-8.944" stroke="#2D3748" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
<path d="M10 12a4 4 0 008 0 8 8 0 10-16 0c0 3.584 1.571 6.801 4.063 9" stroke="#F56565" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.6 KiB |
14
site/public/logo.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="M14 12C14 9.79086 12.2091 8 10 8C7.79086 8 6 9.79086 6 12C6 16.4183 9.58172 20 14 20C18.4183 20 22 16.4183 22 12C22 8.446 20.455 5.25285 18 3.05557" />
|
||||
<path d="M10 12C10 14.2091 11.7909 16 14 16C16.2091 16 18 14.2091 18 12C18 7.58172 14.4183 4 10 4C5.58172 4 2 7.58172 2 12C2 15.5841 3.57127 18.8012 6.06253 21" stroke="#F56565" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 554 B |
BIN
site/public/mstile-144x144.png
Normal file
|
After Width: | Height: | Size: 7.9 KiB |
BIN
site/public/mstile-150x150.png
Normal file
|
After Width: | Height: | Size: 7.9 KiB |
BIN
site/public/mstile-310x150.png
Normal file
|
After Width: | Height: | Size: 8.5 KiB |
BIN
site/public/mstile-310x310.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
site/public/mstile-70x70.png
Normal file
|
After Width: | Height: | Size: 5.7 KiB |
53
site/public/safari-pinned-tab.svg
Normal file
@@ -0,0 +1,53 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
||||
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
||||
width="700.000000pt" height="700.000000pt" viewBox="0 0 700.000000 700.000000"
|
||||
preserveAspectRatio="xMidYMid meet">
|
||||
<metadata>
|
||||
Created by potrace 1.11, written by Peter Selinger 2001-2013
|
||||
</metadata>
|
||||
<g transform="translate(0.000000,700.000000) scale(0.100000,-0.100000)"
|
||||
fill="#000000" stroke="none">
|
||||
<path d="M5152 6381 c-123 -43 -199 -158 -189 -291 6 -96 34 -139 193 -297 77
|
||||
-76 165 -167 195 -202 304 -358 520 -760 649 -1206 37 -129 34 -113 59 -240
|
||||
27 -135 30 -152 37 -215 3 -30 8 -63 9 -72 7 -35 18 -247 19 -343 0 -163 -15
|
||||
-305 -48 -463 -112 -529 -490 -1043 -971 -1320 -209 -120 -503 -220 -755 -257
|
||||
-95 -14 -434 -13 -540 2 -371 51 -728 207 -1015 442 -127 104 -227 207 -356
|
||||
368 -40 51 -140 218 -189 318 -174 352 -252 834 -181 1110 87 332 363 590 692
|
||||
644 259 43 488 -13 691 -169 150 -115 278 -312 314 -481 18 -89 23 -122 25
|
||||
-184 4 -123 45 -208 129 -263 60 -40 108 -54 177 -51 127 5 235 93 268 217 15
|
||||
58 10 207 -10 313 -42 217 -113 397 -222 562 -48 73 -61 89 -123 161 -233 267
|
||||
-569 443 -930 485 -81 9 -285 7 -365 -4 -142 -19 -317 -75 -458 -146 -250
|
||||
-126 -488 -355 -620 -599 -69 -128 -139 -322 -153 -430 -3 -19 -9 -57 -14 -85
|
||||
-11 -62 -10 -370 2 -456 4 -35 11 -82 14 -104 25 -190 86 -416 163 -609 38
|
||||
-94 137 -294 157 -317 8 -8 14 -19 14 -24 0 -13 75 -128 153 -234 195 -265
|
||||
452 -500 747 -683 119 -73 272 -149 405 -201 83 -32 266 -92 311 -102 10 -2
|
||||
53 -11 94 -20 280 -60 629 -76 873 -40 18 3 48 7 67 9 19 2 46 7 60 10 14 3
|
||||
38 8 54 11 70 11 144 27 181 40 22 7 81 26 130 41 296 90 656 292 905 508 97
|
||||
85 272 267 340 356 19 25 37 47 40 50 19 19 125 180 180 274 150 261 266 585
|
||||
310 866 6 41 13 86 16 100 25 156 25 635 -1 769 -1 9 -6 39 -9 66 -11 85 -36
|
||||
227 -52 300 -9 39 -18 79 -20 90 -8 43 -77 283 -96 335 -33 93 -60 164 -73
|
||||
195 -7 17 -25 59 -40 95 -187 448 -511 905 -903 1272 -122 114 -216 142 -340
|
||||
99z"/>
|
||||
<path d="M2827 6125 c-1 -2 -48 -5 -104 -9 -424 -25 -871 -176 -1243 -420
|
||||
-313 -205 -583 -481 -787 -801 -56 -88 -159 -284 -187 -355 -84 -214 -152
|
||||
-434 -170 -555 -9 -63 -18 -121 -22 -138 -19 -102 -25 -468 -11 -642 39 -489
|
||||
174 -973 393 -1408 35 -70 75 -145 89 -167 14 -22 25 -42 25 -45 0 -12 175
|
||||
-273 247 -367 153 -203 408 -476 533 -572 115 -88 269 -80 378 18 58 53 86
|
||||
123 86 216 1 108 -18 137 -204 320 -267 264 -444 500 -613 820 -135 257 -250
|
||||
584 -302 865 -10 50 -19 97 -20 106 -2 9 -6 38 -9 65 -4 27 -9 65 -11 84 -23
|
||||
182 -24 552 0 640 2 8 6 36 10 63 18 148 101 399 190 577 50 99 171 290 225
|
||||
354 134 160 252 272 395 376 263 190 558 314 870 364 22 4 56 9 75 13 76 13
|
||||
435 11 520 -3 47 -7 101 -16 120 -19 19 -3 42 -7 50 -10 8 -2 26 -6 40 -9 115
|
||||
-22 309 -94 460 -172 612 -313 1029 -926 1098 -1614 9 -91 8 -306 -2 -355 -77
|
||||
-373 -352 -642 -726 -711 -65 -11 -254 -5 -323 11 -132 30 -233 78 -342 161
|
||||
-160 121 -283 307 -321 485 -15 74 -23 133 -27 205 -3 61 -11 94 -30 132 -122
|
||||
243 -482 202 -542 -62 -13 -60 -8 -215 10 -306 2 -8 6 -31 10 -50 23 -129 75
|
||||
-268 160 -430 20 -38 89 -140 120 -179 247 -304 569 -489 950 -545 84 -12 335
|
||||
-13 395 -2 14 3 40 8 59 10 133 20 324 90 461 168 384 219 646 592 720 1023
|
||||
20 118 25 385 10 500 -5 33 -11 85 -15 115 -15 121 -58 307 -105 449 -286 874
|
||||
-1026 1545 -1920 1742 -126 28 -119 26 -181 34 -30 4 -65 9 -79 11 -90 12
|
||||
-393 26 -403 19z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.3 KiB |