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
|
|
@ -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')
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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])
|
||||
})
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
})
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
})
|
||||
})
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
||||
})
|
||||
})
|
||||
|
|
|
|||
|
|
@ -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
|
||||
})
|
||||
|
|
|
|||
|
|
@ -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`
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
}
|
||||
})
|
||||
|
|
@ -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"
|
||||
},
|
||||
};
|
||||
};
|
||||
|
Before Width: | Height: | Size: 2.3 MiB |
|
Before Width: | Height: | Size: 2.7 MiB |
|
Before Width: | Height: | Size: 20 KiB |
|
|
@ -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 |
|
Before Width: | Height: | Size: 46 KiB |
|
Before Width: | Height: | Size: 29 KiB |
|
|
@ -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 |
|
Before Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 3.4 MiB |
|
Before Width: | Height: | Size: 2.7 MiB |
|
After Width: | Height: | Size: 2.7 MiB |
|
After Width: | Height: | Size: 2.7 MiB |
|
After Width: | Height: | Size: 236 KiB |
|
After Width: | Height: | Size: 457 KiB |
|
After Width: | Height: | Size: 306 KiB |
|
After Width: | Height: | Size: 457 KiB |
|
After Width: | Height: | Size: 2.4 MiB |
|
After Width: | Height: | Size: 2.3 MiB |
|
After Width: | Height: | Size: 3.3 MiB |
|
After Width: | Height: | Size: 2.3 MiB |
|
After Width: | Height: | Size: 3.7 MiB |
|
After Width: | Height: | Size: 2.7 MiB |
|
After Width: | Height: | Size: 495 KiB |
|
After Width: | Height: | Size: 249 KiB |
|
After Width: | Height: | Size: 1.0 MiB |
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
"**/.DS_Store": true,
|
||||
"**/Thumbs.db": true,
|
||||
"**/.idea/": true,
|
||||
"icons": true
|
||||
"icons": false
|
||||
},
|
||||
"explorerExclude.backup": {}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
7
Gemfile
|
|
@ -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"
|
||||
|
|
@ -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
|
||||
|
|
|
|||
51
aliases.json
|
|
@ -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"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |
|
|
@ -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 |