瀏覽代碼

tabler icons 3 init (#1882)

* tabler icons 3 init

* Create moody-bobcats-chew.md
Paweł Kuna 1 年之前
父節點
當前提交
6cbe888a71

+ 5 - 0
.changeset/moody-bobcats-chew.md

@@ -0,0 +1,5 @@
+---
+"@tabler/core": patch
+---
+
+Update `@tabler/icons` to v3.0

+ 37 - 0
build/import-icons.js

@@ -0,0 +1,37 @@
+#!/usr/bin/env node
+
+'use strict'
+
+const fs = require('fs'),
+	path = require('path');
+
+const iconsTags = require('../node_modules/@tabler/icons/icons.json'),
+	iconsPkg = require('../node_modules/@tabler/icons/package.json');
+
+const prepareSvgFile = (svg) => {
+	return svg.replace(/\n/g, '').replace(/>\s+</g, '><').replace(/\s+/g, ' ')
+}
+
+let svgList = {}
+for (let iconName in iconsTags) {
+	let iconData = iconsTags[iconName]
+	svgList[iconName] = {
+		name: iconName,
+		svg: {
+			outline: iconData.styles.outline ? prepareSvgFile(fs.readFileSync(path.join(__dirname, `../node_modules/@tabler/icons/icons/outline/${iconName}.svg`), 'utf8')) : null,
+			filled: iconData.styles.filled ? prepareSvgFile(fs.readFileSync(path.join(__dirname, `../node_modules/@tabler/icons/icons/filled/${iconName}.svg`), 'utf8')) : null,
+		}
+	}
+}
+
+fs.writeFileSync(
+	path.join(__dirname, `../src/pages/_data/icons-info.json`),
+	JSON.stringify({
+		version: iconsPkg.version,
+		count: Object.values(svgList).reduce((acc, icon) => {
+			return acc + (icon.svg.outline ? 1 : 0) + (icon.svg.filled ? 1 : 0)
+		}, 0)
+	})
+)
+
+fs.writeFileSync(path.join(__dirname, `../src/pages/_data/icons.json`), JSON.stringify(svgList))

+ 0 - 44
gulpfile.js

@@ -26,8 +26,6 @@ const gulp = require('gulp'),
 	yargs = require('yargs/yargs'),
 	cp = require('child_process'),
 	pkg = require('./package.json'),
-	iconsTags = require('./node_modules/@tabler/icons/tags.json'),
-	iconsPkg = require('./node_modules/@tabler/icons/package.json'),
 	year = new Date().getFullYear(),
 	argv = yargs(process.argv).argv
 
@@ -75,48 +73,6 @@ if (!Array.prototype.flat) {
 	})
 }
 
-/**
- * Import tabler-icons form npm and generate Jekyll `.yml` data files
- */
-gulp.task('svg-icons', (cb) => {
-	const prepareSvgFile = (svg) => {
-		return svg.replace(/\n/g, '').replace(/>\s+</g, '><')
-	}
-
-	let svgList = {}
-	for (let iconName in iconsTags) {
-		let iconData = iconsTags[iconName]
-		svgList[iconName] = {
-			name: iconName,
-			version: iconData.version,
-			category: iconData.category,
-			tags: iconData.tags,
-			unicode: iconData.unicode,
-			svg: prepareSvgFile(fs
-				.readFileSync(
-					path.join(
-						__dirname,
-						`./node_modules/@tabler/icons/icons/${iconName}.svg`
-					)
-				)
-				.toString())
-
-		}
-	}
-
-	fs.writeFileSync(
-		path.join(__dirname, `${srcDir}/pages/_data/icons-info.json`),
-		JSON.stringify({
-			version: iconsPkg.version,
-			count: Object.keys(svgList).length,
-		})
-	)
-
-	fs.writeFileSync(`${srcDir}/pages/_data/icons.json`, JSON.stringify(svgList))
-
-	cb()
-})
-
 /**
  * Generate CHANGELOG.md
  */

+ 2 - 2
package.json

@@ -13,7 +13,7 @@
     "svg-optimize": "svgo -f svg/brand --pretty",
     "unused-files": "node build/unused-files.js",
     "release": "release-it",
-    "svg-icons": "gulp svg-icons",
+    "svg-icons": "node build/import-icons.js",
     "bundlewatch": "bundlewatch",
     "storybook": "start-storybook -p 6006",
     "changelog": "gulp changelog",
@@ -187,7 +187,7 @@
   },
   "dependencies": {
     "@popperjs/core": "^2.11.8",
-    "@tabler/icons": "^2.47.0",
+    "@tabler/icons": "^3.2.0",
     "bootstrap": "5.3.3"
   },
   "peerDependencies": {

+ 181 - 26
pnpm-lock.yaml

@@ -12,8 +12,8 @@ dependencies:
     specifier: ^2.11.8
     version: 2.11.8
   '@tabler/icons':
-    specifier: ^2.47.0
-    version: 2.47.0
+    specifier: ^3.2.0
+    version: 3.2.0
   bootstrap:
     specifier: 5.3.3
     version: 5.3.3(@popperjs/[email protected])
@@ -191,8 +191,23 @@ packages:
     resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==}
     engines: {node: '>=6.0.0'}
     dependencies:
-      '@jridgewell/gen-mapping': 0.3.5
-      '@jridgewell/trace-mapping': 0.3.25
+      '@jridgewell/gen-mapping': 0.3.3
+      '@jridgewell/trace-mapping': 0.3.18
+    dev: true
+
+  /@babel/[email protected]:
+    resolution: {integrity: sha512-LYvhNKfwWSPpocw8GI7gpK2nq3HSDuEPC/uSYaALSJu9xjsalaaYFOq0Pwt5KmVqwEbZlDu81aLXwBOmD/Fv9g==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/highlight': 7.18.6
+    dev: true
+
+  /@babel/[email protected]:
+    resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/highlight': 7.23.4
+      chalk: 2.4.2
     dev: true
 
   /@babel/[email protected]:
@@ -250,14 +265,14 @@ packages:
     resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==}
     engines: {node: '>=6.9.0'}
     dependencies:
-      '@babel/types': 7.24.5
+      '@babel/types': 7.23.6
     dev: true
 
   /@babel/[email protected]:
     resolution: {integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==}
     engines: {node: '>=6.9.0'}
     dependencies:
-      '@babel/types': 7.24.5
+      '@babel/types': 7.23.6
     dev: true
 
   /@babel/[email protected]:
@@ -266,7 +281,7 @@ packages:
     dependencies:
       '@babel/compat-data': 7.23.5
       '@babel/helper-validator-option': 7.23.5
-      browserslist: 4.23.0
+      browserslist: 4.22.2
       lru-cache: 5.1.1
       semver: 6.3.1
     dev: true
@@ -340,7 +355,7 @@ packages:
     resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==}
     engines: {node: '>=6.9.0'}
     dependencies:
-      '@babel/types': 7.24.5
+      '@babel/types': 7.23.6
     dev: true
 
   /@babel/[email protected]:
@@ -354,14 +369,14 @@ packages:
     resolution: {integrity: sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==}
     engines: {node: '>=6.9.0'}
     dependencies:
-      '@babel/types': 7.24.5
+      '@babel/types': 7.21.5
     dev: true
 
   /@babel/[email protected]:
     resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==}
     engines: {node: '>=6.9.0'}
     dependencies:
-      '@babel/types': 7.24.5
+      '@babel/types': 7.23.6
     dev: true
 
   /@babel/[email protected]:
@@ -381,8 +396,8 @@ packages:
       '@babel/helper-environment-visitor': 7.22.20
       '@babel/helper-module-imports': 7.22.15
       '@babel/helper-simple-access': 7.22.5
-      '@babel/helper-split-export-declaration': 7.24.5
-      '@babel/helper-validator-identifier': 7.24.5
+      '@babel/helper-split-export-declaration': 7.22.6
+      '@babel/helper-validator-identifier': 7.22.20
     dev: true
 
   /@babel/[email protected](@babel/[email protected]):
@@ -403,7 +418,7 @@ packages:
     resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==}
     engines: {node: '>=6.9.0'}
     dependencies:
-      '@babel/types': 7.24.5
+      '@babel/types': 7.23.6
     dev: true
 
   /@babel/[email protected]:
@@ -439,7 +454,7 @@ packages:
     resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==}
     engines: {node: '>=6.9.0'}
     dependencies:
-      '@babel/types': 7.24.5
+      '@babel/types': 7.23.6
     dev: true
 
   /@babel/[email protected]:
@@ -453,7 +468,14 @@ packages:
     resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==}
     engines: {node: '>=6.9.0'}
     dependencies:
-      '@babel/types': 7.24.5
+      '@babel/types': 7.23.6
+    dev: true
+
+  /@babel/[email protected]:
+    resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/types': 7.23.6
     dev: true
 
   /@babel/[email protected]:
@@ -463,11 +485,31 @@ packages:
       '@babel/types': 7.24.5
     dev: true
 
+  /@babel/[email protected]:
+    resolution: {integrity: sha512-5pTUx3hAJaZIdW99sJ6ZUUgWq/Y+Hja7TowEnLNMm1VivRgZQL3vpBY3qUACVsvw+yQU6+YgfBVmcbLaZtrA1w==}
+    engines: {node: '>=6.9.0'}
+    dev: true
+
+  /@babel/[email protected]:
+    resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==}
+    engines: {node: '>=6.9.0'}
+    dev: true
+
   /@babel/[email protected]:
     resolution: {integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==}
     engines: {node: '>=6.9.0'}
     dev: true
 
+  /@babel/[email protected]:
+    resolution: {integrity: sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==}
+    engines: {node: '>=6.9.0'}
+    dev: true
+
+  /@babel/[email protected]:
+    resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==}
+    engines: {node: '>=6.9.0'}
+    dev: true
+
   /@babel/[email protected]:
     resolution: {integrity: sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==}
     engines: {node: '>=6.9.0'}
@@ -483,8 +525,8 @@ packages:
     engines: {node: '>=6.9.0'}
     dependencies:
       '@babel/helper-function-name': 7.23.0
-      '@babel/template': 7.24.0
-      '@babel/types': 7.24.5
+      '@babel/template': 7.22.15
+      '@babel/types': 7.23.6
     dev: true
 
   /@babel/[email protected]:
@@ -498,6 +540,24 @@ packages:
       - supports-color
     dev: true
 
+  /@babel/[email protected]:
+    resolution: {integrity: sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/helper-validator-identifier': 7.19.1
+      chalk: 2.4.2
+      js-tokens: 4.0.0
+    dev: true
+
+  /@babel/[email protected]:
+    resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/helper-validator-identifier': 7.22.20
+      chalk: 2.4.2
+      js-tokens: 4.0.0
+    dev: true
+
   /@babel/[email protected]:
     resolution: {integrity: sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==}
     engines: {node: '>=6.9.0'}
@@ -508,6 +568,14 @@ packages:
       picocolors: 1.0.0
     dev: true
 
+  /@babel/[email protected]:
+    resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==}
+    engines: {node: '>=6.0.0'}
+    hasBin: true
+    dependencies:
+      '@babel/types': 7.23.6
+    dev: true
+
   /@babel/[email protected]:
     resolution: {integrity: sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==}
     engines: {node: '>=6.0.0'}
@@ -1006,7 +1074,7 @@ packages:
       '@babel/helper-hoist-variables': 7.22.5
       '@babel/helper-module-transforms': 7.23.3(@babel/[email protected])
       '@babel/helper-plugin-utils': 7.24.5
-      '@babel/helper-validator-identifier': 7.24.5
+      '@babel/helper-validator-identifier': 7.22.20
     dev: true
 
   /@babel/[email protected](@babel/[email protected]):
@@ -1368,7 +1436,7 @@ packages:
     dependencies:
       '@babel/core': 7.24.5
       '@babel/helper-plugin-utils': 7.24.5
-      '@babel/types': 7.24.5
+      '@babel/types': 7.23.6
       esutils: 2.0.3
     dev: true
 
@@ -1391,6 +1459,15 @@ packages:
       regenerator-runtime: 0.13.11
     dev: true
 
+  /@babel/[email protected]:
+    resolution: {integrity: sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/code-frame': 7.23.5
+      '@babel/parser': 7.23.6
+      '@babel/types': 7.23.6
+    dev: true
+
   /@babel/[email protected]:
     resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==}
     engines: {node: '>=6.9.0'}
@@ -1418,6 +1495,24 @@ packages:
       - supports-color
     dev: true
 
+  /@babel/[email protected]:
+    resolution: {integrity: sha512-m4AfNvVF2mVC/F7fDEdH2El3HzUg9It/XsCxZiOTTA3m3qYfcSVSbTfM6Q9xG+hYDniZssYhlXKKUMD5m8tF4Q==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/helper-string-parser': 7.21.5
+      '@babel/helper-validator-identifier': 7.19.1
+      to-fast-properties: 2.0.0
+    dev: true
+
+  /@babel/[email protected]:
+    resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==}
+    engines: {node: '>=6.9.0'}
+    dependencies:
+      '@babel/helper-string-parser': 7.23.4
+      '@babel/helper-validator-identifier': 7.22.20
+      to-fast-properties: 2.0.0
+    dev: true
+
   /@babel/[email protected]:
     resolution: {integrity: sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==}
     engines: {node: '>=6.9.0'}
@@ -1614,6 +1709,15 @@ packages:
     resolution: {integrity: sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==}
     dev: true
 
+  /@jridgewell/[email protected]:
+    resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==}
+    engines: {node: '>=6.0.0'}
+    dependencies:
+      '@jridgewell/set-array': 1.1.2
+      '@jridgewell/sourcemap-codec': 1.4.15
+      '@jridgewell/trace-mapping': 0.3.18
+    dev: true
+
   /@jridgewell/[email protected]:
     resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
     engines: {node: '>=6.0.0'}
@@ -1628,6 +1732,11 @@ packages:
     engines: {node: '>=6.0.0'}
     dev: true
 
+  /@jridgewell/[email protected]:
+    resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
+    engines: {node: '>=6.0.0'}
+    dev: true
+
   /@jridgewell/[email protected]:
     resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
     engines: {node: '>=6.0.0'}
@@ -1636,14 +1745,25 @@ packages:
   /@jridgewell/[email protected]:
     resolution: {integrity: sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==}
     dependencies:
-      '@jridgewell/gen-mapping': 0.3.5
-      '@jridgewell/trace-mapping': 0.3.25
+      '@jridgewell/gen-mapping': 0.3.3
+      '@jridgewell/trace-mapping': 0.3.18
+    dev: true
+
+  /@jridgewell/[email protected]:
+    resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==}
     dev: true
 
   /@jridgewell/[email protected]:
     resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
     dev: true
 
+  /@jridgewell/[email protected]:
+    resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==}
+    dependencies:
+      '@jridgewell/resolve-uri': 3.1.0
+      '@jridgewell/sourcemap-codec': 1.4.14
+    dev: true
+
   /@jridgewell/[email protected]:
     resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
     dependencies:
@@ -1963,8 +2083,8 @@ packages:
       defer-to-connect: 2.0.1
     dev: true
 
-  /@tabler/icons@2.47.0:
-    resolution: {integrity: sha512-4w5evLh+7FUUiA1GucvGj2ReX2TvOjEr4ejXdwL/bsjoSkof6r1gQmzqI+VHrE2CpJpB3al7bCTulOkFa/RcyA==}
+  /@tabler/icons@3.2.0:
+    resolution: {integrity: sha512-h8GQ2rtxgiSjltrVz4vcopAxTPSpUSUi5nBfJ09H3Bk4fJk6wZ/dVUjzhv/BHfDwGTkAxZBiYe/Q/T95cPeg5Q==}
     dev: false
 
   /@types/[email protected]:
@@ -2742,6 +2862,17 @@ packages:
       - utf-8-validate
     dev: true
 
+  /[email protected]:
+    resolution: {integrity: sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==}
+    engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
+    hasBin: true
+    dependencies:
+      caniuse-lite: 1.0.30001566
+      electron-to-chromium: 1.4.609
+      node-releases: 2.0.14
+      update-browserslist-db: 1.0.13([email protected])
+    dev: true
+
   /[email protected]:
     resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==}
     engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
@@ -2885,6 +3016,10 @@ packages:
     engines: {node: '>=14.16'}
     dev: true
 
+  /[email protected]:
+    resolution: {integrity: sha512-ggIhCsTxmITBAMmK8yZjEhCO5/47jKXPu6Dha/wuCS4JePVL+3uiDEBuhu2aIoT+bqTOR8L76Ip1ARL9xYsEJA==}
+    dev: true
+
   /[email protected]:
     resolution: {integrity: sha512-jmZQ1VpmlRwHgdP1/uiKzgiAuGOfLEJsYFP4+GBou/QQ4U6IOJCB4NP1c+1p9RGLpwObcT94jA5/uO+F1vBbog==}
     dev: true
@@ -3248,7 +3383,7 @@ packages:
   /[email protected]:
     resolution: {integrity: sha512-5blwFAddknKeNgsjBzilkdQ0+YK8L1PfqPYq40NOYMYFSS38qj+hpTcLLWwpIwA2A5bje/x5jmVn2tzUMg9IVw==}
     dependencies:
-      browserslist: 4.23.0
+      browserslist: 4.22.2
     dev: true
 
   /[email protected]:
@@ -3654,6 +3789,10 @@ packages:
     resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
     dev: true
 
+  /[email protected]:
+    resolution: {integrity: sha512-ihiCP7PJmjoGNuLpl7TjNA8pCQWu09vGyjlPYw1Rqww4gvNuCcmvl+44G+2QyJ6S2K4o+wbTS++Xz0YN8Q9ERw==}
+    dev: true
+
   /[email protected]:
     resolution: {integrity: sha512-2DEPi++qa89SMGRhufWTiLmzqyuGmNF3SK4+PQetW1JKiZdEpF4XQonJXJCzyuYSA6mauiMhbyVhqYAP45Hvfw==}
     dev: true
@@ -6747,7 +6886,7 @@ packages:
     resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==}
     engines: {node: '>=8'}
     dependencies:
-      '@babel/code-frame': 7.24.2
+      '@babel/code-frame': 7.21.4
       error-ex: 1.3.2
       json-parse-even-better-errors: 2.3.1
       lines-and-columns: 1.2.4
@@ -7699,7 +7838,7 @@ packages:
     dependencies:
       chokidar: 3.5.3
       immutable: 4.3.0
-      source-map-js: 1.2.0
+      source-map-js: 1.0.2
     dev: true
 
   /[email protected]:
@@ -7995,6 +8134,11 @@ packages:
       smart-buffer: 4.2.0
     dev: true
 
+  /[email protected]:
+    resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
+    engines: {node: '>=0.10.0'}
+    dev: true
+
   /[email protected]:
     resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==}
     engines: {node: '>=0.10.0'}
@@ -8754,6 +8898,17 @@ packages:
     engines: {node: '>=4'}
     dev: true
 
+  /[email protected]([email protected]):
+    resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==}
+    hasBin: true
+    peerDependencies:
+      browserslist: '>= 4.21.0'
+    dependencies:
+      browserslist: 4.22.2
+      escalade: 3.1.1
+      picocolors: 1.0.0
+    dev: true
+
   /[email protected]([email protected]):
     resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==}
     hasBin: true

+ 1 - 1
src/pages/_data/icons-info.json

@@ -1 +1 @@
-{"version":"2.45.0","count":4926}
+{"version":"3.2.0","count":5237}

文件差異過大導致無法顯示
+ 0 - 0
src/pages/_data/icons.json


+ 13 - 7
src/pages/_includes/cards/icons.html

@@ -1,8 +1,11 @@
-{% assign icons = include.icons %}
-{% assign limit = 20 %}
-{% if jekyll.environment != 'development' %}
-	{% assign limit = null %}
+{% assign type = include.type | default: "outline" %}
+{% assign icons = site.data.icons %}
+
+{% assign limit = null %}
+{% if jekyll.environment == 'development' %}
+	{% assign limit = 20 %}
 {% endif %}
+
 <div class="card">
 	<div class="card-header">
 		<div class="card-title">{{ include.title }}</div>
@@ -10,10 +13,13 @@
 	<div class="card-body p-0">
 		<div class="demo-icons-list-wrap">
 			<div class="demo-icons-list">
-				{% for icon in icons limit: limit %}
-				<a href="https://tabler-icons.io/i/{{ icon }}" target="_blank" rel="noopener" class="demo-icons-list-item" title="{{ icon }}" data-bs-toggle="tooltip" data-bs-placement="top">
-					{% include ui/icon.html icon=icon %}
+				{% for icon in site.data.icons %}
+				{% assign icon-name = icon[0] %}
+				{% if icon[1].svg[type] %}
+				<a href="https://tabler-icons.io/i/{{ icon-name }}" target="_blank" rel="noopener" class="demo-icons-list-item" title="{{ icon-name }}" data-bs-toggle="tooltip" data-bs-placement="top">
+					{% include ui/icon.html icon=icon-name type=type %}
 				</a>
+				{% endif %}
 				{% endfor %}
 				{% for icon in (0..20) %}
 				<div></div>

+ 1 - 1
src/pages/_includes/layout/navbar-menu.html

@@ -1,6 +1,6 @@
 {% assign current-page = page.menu | default: layout.menu | split: '.' %}
 {% assign hide-icons = include.hide-icons %}
-{% assign icons-count = site.data.icons | size %}
+{% assign icons-count = site.data.icons-info.count %}
 
 {% assign menu = site.data.menu %}
 

+ 2 - 1
src/pages/_includes/ui/icon.html

@@ -1,6 +1,7 @@
 {% removeemptylines %}
 
 {% assign icon-name = include.icon %}
+{% assign type = type | default: "outline" %}
 
 {% assign replace-to = "icon" %}
 
@@ -30,7 +31,7 @@
 	<i class="icon ti ti-{{ icon-name }}{% if include.color %} {{ include.color }}{% endif %}{% if include.filled %} icon-filled{% endif %}{% if include.class %} {{ include.class }}{% endif %}"></i>
 {% else %}
 	<!-- Download SVG icon from http://tabler-icons.io/i/{{ icon-name }} -->
-	{% assign svg-icon = site.data.icons[icon-name].svg | default: '' %}
+	{% assign svg-icon = site.data.icons[icon-name].svg[type] | default: '' %}
 	{{ svg-icon | replace_regex: 'class=\"[^"]+\"', replace-to }}
 {% endif %}
 

+ 2 - 21
src/pages/icons.html

@@ -4,22 +4,6 @@ page-header: Icons
 menu: icons
 ---
 
-{% assign icons-brand = '' | split: ',' %}
-{% assign icons-filled = '' | split: ',' %}
-{% assign icons-core = '' | split: ',' %}
-
-{% for icon in site.data.icons %}
-{% assign i = icon[0] %}
-{% if i contains 'brand-' %}
-{% assign icons-brand = icons-brand | push: i %}
-{% elsif i contains '-filled' %}
-{% assign icons-filled = icons-filled | push: i %}
-{% else %}
-{% assign icons-core = icons-core | push: i %}
-{% endif %}
-{% endfor %}
-
-
 <div class="row row-cards">
 	<div class="col-lg-4">
 		{% include cards/icons-banner.html %}
@@ -27,13 +11,10 @@ menu: icons
 	<div class="col">
 		<div class="row row-cards">
 			<div class="col-12">
-				{% include cards/icons.html title="Interface icons" icons=icons-core %}
-			</div>
-			<div class="col-12">
-				{% include cards/icons.html title="Brand icons" icons=icons-brand %}
+				{% include cards/icons.html title="Interface icons" type="outline" %}
 			</div>
 			<div class="col-12">
-				{% include cards/icons.html title="Filled icons" icons=icons-filled %}
+				{% include cards/icons.html title="Filled icons" type="filled" %}
 			</div>
 		</div>
 	</div>

部分文件因文件數量過多而無法顯示