tabler icons vue package

This commit is contained in:
tabler.developer@gmail.com 2023-08-03 23:38:46 +02:00
parent 783b33de8e
commit 1975570518
29 changed files with 87692 additions and 3367 deletions

View File

@ -10,7 +10,8 @@
"dev": "vite"
},
"dependencies": {
"@tabler/icons": "workspace:*"
"@tabler/icons": "workspace:*",
"@tabler/icons-vue": "workspace:*"
},
"devDependencies": {
"@types/node": "^18.6.5",

View File

@ -27,8 +27,9 @@
<td>Arguments can be passed to toSvg() function of TablerIcon</td>
<td><span v-html="tablerIcons.abc.toSvg({style: 'color: red'})"/></td>
</tr>
</table>
<IconAccessible size="32"/>
</table>
<Icon360 color="blue" :size="100"/>
</template>
<script lang="ts">
@ -40,11 +41,14 @@ export default {
<script setup lang="ts">
import { onMounted } from 'vue'
import tablerIcons from '@tabler/icons'
import { Icon360 } from '@tabler/icons-vue'
import code from "@tabler/icons/svg/code.svg"
onMounted(() => {
console.log('tablerIcons.activity.toSvg(): ', tablerIcons.activity.toSvg())
console.log('tablerIcons.activity: ', tablerIcons.activity)
console.log('tablerIcons.activity: ', JSON.stringify(tablerIcons.activity.nodes))
console.log('test ', Icon360)
})
</script>

View File

@ -10,7 +10,7 @@
"workspaces": [
"packages/*",
"apps/*"
],
],
"publishConfig": {
"access": "public"
},
@ -62,17 +62,23 @@
"@release-it-plugins/workspaces": "^3.2.0",
"@rollup/plugin-babel": "5.2.1",
"@rollup/plugin-commonjs": "15.1.0",
"@rollup/plugin-json": "^6.0.0",
"@rollup/plugin-node-resolve": "9.0.0",
"@rollup/plugin-typescript": "8.3.3",
"@svgr/babel-plugin-replace-jsx-attribute-value": "5.0.1",
"@svgr/core": "5.4.0",
"@types/node": "^18.6.5",
"@vue/babel-plugin-jsx": "^1.1.1",
"adm-zip": "^0.5.10",
"babel-jest": "^29.4.1",
"cheerio": "^1.0.0-rc.12",
"csv-parser": "^3.0.0",
"esbuild": "^0.17.5",
"fs-extra": "^10.1.0",
"glob": "7.1.6",
"html-minifier": "^4.0.0",
"jest": "^29.4.1",
"jest-environment-jsdom": "^29.4.1",
"lodash.template": "4.5.0",
"minimist": "1.2.6",
"node-sass": "8.0.0",
@ -80,6 +86,7 @@
"prettier": "^2.8.1",
"release-it": "15.6.0",
"rollup": "2.78.1",
"rollup-plugin-dts": "^5.2.0",
"rollup-plugin-esbuild": "^4.10.2",
"rollup-plugin-filesize": "9.1.2",
"rollup-plugin-license": "^3.0.1",
@ -90,7 +97,10 @@
"svg-outline-stroke": "1.3.1",
"svgo": "^2.8.0",
"svgpath": "^2.6.0",
"svgson": "^5.2.1"
"svgson": "^5.2.1",
"tslib": "^2.5.0",
"turbo": "^1.9.3",
"typescript": "^4.9.5"
},
"release-it": {
"plugins": {

View File

@ -25,7 +25,7 @@
]
},
"dependencies": {
"@tabler/icons": "2.4.0"
"@tabler/icons": "workspace:*"
},
"keywords": [
"icons",

View File

@ -30,7 +30,7 @@
]
},
"dependencies": {
"@tabler/icons": "2.4.0"
"@tabler/icons": "workspace:*"
},
"keywords": [
"icons",

View File

@ -30,7 +30,7 @@
]
},
"dependencies": {
"@tabler/icons": "2.4.0"
"@tabler/icons": "workspace:*"
},
"keywords": [
"icons",

View File

@ -35,7 +35,7 @@
"test": "pnpm run clean && pnpm run build:icons && jest --env=jsdom"
},
"dependencies": {
"@tabler/icons": "2.4.0"
"@tabler/icons": "workspace:*"
},
"peerDependencies": {
"preact": "^10.5.13"

View File

@ -35,7 +35,7 @@
"test": "pnpm run clean && pnpm run build:icons && jest --env=jsdom"
},
"dependencies": {
"@tabler/icons": "2.4.0",
"@tabler/icons": "workspace:*",
"prop-types": "^15.7.2"
},
"devDependencies": {

View File

@ -35,7 +35,7 @@
"test": "echo 'TODO'"
},
"dependencies": {
"@tabler/icons": "2.4.0"
"@tabler/icons": "workspace:*"
},
"devDependencies": {
"@solidjs/testing-library": "^0.6.1",

View File

@ -36,7 +36,7 @@
"test": "pnpm run clean && pnpm run build:icons && jest --env=jsdom"
},
"dependencies": {
"@tabler/icons": "2.4.0"
"@tabler/icons": "workspace:*"
},
"devDependencies": {
"@testing-library/svelte": "^3.0.3",

View File

@ -1,3 +1,3 @@
{
"presets": ["@babel/preset-env"]
}
"presets": ["@babel/preset-env", "transform-vue-jsx"]
}

View File

@ -1,39 +1,50 @@
#!/usr/bin/env node
import { buildIcons } from '../../.build/build-icons.mjs'
import path from 'path'
import tablerIcons from '@tabler/icons'
import fs from 'fs-extra'
import { toPascalCase } from '../../.build/helpers.mjs'
const componentTemplate = ({
// Build vue icons
(() => {
const icons = Object.keys(tablerIcons).map(name => ({
name,
namePascal,
children
}) => `\
import createVueComponent from '../createVueComponent';
export default createVueComponent('${name}', '${namePascal}', ${JSON.stringify(children)});`;
namePascal: toPascalCase(`icon ${name}`)
}))
const indexItemTemplate = ({
name,
namePascal
}) => `export { default as ${namePascal} } from './icons/${namePascal}';`
const typeDefinitionsTemplate = () => `import { SVGAttributes, FunctionalComponent } from 'vue';
const index = []
const typings = [`
import { SVGAttributes, FunctionalComponent } from 'vue';
declare module '@tabler/icons-vue'
// Create interface extending SVGAttributes
export interface SVGProps extends Partial<SVGAttributes> {
size?: 24 | number
size?: number
}
`]
// Generated icons`
icons.map(icon => {
const svgNodes = tablerIcons[icon.name].nodes.map((node, i) => {
node[1].key = `svg-${i}`
return node
})
.filter((i) => {
const [name, attributes] = i
return !attributes.d || attributes.d !== 'M0 0h24v24H0z'
})
const svgAttrs = tablerIcons[icon.name].attrs
const component = `\
import createVueComponent from '../createVueComponent';
export default createVueComponent(${JSON.stringify(svgNodes)}, ${JSON.stringify(svgAttrs)});`
const indexTypeTemplate = ({
namePascal
}) => `export declare const ${namePascal}: (props: SVGProps) => FunctionalComponent<SVGProps>;`
const filepath = `./src/icons/${icon.namePascal}.ts`
fs.ensureDirSync(path.dirname(filepath))
fs.writeFileSync(filepath, component, 'utf8')
buildIcons({
name: 'icons-vue',
componentTemplate,
indexItemTemplate,
typeDefinitionsTemplate,
indexTypeTemplate
index.push(`export { default as ${icon.namePascal} } from './icons/${icon.namePascal}'`)
typings.push(`export declare const ${icon.namePascal}: (props: SVGProps) => FunctionalComponent<SVGProps>;`)
})
fs.outputFile('./src/index.ts', index.join('\n\n') , 'utf8')
fs.outputFile('./dist/index.d.ts', typings.join('\n\n') , 'utf8')
})();

View File

@ -17,37 +17,34 @@
"url": "git+https://github.com/tabler/tabler-icons.git",
"directory": "packages/icons-vue"
},
"main": "dist/cjs/tabler-icons-vue.js",
"main:umd": "dist/umd/tabler-icons-vue.js",
"module": "dist/esm/tabler-icons-vue.js",
"unpkg": "dist/umd/tabler-icons-vue.min.js",
"typings": "dist/tabler-icons-vue.d.ts",
"main": "dist/cjs/index.js",
"main:es": "dist/es/index.js",
"main:umd": "dist/umd/index.js",
"main:umd:min": "dist/umd/index.js",
"module": "dist/esm/index.js",
"unpkg": "dist/umd/index.js",
"typings": "dist/index.d.ts",
"sideEffects": false,
"files": [
"dist"
],
"scripts": {
"build": "pnpm run clean && pnpm run copy:license && pnpm run build:icons && pnpm run build:bundles",
"build:icons": "node build.mjs",
"build:bundles": "rollup -c ./rollup.config.mjs",
"build": "pnpm run clean && node build.mjs && rollup -c ./rollup.config.mjs",
"copy:license": "cp ../../LICENSE ./LICENSE",
"clean": "rm -rf dist && rm -rf ./src/icons/*.js",
"test": "pnpm run clean && pnpm run build:icons && jest --env=jsdom"
"clean": "rm -rf dist && rm -rf ./src/icons",
"test": "jest --env=jsdom"
},
"dependencies": {
"@tabler/icons": "2.4.0"
"@tabler/icons": "workspace:*"
},
"peerDependencies": {
"vue": ">=3.0.1"
},
"devDependencies": {
"@babel/preset-env": "7.11.5",
"@testing-library/vue": "^6.6.1",
"@vue/babel-plugin-transform-vue-jsx": "^1.4.0",
"@vue/compiler-sfc": "^3.2.45",
"@vue/test-utils": "^2.2.4",
"babel-jest": "^29.4.1",
"jest": "^29.4.1",
"jest-environment-jsdom": "^29.4.1",
"jest-serializer-vue": "^3.1.0",
"vue": "^3.2.45",
"vue-jest": "^5.0.0-alpha.10"

View File

@ -1,66 +1,88 @@
import fs from 'fs'
import { getRollupPlugins } from '../../.build/build-icons.mjs'
import bundleSize from '@atomico/rollup-plugin-sizes'
import { visualizer } from 'rollup-plugin-visualizer'
import license from 'rollup-plugin-license'
import esbuild from 'rollup-plugin-esbuild'
// import dts from "rollup-plugin-dts";
import pkg from "./package.json" assert { type: "json" }
import typescript from "@rollup/plugin-typescript";
const pkg = JSON.parse(fs.readFileSync('package.json', 'utf-8'))
const sharedOutput = {
name: '@tabler/icons-vue',
sourcemap: true,
globals: {
vue: 'vue',
}
}
const packageName = '@tabler/icons-vue';
const outputFileName = 'tabler-icons-vue';
const outputDir = 'dist';
const inputs = ['./src/tabler-icons-vue.js'];
const bundles = [
const sharedPlugins = [
license({
banner: `${pkg.name} v${pkg.version} - ${pkg.license}`
}),
bundleSize(),
visualizer({
sourcemap: false,
filename: `stats/${pkg.name}.html`
}),
typescript({ tsconfig: "./tsconfig.json" })
]
export default [
{
format: 'umd',
inputs,
outputDir,
minify: true,
input: "src/index.ts",
output: [
{
...sharedOutput,
file: pkg.main,
format: "cjs",
},
{
...sharedOutput,
file: pkg.module,
format: "esm",
},
{
file: pkg['main:es'],
format: "es",
...sharedOutput,
},
{
file: pkg['main:umd'],
format: "umd",
...sharedOutput,
}
],
plugins: [
...sharedPlugins,
esbuild()
]
},
{
format: 'umd',
inputs,
outputDir,
},
{
format: 'cjs',
inputs,
outputDir,
},
{
format: 'es',
inputs,
outputDir,
},
{
format: 'esm',
inputs,
outputDir,
preserveModules: true,
},
input: "src/index.ts",
output: [
{
...sharedOutput,
file: pkg['main:umd:min'],
format: 'umd',
},
],
plugins: [
...sharedPlugins,
esbuild({
minify: true
})
]
},
// {
// input: "dist/esm/types/index.d.ts",
// output: [
// {
// file: "dist/index.d.ts",
// format: "esm"
// }
// ],
// plugins: [
// dts()
// ]
// },
];
const configs = bundles
.map(({ inputs, outputDir, format, minify, preserveModules }) =>
inputs.map(input => ({
input,
plugins: getRollupPlugins(pkg, minify),
external: ['vue'],
output: {
name: packageName,
...(preserveModules
? {
dir: `${outputDir}/${format}`,
}
: {
file: `${outputDir}/${format}/${outputFileName}${minify ? '.min' : ''}.js`,
}),
format,
preserveModules,
sourcemap: true,
globals: {
vue: 'vue',
},
},
})),
)
.flat();
export default configs;

View File

@ -1,27 +0,0 @@
import { h } from 'vue';
import defaultAttributes from './defaultAttributes';
const createVueComponent = (iconName, iconNamePascal, iconNode) => (
{ size, color, stroke, ...props },
{ attrs, slots }
) => {
return h(
'svg',
{
...defaultAttributes,
width: size || defaultAttributes.width,
height: size || defaultAttributes.height,
stroke: color || defaultAttributes.stroke,
strokeWidth: stroke || defaultAttributes['stroke-width'],
...attrs,
class: ['tabler-icon', `tabler-icon-${iconName}`, attrs?.class || ''],
...props,
},
[
...iconNode.map(child => h(...child)),
...(slots.default ? [slots.default()] : [])
],
);
};
export default createVueComponent;

View File

@ -0,0 +1,26 @@
import { h } from 'vue';
const createVueComponent = (svgNodes: [string, Record<string, string>][], svgAttrs: Record<string, string | number>) => (
{ size, color, stroke, ...props },
{ attrs, slots }
) => {
return h(
'svg',
{
...svgAttrs,
width: size || svgAttrs.width,
height: size || svgAttrs.height,
stroke: color || svgAttrs.stroke,
strokeWidth: stroke || svgAttrs['stroke-width'],
...attrs,
class: [svgAttrs.class, attrs?.class || ''],
...props,
},
[
...svgNodes.map(child => h(...child)),
...(slots.default ? [slots.default()] : [])
],
);
};
export default createVueComponent;

View File

@ -1,11 +0,0 @@
export default {
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',
};

File diff suppressed because it is too large Load Diff

View File

@ -1,2 +0,0 @@
export * from './icons';
export { default as createVueComponent } from './createVueComponent';

View File

@ -0,0 +1,16 @@
{
"include": ["src/**/*"],
"compilerOptions": {
"rootDir": "src",
"allowJs": true,
"outDir": "dist",
"esModuleInterop": true,
"resolveJsonModule": true,
"moduleResolution": "node",
// declarations are created by build script
// "declaration": true,
// "emitDeclarationOnly": true,
// "declarationMap": true,
// "declarationDir": "types",
}
}

View File

@ -38,7 +38,7 @@
]
},
"dependencies": {
"@tabler/icons": "2.4.0"
"@tabler/icons": "workspace:*"
},
"keywords": [
"icons",

View File

@ -1,18 +1,21 @@
import fs from 'fs'
import path from 'path'
import { fileURLToPath } from 'url'
import { parseSync } from 'svgson'
const svgFiles = fs.readdirSync(path.resolve(path.dirname(fileURLToPath(import.meta.url)), './svg'))
.filter((file) => path.extname(file) === '.svg')
.map(svgFile => {
const name = path.basename(svgFile, '.svg'),
contents = fs.readFileSync(path.join(path.resolve(path.dirname(fileURLToPath(import.meta.url)), './svg'), svgFile), 'utf-8').trim().replace('<path stroke="none" d="M0 0h24v24H0z" fill="none"/>', '')
contents = fs.readFileSync(path.join(path.resolve(path.dirname(fileURLToPath(import.meta.url)), './svg'), svgFile), 'utf-8').trim().replace('<path stroke="none" d="M0 0h24v24H0z" fill="none"/>', ''),
obj = parseSync(contents.replace('<path stroke="none" d="M0 0h24v24H0z" fill="none"/>', ''));
return {
name,
contents
contents,
obj
};
});
});
// Build sprites
(() => {
@ -20,7 +23,7 @@ const svgFiles = fs.readdirSync(path.resolve(path.dirname(fileURLToPath(import.m
svgFiles.forEach(function(file, i) {
const svgFileContent = file.contents.replace(/<svg[^>]+>/g, '').replace(/<\/svg>/g, '').replace(/\n+/g, '').replace(/>\s+</g, '><').trim()
svgContent += `<symbol id="tabler-${file.name}" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">${svgFileContent}</symbol>`
})
})
let svg = `<svg xmlns="http://www.w3.org/2000/svg"><defs>${svgContent}</defs></svg>`
@ -28,9 +31,23 @@ const svgFiles = fs.readdirSync(path.resolve(path.dirname(fileURLToPath(import.m
fs.writeFileSync('./src/tabler-sprite-nostroke.svg', svg.replace(/stroke-width="2"\s/g, ''))
})();
// Buiuld nodes
// Build nodes
(() => {
const iconNodes = svgFiles.reduce((acc, { name, contents }) => {
const iconNodes = svgFiles.reduce((acc, { name, obj }) => {
acc[name] = obj.children.map(({ name, attributes }) => [name, attributes]);
return acc;
}, {});
const iconNodesStringified = JSON.stringify(iconNodes, null, 2);
fs.writeFileSync(`./src/tabler-nodes.json`, iconNodesStringified);
})();
// Build contents
(() => {
const iconContents = svgFiles.reduce((acc, { name, contents }) => {
var lines = contents.split('\n');
lines.splice(0,1);
var trimmedContent = lines.join('\n').replace('</svg>', '').replace(/(\r\n|\n|\r)/gm, '').replace(/(\s){2,}/g, '');
@ -40,8 +57,7 @@ const svgFiles = fs.readdirSync(path.resolve(path.dirname(fileURLToPath(import.m
return acc;
}, {});
const iconNodesStringified = JSON.stringify(iconNodes, null, 2);
const iconContentsStringified = JSON.stringify(iconContents, null, 2);
fs.writeFileSync(`./src/tabler-nodes.json`, iconNodesStringified);
fs.writeFileSync(`./src/tabler-contents.json`, iconContentsStringified);
})();

View File

@ -19,6 +19,7 @@
"dist/*",
"tags.json",
"src/tabler-nodes.json",
"src/tabler-contents.json",
"svg/*",
"src/tabler-sprite.svg",
"src/tabler-sprite-nostroke.svg"
@ -34,7 +35,7 @@
},
"scripts": {
"clean": "rm -rf dist",
"build": "rm -rf dist && node build.mjs && rollup -c ./rollup.config.mjs",
"build": "pnpm run clean && node build.mjs && rollup -c ./rollup.config.mjs",
"test": "jest --env=jsdom"
},
"keywords": [
@ -46,22 +47,6 @@
"front-end",
"web"
],
"devDependencies": {
"@atomico/rollup-plugin-sizes": "^1.1.4",
"@rollup/plugin-json": "^6.0.0",
"@rollup/plugin-typescript": "8.3.3",
"@types/node": "^18.6.5",
"babel-jest": "^29.4.1",
"jest": "^29.4.1",
"jest-environment-jsdom": "^29.4.1",
"rollup": "2.78.1",
"rollup-plugin-dts": "^5.2.0",
"rollup-plugin-esbuild": "^4.10.2",
"rollup-plugin-license": "^3.0.1",
"rollup-plugin-visualizer": "^5.8.3",
"tslib": "^2.5.0",
"typescript": "^4.9.5"
},
"jest": {
"testEnvironmentOptions": {
"customExportConditions": [

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,7 @@
type Name = string
type Attrs = Record<string, string | number>
type Content = string
type Nodes = Array<Array<string | Record<string, string>>>
const DEFAULT_ATTRS = {
xmlns: "http://www.w3.org/2000/svg",
@ -18,10 +19,12 @@ class TablerIcon {
name: Name;
content: Content;
attrs: Attrs;
nodes: Nodes;
constructor(name: Name, contents: Content) {
constructor(name: Name, contents: Content, nodes: Nodes) {
this.name = name;
this.content = contents;
this.nodes = nodes;
this.attrs = {
...DEFAULT_ATTRS,
...{ class: `icon icon-tabler icon-tabler-${name}` },

View File

@ -1,11 +1,12 @@
import TablerIcon from './tabler-icon';
import tablerNodes from './tabler-nodes.json';
import tablerContents from './tabler-contents.json';
// TODO [!] Error: Could not resolve './tabler-nodes.json' from dist/esm/types/tabler-icons.d.ts
//type iconName = keyof typeof tablerNodes
const icons: Record<string, TablerIcon> = Object.keys(tablerNodes)
.map(iconNode => new TablerIcon(iconNode, tablerNodes[iconNode]))
.map(iconNode => new TablerIcon(iconNode, tablerContents[iconNode], tablerNodes[iconNode]))
.reduce((object, icon) => {
object[icon.name] = icon;
return object;

File diff suppressed because it is too large Load Diff

View File

@ -14,17 +14,23 @@ importers:
'@release-it-plugins/workspaces': ^3.2.0
'@rollup/plugin-babel': 5.2.1
'@rollup/plugin-commonjs': 15.1.0
'@rollup/plugin-json': ^6.0.0
'@rollup/plugin-node-resolve': 9.0.0
'@rollup/plugin-typescript': 8.3.3
'@svgr/babel-plugin-replace-jsx-attribute-value': 5.0.1
'@svgr/core': 5.4.0
'@types/node': ^18.6.5
'@vue/babel-plugin-jsx': ^1.1.1
adm-zip: ^0.5.10
babel-jest: ^29.4.1
cheerio: ^1.0.0-rc.12
csv-parser: ^3.0.0
esbuild: ^0.17.5
fs-extra: ^10.1.0
glob: 7.1.6
html-minifier: ^4.0.0
jest: ^29.4.1
jest-environment-jsdom: ^29.4.1
lodash.template: 4.5.0
minimist: 1.2.6
node-sass: 8.0.0
@ -32,6 +38,7 @@ importers:
prettier: ^2.8.1
release-it: 15.6.0
rollup: 2.78.1
rollup-plugin-dts: ^5.2.0
rollup-plugin-esbuild: ^4.10.2
rollup-plugin-filesize: 9.1.2
rollup-plugin-license: ^3.0.1
@ -43,6 +50,9 @@ importers:
svgo: ^2.8.0
svgpath: ^2.6.0
svgson: ^5.2.1
tslib: ^2.5.0
turbo: ^1.9.3
typescript: ^4.9.5
devDependencies:
'@atomico/rollup-plugin-sizes': 1.1.4_rollup@2.78.1
'@babel/cli': 7.21.0_@babel+core@7.11.6
@ -54,17 +64,23 @@ importers:
'@release-it-plugins/workspaces': 3.2.0_release-it@15.6.0
'@rollup/plugin-babel': 5.2.1_b644q46buv54od2vqg3a6ywbxm
'@rollup/plugin-commonjs': 15.1.0_rollup@2.78.1
'@rollup/plugin-json': 6.0.0_rollup@2.78.1
'@rollup/plugin-node-resolve': 9.0.0_rollup@2.78.1
'@rollup/plugin-typescript': 8.3.3_4oxn4kkd532fbh3a5t6trtlwbi
'@svgr/babel-plugin-replace-jsx-attribute-value': 5.0.1
'@svgr/core': 5.4.0
'@types/node': 18.14.6
'@vue/babel-plugin-jsx': 1.1.1_@babel+core@7.11.6
adm-zip: 0.5.10
babel-jest: 29.4.3_@babel+core@7.11.6
cheerio: 1.0.0-rc.12
csv-parser: 3.0.0
esbuild: 0.17.11
fs-extra: 10.1.0
glob: 7.1.6
html-minifier: 4.0.0
jest: 29.4.3_@types+node@18.14.6
jest-environment-jsdom: 29.4.3
lodash.template: 4.5.0
minimist: 1.2.6
node-sass: 8.0.0
@ -72,6 +88,7 @@ importers:
prettier: 2.8.4
release-it: 15.6.0
rollup: 2.78.1
rollup-plugin-dts: 5.2.0_6icld7gtnsips6z26rrcmjn6xq
rollup-plugin-esbuild: 4.10.3_wiyvtq36mx3ij4uzo2xayajjjm
rollup-plugin-filesize: 9.1.2
rollup-plugin-license: 3.0.1_rollup@2.78.1
@ -83,10 +100,14 @@ importers:
svgo: 2.8.0
svgpath: 2.6.0
svgson: 5.2.1
tslib: 2.5.0
turbo: 1.9.3
typescript: 4.9.5
apps/demo:
specifiers:
'@tabler/icons': workspace:*
'@tabler/icons-vue': workspace:*
'@types/node': ^18.6.5
'@vitejs/plugin-vue': ^3.0.1
'@vue/tsconfig': ^0.1.3
@ -96,6 +117,7 @@ importers:
vue-router: ^4.1.6
dependencies:
'@tabler/icons': link:../../packages/icons
'@tabler/icons-vue': link:../../packages/icons-vue
devDependencies:
'@types/node': 18.14.6
'@vitejs/plugin-vue': 3.2.0_vite@3.2.5+vue@3.2.47
@ -106,52 +128,23 @@ importers:
vue-router: 4.1.6_vue@3.2.47
packages/icons:
specifiers:
'@atomico/rollup-plugin-sizes': ^1.1.4
'@rollup/plugin-json': ^6.0.0
'@rollup/plugin-typescript': 8.3.3
'@types/node': ^18.6.5
babel-jest: ^29.4.1
jest: ^29.4.1
jest-environment-jsdom: ^29.4.1
rollup: 2.78.1
rollup-plugin-dts: ^5.2.0
rollup-plugin-esbuild: ^4.10.2
rollup-plugin-license: ^3.0.1
rollup-plugin-visualizer: ^5.8.3
tslib: ^2.5.0
typescript: ^4.9.5
devDependencies:
'@atomico/rollup-plugin-sizes': 1.1.4_rollup@2.78.1
'@rollup/plugin-json': 6.0.0_rollup@2.78.1
'@rollup/plugin-typescript': 8.3.3_4oxn4kkd532fbh3a5t6trtlwbi
'@types/node': 18.14.6
babel-jest: 29.4.3
jest: 29.4.3_@types+node@18.14.6
jest-environment-jsdom: 29.4.3
rollup: 2.78.1
rollup-plugin-dts: 5.2.0_6icld7gtnsips6z26rrcmjn6xq
rollup-plugin-esbuild: 4.10.3_rollup@2.78.1
rollup-plugin-license: 3.0.1_rollup@2.78.1
rollup-plugin-visualizer: 5.9.0_rollup@2.78.1
tslib: 2.5.0
typescript: 4.9.5
specifiers: {}
packages/icons-eps:
specifiers:
'@tabler/icons': 2.4.0
'@tabler/icons': workspace:*
dependencies:
'@tabler/icons': link:../icons
packages/icons-pdf:
specifiers:
'@tabler/icons': 2.4.0
'@tabler/icons': workspace:*
dependencies:
'@tabler/icons': link:../icons
packages/icons-png:
specifiers:
'@tabler/icons': 2.4.0
'@tabler/icons': workspace:*
dependencies:
'@tabler/icons': link:../icons
@ -159,7 +152,7 @@ importers:
specifiers:
'@babel/preset-env': 7.11.5
'@preact/preset-vite': ^2.5.0
'@tabler/icons': 2.4.0
'@tabler/icons': workspace:*
'@testing-library/jest-dom': ^5.16.5
'@testing-library/preact': ^3.2.2
babel-jest: ^29.4.1
@ -184,7 +177,7 @@ importers:
specifiers:
'@babel/preset-env': 7.11.5
'@babel/preset-react': 7.10.4
'@tabler/icons': 2.4.0
'@tabler/icons': workspace:*
'@testing-library/react': ^11.2.6
babel-jest: ^29.4.1
jest: ^29.4.1
@ -210,7 +203,7 @@ importers:
packages/icons-solidjs:
specifiers:
'@solidjs/testing-library': ^0.6.1
'@tabler/icons': 2.4.0
'@tabler/icons': workspace:*
babel-jest: ^29.4.1
babel-preset-solid: ^1.5.4
jest: ^29.4.1
@ -228,7 +221,7 @@ importers:
packages/icons-svelte:
specifiers:
'@tabler/icons': 2.4.0
'@tabler/icons': workspace:*
'@testing-library/svelte': ^3.0.3
'@tsconfig/svelte': ^3.0.0
babel-jest: ^29.4.1
@ -259,34 +252,28 @@ importers:
packages/icons-vue:
specifiers:
'@babel/preset-env': 7.11.5
'@tabler/icons': 2.4.0
'@tabler/icons': workspace:*
'@testing-library/vue': ^6.6.1
'@vue/babel-plugin-transform-vue-jsx': ^1.4.0
'@vue/compiler-sfc': ^3.2.45
'@vue/test-utils': ^2.2.4
babel-jest: ^29.4.1
jest: ^29.4.1
jest-environment-jsdom: ^29.4.1
jest-serializer-vue: ^3.1.0
vue: ^3.2.45
vue-jest: ^5.0.0-alpha.10
dependencies:
'@tabler/icons': link:../icons
devDependencies:
'@babel/preset-env': 7.11.5
'@testing-library/vue': 6.6.1_a2ihsjreowava2sm4iorpgwkom
'@vue/babel-plugin-transform-vue-jsx': 1.4.0
'@vue/compiler-sfc': 3.2.47
'@vue/test-utils': 2.3.0_vue@3.2.47
babel-jest: 29.4.3
jest: 29.4.3
jest-environment-jsdom: 29.4.3
jest-serializer-vue: 3.1.0
vue: 3.2.47
vue-jest: 5.0.0-alpha.10_6kqvd3iytt2uikiig4l6ngscza
vue-jest: 5.0.0-alpha.10_vue@3.2.47
packages/icons-webfont:
specifiers:
'@tabler/icons': 2.4.0
'@tabler/icons': workspace:*
webfont: ^11.2.26
dependencies:
'@tabler/icons': link:../icons
@ -1064,6 +1051,15 @@ packages:
'@babel/helper-plugin-utils': 7.20.2
dev: true
/@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.11.6:
resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.11.6
'@babel/helper-plugin-utils': 7.20.2
dev: true
/@babel/plugin-syntax-bigint/7.8.3_@babel+core@7.21.0:
resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==}
peerDependencies:
@ -1141,6 +1137,15 @@ packages:
'@babel/helper-plugin-utils': 7.20.2
dev: true
/@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.11.6:
resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/core': 7.11.6
'@babel/helper-plugin-utils': 7.20.2
dev: true
/@babel/plugin-syntax-import-meta/7.10.4_@babel+core@7.21.0:
resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==}
peerDependencies:
@ -4230,6 +4235,10 @@ packages:
vue: 3.2.47
dev: true
/@vue/babel-helper-vue-jsx-merge-props/1.4.0:
resolution: {integrity: sha512-JkqXfCkUDp4PIlFdDQ0TdXoIejMtTHP67/pvxlgeY+u5k3LEdKuWZ3LK6xkxo52uDoABIVyRwqVkfLQJhk7VBA==}
dev: true
/@vue/babel-helper-vue-transform-on/1.0.2:
resolution: {integrity: sha512-hz4R8tS5jMn8lDq6iD+yWL6XNB699pGIVLk7WSJnn1dbpjaazsjZQkieJoRX6gW5zpYSCFqQ7jUquPNY65tQYA==}
dev: true
@ -4251,6 +4260,19 @@ packages:
- supports-color
dev: true
/@vue/babel-plugin-transform-vue-jsx/1.4.0:
resolution: {integrity: sha512-Fmastxw4MMx0vlgLS4XBX0XiBbUFzoMGeVXuMV08wyOfXdikAFqBTuYPR0tlk+XskL19EzHc39SgjrPGY23JnA==}
peerDependencies:
'@babel/core': ^7.0.0-0
dependencies:
'@babel/helper-module-imports': 7.18.6
'@babel/plugin-syntax-jsx': 7.18.6
'@vue/babel-helper-vue-jsx-merge-props': 1.4.0
html-tags: 2.0.0
lodash.kebabcase: 4.1.1
svg-tags: 1.0.0
dev: true
/@vue/compiler-core/3.2.47:
resolution: {integrity: sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==}
dependencies:
@ -4659,6 +4681,24 @@ packages:
- supports-color
dev: true
/babel-jest/29.4.3_@babel+core@7.11.6:
resolution: {integrity: sha512-o45Wyn32svZE+LnMVWv/Z4x0SwtLbh4FyGcYtR20kIWd+rdrDZ9Fzq8Ml3MYLD+mZvEdzCjZsCnYZ2jpJyQ+Nw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
peerDependencies:
'@babel/core': ^7.8.0
dependencies:
'@babel/core': 7.11.6
'@jest/transform': 29.4.3
'@types/babel__core': 7.20.0
babel-plugin-istanbul: 6.1.1
babel-preset-jest: 29.4.3_@babel+core@7.11.6
chalk: 4.1.2
graceful-fs: 4.2.10
slash: 3.0.0
transitivePeerDependencies:
- supports-color
dev: true
/babel-jest/29.4.3_@babel+core@7.21.0:
resolution: {integrity: sha512-o45Wyn32svZE+LnMVWv/Z4x0SwtLbh4FyGcYtR20kIWd+rdrDZ9Fzq8Ml3MYLD+mZvEdzCjZsCnYZ2jpJyQ+Nw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@ -4773,6 +4813,26 @@ packages:
'@babel/plugin-syntax-top-level-await': 7.14.5
dev: true
/babel-preset-current-node-syntax/1.0.1_@babel+core@7.11.6:
resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==}
peerDependencies:
'@babel/core': ^7.0.0
dependencies:
'@babel/core': 7.11.6
'@babel/plugin-syntax-async-generators': 7.8.4_@babel+core@7.11.6
'@babel/plugin-syntax-bigint': 7.8.3_@babel+core@7.11.6
'@babel/plugin-syntax-class-properties': 7.12.13_@babel+core@7.11.6
'@babel/plugin-syntax-import-meta': 7.10.4_@babel+core@7.11.6
'@babel/plugin-syntax-json-strings': 7.8.3_@babel+core@7.11.6
'@babel/plugin-syntax-logical-assignment-operators': 7.10.4_@babel+core@7.11.6
'@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3_@babel+core@7.11.6
'@babel/plugin-syntax-numeric-separator': 7.10.4_@babel+core@7.11.6
'@babel/plugin-syntax-object-rest-spread': 7.8.3_@babel+core@7.11.6
'@babel/plugin-syntax-optional-catch-binding': 7.8.3_@babel+core@7.11.6
'@babel/plugin-syntax-optional-chaining': 7.8.3_@babel+core@7.11.6
'@babel/plugin-syntax-top-level-await': 7.14.5_@babel+core@7.11.6
dev: true
/babel-preset-current-node-syntax/1.0.1_@babel+core@7.21.0:
resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==}
peerDependencies:
@ -4803,6 +4863,17 @@ packages:
babel-preset-current-node-syntax: 1.0.1
dev: true
/babel-preset-jest/29.4.3_@babel+core@7.11.6:
resolution: {integrity: sha512-gWx6COtSuma6n9bw+8/F+2PCXrIgxV/D1TJFnp6OyBK2cxPWg0K9p/sriNYeifKjpUkMViWQ09DSWtzJQRETsw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
peerDependencies:
'@babel/core': ^7.0.0
dependencies:
'@babel/core': 7.11.6
babel-plugin-jest-hoist: 29.4.3
babel-preset-current-node-syntax: 1.0.1_@babel+core@7.11.6
dev: true
/babel-preset-jest/29.4.3_@babel+core@7.21.0:
resolution: {integrity: sha512-gWx6COtSuma6n9bw+8/F+2PCXrIgxV/D1TJFnp6OyBK2cxPWg0K9p/sriNYeifKjpUkMViWQ09DSWtzJQRETsw==}
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
@ -7051,6 +7122,11 @@ packages:
uglify-js: 3.17.4
dev: true
/html-tags/2.0.0:
resolution: {integrity: sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==}
engines: {node: '>=4'}
dev: true
/html-tags/3.2.0:
resolution: {integrity: sha512-vy7ClnArOZwCnqZgvv+ddgHgJiAFXe3Ge9ML5/mBctVJoUoYPCdxVucOywjDARn6CVoh3dRSFdPHy2sX80L0Wg==}
engines: {node: '>=8'}
@ -8496,6 +8572,10 @@ packages:
resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==}
dev: true
/lodash.kebabcase/4.1.1:
resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==}
dev: true
/lodash.template/4.5.0:
resolution: {integrity: sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==}
dependencies:
@ -10424,23 +10504,6 @@ packages:
'@babel/code-frame': 7.18.6
dev: true
/rollup-plugin-esbuild/4.10.3_rollup@2.78.1:
resolution: {integrity: sha512-RILwUCgnCL5vo8vyZ/ZpwcqRuE5KmLizEv6BujBQfgXFZ6ggcS0FiYvQN+gsTJfWCMaU37l0Fosh4eEufyO97Q==}
engines: {node: '>=12'}
peerDependencies:
esbuild: '>=0.10.1'
rollup: ^1.20.0 || ^2.0.0
dependencies:
'@rollup/pluginutils': 4.2.1
debug: 4.3.4
es-module-lexer: 0.9.3
joycon: 3.1.1
jsonc-parser: 3.2.0
rollup: 2.78.1
transitivePeerDependencies:
- supports-color
dev: true
/rollup-plugin-esbuild/4.10.3_wiyvtq36mx3ij4uzo2xayajjjm:
resolution: {integrity: sha512-RILwUCgnCL5vo8vyZ/ZpwcqRuE5KmLizEv6BujBQfgXFZ6ggcS0FiYvQN+gsTJfWCMaU37l0Fosh4eEufyO97Q==}
engines: {node: '>=12'}
@ -11556,6 +11619,67 @@ packages:
safe-buffer: 5.2.1
dev: true
/turbo-darwin-64/1.9.3:
resolution: {integrity: sha512-0dFc2cWXl82kRE4Z+QqPHhbEFEpUZho1msHXHWbz5+PqLxn8FY0lEVOHkq5tgKNNEd5KnGyj33gC/bHhpZOk5g==}
cpu: [x64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
/turbo-darwin-arm64/1.9.3:
resolution: {integrity: sha512-1cYbjqLBA2zYE1nbf/qVnEkrHa4PkJJbLo7hnuMuGM0bPzh4+AnTNe98gELhqI1mkTWBu/XAEeF5u6dgz0jLNA==}
cpu: [arm64]
os: [darwin]
requiresBuild: true
dev: true
optional: true
/turbo-linux-64/1.9.3:
resolution: {integrity: sha512-UuBPFefawEwpuxh5pM9Jqq3q4C8M0vYxVYlB3qea/nHQ80pxYq7ZcaLGEpb10SGnr3oMUUs1zZvkXWDNKCJb8Q==}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/turbo-linux-arm64/1.9.3:
resolution: {integrity: sha512-vUrNGa3hyDtRh9W0MkO+l1dzP8Co2gKnOVmlJQW0hdpOlWlIh22nHNGGlICg+xFa2f9j4PbQlWTsc22c019s8Q==}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: true
optional: true
/turbo-windows-64/1.9.3:
resolution: {integrity: sha512-0BZ7YaHs6r+K4ksqWus1GKK3W45DuDqlmfjm/yuUbTEVc8szmMCs12vugU2Zi5GdrdJSYfoKfEJ/PeegSLIQGQ==}
cpu: [x64]
os: [win32]
requiresBuild: true
dev: true
optional: true
/turbo-windows-arm64/1.9.3:
resolution: {integrity: sha512-QJUYLSsxdXOsR1TquiOmLdAgtYcQ/RuSRpScGvnZb1hY0oLc7JWU0llkYB81wVtWs469y8H9O0cxbKwCZGR4RQ==}
cpu: [arm64]
os: [win32]
requiresBuild: true
dev: true
optional: true
/turbo/1.9.3:
resolution: {integrity: sha512-ID7mxmaLUPKG/hVkp+h0VuucB1U99RPCJD9cEuSEOdIPoSIuomcIClEJtKamUsdPLhLCud+BvapBNnhgh58Nzw==}
hasBin: true
requiresBuild: true
optionalDependencies:
turbo-darwin-64: 1.9.3
turbo-darwin-arm64: 1.9.3
turbo-linux-64: 1.9.3
turbo-linux-arm64: 1.9.3
turbo-windows-64: 1.9.3
turbo-windows-arm64: 1.9.3
dev: true
/tweetnacl/0.14.5:
resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==}
dev: true
@ -11906,7 +12030,7 @@ packages:
acorn-walk: 8.2.0
dev: true
/vue-jest/5.0.0-alpha.10_6kqvd3iytt2uikiig4l6ngscza:
/vue-jest/5.0.0-alpha.10_vue@3.2.47:
resolution: {integrity: sha512-iN62cTi4AL0UsgxEyVeJtHG6qXEv+8Ci2wX1vP3b/dAZvyBRmqy5aJHQrP6VCEuio+HgHQ1LAZ+ccM2pouBmlg==}
peerDependencies:
'@babel/core': 7.x
@ -11922,11 +12046,9 @@ packages:
optional: true
dependencies:
'@babel/plugin-transform-modules-commonjs': 7.21.2
babel-jest: 29.4.3
chalk: 2.4.2
convert-source-map: 1.9.0
extract-from-css: 0.4.4
jest: 29.4.3
source-map: 0.5.6
tsconfig: 7.0.0
vue: 3.2.47