separate icons to `filled` and `outline` directories (#1002)

* separate icons to solid

* icons separate

* move icons

* init svg icons

* init svg icons

* separate icons

* separate icons

* optimize icons

* optimize icons

* random icons generate

* generate icons preview

* preview icons

* build

* optimize fix

* icons separate

* icons preview

* optimize icons

* 81 new icons: `filled/assembly`, `filled/asset`, `filled/baby-carriage`, `filled/barbell`, `filled/barrier-block`, `filled/bed-flat`, `filled/bone`, `filled/boom`, `filled/bow`, `filled/bowl-chopsticks`, `filled/bowl-spoon`, `filled/brand-spotify`, `filled/bread`, `filled/briefcase-2`, `filled/brightness-auto`, `filled/brightness`, `filled/building-broadcast-tower`, `filled/hexagon-letter-a`, `filled/hexagon-letter-b`, `filled/hexagon-letter-c`, `filled/hexagon-letter-d`, `filled/hexagon-letter-e`, `filled/hexagon-letter-f`, `filled/hexagon-letter-g`, `filled/hexagon-letter-h`, `filled/hexagon-letter-i`, `filled/hexagon-letter-j`, `filled/hexagon-letter-k`, `filled/hexagon-letter-l`, `filled/hexagon-letter-m`, `filled/hexagon-letter-n`, `filled/hexagon-letter-o`, `filled/hexagon-letter-p`, `filled/hexagon-letter-q`, `filled/hexagon-letter-r`, `filled/hexagon-letter-s`, `filled/hexagon-letter-t`, `filled/hexagon-letter-u`, `filled/hexagon-letter-v`, `filled/hexagon-letter-w`, `filled/hexagon-letter-x`, `filled/hexagon-letter-y`, `filled/hexagon-letter-z`, `filled/hexagon-minus`, `filled/hexagon-plus`, `filled/home`, `filled/ironing`, `filled/jetpack`, `filled/key`, `filled/layout-2`, `filled/layout-cards`, `filled/layout-dashboard`, `filled/layout-distribute-horizontal`, `filled/layout-distribute-vertical`, `filled/layout-grid`, `filled/layout-kanban`, `filled/layout-list`, `filled/layout-sidebar-right`, `filled/layout-sidebar`, `filled/layout`, `filled/lego`, `filled/lock`, `filled/lungs`, `filled/macro`, `filled/magnet`, `filled/man`, `filled/manual-gearbox`, `filled/woman`, `filled/xbox-a`, `filled/xbox-b`, `filled/xbox-x`, `filled/xbox-y`, `filled/zeppelin`, `filled/zoom-cancel`, `filled/zoom-code`, `filled/zoom-exclamation`, `filled/zoom-money`, `filled/zoom-out-area`, `filled/zoom-pan`, `filled/zoom-question`, `filled/zoom-scan`

Fixed icons: `filled/archive`, `filled/basket`, `outline/layout-dashboard`, `outline/zoom-pan`

* Fixed icon: `filled/biohazard`

* 4 new icons: `outline/border-bottom-plus`, `outline/border-left-plus`, `outline/border-right-plus`, `outline/border-top-plus`

* debug off

* build `@tabler/icons` package

* build `@tabler/icons` package

* build `@tabler/icons-eps` , `@tabler/icons-pdf`, `@tabler/icons-png`  package

* build `@tabler/icons-react` , `@tabler/icons-preact`, `@tabler/icons-svelte`, `@tabler/icons-vue`, `@tabler/icons-solidjs`  package

* build fixes
This commit is contained in:
Paweł Kuna 2024-02-16 01:25:55 +01:00 committed by GitHub
parent d3c3a49ea7
commit de1987b868
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
15540 changed files with 193558 additions and 168589 deletions

View File

@ -1,6 +1,6 @@
import fs from 'fs-extra'
import path from 'path'
import { PACKAGES_DIR, readSvgs, readAliases, toPascalCase } from './helpers.mjs'
import { PACKAGES_DIR, readAliases, toPascalCase, getAllIcons } from './helpers.mjs'
import { stringify } from 'svgson'
import prettier from "@prettier/sync"
@ -10,109 +10,97 @@ import prettier from "@prettier/sync"
* @param name
* @param componentTemplate
* @param indexIconTemplate
* @param typeDefinitionsTemplate
* @param indexTypeTemplate
* @param extension
* @param pretty
*/
export const buildIcons = ({
export const buildJsIcons = ({
name,
componentTemplate,
indexItemTemplate,
typeDefinitionsTemplate,
indexTypeTemplate,
aliasTemplate,
extension = 'js',
pretty = true,
key = true,
pascalCase = false,
pascalName = true,
indexFile = 'icons.js'
indexFile = 'icons.ts'
}) => {
const DIST_DIR = path.resolve(PACKAGES_DIR, name);
const svgFiles = readSvgs(),
aliases = readAliases()
const aliases = readAliases(),
allIcons = getAllIcons(false, true)
let index = []
let typings = []
Object.entries(allIcons).forEach(([type, icons]) => {
icons.forEach((icon, i) => {
process.stdout.write(`Building \`${name}\` ${type} ${i}/${icons.length}: ${icon.name.padEnd(42)}\r`)
svgFiles.forEach((svgFile, i) => {
const children = svgFile.obj.children
.map(({
name,
attributes
}, i) => {
if (key) {
attributes.key = `svg-${i}`
}
const children = icon.obj.children
.map(({
name,
attributes
}, i) => {
if (key) {
attributes.key = `svg-${i}`
}
if (pascalCase) {
attributes.strokeWidth = attributes['stroke-width']
delete attributes['stroke-width']
}
if (pascalCase) {
attributes.strokeWidth = attributes['stroke-width']
delete attributes['stroke-width']
}
return [name, attributes]
})
.filter((i) => {
const [name, attributes] = i
return !attributes.d || attributes.d !== 'M0 0h24v24H0z'
return [name, attributes]
})
.filter((i) => {
const [name, attributes] = i
return !attributes.d || attributes.d !== 'M0 0h24v24H0z'
})
const iconName = `${icon.name}${type !== 'outline' ? `-${type}` : ''}`,
iconNamePascal = `${icon.namePascal}${type !== 'outline' ? toPascalCase(type) : ''}`
let component = componentTemplate({
type,
name: iconName,
namePascal: iconNamePascal,
children,
stringify,
svg: icon.content
})
let component = componentTemplate({
name: svgFile.name,
namePascal: svgFile.namePascal,
children,
stringify,
svg: svgFile
})
// Format component
const output = pretty ? prettier.format(component, {
singleQuote: true,
trailingComma: 'all',
parser: 'babel'
}) : component
// Format component
const output = pretty ? prettier.format(component, {
singleQuote: true,
trailingComma: 'all',
parser: 'babel'
}) : component
let filePath = path.resolve(DIST_DIR, 'src/icons', `${pascalName ? iconNamePascal : iconName}.${extension}`)
fs.writeFileSync(filePath, output, 'utf-8')
let filePath = path.resolve(DIST_DIR, 'src/icons', `${pascalName ? svgFile.namePascal : svgFile.name}.${extension}`)
fs.writeFileSync(filePath, output, 'utf-8')
index.push(indexItemTemplate({
name: svgFile.name,
namePascal: svgFile.namePascal
}))
if (indexTypeTemplate) {
typings.push(indexTypeTemplate({
name: svgFile.name,
namePascal: svgFile.namePascal
index.push(indexItemTemplate({
type,
name: iconName,
namePascal: iconNamePascal
}))
}
})
})
// Write aliases
if (aliases && aliasTemplate) {
let aliasesStr = '';
fs.writeFileSync(path.resolve(DIST_DIR, `src/icons/${indexFile}`), index.join('\n'), 'utf-8')
// Write aliases
let aliasesStr = '';
if (aliases && aliasTemplate) {
Object.entries(aliases).forEach(([from, to]) => {
aliasesStr += aliasTemplate({
from, to,
from,
to,
fromPascal: toPascalCase(from),
toPascal: toPascalCase(to)
})
})
fs.writeFileSync(path.resolve(DIST_DIR, `./src/aliases.ts`), aliasesStr || `export {};`, 'utf-8')
} else {
fs.writeFileSync(path.resolve(DIST_DIR, `./src/aliases.ts`), `export {};`, 'utf-8')
}
// Write index file
fs.writeFileSync(path.resolve(DIST_DIR, `./src/${indexFile}`), index.join('\n'), 'utf-8')
// Write type definitions
if (typeDefinitionsTemplate) {
fs.ensureDirSync(path.resolve(DIST_DIR, `./dist/`))
fs.writeFileSync(path.resolve(DIST_DIR, `./dist/tabler-${name}.d.ts`), typeDefinitionsTemplate() + '\n' + typings.join('\n'), 'utf-8')
}
fs.writeFileSync(path.resolve(DIST_DIR, `./src/aliases.ts`), aliasesStr || `export {};`, 'utf-8')
}

View File

@ -4,15 +4,15 @@ import { printChangelog } from './helpers.mjs'
cp.exec('git status', function(err, ret) {
let newIcons = [], modifiedIcons = [], renamedIcons = []
ret.replace(/new file:\s+src\/_icons\/([a-z0-9-]+)\.svg/g, function(m, fileName) {
ret.replace(/new file:\s+icons\/([a-z0-9-\/]+)\.svg/g, function(m, fileName) {
newIcons.push(fileName)
})
ret.replace(/modified:\s+src\/_icons\/([a-z0-9-]+)\.svg/g, function(m, fileName) {
ret.replace(/modified:\s+icons\/([a-z0-9-\/]+)\.svg/g, function(m, fileName) {
modifiedIcons.push(fileName)
})
ret.replace(/renamed:\s+src\/_icons\/([a-z0-9-]+).svg -> src\/_icons\/([a-z0-9-]+).svg/g, function(m, fileNameBefore, fileNameAfter) {
ret.replace(/renamed:\s+icons\/([a-z0-9-\/]+).svg -> icons\/([a-z0-9-\/]+).svg/g, function(m, fileNameBefore, fileNameAfter) {
renamedIcons.push([fileNameBefore, fileNameAfter])
})

View File

@ -1,5 +1,6 @@
import { generateIconsPreview, getArgvs, getPackageJson, HOME_DIR } from './helpers.mjs'
import * as fs from 'fs'
import fs from 'fs'
import path from 'path'
const argv = getArgvs(),
p = getPackageJson()
@ -19,7 +20,7 @@ if (version) {
})
if (newIcons.length > 0) {
generateIconsPreview(newIcons, `.github/tabler-icons-${version}.svg`, {
generateIconsPreview(newIcons, path.join(GITHUB_DIR, `tabler-icons-${version}.svg`), {
columnsCount: 6,
paddingOuter: 24
})

View File

@ -9,7 +9,31 @@ import { parseSync } from 'svgson'
import { optimize } from 'svgo'
import cp from 'child_process'
import minimist from 'minimist'
import { exit } from 'process'
import matter from 'gray-matter'
import { globSync } from 'glob'
import { exec } from 'child_process'
export const iconTemplate = (type) => type === 'outline' ? `<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"
>` : `<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="currentColor"
>`
export const blankSquare = '<path stroke="none" d="M0 0h24v24H0z" fill="none"/>'
export const types = ['outline', 'filled']
export const getCurrentDirPath = () => {
return path.dirname(fileURLToPath(import.meta.url));
@ -17,9 +41,87 @@ export const getCurrentDirPath = () => {
export const HOME_DIR = resolve(getCurrentDirPath(), '..')
export const ICONS_SRC_DIR = resolve(HOME_DIR, 'src/_icons')
export const ICONS_DIR = resolve(HOME_DIR, 'icons')
export const ICONS_SRC_DIR = resolve(HOME_DIR, 'icons')
export const PACKAGES_DIR = resolve(HOME_DIR, 'packages')
export const GITHUB_DIR = resolve(HOME_DIR, '.github')
export const parseMatter = (icon) => {
const { data, content } = matter.read(icon, { delims: ['<!--', '-->'] })
return { data, content }
}
const getSvgContent = (svg, type, name) => {
return svg
.replace(/<svg([^>]+)>/, (m, m1) => {
return `<svg${m1} class="icon icon-tabler icons-tabler-${type} icon-tabler-${name}"\n>\n ${blankSquare}`
})
.trim()
}
export const getAllIcons = (withContent = false, withObject = false) => {
let icons = {}
const limit = process.env['ICONS_LIMIT'] || Infinity;
types.forEach(type => {
icons[type] = globSync(path.join(ICONS_SRC_DIR, `${type}/*.svg`))
.slice(0, limit)
.sort()
.map(i => {
const { data, content } = parseMatter(i),
name = basename(i, '.svg')
return {
name,
namePascal: toPascalCase(`icon ${name}`),
path: i,
category: data.category || '',
tags: data.tags || [],
version: data.version || '',
unicode: data.unicode || '',
...(withContent ? { content: getSvgContent(content, type, name) } : {}),
...(withObject ? { obj: parseSync(content.replace(blankSquare, '')) } : {})
}
})
.sort()
})
return icons
}
export const getAllIconsMerged = (withContent = false, withObject = false) => {
const allIcons = getAllIcons(true)
const icons = {};
allIcons.outline.forEach(icon => {
icons[icon.name] = {
name: icon.name,
category: icon.category || '',
tags: icon.tags || [],
styles: {
outline: {
version: icon.version || '',
unicode: icon.unicode || '',
...(withContent ? { content: icon.content } : {}),
...(withObject ? { obj: icon.obj } : {})
}
}
}
})
allIcons.filled.forEach(icon => {
if (icons[icon.name]) {
icons[icon.name].styles.filled = {
version: icon.version || '',
unicode: icon.unicode || '',
...(withContent ? { content: icon.content } : {}),
...(withObject ? { obj: icon.obj } : {})
}
}
})
return icons;
}
export const getArgvs = () => {
return minimist(process.argv.slice(2))
@ -29,6 +131,7 @@ export const getPackageDir = (packageName) => {
return `${PACKAGES_DIR}/${packageName}`
}
/**
* Return project package.json
* @returns {any}
@ -47,40 +150,21 @@ export const readSvgDirectory = (directory) => {
return fs.readdirSync(directory).filter((file) => path.extname(file) === '.svg')
}
export const readSvgs = () => {
const svgFiles = readSvgDirectory(ICONS_DIR)
const limit = process.env['ICONS_LIMIT'] || Infinity;
return svgFiles
.slice(0, limit)
.map(svgFile => {
const name = basename(svgFile, '.svg'),
namePascal = toPascalCase(`icon ${name}`),
contents = readSvg(svgFile, ICONS_DIR).trim(),
path = resolve(ICONS_DIR, svgFile),
obj = parseSync(contents.replace('<path stroke="none" d="M0 0h24v24H0z" fill="none"/>', ''));
return {
name,
namePascal,
contents,
obj,
path
};
});
}
export const readAliases = () => {
const allAliases = JSON.parse(fs.readFileSync(resolve(HOME_DIR, 'aliases.json'), 'utf-8')),
svgFilesList = readSvgs().map(icon => icon.name);
const allAliases = JSON.parse(fs.readFileSync(resolve(HOME_DIR, 'aliases.json'), 'utf-8'));
const allIcons = getAllIcons()
let aliases = [];
for (const [key, value] of Object.entries(allAliases)) {
if (svgFilesList.includes(value)) {
aliases[key] = value;
types.forEach(type => {
const icons = allIcons[type].map(i => i.name);
for (const [key, value] of Object.entries(allAliases[type])) {
if (icons.includes(value)) {
aliases[`${key}${type !== 'outline' ? `-${type}` : ''}`] = `${value}${type !== 'outline' ? `-${type}` : ''}`;
}
}
}
});
return aliases
}
@ -130,8 +214,6 @@ export const toPascalCase = (string) => {
return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);
}
export const addFloats = function (n1, n2) {
return Math.round((parseFloat(n1) + parseFloat(n2)) * 1000) / 1000
}
@ -187,9 +269,22 @@ export const asyncForEach = async (array, callback) => {
}
}
export const createScreenshot = async (filePath) => {
await cp.exec(`rsvg-convert -x 2 -y 2 ${filePath} > ${filePath.replace('.svg', '.png')}`)
await cp.exec(`rsvg-convert -x 4 -y 4 ${filePath} > ${filePath.replace('.svg', '@2x.png')}`)
export const createScreenshot = (filePath, retina = true) => {
cp.execSync(`rsvg-convert -x 2 -y 2 ${filePath} > ${filePath.replace('.svg', '.png')}`)
if (retina) {
cp.execSync(`rsvg-convert -x 4 -y 4 ${filePath} > ${filePath.replace('.svg', '@2x.png')}`)
}
}
export const createSvgSymbol = (svg, name, stroke) => {
return svg.replace('<svg', `<symbol id="${name}"`)
.replace(' width="24" height="24"', '')
.replace(' stroke-width="2"', ` stroke-width="${stroke}"`)
.replace('</svg>', '</symbol>')
.replace(/\n\s+/g, ' ')
.replace(/<!--(.*?)-->/gis, '')
.trim()
}
export const generateIconsPreview = async function (files, destFile, {
@ -197,7 +292,9 @@ export const generateIconsPreview = async function (files, destFile, {
paddingOuter = 7,
color = '#354052',
background = '#fff',
png = true
png = true,
stroke = 2,
retina = true
} = {}) {
const padding = 20,
@ -214,15 +311,12 @@ export const generateIconsPreview = async function (files, destFile, {
y = paddingOuter
files.forEach(function (file, i) {
let name = path.basename(file, '.svg')
const name = file.replace(/^(.*)\/([^\/]+)\/([^.]+).svg$/g, '$2-$3');
let svgFile = fs.readFileSync(file),
svgFileContent = svgFile.toString()
svgFileContent = svgFileContent.replace('<svg xmlns="http://www.w3.org/2000/svg"', `<symbol id="${name}"`)
.replace(' width="24" height="24"', '')
.replace('</svg>', '</symbol>')
.replace(/\n\s+/g, '')
svgFileContent = createSvgSymbol(svgFileContent, name, stroke)
svgContentSymbols += `\t${svgFileContent}\n`
svgContentIcons += `\t<use xlink:href="#${name}" x="${x}" y="${y}" width="${iconSize}" height="${iconSize}" />\n`
@ -237,10 +331,12 @@ export const generateIconsPreview = async function (files, destFile, {
const svgContent = `<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 ${width} ${height}" width="${width}" height="${height}" style="color: ${color}"><rect x="0" y="0" width="${width}" height="${height}" fill="${background}"></rect>\n${svgContentSymbols}\n${svgContentIcons}\n</svg>`
console.log(destFile)
fs.writeFileSync(destFile, svgContent)
if (png) {
await createScreenshot(destFile)
await createScreenshot(destFile, retina)
}
}
@ -248,14 +344,14 @@ export const generateIconsPreview = async function (files, destFile, {
export const printChangelog = function (newIcons, modifiedIcons, renamedIcons, pretty = false) {
if (newIcons.length > 0) {
if (pretty) {
console.log(`### ${newIcons.length} new icons:\n`)
console.log(`### ${newIcons.length} new icon${newIcons.length > 1 ? 's' : ''}:\n`)
newIcons.forEach(function (icon, i) {
console.log(`- \`${icon}\``)
})
} else {
let str = ''
str += `${newIcons.length} new icons: `
str += `${newIcons.length} new icon${newIcons.length > 1 ? 's' : ''}: `
newIcons.forEach(function (icon, i) {
str += `\`${icon}\``
@ -273,7 +369,7 @@ export const printChangelog = function (newIcons, modifiedIcons, renamedIcons, p
if (modifiedIcons.length > 0) {
let str = ''
str += `Fixed icons: `
str += `Fixed icon${modifiedIcons.length > 1 ? 's' : ''}: `
modifiedIcons.forEach(function (icon, i) {
str += `\`${icon}\``
@ -374,3 +470,24 @@ export const getCompileOptions = () => {
return compileOptions
}
export const convertIconsToImages = async (dir, extension, size = 240) => {
const icons = getAllIcons()
await asyncForEach(Object.entries(icons), async function ([type, svgFiles]) {
fs.mkdirSync(path.join(dir, `./${type}`), { recursive: true })
await asyncForEach(svgFiles, async function (file, i) {
const distPath = path.join(dir, `./${type}/${file.name}.${extension}`)
process.stdout.write(`Building \`icons/${extension}\` ${type} ${i}/${svgFiles.length}: ${file.name.padEnd(42)}\r`)
await new Promise((resolve, reject) => {
exec(`rsvg-convert -f ${extension} -h ${size} ${file.path} > ${distPath}`, (error) => {
error ? reject() : resolve()
})
})
})
})
}

View File

@ -1,75 +1,84 @@
import fs from 'fs'
import { glob } from 'glob'
import { resolve, basename } from 'path'
import { HOME_DIR, optimizeSVG } from './helpers.mjs'
import { HOME_DIR, optimizeSVG, iconTemplate, types } from './helpers.mjs'
types.forEach(type => {
const files = glob.sync(resolve(HOME_DIR, `./new/${type}/*.svg`))
const files = glob.sync(resolve(HOME_DIR, './new/*.svg'))
files.forEach(function (file, i) {
let fileData = fs.readFileSync(file).toString(),
filename = basename(file, '.svg')
files.forEach(function (file, i) {
let fileData = fs.readFileSync(file).toString(),
filename = basename(file, '.svg')
console.log(`${type}/${filename}`)
console.log(filename)
fileData = optimizeSVG(fileData)
fileData = optimizeSVG(fileData)
if (fileData.match(/transform="/)) {
throw new Error(`File ${file} has \`transform\` in code!!`)
}
if (filename.match(/\s/)) {
throw new Error(`File ${file} has space in name!!`)
}
fileData = fileData.replace(/---/g, '')
.replace(/fill="none"/g, '')
.replace(/fill="#D8D8D8"/gi, '')
.replace(/fill-rule="evenodd"/g, '')
.replace(/stroke-linecap="round"/g, '')
.replace(/stroke-linejoin="round"/g, '')
.replace(/viewBox="0 0 24 24"/g, '')
.replace(/stroke="#000000"/g, '')
.replace(/stroke="#000"/g, '')
.replace(/stroke-width="2"/g, '')
.replace(/width="24"/g, '')
.replace(/width="24px"/g, '')
.replace(/height="24"/g, '')
.replace(/height="24px"/g, '')
.replace(/clip-rule="evenodd"/g, '')
.replace(/xmlns="http:\/\/www.w3.org\/2000\/svg"/g, '')
.replace(/<path d="M0 0h24v24H0z"\/>"/g, '')
.replace(/<path stroke="red" stroke-width=".1" d="[^"]+"\s?\/>/g, '')
.replace(/<path[^>]*fill-opacity=".1"[^>]*\/>/g, '')
.replace(/<path[^>]*stroke="red"[^>]*\/>/gs, '')
.replace(/<circle[^>]*stroke="red"[^>]*\/>/gs, '')
.replace(/<path[^>]*fill="red"[^>]*\/>/gs, '')
.replace(/<g[^>]*stroke="red"[^>]*>.*?<\/g>/gs, '')
.replace(/<svg\s+>/gs, '<svg>')
fileData = optimizeSVG(fileData)
if (filename.match(/\-filled$/)) {
fileData = fileData
.replace(/\/>/g, ' stroke-width="0" fill="currentColor" />')
}
fileData = fileData.replace(/<svg>/g, '---\n---\n<svg>')
if (fs.existsSync(`./src/_icons/${filename}.svg`)) {
const newFileData = fs.readFileSync(`./src/_icons/${filename}.svg`).toString()
const m = newFileData.match(/(---.*---)/gms)
if (m) {
fileData = fileData.replace('---\n---', m[0])
if (fileData.match(/transform="/)) {
throw new Error(`File ${file} has \`transform\` in code!!`)
}
} else if (filename.match(/\-filled$/)) {
fileData = fileData
.replace(/---\n---/g, '---\ncategory: Filled\n---')
} else if (filename.match(/brand\-/)) {
fileData = fileData
.replace(/---\n---/g, '---\ncategory: Brand\n---')
}
fs.writeFileSync(`./src/_icons/${filename}.svg`, fileData)
if (filename.match(/\s/)) {
throw new Error(`File ${file} has space in name!!`)
}
fileData = fileData.replace(/---/g, '')
.replace(/fill="none"/g, '')
.replace(/fill="#D8D8D8"/gi, '')
.replace(/fill-rule="evenodd"/g, '')
.replace(/stroke-linecap="round"/g, '')
.replace(/stroke-linejoin="round"/g, '')
.replace(/viewBox="0 0 24 24"/g, '')
.replace(/stroke="#000000"/g, '')
.replace(/stroke="#000"/g, '')
.replace(/stroke-width="2"/g, '')
.replace(/width="24"/g, '')
.replace(/width="24px"/g, '')
.replace(/height="24"/g, '')
.replace(/height="24px"/g, '')
.replace(/clip-rule="evenodd"/g, '')
.replace(/xmlns="http:\/\/www.w3.org\/2000\/svg"/g, '')
.replace(/<path d="M0 0h24v24H0z"\/>"/g, '')
.replace(/<path stroke="red" stroke-width=".1" d="[^"]+"\s?\/>/g, '')
.replace(/<path[^>]*fill-opacity=".1"[^>]*\/>/g, '')
.replace(/<path[^>]*stroke="red"[^>]*\/>/gs, '')
.replace(/<circle[^>]*stroke="red"[^>]*\/>/gs, '')
.replace(/<path[^>]*fill="red"[^>]*\/>/gs, '')
.replace(/<g[^>]*stroke="red"[^>]*>.*?<\/g>/gs, '')
.replace(/<svg\s+>/gs, '<svg>')
fileData = optimizeSVG(fileData)
fileData = fileData.replace(/<svg>/g, `<!--\n-->\n${iconTemplate(type)}`)
if (type == "filled") {
fileData = fileData
.replace('stroke-width="2"', '')
.replace('stroke-linecap="round"', '')
.replace('stroke-linejoin="round"', '')
.replace('stroke="currentColor"', '')
.replace('fill="none"', 'fill="currentColor"')
// remove empty lines
.replace(/^\s*[\r\n]/gm, '')
}
if (fs.existsSync(`./icons/${type}/${filename}.svg`)) {
const newFileData = fs.readFileSync(`./icons/${type}/${filename}.svg`).toString()
const m = newFileData.match(/(<!--.*-->)/gms)
if (m) {
fileData = fileData.replace('<!--\n-->', m[0])
}
} else if (filename.match(/\-filled$/)) {
fileData = fileData
.replace(/<!--\n-->/g, '<!--\ncategory: Filled\n-->')
} else if (filename.match(/brand\-/)) {
fileData = fileData
.replace(/<!--\n-->/g, '<!--\ncategory: Brand\n-->')
}
fs.writeFileSync(`./icons/${type}/${filename}.svg`, fileData)
})
})

View File

@ -1,75 +1,104 @@
import { glob } from 'glob'
import { globSync } from 'glob'
import { readFileSync, writeFileSync } from 'fs'
import { join, basename } from 'path'
import { optimizePath, ICONS_SRC_DIR } from './helpers.mjs'
import { optimizePath, ICONS_SRC_DIR, iconTemplate, types } from './helpers.mjs'
types.forEach(type => {
const files = globSync(join(ICONS_SRC_DIR, type, '*.svg'))
glob(join(ICONS_SRC_DIR, '*.svg'), {}, function(er, files) {
files.forEach(function(file, i) {
files.forEach(function (file, i) {
console.log(`Optimize ${basename(file)}`);
// Read files
let svgFile = readFileSync(file),
svgFileContent = svgFile.toString()
svgFileContent = svgFile.toString()
// Optimize SVG
svgFileContent = svgFileContent.replace(/><\/(polyline|line|rect|circle|path|ellipse)>/g, '/>')
.replace(/rx="([^"]+)"\s+ry="\1"/g, 'rx="$1"')
.replace(/<path stroke="red" stroke-width="\.1"([^>]+)?\/>/g, '')
.replace(/<path[^>]+d="M0 0h24v24h-24z"[^>]+\/>/g, '')
.replace(/\s?\/>/g, ' />')
.replace(/\n\s*<(line|circle|path|polyline|rect|ellipse)/g, '\n <$1')
// .replace(/polyline points="([0-9.]+)\s([0-9.]+)\s([0-9.]+)\s([0-9.]+)"/g, 'line x1="$1" y1="$2" x2="$3" y2="$4"')
.replace(/<line x1="([^"]+)" y1="([^"]+)" x2="([^"]+)" y2="([^"]+)"\s*\/>/g, function(f, x1, y1, x2, y2) {
return `<path d="M${x1} ${y1}L${x2} ${y2}" />`
})
.replace(/<circle cx="([^"]+)" cy="([^"]+)" r="([^"]+)"\s+\/>/g, function(f, cx, cy, r) {
return `<path d="M ${cx} ${cy}m -${r} 0a ${r} ${r} 0 1 0 ${r * 2} 0a ${r} ${r} 0 1 0 ${r * -2} 0" />`
})
.replace(/<ellipse cx="([^"]+)" cy="([^"]+)" rx="([^"]+)"\s+\/>/g, function(f, cx, cy, rx) {
return `<ellipse cx="${cx}" cy="${cy}" rx="${rx}" ry="${rx}" />`
})
.replace(/<ellipse cx="([^"]+)" cy="([^"]+)" rx="([^"]+)" ry="([^"]+)"\s+\/>/g, function(f, cx, cy, rx, ry) {
return `<path d="M${cx} ${cy}m -${rx} 0a${rx} ${ry} 0 1 0 ${rx * 2} 0a ${rx} ${ry} 0 1 0 -${rx * 2} 0" />`
})
.replace(/<rect width="([^"]+)" height="([^"]+)" x="([^"]+)" y="([^"]+)" rx="([^"]+)"\s+\/>/g, function(f, width, height, x, y, rx) {
return `<rect x="${x}" y="${y}" width="${height}" height="${height}" rx="${rx}" />`
})
.replace(/<rect x="([^"]+)" y="([^"]+)" rx="([^"]+)" width="([^"]+)" height="([^"]+)"\s+\/>/g, function(f, x, y, rx, width, height) {
return `<rect x="${x}" y="${y}" width="${height}" height="${height}" rx="${rx}" />`
})
.replace(/<rect x="([^"]+)" y="([^"]+)" width="([^"]+)" height="([^"]+)" rx="([^"]+)"\s+\/>/g, function(f, x, y, width, height, rx) {
return `<path d="M ${x} ${y}m 0 ${rx}a${rx} ${rx} 0 0 1 ${rx} ${-rx}h${width - rx * 2}a${rx} ${rx} 0 0 1 ${rx} ${rx}v${height - rx * 2}a${rx} ${rx} 0 0 1 ${-rx} ${rx}h${-width + rx * 2}a${rx} ${rx} 0 0 1 ${-rx} ${-rx}Z" />`
})
.replace(/<rect x="([^"]+)" y="([^"]+)" width="([^"]+)" height="([^"]+)"\s+\/>/g, function(f, x, y, width, height) {
return `<path d="M ${x} ${y}h${width}v${height}h${-width}Z" />`
})
.replace(/<polyline points="([^"]+)\s?"\s+\/>/g, function(f, points) {
const path = points.split(' ').reduce(
(accumulator, currentValue, currentIndex) => `${accumulator}${currentIndex % 2 === 0 ? (currentIndex === 0 ? 'M' : 'L') : ''}${currentValue} `,
''
)
return `<path d="${path}" />`
})
.replace(/<path d="([^"]+)"/g, function(f, r1) {
r1 = optimizePath(r1)
.replace(/rx="([^"]+)"\s+ry="\1"/g, 'rx="$1"')
.replace(/<path stroke="red" stroke-width="\.1"([^>]+)?\/>/g, '')
.replace(/<path[^>]+d="M0 0h24v24h-24z"[^>]+\/>/g, '')
.replace(/\s?\/>/g, ' />')
.replace(/\n\s*<(line|circle|path|polyline|rect|ellipse)/g, '\n <$1')
// .replace(/polyline points="([0-9.]+)\s([0-9.]+)\s([0-9.]+)\s([0-9.]+)"/g, 'line x1="$1" y1="$2" x2="$3" y2="$4"')
.replace(/<line x1="([^"]+)" y1="([^"]+)" x2="([^"]+)" y2="([^"]+)"\s*\/>/g, function (f, x1, y1, x2, y2) {
return `<path d="M${x1} ${y1}L${x2} ${y2}" />`
})
.replace(/<circle cx="([^"]+)" cy="([^"]+)" r="([^"]+)"\s+\/>/g, function (f, cx, cy, r) {
return `<path d="M ${cx} ${cy}m -${r} 0a ${r} ${r} 0 1 0 ${r * 2} 0a ${r} ${r} 0 1 0 ${r * -2} 0" />`
})
.replace(/<ellipse cx="([^"]+)" cy="([^"]+)" rx="([^"]+)"\s+\/>/g, function (f, cx, cy, rx) {
return `<ellipse cx="${cx}" cy="${cy}" rx="${rx}" ry="${rx}" />`
})
.replace(/<ellipse cx="([^"]+)" cy="([^"]+)" rx="([^"]+)" ry="([^"]+)"\s+\/>/g, function (f, cx, cy, rx, ry) {
return `<path d="M${cx} ${cy}m -${rx} 0a${rx} ${ry} 0 1 0 ${rx * 2} 0a ${rx} ${ry} 0 1 0 -${rx * 2} 0" />`
})
.replace(/<rect width="([^"]+)" height="([^"]+)" x="([^"]+)" y="([^"]+)" rx="([^"]+)"\s+\/>/g, function (f, width, height, x, y, rx) {
return `<rect x="${x}" y="${y}" width="${width}" height="${height}" rx="${rx}" />`
})
.replace(/<rect x="([^"]+)" y="([^"]+)" rx="([^"]+)" width="([^"]+)" height="([^"]+)"\s+\/>/g, function (f, x, y, rx, width, height) {
return `<rect x="${x}" y="${y}" width="${height}" height="${height}" rx="${rx}" />`
})
.replace(/<rect x="([^"]+)" y="([^"]+)" width="([^"]+)" height="([^"]+)" rx="([^"]+)"\s+\/>/g, function (f, x, y, width, height, rx) {
return `<path d="M ${x} ${y}m 0 ${rx}a${rx} ${rx} 0 0 1 ${rx} ${-rx}h${width - rx * 2}a${rx} ${rx} 0 0 1 ${rx} ${rx}v${height - rx * 2}a${rx} ${rx} 0 0 1 ${-rx} ${rx}h${-width + rx * 2}a${rx} ${rx} 0 0 1 ${-rx} ${-rx}Z" />`
})
.replace(/<rect x="([^"]+)" y="([^"]+)" width="([^"]+)" height="([^"]+)"\s+\/>/g, function (f, x, y, width, height) {
return `<path d="M ${x} ${y}h${width}v${height}h${-width}Z" />`
})
.replace(/<polyline points="([^"]+)\s?"\s+\/>/g, function (f, points) {
const path = points.split(' ').reduce(
(accumulator, currentValue, currentIndex) => `${accumulator}${currentIndex % 2 === 0 ? (currentIndex === 0 ? 'M' : 'L') : ''}${currentValue} `,
''
)
return `<path d="${path}" />`
})
.replace(/<path d="([^"]+)"/g, function (f, r1) {
r1 = optimizePath(r1)
return `<path d="${r1}"`
})
.replace(/<path\s+d="([^"]+)"/g, function(f, d) {
return `<path d="${r1}"`
})
.replace(/<path\s+d="([^"]+)"/g, function (f, d) {
const d2 = d
.replace(/m0 0/g, (f, m) => ``)
.replace(/ 0\./g, ' .')
.replace(/ -0\./g, ' -.')
.replace(/([amcvhslAMCVHLS]) /g, '$1')
const d2 = d
.replace(/m0 0/g, (f, m) => ``)
.replace(/ 0\./g, ' .')
.replace(/ -0\./g, ' -.')
.replace(/([amcvhslAMCVHLS]) /g, '$1')
return `<path d="${d2}"`
})
.replace(/d="m/g, 'd="M')
.replace(/([Aa])\s?([0-9.]+)[\s,]([0-9.]+)[\s,]([0-9.]+)[\s,]?([0-1])[\s,]?([0-1])[\s,]?(-?[0-9.]+)[\s,]?(-?[0-9.]+)/gi, '$1$2 $3 $4 $5 $6 $7 $8')
.replace(/\n\s+\n+/g, '\n')
return `<path d="${d2}"`
})
.replace(/d="m/g, 'd="M')
.replace(/([Aa])\s?([0-9.]+)[\s,]([0-9.]+)[\s,]([0-9.]+)[\s,]?([0-1])[\s,]?([0-1])[\s,]?(-?[0-9.]+)[\s,]?(-?[0-9.]+)/gi, '$1$2 $3 $4 $5 $6 $7 $8')
.replace(/\n\s+\n+/g, '\n')
// Add icon template
svgFileContent = svgFileContent.replace(/<svg[^>]+>/, iconTemplate(type))
// Remove stroke and fill
if (file.match(/\/filled\//)) {
svgFileContent = svgFileContent
.replace(/stroke-width="0" fill="currentColor"/gm, '')
.replace('stroke-width="2"', '')
.replace('stroke-linecap="round"', '')
.replace('stroke-linejoin="round"', '')
.replace('stroke="currentColor"', '')
.replace('fill="none"', 'fill="currentColor"')
.replace(/^\s*[\r\n]/gm, '')
.replace(/\s{2,}\//g, ' /')
}
// Add comment if not exists
if (!svgFileContent.includes('<!--')) {
svgFileContent = '<!--\n-->\n' + svgFileContent
}
svgFileContent = svgFileContent.replace(/tags: \[([^]+)\]/, (m, tags) => {
tags = [...new Set(tags.split(',').map(t => t.trim()))].filter(t => t).join(', ')
return `tags: [${tags}]`
})
// Write files
if (svgFile.toString() !== svgFileContent) {
writeFileSync(file, svgFileContent)
}

View File

@ -1,10 +1,25 @@
import { glob } from 'glob'
import { generateIconsPreview } from './helpers.mjs'
import { globSync } from 'glob'
import { GITHUB_DIR, generateIconsPreview, ICONS_SRC_DIR, asyncForEach } from './helpers.mjs'
import path from 'path'
glob('icons/*.svg', {}, async function (er, files) {
await generateIconsPreview(files, '.github/icons.svg')
await generateIconsPreview(files, '.github/icons-dark.svg', {
const types = {
'-outline': 'outline',
'-filled': 'filled',
'': '**'
}
asyncForEach(Object.entries(types), async ([type, dir]) => {
const files = globSync(path.join(ICONS_SRC_DIR, `${dir}/*.svg`)).sort((a, b) => path.basename(a).localeCompare(path.basename(b)))
await generateIconsPreview(files, path.join(GITHUB_DIR, `preview/icons${type}.svg`), {
retina: false,
stroke: 1.5
})
await generateIconsPreview(files, path.join(GITHUB_DIR, `preview/icons${type}-dark.svg`), {
color: '#ffffff',
background: 'transparent'
background: 'transparent',
retina: false,
stroke: 1.5
})
})

View File

@ -1,21 +1,24 @@
import { glob } from 'glob'
import { generateIconsPreview } from './helpers.mjs'
import { globSync } from 'glob'
import { ICONS_SRC_DIR, generateIconsPreview, GITHUB_DIR } from './helpers.mjs'
import path from 'path'
glob('icons/*.svg', {}, async function (er, files) {
files = files.filter(file =>
!file.endsWith('-filled.svg')
&& !file.endsWith('-off.svg')
&& !file.startsWith('icons/number-')
&& !file.startsWith('icons/letter-')
);
let files = globSync(path.join(ICONS_SRC_DIR, 'outline/*.svg'))
files = files.sort(() => Math.random() - 0.5)
files = files.filter(file =>
!file.endsWith('-filled.svg')
&& !file.endsWith('-off.svg')
&& !file.includes('number-')
&& !file.includes('letter-')
&& !file.includes('loader')
&& !file.includes('small')
);
files = files.slice(0, 500)
files = files.sort(() => Math.random() - 0.5)
await generateIconsPreview(files, 'random-icons.svg', {
background: 'transparent',
columnsCount: 25,
png: false
})
files = files.slice(0, 500)
await generateIconsPreview(files, path.join(GITHUB_DIR, 'preview/random-icons.svg'), {
background: 'transparent',
columnsCount: 25,
stroke: 1.5
})

View File

@ -1,25 +1,31 @@
import fs from 'fs'
import { createScreenshot } from './helpers.mjs'
import { ICONS_SRC_DIR } from './helpers.mjs'
import path from 'path'
const icon = 'ghost',
strokes = ['.25', '.5', '.75', '1', '1.25', '1.5', '1.75', '2', '2.25', '2.5', '2.25'],
svgFileContent = fs.readFileSync(`icons/${icon}.svg`).toString(),
padding = 16,
paddingOuter = 3,
iconSize = 56,
width = 830,
height = iconSize + paddingOuter * 2
strokes = ['.25', '.5', '.75', '1', '1.25', '1.5', '1.75', '2', '2.25', '2.5', '2.25'],
svgFileContent = fs.readFileSync(path.join(ICONS_SRC_DIR, `outline/${icon}.svg`), 'utf-8'),
padding = 16,
paddingOuter = 3,
iconSize = 56,
width = 830,
height = iconSize + paddingOuter * 2
let svgContentSymbols = '',
svgContentIcons = '',
x = paddingOuter
svgContentIcons = '',
x = paddingOuter
strokes.forEach(function(stroke) {
let svgFileContentStroked = svgFileContent.replace('<svg xmlns="http://www.w3.org/2000/svg"', `<symbol id="icon-${stroke}"`)
.replace(' width="24" height="24"', '')
.replace(' stroke-width="2"', ` stroke-width="${stroke}"`)
.replace('</svg>', '</symbol>')
.replace(/\n\s+/g, '')
strokes.forEach(function (stroke) {
let svgFileContentStroked = createSvgSymbol(svgFileContent, `icon-${stroke}`, stroke)
svgFileContent
.replace('<svg', `<symbol id="icon-${stroke}"`)
.replace(' width="24" height="24"', '')
.replace(' stroke-width="2"', ` stroke-width="${stroke}"`)
.replace('</svg>', '</symbol>')
.replace(/\n\s+/g, ' ')
.replace(/<!--(.*?)-->/gis, '')
svgContentSymbols += `\t${svgFileContentStroked}\n`
svgContentIcons += `\t<use xlink:href="#icon-${stroke}" x="${x}" y="${paddingOuter}" width="${iconSize}" height="${iconSize}" />\n`

View File

@ -1,9 +1,9 @@
import { readFileSync, writeFileSync } from 'fs'
import { glob } from 'glob'
import { resolve } from 'path'
import { HOME_DIR } from './helpers.mjs'
import { HOME_DIR, ICONS_SRC_DIR } from './helpers.mjs'
let count = glob.sync(resolve(HOME_DIR, 'icons/*.svg')).length
let count = glob.sync(resolve(ICONS_SRC_DIR, '**/*.svg')).length
console.log('count', count);

76
.build/validate-icons.mjs Normal file
View File

@ -0,0 +1,76 @@
import { globSync } from 'glob'
import fs from 'fs'
import { basename } from 'path'
import { ICONS_SRC_DIR, iconTemplate, parseMatter, types } from './helpers.mjs'
import { join } from 'path'
let error = false
const outlineIconsNames = globSync(join(ICONS_SRC_DIR, 'outline/*.svg')).map(i => basename(i, '.svg')),
filledIconsNames = globSync(join(ICONS_SRC_DIR, 'filled/*.svg')).map(i => basename(i, '.svg'));
let unicodes = []
const duplicateExists = (arr) => {
return new Set(arr).size !== arr.length
}
types.forEach(type => {
const icons = globSync(join(ICONS_SRC_DIR, type, '*.svg'))
icons.forEach((icon) => {
const iconContent = fs.readFileSync(icon, 'utf-8')
if (!iconContent.includes(iconTemplate(type))) {
console.log(`Icon ${icon} is not properly formatted`)
error = true
}
if (!iconContent.includes('<!--') || !iconContent.includes('-->')) {
console.log(`Icon ${icon} has no metadata`)
error = true
}
try {
const { data } = parseMatter(icon)
if (data.unicode) {
if (unicodes.indexOf(data.unicode) !== -1) {
console.log(`Icon ${icon} has duplicate unicode "${data.unicode}"`)
error = true
}
if (data.unicode.length !== 4) {
console.log(`Icon ${icon} has invalid unicode "${data.unicode}"`)
error = true
}
// check duplicates in tags
if (duplicateExists(data.tags || [])) {
console.log(`Icon ${icon} has duplicate tags`)
error = true
}
unicodes.push(data.unicode)
}
} catch (e) {
console.log(`Icon ${icon} has invalid metadata`)
error = true
}
})
filledIconsNames.forEach((icon) => {
if (outlineIconsNames.indexOf(icon) === -1) {
console.log(`Icon ${icon} exists in filled version but doesn't exists in outline`)
error = true
}
})
if (error) {
process.exit(1)
} else {
console.log('All icons are valid')
process.exit(0)
}
})

38
.eleventy.js Normal file
View File

@ -0,0 +1,38 @@
const eleventySass = require("eleventy-sass");
const eleventyDirectoryOutputPlugin = require("@11ty/eleventy-plugin-directory-output");
module.exports = function (eleventyConfig) {
eleventyConfig.addPlugin(eleventySass);
eleventyConfig.addPlugin(eleventyDirectoryOutputPlugin);
eleventyConfig.addWatchTarget("./src");
eleventyConfig.addWatchTarget("./icons");
eleventyConfig.setQuietMode(true);
eleventyConfig.addLiquidTag("include_cached", function (liquidEngine) {
return {
parse: function (tagToken, remainingTokens) {
this.str = tagToken.args;
},
render: async function (scope, hash) {
var str = await this.liquid.evalValue(this.str, scope);
return str;
}
};
});
eleventyConfig.addFilter("group_by", function (value) {
return value
});
return {
pathPrefix: "/",
dir: {
input: "src",
layouts: "_layouts",
includes: "_includes"
},
};
};

BIN
.github/icons-dark.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 MiB

14890
.github/icons-dark.svg vendored

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 2.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

View File

@ -1,37 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 830 62" width="830" height="62" style="color: #ffffff"><rect x="0" y="0" width="830" height="62" fill="transparent"></rect>
<symbol id="icon-.25" class="icon icon-tabler icon-tabler-ghost" viewBox="0 0 24 24" stroke-width=".25" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M5 11a7 7 0 0 1 14 0v7a1.78 1.78 0 0 1 -3.1 1.4a1.65 1.65 0 0 0 -2.6 0a1.65 1.65 0 0 1 -2.6 0a1.65 1.65 0 0 0 -2.6 0a1.78 1.78 0 0 1 -3.1 -1.4v-7" /><path d="M10 10l.01 0" /><path d="M14 10l.01 0" /><path d="M10 14a3.5 3.5 0 0 0 4 0" />
</symbol>
<symbol id="icon-.5" class="icon icon-tabler icon-tabler-ghost" viewBox="0 0 24 24" stroke-width=".5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M5 11a7 7 0 0 1 14 0v7a1.78 1.78 0 0 1 -3.1 1.4a1.65 1.65 0 0 0 -2.6 0a1.65 1.65 0 0 1 -2.6 0a1.65 1.65 0 0 0 -2.6 0a1.78 1.78 0 0 1 -3.1 -1.4v-7" /><path d="M10 10l.01 0" /><path d="M14 10l.01 0" /><path d="M10 14a3.5 3.5 0 0 0 4 0" />
</symbol>
<symbol id="icon-.75" class="icon icon-tabler icon-tabler-ghost" viewBox="0 0 24 24" stroke-width=".75" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M5 11a7 7 0 0 1 14 0v7a1.78 1.78 0 0 1 -3.1 1.4a1.65 1.65 0 0 0 -2.6 0a1.65 1.65 0 0 1 -2.6 0a1.65 1.65 0 0 0 -2.6 0a1.78 1.78 0 0 1 -3.1 -1.4v-7" /><path d="M10 10l.01 0" /><path d="M14 10l.01 0" /><path d="M10 14a3.5 3.5 0 0 0 4 0" />
</symbol>
<symbol id="icon-1" class="icon icon-tabler icon-tabler-ghost" viewBox="0 0 24 24" stroke-width="1" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M5 11a7 7 0 0 1 14 0v7a1.78 1.78 0 0 1 -3.1 1.4a1.65 1.65 0 0 0 -2.6 0a1.65 1.65 0 0 1 -2.6 0a1.65 1.65 0 0 0 -2.6 0a1.78 1.78 0 0 1 -3.1 -1.4v-7" /><path d="M10 10l.01 0" /><path d="M14 10l.01 0" /><path d="M10 14a3.5 3.5 0 0 0 4 0" />
</symbol>
<symbol id="icon-1.25" class="icon icon-tabler icon-tabler-ghost" viewBox="0 0 24 24" stroke-width="1.25" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M5 11a7 7 0 0 1 14 0v7a1.78 1.78 0 0 1 -3.1 1.4a1.65 1.65 0 0 0 -2.6 0a1.65 1.65 0 0 1 -2.6 0a1.65 1.65 0 0 0 -2.6 0a1.78 1.78 0 0 1 -3.1 -1.4v-7" /><path d="M10 10l.01 0" /><path d="M14 10l.01 0" /><path d="M10 14a3.5 3.5 0 0 0 4 0" />
</symbol>
<symbol id="icon-1.5" class="icon icon-tabler icon-tabler-ghost" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M5 11a7 7 0 0 1 14 0v7a1.78 1.78 0 0 1 -3.1 1.4a1.65 1.65 0 0 0 -2.6 0a1.65 1.65 0 0 1 -2.6 0a1.65 1.65 0 0 0 -2.6 0a1.78 1.78 0 0 1 -3.1 -1.4v-7" /><path d="M10 10l.01 0" /><path d="M14 10l.01 0" /><path d="M10 14a3.5 3.5 0 0 0 4 0" />
</symbol>
<symbol id="icon-1.75" class="icon icon-tabler icon-tabler-ghost" viewBox="0 0 24 24" stroke-width="1.75" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M5 11a7 7 0 0 1 14 0v7a1.78 1.78 0 0 1 -3.1 1.4a1.65 1.65 0 0 0 -2.6 0a1.65 1.65 0 0 1 -2.6 0a1.65 1.65 0 0 0 -2.6 0a1.78 1.78 0 0 1 -3.1 -1.4v-7" /><path d="M10 10l.01 0" /><path d="M14 10l.01 0" /><path d="M10 14a3.5 3.5 0 0 0 4 0" />
</symbol>
<symbol id="icon-2" class="icon icon-tabler icon-tabler-ghost" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M5 11a7 7 0 0 1 14 0v7a1.78 1.78 0 0 1 -3.1 1.4a1.65 1.65 0 0 0 -2.6 0a1.65 1.65 0 0 1 -2.6 0a1.65 1.65 0 0 0 -2.6 0a1.78 1.78 0 0 1 -3.1 -1.4v-7" /><path d="M10 10l.01 0" /><path d="M14 10l.01 0" /><path d="M10 14a3.5 3.5 0 0 0 4 0" />
</symbol>
<symbol id="icon-2.25" class="icon icon-tabler icon-tabler-ghost" viewBox="0 0 24 24" stroke-width="2.25" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M5 11a7 7 0 0 1 14 0v7a1.78 1.78 0 0 1 -3.1 1.4a1.65 1.65 0 0 0 -2.6 0a1.65 1.65 0 0 1 -2.6 0a1.65 1.65 0 0 0 -2.6 0a1.78 1.78 0 0 1 -3.1 -1.4v-7" /><path d="M10 10l.01 0" /><path d="M14 10l.01 0" /><path d="M10 14a3.5 3.5 0 0 0 4 0" />
</symbol>
<symbol id="icon-2.5" class="icon icon-tabler icon-tabler-ghost" viewBox="0 0 24 24" stroke-width="2.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M5 11a7 7 0 0 1 14 0v7a1.78 1.78 0 0 1 -3.1 1.4a1.65 1.65 0 0 0 -2.6 0a1.65 1.65 0 0 1 -2.6 0a1.65 1.65 0 0 0 -2.6 0a1.78 1.78 0 0 1 -3.1 -1.4v-7" /><path d="M10 10l.01 0" /><path d="M14 10l.01 0" /><path d="M10 14a3.5 3.5 0 0 0 4 0" />
</symbol>
<symbol id="icon-2.25" class="icon icon-tabler icon-tabler-ghost" viewBox="0 0 24 24" stroke-width="2.25" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M5 11a7 7 0 0 1 14 0v7a1.78 1.78 0 0 1 -3.1 1.4a1.65 1.65 0 0 0 -2.6 0a1.65 1.65 0 0 1 -2.6 0a1.65 1.65 0 0 0 -2.6 0a1.78 1.78 0 0 1 -3.1 -1.4v-7" /><path d="M10 10l.01 0" /><path d="M14 10l.01 0" /><path d="M10 14a3.5 3.5 0 0 0 4 0" />
</symbol>
<use xlink:href="#icon-.25" x="3" y="3" width="56" height="56" />
<use xlink:href="#icon-.5" x="75" y="3" width="56" height="56" />
<use xlink:href="#icon-.75" x="147" y="3" width="56" height="56" />
<use xlink:href="#icon-1" x="219" y="3" width="56" height="56" />
<use xlink:href="#icon-1.25" x="291" y="3" width="56" height="56" />
<use xlink:href="#icon-1.5" x="363" y="3" width="56" height="56" />
<use xlink:href="#icon-1.75" x="435" y="3" width="56" height="56" />
<use xlink:href="#icon-2" x="507" y="3" width="56" height="56" />
<use xlink:href="#icon-2.25" x="579" y="3" width="56" height="56" />
<use xlink:href="#icon-2.5" x="651" y="3" width="56" height="56" />
<use xlink:href="#icon-2.25" x="723" y="3" width="56" height="56" />
</svg>

Before

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

View File

@ -1,37 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 830 62" width="830" height="62" style="color: #354052"><rect x="0" y="0" width="830" height="62" fill="#fff"></rect>
<symbol id="icon-.25" class="icon icon-tabler icon-tabler-ghost" viewBox="0 0 24 24" stroke-width=".25" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M5 11a7 7 0 0 1 14 0v7a1.78 1.78 0 0 1 -3.1 1.4a1.65 1.65 0 0 0 -2.6 0a1.65 1.65 0 0 1 -2.6 0a1.65 1.65 0 0 0 -2.6 0a1.78 1.78 0 0 1 -3.1 -1.4v-7" /><path d="M10 10l.01 0" /><path d="M14 10l.01 0" /><path d="M10 14a3.5 3.5 0 0 0 4 0" />
</symbol>
<symbol id="icon-.5" class="icon icon-tabler icon-tabler-ghost" viewBox="0 0 24 24" stroke-width=".5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M5 11a7 7 0 0 1 14 0v7a1.78 1.78 0 0 1 -3.1 1.4a1.65 1.65 0 0 0 -2.6 0a1.65 1.65 0 0 1 -2.6 0a1.65 1.65 0 0 0 -2.6 0a1.78 1.78 0 0 1 -3.1 -1.4v-7" /><path d="M10 10l.01 0" /><path d="M14 10l.01 0" /><path d="M10 14a3.5 3.5 0 0 0 4 0" />
</symbol>
<symbol id="icon-.75" class="icon icon-tabler icon-tabler-ghost" viewBox="0 0 24 24" stroke-width=".75" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M5 11a7 7 0 0 1 14 0v7a1.78 1.78 0 0 1 -3.1 1.4a1.65 1.65 0 0 0 -2.6 0a1.65 1.65 0 0 1 -2.6 0a1.65 1.65 0 0 0 -2.6 0a1.78 1.78 0 0 1 -3.1 -1.4v-7" /><path d="M10 10l.01 0" /><path d="M14 10l.01 0" /><path d="M10 14a3.5 3.5 0 0 0 4 0" />
</symbol>
<symbol id="icon-1" class="icon icon-tabler icon-tabler-ghost" viewBox="0 0 24 24" stroke-width="1" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M5 11a7 7 0 0 1 14 0v7a1.78 1.78 0 0 1 -3.1 1.4a1.65 1.65 0 0 0 -2.6 0a1.65 1.65 0 0 1 -2.6 0a1.65 1.65 0 0 0 -2.6 0a1.78 1.78 0 0 1 -3.1 -1.4v-7" /><path d="M10 10l.01 0" /><path d="M14 10l.01 0" /><path d="M10 14a3.5 3.5 0 0 0 4 0" />
</symbol>
<symbol id="icon-1.25" class="icon icon-tabler icon-tabler-ghost" viewBox="0 0 24 24" stroke-width="1.25" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M5 11a7 7 0 0 1 14 0v7a1.78 1.78 0 0 1 -3.1 1.4a1.65 1.65 0 0 0 -2.6 0a1.65 1.65 0 0 1 -2.6 0a1.65 1.65 0 0 0 -2.6 0a1.78 1.78 0 0 1 -3.1 -1.4v-7" /><path d="M10 10l.01 0" /><path d="M14 10l.01 0" /><path d="M10 14a3.5 3.5 0 0 0 4 0" />
</symbol>
<symbol id="icon-1.5" class="icon icon-tabler icon-tabler-ghost" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M5 11a7 7 0 0 1 14 0v7a1.78 1.78 0 0 1 -3.1 1.4a1.65 1.65 0 0 0 -2.6 0a1.65 1.65 0 0 1 -2.6 0a1.65 1.65 0 0 0 -2.6 0a1.78 1.78 0 0 1 -3.1 -1.4v-7" /><path d="M10 10l.01 0" /><path d="M14 10l.01 0" /><path d="M10 14a3.5 3.5 0 0 0 4 0" />
</symbol>
<symbol id="icon-1.75" class="icon icon-tabler icon-tabler-ghost" viewBox="0 0 24 24" stroke-width="1.75" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M5 11a7 7 0 0 1 14 0v7a1.78 1.78 0 0 1 -3.1 1.4a1.65 1.65 0 0 0 -2.6 0a1.65 1.65 0 0 1 -2.6 0a1.65 1.65 0 0 0 -2.6 0a1.78 1.78 0 0 1 -3.1 -1.4v-7" /><path d="M10 10l.01 0" /><path d="M14 10l.01 0" /><path d="M10 14a3.5 3.5 0 0 0 4 0" />
</symbol>
<symbol id="icon-2" class="icon icon-tabler icon-tabler-ghost" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M5 11a7 7 0 0 1 14 0v7a1.78 1.78 0 0 1 -3.1 1.4a1.65 1.65 0 0 0 -2.6 0a1.65 1.65 0 0 1 -2.6 0a1.65 1.65 0 0 0 -2.6 0a1.78 1.78 0 0 1 -3.1 -1.4v-7" /><path d="M10 10l.01 0" /><path d="M14 10l.01 0" /><path d="M10 14a3.5 3.5 0 0 0 4 0" />
</symbol>
<symbol id="icon-2.25" class="icon icon-tabler icon-tabler-ghost" viewBox="0 0 24 24" stroke-width="2.25" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M5 11a7 7 0 0 1 14 0v7a1.78 1.78 0 0 1 -3.1 1.4a1.65 1.65 0 0 0 -2.6 0a1.65 1.65 0 0 1 -2.6 0a1.65 1.65 0 0 0 -2.6 0a1.78 1.78 0 0 1 -3.1 -1.4v-7" /><path d="M10 10l.01 0" /><path d="M14 10l.01 0" /><path d="M10 14a3.5 3.5 0 0 0 4 0" />
</symbol>
<symbol id="icon-2.5" class="icon icon-tabler icon-tabler-ghost" viewBox="0 0 24 24" stroke-width="2.5" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M5 11a7 7 0 0 1 14 0v7a1.78 1.78 0 0 1 -3.1 1.4a1.65 1.65 0 0 0 -2.6 0a1.65 1.65 0 0 1 -2.6 0a1.65 1.65 0 0 0 -2.6 0a1.78 1.78 0 0 1 -3.1 -1.4v-7" /><path d="M10 10l.01 0" /><path d="M14 10l.01 0" /><path d="M10 14a3.5 3.5 0 0 0 4 0" />
</symbol>
<symbol id="icon-2.25" class="icon icon-tabler icon-tabler-ghost" viewBox="0 0 24 24" stroke-width="2.25" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round"><path stroke="none" d="M0 0h24v24H0z" fill="none"/><path d="M5 11a7 7 0 0 1 14 0v7a1.78 1.78 0 0 1 -3.1 1.4a1.65 1.65 0 0 0 -2.6 0a1.65 1.65 0 0 1 -2.6 0a1.65 1.65 0 0 0 -2.6 0a1.78 1.78 0 0 1 -3.1 -1.4v-7" /><path d="M10 10l.01 0" /><path d="M14 10l.01 0" /><path d="M10 14a3.5 3.5 0 0 0 4 0" />
</symbol>
<use xlink:href="#icon-.25" x="3" y="3" width="56" height="56" />
<use xlink:href="#icon-.5" x="75" y="3" width="56" height="56" />
<use xlink:href="#icon-.75" x="147" y="3" width="56" height="56" />
<use xlink:href="#icon-1" x="219" y="3" width="56" height="56" />
<use xlink:href="#icon-1.25" x="291" y="3" width="56" height="56" />
<use xlink:href="#icon-1.5" x="363" y="3" width="56" height="56" />
<use xlink:href="#icon-1.75" x="435" y="3" width="56" height="56" />
<use xlink:href="#icon-2" x="507" y="3" width="56" height="56" />
<use xlink:href="#icon-2.25" x="579" y="3" width="56" height="56" />
<use xlink:href="#icon-2.5" x="651" y="3" width="56" height="56" />
<use xlink:href="#icon-2.25" x="723" y="3" width="56" height="56" />
</svg>

Before

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

BIN
.github/icons.png vendored

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 MiB

14890
.github/icons.svg vendored

File diff suppressed because it is too large Load Diff

Before

Width:  |  Height:  |  Size: 2.7 MiB

BIN
.github/preview/icons-dark.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 MiB

20464
.github/preview/icons-dark.svg vendored Normal file

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 2.7 MiB

BIN
.github/preview/icons-filled-dark.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 236 KiB

2296
.github/preview/icons-filled-dark.svg vendored Normal file

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 457 KiB

BIN
.github/preview/icons-filled.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 306 KiB

2296
.github/preview/icons-filled.svg vendored Normal file

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 457 KiB

BIN
.github/preview/icons-outline-dark.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

18172
.github/preview/icons-outline-dark.svg vendored Normal file

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 2.3 MiB

BIN
.github/preview/icons-outline.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 MiB

18172
.github/preview/icons-outline.svg vendored Normal file

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 2.3 MiB

BIN
.github/preview/icons.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 MiB

20464
.github/preview/icons.svg vendored Normal file

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 2.7 MiB

BIN
.github/preview/random-icons.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 495 KiB

2004
.github/preview/random-icons.svg vendored Normal file

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 249 KiB

BIN
.github/preview/random-icons@2x.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

3
.gitignore vendored
View File

@ -20,7 +20,6 @@ yarn.lock
dist/
_import.csv
_import.tsv
random-icons.svg
.yarn
.yarnrc.yml
@ -36,4 +35,4 @@ packages/icons*/icons/*
.turbo
.sass-cache
!/**/.gitkeep
!/**/.gitkeep

View File

@ -7,7 +7,7 @@
"**/.DS_Store": true,
"**/Thumbs.db": true,
"**/.idea/": true,
"icons": true
"icons": false
},
"explorerExclude.backup": {}
}
}

View File

@ -1,7 +0,0 @@
source "https://rubygems.org"
git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
gem "jekyll", "~> 4.3.3"
gem "jekyll-include-cache", "~> 0.2.1"

View File

@ -9,10 +9,13 @@ plugins:
exclude:
- .idea
- package.json
- index.html
- tags.json
# - tags.json
- tags.html
collections:
icons:
output: false
icons-outline:
output: false
icons-solid:
output: false

View File

@ -1,9 +1,46 @@
{
"code-asterix": "code-asterisk",
"discount-2": "rosette-discount",
"discount-2-off": "rosette-discount-off",
"discount-check": "rosette-discount-check",
"discount-check-filled": "rosette-discount-check-filled",
"hand-rock": "hand-love-you",
"sort-deacending-small-big": "sort-descending-small-big"
"outline": {
"code-asterix": "code-asterisk",
"discount-2": "rosette-discount",
"discount-2-off": "rosette-discount-off",
"discount-check": "rosette-discount-check",
"hand-rock": "hand-love-you",
"sort-deacending-small-big": "sort-descending-small-big",
"circle-0": "circle-number-0",
"circle-1": "circle-number-1",
"circle-2": "circle-number-2",
"circle-3": "circle-number-3",
"circle-4": "circle-number-4",
"circle-5": "circle-number-5",
"circle-6": "circle-number-6",
"circle-7": "circle-number-7",
"circle-8": "circle-number-8",
"circle-9": "circle-number-9",
"hexagon-0": "hexagon-number-0",
"hexagon-1": "hexagon-number-1",
"hexagon-2": "hexagon-number-2",
"hexagon-3": "hexagon-number-3",
"hexagon-4": "hexagon-number-4",
"hexagon-5": "hexagon-number-5",
"hexagon-6": "hexagon-number-6",
"hexagon-7": "hexagon-number-7",
"hexagon-8": "hexagon-number-8",
"hexagon-9": "hexagon-number-9",
"square-0": "square-number-0",
"square-1": "square-number-1",
"square-2": "square-number-2",
"square-3": "square-number-3",
"square-4": "square-number-4",
"square-5": "square-number-5",
"square-6": "square-number-6",
"square-7": "square-number-7",
"square-8": "square-number-8",
"square-9": "square-number-9"
},
"filled": {
"discount-check": "rosette-discount-check"
}
}

View File

@ -1,9 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-12-hours" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M20 11a8.1 8.1 0 0 0 -15.5 -2m-.5 -4v4h4" />
<path d="M4 13c.468 3.6 3.384 6.546 7 7" />
<path d="M18 15h2a1 1 0 0 1 1 1v1a1 1 0 0 1 -1 1h-1a1 1 0 0 0 -1 1v1a1 1 0 0 0 1 1h2" />
<path d="M15 21v-6" />
</svg>

Before

Width:  |  Height:  |  Size: 509 B

View File

@ -1,8 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-123" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M3 10l2 -2v8" />
<path d="M9 8h3a1 1 0 0 1 1 1v2a1 1 0 0 1 -1 1h-2a1 1 0 0 0 -1 1v2a1 1 0 0 0 1 1h3" />
<path d="M17 8h2.5a1.5 1.5 0 0 1 1.5 1.5v1a1.5 1.5 0 0 1 -1.5 1.5h-1.5h1.5a1.5 1.5 0 0 1 1.5 1.5v1a1.5 1.5 0 0 1 -1.5 1.5h-2.5" />
</svg>

Before

Width:  |  Height:  |  Size: 536 B

View File

@ -1,11 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-24-hours" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M4 13c.325 2.532 1.881 4.781 4 6" />
<path d="M20 11a8.1 8.1 0 0 0 -15.5 -2" />
<path d="M4 5v4h4" />
<path d="M12 15h2a1 1 0 0 1 1 1v1a1 1 0 0 1 -1 1h-1a1 1 0 0 0 -1 1v1a1 1 0 0 0 1 1h2" />
<path d="M18 15v2a1 1 0 0 0 1 1h1" />
<path d="M21 15v6" />
</svg>

Before

Width:  |  Height:  |  Size: 563 B

View File

@ -1,10 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-2fa" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M7 16h-4l3.47 -4.66a2 2 0 1 0 -3.47 -1.54" />
<path d="M10 16v-8h4" />
<path d="M10 12l3 0" />
<path d="M17 16v-6a2 2 0 0 1 4 0v6" />
<path d="M17 13l4 0" />
</svg>

Before

Width:  |  Height:  |  Size: 463 B

View File

@ -1,9 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-360-view" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M14 6a1 1 0 0 0 -1 -1h-2a1 1 0 0 0 -1 1v6a1 1 0 0 0 1 1h2a1 1 0 0 0 1 -1v-2a1 1 0 0 0 -1 -1h-3" />
<path d="M3 5h2.5a1.5 1.5 0 0 1 1.5 1.5v1a1.5 1.5 0 0 1 -1.5 1.5h-1.5h1.5a1.5 1.5 0 0 1 1.5 1.5v1a1.5 1.5 0 0 1 -1.5 1.5h-2.5" />
<path d="M17 7v4a2 2 0 1 0 4 0v-4a2 2 0 1 0 -4 0z" />
<path d="M3 16c0 1.657 4.03 3 9 3s9 -1.343 9 -3" />
</svg>

Before

Width:  |  Height:  |  Size: 643 B

View File

@ -1,7 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-360" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M17 15.328c2.414 -.718 4 -1.94 4 -3.328c0 -2.21 -4.03 -4 -9 -4s-9 1.79 -9 4s4.03 4 9 4" />
<path d="M9 13l3 3l-3 3" />
</svg>

Before

Width:  |  Height:  |  Size: 418 B

View File

@ -1,17 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-3d-cube-sphere-off" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M6 17.6l-2 -1.1v-2.5" />
<path d="M4 10v-2.5l2 -1.1" />
<path d="M10 4.1l2 -1.1l2 1.1" />
<path d="M18 6.4l2 1.1v2.5" />
<path d="M20 14v2" />
<path d="M14 19.9l-2 1.1l-2 -1.1" />
<path d="M18 8.6l2 -1.1" />
<path d="M12 12v2.5" />
<path d="M12 18.5v2.5" />
<path d="M12 12l-2 -1.12" />
<path d="M6 8.6l-2 -1.1" />
<path d="M3 3l18 18" />
</svg>

Before

Width:  |  Height:  |  Size: 673 B

View File

@ -1,17 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-3d-cube-sphere" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M6 17.6l-2 -1.1v-2.5" />
<path d="M4 10v-2.5l2 -1.1" />
<path d="M10 4.1l2 -1.1l2 1.1" />
<path d="M18 6.4l2 1.1v2.5" />
<path d="M20 14v2.5l-2 1.12" />
<path d="M14 19.9l-2 1.1l-2 -1.1" />
<path d="M12 12l2 -1.1" />
<path d="M18 8.6l2 -1.1" />
<path d="M12 12l0 2.5" />
<path d="M12 18.5l0 2.5" />
<path d="M12 12l-2 -1.12" />
<path d="M6 8.6l-2 -1.1" />
</svg>

Before

Width:  |  Height:  |  Size: 686 B

View File

@ -1,10 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-3d-rotate" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M12 3a7 7 0 0 1 7 7v4l-3 -3" />
<path d="M22 11l-3 3" />
<path d="M8 15.5l-5 -3l5 -3l5 3v5.5l-5 3z" />
<path d="M3 12.5v5.5l5 3" />
<path d="M8 15.545l5 -3.03" />
</svg>

Before

Width:  |  Height:  |  Size: 474 B

View File

@ -1,10 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-a-b-2" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M16 21h3c.81 0 1.48 -.67 1.48 -1.48l.02 -.02c0 -.82 -.69 -1.5 -1.5 -1.5h-3v3z" />
<path d="M16 15h2.5c.84 -.01 1.5 .66 1.5 1.5s-.66 1.5 -1.5 1.5h-2.5v-3z" />
<path d="M4 9v-4c0 -1.036 .895 -2 2 -2s2 .964 2 2v4" />
<path d="M2.99 11.98a9 9 0 0 0 9 9m9 -9a9 9 0 0 0 -9 -9" />
<path d="M8 7h-4" />
</svg>

Before

Width:  |  Height:  |  Size: 602 B

View File

@ -1,10 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-a-b-off" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M3 16v-5.5a2.5 2.5 0 0 1 5 0v5.5m0 -4h-5" />
<path d="M12 12v6" />
<path d="M12 6v2" />
<path d="M16 8h3a2 2 0 1 1 0 4h-3m3 0a2 2 0 0 1 .83 3.82m-3.83 -3.82v-4" />
<path d="M3 3l18 18" />
</svg>

Before

Width:  |  Height:  |  Size: 497 B

View File

@ -1,8 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-a-b" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M3 16v-5.5a2.5 2.5 0 0 1 5 0v5.5m0 -4h-5" />
<path d="M12 6l0 12" />
<path d="M16 16v-8h3a2 2 0 0 1 0 4h-3m3 0a2 2 0 0 1 0 4h-3" />
</svg>

Before

Width:  |  Height:  |  Size: 433 B

View File

@ -1,17 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-abacus-off" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M5 5v16" />
<path d="M19 21v-2m0 -4v-12" />
<path d="M5 7h2m4 0h8" />
<path d="M5 15h10" />
<path d="M8 13v4" />
<path d="M11 13v4" />
<path d="M16 16v1" />
<path d="M14 5v4" />
<path d="M11 5v2" />
<path d="M8 8v1" />
<path d="M3 21h18" />
<path d="M3 3l18 18" />
</svg>

Before

Width:  |  Height:  |  Size: 591 B

View File

@ -1,16 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-abacus" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M5 3v18" />
<path d="M19 21v-18" />
<path d="M5 7h14" />
<path d="M5 15h14" />
<path d="M8 13v4" />
<path d="M11 13v4" />
<path d="M16 13v4" />
<path d="M14 5v4" />
<path d="M11 5v4" />
<path d="M8 5v4" />
<path d="M3 21h18" />
</svg>

Before

Width:  |  Height:  |  Size: 548 B

View File

@ -1,9 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-abc" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M3 16v-6a2 2 0 1 1 4 0v6" />
<path d="M3 13h4" />
<path d="M10 8v6a2 2 0 1 0 4 0v-1a2 2 0 1 0 -4 0v1" />
<path d="M20.732 12a2 2 0 0 0 -3.732 1v1a2 2 0 0 0 3.726 1.01" />
</svg>

Before

Width:  |  Height:  |  Size: 474 B

View File

@ -1,10 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-access-point-off" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M3 3l18 18" />
<path d="M14.828 9.172a4 4 0 0 1 1.172 2.828" />
<path d="M17.657 6.343a8 8 0 0 1 1.635 8.952" />
<path d="M9.168 14.828a4 4 0 0 1 0 -5.656" />
<path d="M6.337 17.657a8 8 0 0 1 0 -11.314" />
</svg>

Before

Width:  |  Height:  |  Size: 524 B

View File

@ -1,10 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-access-point" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M12 12l0 .01" />
<path d="M14.828 9.172a4 4 0 0 1 0 5.656" />
<path d="M17.657 6.343a8 8 0 0 1 0 11.314" />
<path d="M9.168 14.828a4 4 0 0 1 0 -5.656" />
<path d="M6.337 17.657a8 8 0 0 1 0 -11.314" />
</svg>

Before

Width:  |  Height:  |  Size: 515 B

View File

@ -1,6 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-accessible-off-filled" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M17 3.34a10 10 0 1 1 -14.995 8.984l-.005 -.324l.005 -.324a10 10 0 0 1 14.995 -8.336zm-1.051 6.844a1 1 0 0 0 -1.152 -.663l-.113 .03l-2.684 .895l-2.684 -.895l-.113 -.03a1 1 0 0 0 -.628 1.884l.109 .044l2.316 .771v.976l-1.832 2.75l-.06 .1a1 1 0 0 0 .237 1.21l.1 .076l.101 .06a1 1 0 0 0 1.21 -.237l.076 -.1l1.168 -1.752l1.168 1.752l.07 .093a1 1 0 0 0 1.653 -1.102l-.059 -.1l-1.832 -2.75v-.977l2.316 -.771l.109 -.044a1 1 0 0 0 .524 -1.221zm-3.949 -4.184a1.5 1.5 0 1 0 0 3a1.5 1.5 0 0 0 0 -3z" stroke-width="0" fill="currentColor" />
</svg>

Before

Width:  |  Height:  |  Size: 842 B

View File

@ -1,9 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-accessible-off" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M10 16.5l2 -3l2 3m-2 -3v-1.5m2.627 -1.376l.373 -.124m-6 0l2.231 .744" />
<path d="M20.042 16.045a9 9 0 0 0 -12.087 -12.087m-2.318 1.677a9 9 0 1 0 12.725 12.73" />
<path d="M12 8a.5 .5 0 1 0 -.5 -.5" />
<path d="M3 3l18 18" />
</svg>

Before

Width:  |  Height:  |  Size: 540 B

View File

@ -1,8 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-accessible" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M12 12m-9 0a9 9 0 1 0 18 0a9 9 0 1 0 -18 0" />
<path d="M10 16.5l2 -3l2 3m-2 -3v-2l3 -1m-6 0l3 1" />
<circle cx="12" cy="7.5" r=".5" fill="currentColor" />
</svg>

Before

Width:  |  Height:  |  Size: 464 B

View File

@ -1,6 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-activity-heartbeat" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M3 12h4.5l1.5 -6l4 12l2 -9l1.5 3h4.5" />
</svg>

Before

Width:  |  Height:  |  Size: 353 B

View File

@ -1,6 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-activity" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M3 12h4l3 8l4 -16l3 8h4" />
</svg>

Before

Width:  |  Height:  |  Size: 330 B

View File

@ -1,11 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-ad-2" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M11.933 5h-6.933v16h13v-8" />
<path d="M14 17h-5" />
<path d="M9 13h5v-4h-5z" />
<path d="M15 5v-2" />
<path d="M18 6l2 -2" />
<path d="M19 9h2" />
</svg>

Before

Width:  |  Height:  |  Size: 456 B

View File

@ -1,6 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-ad-circle-filled" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M12 2c5.523 0 10 4.477 10 10s-4.477 10 -10 10c-5.43 0 -9.848 -4.327 -9.996 -9.72l-.004 -.28l.004 -.28c.148 -5.393 4.566 -9.72 9.996 -9.72zm-3.5 6a2.5 2.5 0 0 0 -2.495 2.336l-.005 .164v4.5l.007 .117a1 1 0 0 0 1.986 0l.007 -.117v-1h1v1l.007 .117a1 1 0 0 0 1.986 0l.007 -.117v-4.5l-.005 -.164a2.5 2.5 0 0 0 -2.495 -2.336zm6.5 0h-1a1 1 0 0 0 -1 1v6a1 1 0 0 0 1 1h1a3 3 0 0 0 3 -3v-2a3 3 0 0 0 -3 -3zm0 2a1 1 0 0 1 1 1v2a1 1 0 0 1 -.883 .993l-.117 .007v-4zm-6.5 0a.5 .5 0 0 1 .492 .41l.008 .09v1.5h-1v-1.5l.008 -.09a.5 .5 0 0 1 .492 -.41z" stroke-width="0" fill="currentColor" />
</svg>

Before

Width:  |  Height:  |  Size: 885 B

View File

@ -1,13 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-ad-circle-off" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M4.91 4.949a9.968 9.968 0 0 0 -2.91 7.051c0 5.523 4.477 10 10 10a9.968 9.968 0 0 0 7.05 -2.909" />
<path d="M20.778 16.793a9.955 9.955 0 0 0 1.222 -4.793c0 -5.523 -4.477 -10 -10 -10c-1.74 0 -3.376 .444 -4.8 1.225" />
<path d="M7 15v-4.5a1.5 1.5 0 0 1 2.138 -1.358" />
<path d="M9.854 9.853c.094 .196 .146 .415 .146 .647v4.5" />
<path d="M7 13h3" />
<path d="M14 14v1h1" />
<path d="M17 13v-2a2 2 0 0 0 -2 -2h-1v1" />
<path d="M3 3l18 18" />
</svg>

Before

Width:  |  Height:  |  Size: 762 B

View File

@ -1,9 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-ad-circle" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M12 12m-10 0a10 10 0 1 0 20 0a10 10 0 1 0 -20 0" />
<path d="M7 15v-4.5a1.5 1.5 0 0 1 3 0v4.5" />
<path d="M7 13h3" />
<path d="M14 9v6h1a2 2 0 0 0 2 -2v-2a2 2 0 0 0 -2 -2h-1z" />
</svg>

Before

Width:  |  Height:  |  Size: 489 B

View File

@ -1,6 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-ad-filled" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M19 4h-14a3 3 0 0 0 -3 3v10a3 3 0 0 0 3 3h14a3 3 0 0 0 3 -3v-10a3 3 0 0 0 -3 -3zm-10 4a3 3 0 0 1 2.995 2.824l.005 .176v4a1 1 0 0 1 -1.993 .117l-.007 -.117v-1h-2v1a1 1 0 0 1 -1.993 .117l-.007 -.117v-4a3 3 0 0 1 3 -3zm0 2a1 1 0 0 0 -.993 .883l-.007 .117v1h2v-1a1 1 0 0 0 -1 -1zm8 -2a1 1 0 0 1 .993 .883l.007 .117v6a1 1 0 0 1 -.883 .993l-.117 .007h-1.5a2.5 2.5 0 1 1 .326 -4.979l.174 .029v-2.05a1 1 0 0 1 .883 -.993l.117 -.007zm-1.41 5.008l-.09 -.008a.5 .5 0 0 0 -.09 .992l.09 .008h.5v-.5l-.008 -.09a.5 .5 0 0 0 -.318 -.379l-.084 -.023z" stroke-width="0" fill="currentColor" />
</svg>

Before

Width:  |  Height:  |  Size: 878 B

View File

@ -1,11 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-ad-off" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M9 5h10a2 2 0 0 1 2 2v10m-2 2h-14a2 2 0 0 1 -2 -2v-10a2 2 0 0 1 2 -2" />
<path d="M7 15v-4a2 2 0 0 1 2 -2m2 2v4" />
<path d="M7 13h4" />
<path d="M17 9v4" />
<path d="M16.115 12.131c.33 .149 .595 .412 .747 .74" />
<path d="M3 3l18 18" />
</svg>

Before

Width:  |  Height:  |  Size: 548 B

View File

@ -1,9 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-ad" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M3 5m0 2a2 2 0 0 1 2 -2h14a2 2 0 0 1 2 2v10a2 2 0 0 1 -2 2h-14a2 2 0 0 1 -2 -2z" />
<path d="M7 15v-4a2 2 0 0 1 4 0v4" />
<path d="M7 13l4 0" />
<path d="M17 9v6h-1.5a1.5 1.5 0 1 1 1.5 -1.5" />
</svg>

Before

Width:  |  Height:  |  Size: 496 B

View File

@ -1,12 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-address-book-off" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M8 4h10a2 2 0 0 1 2 2v10m-.57 3.399c-.363 .37 -.87 .601 -1.43 .601h-10a2 2 0 0 1 -2 -2v-12" />
<path d="M10 16h6" />
<path d="M11 11a2 2 0 0 0 2 2m2 -2a2 2 0 0 0 -2 -2" />
<path d="M4 8h3" />
<path d="M4 12h3" />
<path d="M4 16h3" />
<path d="M3 3l18 18" />
</svg>

Before

Width:  |  Height:  |  Size: 580 B

View File

@ -1,11 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-address-book" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M20 6v12a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2 -2v-12a2 2 0 0 1 2 -2h10a2 2 0 0 1 2 2z" />
<path d="M10 16h6" />
<path d="M13 11m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0" />
<path d="M4 8h3" />
<path d="M4 12h3" />
<path d="M4 16h3" />
</svg>

Before

Width:  |  Height:  |  Size: 539 B

View File

@ -1,14 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-adjustments-alt" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M4 8h4v4h-4z" />
<path d="M6 4l0 4" />
<path d="M6 12l0 8" />
<path d="M10 14h4v4h-4z" />
<path d="M12 4l0 10" />
<path d="M12 18l0 2" />
<path d="M16 5h4v4h-4z" />
<path d="M18 4l0 1" />
<path d="M18 9l0 11" />
</svg>

Before

Width:  |  Height:  |  Size: 537 B

View File

@ -1,15 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-adjustments-bolt" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M4 10a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M6 4v4" />
<path d="M6 12v8" />
<path d="M10 16a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M12 4v10" />
<path d="M19 16l-2 3h4l-2 3" />
<path d="M12 18v2" />
<path d="M16 7a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M18 4v1" />
<path d="M18 9v3" />
</svg>

Before

Width:  |  Height:  |  Size: 623 B

View File

@ -1,16 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-adjustments-cancel" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M4 10a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M6 4v4" />
<path d="M6 12v8" />
<path d="M13.499 14.675a2 2 0 1 0 -1.499 3.325" />
<path d="M12 4v10" />
<path d="M12 18v2" />
<path d="M16 7a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M18 4v1" />
<path d="M18 9v3" />
<path d="M19 19m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0" />
<path d="M17 21l4 -4" />
</svg>

Before

Width:  |  Height:  |  Size: 676 B

View File

@ -1,14 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-adjustments-check" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M4 10a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M6 4v4" />
<path d="M6 12v8" />
<path d="M13.823 15.176a2 2 0 1 0 -2.638 2.651" />
<path d="M12 4v10" />
<path d="M16 7a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M18 4v1" />
<path d="M18 9v5" />
<path d="M15 19l2 2l4 -4" />
</svg>

Before

Width:  |  Height:  |  Size: 599 B

View File

@ -1,16 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-adjustments-code" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M4 10a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M6 4v4" />
<path d="M6 12v8" />
<path d="M13.557 14.745a2 2 0 1 0 -1.557 3.255" />
<path d="M12 4v10" />
<path d="M12 18v2" />
<path d="M16 7a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M18 4v1" />
<path d="M18 9v4" />
<path d="M20 21l2 -2l-2 -2" />
<path d="M17 17l-2 2l2 2" />
</svg>

Before

Width:  |  Height:  |  Size: 655 B

View File

@ -1,21 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-adjustments-cog" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M4 10a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M6 4v4" />
<path d="M6 12v8" />
<path d="M13.199 14.399a2 2 0 1 0 -1.199 3.601" />
<path d="M12 4v10" />
<path d="M12 18v2" />
<path d="M16 7a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M18 4v1" />
<path d="M18 9v2.5" />
<path d="M19.001 19m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0" />
<path d="M19.001 15.5v1.5" />
<path d="M19.001 21v1.5" />
<path d="M22.032 17.25l-1.299 .75" />
<path d="M17.27 20l-1.3 .75" />
<path d="M15.97 17.25l1.3 .75" />
<path d="M20.733 20l1.3 .75" />
</svg>

Before

Width:  |  Height:  |  Size: 858 B

View File

@ -1,16 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-adjustments-dollar" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M4 10a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M6 4v4" />
<path d="M6 12v8" />
<path d="M13.366 14.54a2 2 0 1 0 -.216 3.097" />
<path d="M12 4v10" />
<path d="M12 18v2" />
<path d="M16 7a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M18 4v1" />
<path d="M18 9v1" />
<path d="M21 15h-2.5a1.5 1.5 0 0 0 0 3h1a1.5 1.5 0 0 1 0 3h-2.5" />
<path d="M19 21v1m0 -8v1" />
</svg>

Before

Width:  |  Height:  |  Size: 692 B

View File

@ -1,16 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-adjustments-down" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M4 10a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M6 4v4" />
<path d="M6 12v8" />
<path d="M13.945 15.53a2 2 0 1 0 -1.945 2.47" />
<path d="M12 4v10" />
<path d="M12 18v2" />
<path d="M16 7a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M18 4v1" />
<path d="M18 9v3" />
<path d="M19 16v6" />
<path d="M22 19l-3 3l-3 -3" />
</svg>

Before

Width:  |  Height:  |  Size: 646 B

View File

@ -1,16 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-adjustments-exclamation" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M4 10a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M6 4v4" />
<path d="M6 12v8" />
<path d="M10 16a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M12 4v10" />
<path d="M12 18v2" />
<path d="M16 7a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M18 4v1" />
<path d="M18 9v3" />
<path d="M19 16v3" />
<path d="M19 22v.01" />
</svg>

Before

Width:  |  Height:  |  Size: 646 B

View File

@ -1,8 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-adjustments-filled" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M6 3a1 1 0 0 1 .993 .883l.007 .117v3.171a3.001 3.001 0 0 1 0 5.658v7.171a1 1 0 0 1 -1.993 .117l-.007 -.117v-7.17a3.002 3.002 0 0 1 -1.995 -2.654l-.005 -.176l.005 -.176a3.002 3.002 0 0 1 1.995 -2.654v-3.17a1 1 0 0 1 1 -1z" stroke-width="0" fill="currentColor" />
<path d="M12 3a1 1 0 0 1 .993 .883l.007 .117v9.171a3.001 3.001 0 0 1 0 5.658v1.171a1 1 0 0 1 -1.993 .117l-.007 -.117v-1.17a3.002 3.002 0 0 1 -1.995 -2.654l-.005 -.176l.005 -.176a3.002 3.002 0 0 1 1.995 -2.654v-9.17a1 1 0 0 1 1 -1z" stroke-width="0" fill="currentColor" />
<path d="M18 3a1 1 0 0 1 .993 .883l.007 .117v.171a3.001 3.001 0 0 1 0 5.658v10.171a1 1 0 0 1 -1.993 .117l-.007 -.117v-10.17a3.002 3.002 0 0 1 -1.995 -2.654l-.005 -.176l.005 -.176a3.002 3.002 0 0 1 1.995 -2.654v-.17a1 1 0 0 1 1 -1z" stroke-width="0" fill="currentColor" />
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -1,13 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-adjustments-heart" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M4 10a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M6 4v4" />
<path d="M6 12v8" />
<path d="M12 4v8.5" />
<path d="M16 7a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M18 4v1" />
<path d="M18 9v2.5" />
<path d="M18 22l3.35 -3.284a2.143 2.143 0 0 0 .005 -3.071a2.242 2.242 0 0 0 -3.129 -.006l-.224 .22l-.223 -.22a2.242 2.242 0 0 0 -3.128 -.006a2.143 2.143 0 0 0 -.006 3.071l3.355 3.296z" />
</svg>

Before

Width:  |  Height:  |  Size: 708 B

View File

@ -1,14 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-adjustments-horizontal" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M14 6m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0" />
<path d="M4 6l8 0" />
<path d="M16 6l4 0" />
<path d="M8 12m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0" />
<path d="M4 12l2 0" />
<path d="M10 12l10 0" />
<path d="M17 18m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0" />
<path d="M4 18l11 0" />
<path d="M19 18l1 0" />
</svg>

Before

Width:  |  Height:  |  Size: 624 B

View File

@ -1,15 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-adjustments-minus" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M4 10a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M6 4v4" />
<path d="M6 12v8" />
<path d="M13.954 15.574a2 2 0 1 0 -1.954 2.426" />
<path d="M12 4v10" />
<path d="M12 18v2" />
<path d="M16 7a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M18 4v1" />
<path d="M18 9v6" />
<path d="M16 19h6" />
</svg>

Before

Width:  |  Height:  |  Size: 616 B

View File

@ -1,15 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-adjustments-off" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M4 10a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M6 6v2" />
<path d="M6 12v8" />
<path d="M10 16a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M12 4v4m0 4v2" />
<path d="M12 18v2" />
<path d="M16 7a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M18 4v1" />
<path d="M18 9v5m0 4v2" />
<path d="M3 3l18 18" />
</svg>

Before

Width:  |  Height:  |  Size: 625 B

View File

@ -1,16 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-adjustments-pause" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M4 10a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M6 4v4" />
<path d="M6 12v8" />
<path d="M13.627 14.836a2 2 0 1 0 -.62 2.892" />
<path d="M12 4v10" />
<path d="M12 18v2" />
<path d="M16 7a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M18 4v1" />
<path d="M17 17v5" />
<path d="M21 17v5" />
<path d="M18 9v4.5" />
</svg>

Before

Width:  |  Height:  |  Size: 640 B

View File

@ -1,16 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-adjustments-pin" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M4 10a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M6 4v4" />
<path d="M6 12v8" />
<path d="M13.071 14.31a2 2 0 1 0 -1.071 3.69" />
<path d="M12 4v10" />
<path d="M12 18v2" />
<path d="M16 7a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M18 4v1" />
<path d="M18 9v2.5" />
<path d="M21.121 20.121a3 3 0 1 0 -4.242 0c.418 .419 1.125 1.045 2.121 1.879c1.051 -.89 1.759 -1.516 2.121 -1.879z" />
<path d="M19 18v.01" />
</svg>

Before

Width:  |  Height:  |  Size: 737 B

View File

@ -1,16 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-adjustments-plus" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M4 10a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M6 4v4" />
<path d="M6 12v8" />
<path d="M13.958 15.592a2 2 0 1 0 -1.958 2.408" />
<path d="M12 4v10" />
<path d="M12 18v2" />
<path d="M16 7a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M18 4v1" />
<path d="M18 9v3" />
<path d="M16 19h6" />
<path d="M19 16v6" />
</svg>

Before

Width:  |  Height:  |  Size: 639 B

View File

@ -1,16 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-adjustments-question" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M4 10a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M6 4v4" />
<path d="M6 12v8" />
<path d="M13.577 14.77a2 2 0 1 0 .117 2.295" />
<path d="M12 4v10" />
<path d="M19 22v.01" />
<path d="M19 19a2.003 2.003 0 0 0 .914 -3.782a1.98 1.98 0 0 0 -2.414 .483" />
<path d="M12 18v2" />
<path d="M16 7a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M18 4v1" />
<path d="M18 9v2" />
</svg>

Before

Width:  |  Height:  |  Size: 698 B

View File

@ -1,15 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-adjustments-search" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M4 10a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M6 4v4" />
<path d="M6 12v8" />
<path d="M12 14a2 2 0 0 0 -1.042 3.707" />
<path d="M12 4v10" />
<path d="M16 7a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M18 4v1" />
<path d="M18 9v2" />
<path d="M18 18m-3 0a3 3 0 1 0 6 0a3 3 0 1 0 -6 0" />
<path d="M20.2 20.2l1.8 1.8" />
</svg>

Before

Width:  |  Height:  |  Size: 651 B

View File

@ -1,16 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-adjustments-share" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M4 10a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M6 4v4" />
<path d="M6 12v8" />
<path d="M13.387 14.56a2 2 0 1 0 -.798 3.352" />
<path d="M12 4v10" />
<path d="M12 18v2" />
<path d="M16 7a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M18 4v1" />
<path d="M16 22l5 -5" />
<path d="M21 21.5v-4.5h-4.5" />
<path d="M18 9v4" />
</svg>

Before

Width:  |  Height:  |  Size: 651 B

View File

@ -1,13 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-adjustments-star" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M4 10a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M6 4v4" />
<path d="M6 12v8" />
<path d="M12 4v9.5" />
<path d="M16 7a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M18 4v1" />
<path d="M17.8 20.817l-2.172 1.138a.392 .392 0 0 1 -.568 -.41l.415 -2.411l-1.757 -1.707a.389 .389 0 0 1 .217 -.665l2.428 -.352l1.086 -2.193a.392 .392 0 0 1 .702 0l1.086 2.193l2.428 .352a.39 .39 0 0 1 .217 .665l-1.757 1.707l.414 2.41a.39 .39 0 0 1 -.567 .411l-2.172 -1.138z" />
<path d="M18 9v1" />
</svg>

Before

Width:  |  Height:  |  Size: 794 B

View File

@ -1,16 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-adjustments-up" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M4 10a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M6 4v4" />
<path d="M6 12v8" />
<path d="M13.927 15.462a2 2 0 1 0 -1.927 2.538" />
<path d="M12 4v10" />
<path d="M12 18v2" />
<path d="M16 7a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M18 4v1" />
<path d="M18 9v3" />
<path d="M19 22v-6" />
<path d="M22 19l-3 -3l-3 3" />
</svg>

Before

Width:  |  Height:  |  Size: 647 B

View File

@ -1,16 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-adjustments-x" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M4 10a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M6 4v4" />
<path d="M6 12v8" />
<path d="M13.653 14.874a2 2 0 1 0 -.586 2.818" />
<path d="M12 4v10" />
<path d="M12 18v2" />
<path d="M16 7a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M18 4v1" />
<path d="M18 9v4" />
<path d="M22 22l-5 -5" />
<path d="M17 22l5 -5" />
</svg>

Before

Width:  |  Height:  |  Size: 642 B

View File

@ -1,14 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-adjustments" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M4 10a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M6 4v4" />
<path d="M6 12v8" />
<path d="M10 16a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M12 4v10" />
<path d="M12 18v2" />
<path d="M16 7a2 2 0 1 0 4 0a2 2 0 0 0 -4 0" />
<path d="M18 4v1" />
<path d="M18 9v11" />
</svg>

Before

Width:  |  Height:  |  Size: 585 B

View File

@ -1,6 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-aerial-lift" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M4 5l16 -2m-8 1v10m-5.106 -6h10.306c2.45 3 2.45 9 -.2 12h-10.106c-2.544 -3 -2.544 -9 0 -12zm-1.894 6h14" />
</svg>

Before

Width:  |  Height:  |  Size: 413 B

View File

@ -1,6 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-affiliate-filled" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M18.5 3a2.5 2.5 0 1 1 -.912 4.828l-4.556 4.555a5.475 5.475 0 0 1 .936 3.714l2.624 .787a2.5 2.5 0 1 1 -.575 1.916l-2.623 -.788a5.5 5.5 0 0 1 -10.39 -2.29l-.004 -.222l.004 -.221a5.5 5.5 0 0 1 2.984 -4.673l-.788 -2.624a2.498 2.498 0 0 1 -2.194 -2.304l-.006 -.178l.005 -.164a2.5 2.5 0 1 1 4.111 2.071l.787 2.625a5.475 5.475 0 0 1 3.714 .936l4.555 -4.556a2.487 2.487 0 0 1 -.167 -.748l-.005 -.164l.005 -.164a2.5 2.5 0 0 1 2.495 -2.336z" stroke-width="0" fill="currentColor" />
</svg>

Before

Width:  |  Height:  |  Size: 782 B

View File

@ -1,11 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-affiliate" width="24" height="24" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
<path d="M5.931 6.936l1.275 4.249m5.607 5.609l4.251 1.275" />
<path d="M11.683 12.317l5.759 -5.759" />
<path d="M5.5 5.5m-1.5 0a1.5 1.5 0 1 0 3 0a1.5 1.5 0 1 0 -3 0" />
<path d="M18.5 5.5m-1.5 0a1.5 1.5 0 1 0 3 0a1.5 1.5 0 1 0 -3 0" />
<path d="M18.5 18.5m-1.5 0a1.5 1.5 0 1 0 3 0a1.5 1.5 0 1 0 -3 0" />
<path d="M8.5 15.5m-4.5 0a4.5 4.5 0 1 0 9 0a4.5 4.5 0 1 0 -9 0" />
</svg>

Before

Width:  |  Height:  |  Size: 675 B

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