diff --git a/.gitignore b/.gitignore index f748de4..741905c 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,6 @@ stats.html # Misc .DS_Store + +# Varlet Iconx +virtual.icons.css diff --git a/README.md b/README.md index cb96904..713dddc 100644 --- a/README.md +++ b/README.md @@ -80,6 +80,7 @@ An mobile web apps template based on the Vue 3 ecosystem. - [Varlet](https://github.com/varletjs/varlet) - Material design mobile component library developed based on Vue3 - [`@varlet/touch-emulator`](https://github.com/varletjs/varlet/tree/dev/packages/varlet-touch-emulator) - Simulate mobile touch events on the desktop - [`@varlet/preset-unocss`](https://github.com/varletjs/varlet/tree/dev/packages/varlet-preset-unocss) - CSS atomic framework presets + - [`@varlet/unplugin-icon-builder`](https://github.com/varletjs/varlet-iconx) - A collection of tools that provide icon solutions for varlet ### Plugins diff --git a/README.zh-CN.md b/README.zh-CN.md index 9df5c83..b4ef8dc 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -80,6 +80,7 @@ An mobile web apps template based on the Vue 3 ecosystem. - [Varlet](https://github.com/varletjs/varlet) - 基于 Vue3 开发的 Material 风格移动端组件库 - [`@varlet/touch-emulator`](https://github.com/varletjs/varlet/tree/dev/packages/varlet-touch-emulator) - 在桌面端上模拟移动端 touch 事件 - [`@varlet/preset-unocss`](https://github.com/varletjs/varlet/tree/dev/packages/varlet-preset-unocss) - 原子化 CSS 支持 + - [`@varlet/unplugin-icon-builder`](https://github.com/varletjs/varlet-iconx) - 为 Varlet 提供图标解决方案的工具集合 ### 插件 diff --git a/build/vite/index.ts b/build/vite/index.ts index 676ab41..bc18289 100644 --- a/build/vite/index.ts +++ b/build/vite/index.ts @@ -14,6 +14,7 @@ import Sitemap from 'vite-plugin-sitemap' import VueDevTools from 'vite-plugin-vue-devtools' import VueI18nPlugin from '@intlify/unplugin-vue-i18n/vite' import { VarletImportResolver } from '@varlet/import-resolver' +import icon from '@varlet/unplugin-icon-builder/vite' import { createViteVConsole } from './vconsole' export function createVitePlugins() { @@ -77,6 +78,9 @@ export function createVitePlugins() { targets: ['defaults', 'not IE 11'], }), + // https://varlet.pages.dev/#/zh-CN/icon + icon({ dir: 'src/assets/icons', onDemand: true }), + // https://github.com/antfu/unocss // see uno.config.ts for config UnoCSS(), diff --git a/package.json b/package.json index 40e07c3..b70687c 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "vue3-varlet-mobile", "type": "module", "version": "1.0.0", - "packageManager": "pnpm@9.1.2", + "packageManager": "pnpm@9.1.3", "description": "Vue + Vite H5 Starter Template", "license": "MIT", "scripts": { @@ -46,6 +46,7 @@ "@unocss/preset-rem-to-px": "0.60.3", "@varlet/import-resolver": "^3.2.10", "@varlet/preset-unocss": "^3.2.10", + "@varlet/unplugin-icon-builder": "^0.2.27", "@vitejs/plugin-legacy": "^5.4.0", "@vitejs/plugin-vue": "^5.0.4", "autoprefixer": "^10.4.19", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f994c28..eb70690 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -90,6 +90,9 @@ importers: '@varlet/preset-unocss': specifier: ^3.2.10 version: 3.2.10(unocss@0.60.3(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.11(@types/node@20.12.12)(less@4.2.0)(terser@5.31.0))) + '@varlet/unplugin-icon-builder': + specifier: ^0.2.27 + version: 0.2.27(rollup@4.18.0)(vite@5.2.11(@types/node@20.12.12)(less@4.2.0)(terser@5.31.0))(vue@3.4.27(typescript@5.4.5)) '@vitejs/plugin-legacy': specifier: ^5.4.0 version: 5.4.0(terser@5.31.0)(vite@5.2.11(@types/node@20.12.12)(less@4.2.0)(terser@5.31.0)) @@ -1535,6 +1538,15 @@ packages: peerDependencies: vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0 || ^5.0.0-0 + '@varlet/axle@0.7.1': + resolution: {integrity: sha512-9WSIagplJPNJBBsurUYWGyNthX+wkRsoKQCEbe1fnCx904O6hq/5ymPIS6X6T4VTYsBsnGAAt05///RxO2R3TQ==} + peerDependencies: + vue: ^3.2.0 + + '@varlet/icon-builder@0.2.27': + resolution: {integrity: sha512-fTgsx8fTq5kHmdQnIcfwO5GvTOubKLUwkixuRxJEBN/kkPOxwp0vNUrwZ+V5TUk4rEt8qn3wp3/pGLWlqi5t2Q==} + hasBin: true + '@varlet/icons@3.2.10': resolution: {integrity: sha512-xpYs+M5yRcFZkM8F54mYaVH4R+z9wnVXTuFi/1uyGsJ6eaUphDdgofvxV8tCIh1IGfQ617di3MQ5gTrrHXP0dQ==} @@ -1546,9 +1558,15 @@ packages: peerDependencies: unocss: ^0.58.5 + '@varlet/shared@2.20.3': + resolution: {integrity: sha512-MgLDRYfrGgKqu8Vg2kfRVRGRZE2d8CH0f75vph5h4AG+Clm+A7FgUZLaVTriMWuS6wXrrrceSgX5kNmb/lFShQ==} + '@varlet/shared@3.2.10': resolution: {integrity: sha512-RBYOTRSNUtde34X+rk35Ujr7XDpnP74ci+brg4DIvLgHdgu47vPHgaHfFmg7WEIBRnB/Ppc44b5lVNNjKX8cwA==} + '@varlet/shared@3.2.11-alpha.1716133168406': + resolution: {integrity: sha512-tE7sALvgVocEm8Yk0W424tdbstxoWWp0UR5Ne8Kn5WvilndhdxOONkYsUoVMyeq2/kAX+2nKTnrYx90wsE365Q==} + '@varlet/touch-emulator@3.2.10': resolution: {integrity: sha512-vEOkk48trTa1AlCvMMKRhVPmuq8QIUMfyd9UBiEqR+vO2KmG8LJkkQlYbpR5ebKQwvOJwFc2b/TDGa/A4uBAKg==} @@ -1557,11 +1575,26 @@ packages: peerDependencies: vue: ^3.2.0 + '@varlet/unplugin-icon-builder@0.2.27': + resolution: {integrity: sha512-w82NBWG7dPlJRaPhe0SD/qZRQs91nG8GeuuHT9SdzpSeGiO7tp4aG9YFgXbLyKlRzLXCtf71jGK9F81sWeIYIg==} + peerDependencies: + rollup: ^3 + vite: '>=3' + webpack: ^4 || ^5 + peerDependenciesMeta: + vite: + optional: true + webpack: + optional: true + '@varlet/use@3.2.10': resolution: {integrity: sha512-vQejt+kMSgGfsAJQDRa0zZtwj1F0YWNVyQR2cx+8qiqZM5V9xF82F6QWtlT3rGmMNvyqgE4fGebWdVaQm1M6vw==} peerDependencies: vue: ^3.2.0 + '@varlet/webfont@0.0.9': + resolution: {integrity: sha512-CIDVrfyzKC20D/ig4lQKXGcKwRlvtgzi/Hzb7YkOBMx4EwwHlGcRRAVBzzDNkFBFtSNUa+IwScvLim8UlcoipQ==} + '@vitejs/plugin-legacy@5.4.0': resolution: {integrity: sha512-Z7o44IbOIir/appjqtVzxnmLeGD8DjWGNm48lfPWZn4hxjzUjTkMX7BDwncpauWAQ/0VIz6uPeMHl3Za0Rw7wA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -1685,6 +1718,10 @@ packages: '@vueuse/shared@10.9.0': resolution: {integrity: sha512-Uud2IWncmAfJvRaFYzv5OHDli+FbOzxiVEQdLCKQKLyhz94PIyFC3CHcH7EDMwIn8NPtD06+PNbC/PiO0LGLtw==} + '@xmldom/xmldom@0.7.13': + resolution: {integrity: sha512-lm2GW5PkosIzccsaZIz7tp8cPADSIlIHWDFTR1N0SzfinhhYgeIQjFMz4rYzanCScr3DqQLeomUDArp6MWKm+g==} + engines: {node: '>=10.0.0'} + acorn-jsx@5.3.2: resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: @@ -1950,6 +1987,10 @@ packages: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} + commander@11.1.0: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} + commander@12.1.0: resolution: {integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==} engines: {node: '>=18'} @@ -1957,6 +1998,10 @@ packages: commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + comment-parser@1.4.1: resolution: {integrity: sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==} engines: {node: '>= 12.0.0'} @@ -1998,6 +2043,9 @@ packages: core-js@3.37.1: resolution: {integrity: sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==} + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + cors@2.8.5: resolution: {integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==} engines: {node: '>= 0.10'} @@ -2011,6 +2059,9 @@ packages: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} engines: {node: '>= 8'} + crypto-js@4.2.0: + resolution: {integrity: sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==} + crypto-random-string@2.0.0: resolution: {integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==} engines: {node: '>=8'} @@ -2027,6 +2078,9 @@ packages: csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + cubic2quad@1.2.1: + resolution: {integrity: sha512-wT5Y7mO8abrV16gnssKdmIhIbA9wSkeMzhh27jAguKrV82i24wER0vL5TGhUJ9dbJNDcigoRZ0IAHFEEEI4THQ==} + data-view-buffer@1.0.1: resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} engines: {node: '>= 0.4'} @@ -2560,6 +2614,9 @@ packages: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} + geometry-interfaces@1.1.4: + resolution: {integrity: sha512-qD6OdkT6NcES9l4Xx3auTpwraQruU7dARbQPVO71MKvkGYw5/z/oIiGymuFXrRaEQa5Y67EIojUpaLeGEa5hGA==} + get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} @@ -2603,6 +2660,7 @@ packages: glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} @@ -2751,6 +2809,7 @@ packages: inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} @@ -2895,6 +2954,9 @@ packages: resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==} engines: {node: '>=16'} + isarray@0.0.1: + resolution: {integrity: sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==} + isarray@2.0.5: resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} @@ -3081,6 +3143,9 @@ packages: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} + microbuffer@1.0.0: + resolution: {integrity: sha512-O/SUXauVN4x6RaEJFqSPcXNtLFL+QzJHKZlyDVYFwcDDRVca3Fa/37QXXC+4zAGGa4YhHrHxKXuuHvLDIQECtA==} + micromark@2.11.4: resolution: {integrity: sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==} @@ -3178,6 +3243,9 @@ packages: natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + neatequal@1.0.0: + resolution: {integrity: sha512-sVt5awO4a4w24QmAthdrCPiVRW3naB8FGLdyadin01BH+6BzNPEBwGrpwCczQvPlULS6uXTItTe1PJ5P0kYm7A==} + needle@3.3.1: resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==} engines: {node: '>= 4.4.x'} @@ -3478,6 +3546,13 @@ packages: resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} engines: {node: '>=8'} + readable-stream@1.1.14: + resolution: {integrity: sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} @@ -3730,6 +3805,12 @@ packages: resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} engines: {node: '>= 0.4'} + string_decoder@0.10.31: + resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + stringify-object@3.3.0: resolution: {integrity: sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==} engines: {node: '>=4'} @@ -3776,9 +3857,25 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + svg-pathdata@6.0.3: + resolution: {integrity: sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==} + engines: {node: '>=12.0.0'} + svg-tags@1.0.0: resolution: {integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==} + svg2ttf@6.0.3: + resolution: {integrity: sha512-CgqMyZrbOPpc+WqH7aga4JWkDPso23EgypLsbQ6gN3uoPWwwiLjXvzgrwGADBExvCRJrWFzAeK1bSoSpE7ixSQ==} + hasBin: true + + svgicons2svgfont@10.0.6: + resolution: {integrity: sha512-fUgQEVg3XwTbOHvlXahHGqCet5Wvfo1bV4DCvbSRvjsOCPCRunYbG4dUJCPegps37BMph3eOrfoobhH5AWuC6A==} + engines: {node: '>=12.0.0'} + hasBin: true + + svgpath@2.6.0: + resolution: {integrity: sha512-OIWR6bKzXvdXYyO4DK/UWa1VA1JeKq8E+0ug2DG98Y/vOmMpfZNj+TIG988HjfYSqtcy/hFOtZq/n/j5GSESNg==} + synckit@0.6.2: resolution: {integrity: sha512-Vhf+bUa//YSTYKseDiiEuQmhGCoIF3CVBhunm3r/DQnYiGT4JssmnKQc44BIyOZRK2pKjXXAgbhfmbeoC9CJpA==} engines: {node: '>=12.20'} @@ -4039,6 +4136,11 @@ packages: validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + varstream@0.3.2: + resolution: {integrity: sha512-OpR3Usr9dGZZbDttlTxdviGdxiURI0prX68+DuaN/JfIDbK9ZOmREKM6PgmelsejMnhgjXmEEEgf+E4NbsSqMg==} + engines: {node: '>=0.10.*'} + hasBin: true + vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} @@ -4305,6 +4407,14 @@ packages: resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} engines: {node: '>=12'} + xml2js@0.4.23: + resolution: {integrity: sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==} + engines: {node: '>=4.0.0'} + + xmlbuilder@11.0.1: + resolution: {integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==} + engines: {node: '>=4.0'} + y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} @@ -5895,6 +6005,32 @@ snapshots: transitivePeerDependencies: - rollup + '@varlet/axle@0.7.1(vue@3.4.27(typescript@5.4.5))': + dependencies: + '@varlet/shared': 2.20.3 + axios: 1.7.2 + crypto-js: 4.2.0 + lodash: 4.17.21 + minimatch: 9.0.4 + qs: 6.12.1 + vue: 3.4.27(typescript@5.4.5) + transitivePeerDependencies: + - debug + + '@varlet/icon-builder@0.2.27(vue@3.4.27(typescript@5.4.5))': + dependencies: + '@varlet/axle': 0.7.1(vue@3.4.27(typescript@5.4.5)) + '@varlet/shared': 3.2.10 + '@varlet/webfont': 0.0.9 + chokidar: 3.6.0 + commander: 11.1.0 + fs-extra: 11.2.0 + picocolors: 1.0.1 + unconfig: 0.3.13 + transitivePeerDependencies: + - debug + - vue + '@varlet/icons@3.2.10': {} '@varlet/import-resolver@3.2.10': @@ -5905,8 +6041,12 @@ snapshots: dependencies: unocss: 0.60.3(postcss@8.4.38)(rollup@4.18.0)(vite@5.2.11(@types/node@20.12.12)(less@4.2.0)(terser@5.31.0)) + '@varlet/shared@2.20.3': {} + '@varlet/shared@3.2.10': {} + '@varlet/shared@3.2.11-alpha.1716133168406': {} + '@varlet/touch-emulator@3.2.10': {} '@varlet/ui@3.2.10(vue@3.4.27(typescript@5.4.5))': @@ -5919,11 +6059,36 @@ snapshots: decimal.js: 10.4.3 vue: 3.4.27(typescript@5.4.5) + '@varlet/unplugin-icon-builder@0.2.27(rollup@4.18.0)(vite@5.2.11(@types/node@20.12.12)(less@4.2.0)(terser@5.31.0))(vue@3.4.27(typescript@5.4.5))': + dependencies: + '@varlet/icon-builder': 0.2.27(vue@3.4.27(typescript@5.4.5)) + '@varlet/shared': 3.2.11-alpha.1716133168406 + chokidar: 3.6.0 + fast-glob: 3.3.2 + fs-extra: 11.2.0 + rollup: 4.18.0 + unplugin: 1.10.1 + optionalDependencies: + vite: 5.2.11(@types/node@20.12.12)(less@4.2.0)(terser@5.31.0) + transitivePeerDependencies: + - debug + - vue + '@varlet/use@3.2.10(vue@3.4.27(typescript@5.4.5))': dependencies: '@varlet/shared': 3.2.10 vue: 3.4.27(typescript@5.4.5) + '@varlet/webfont@0.0.9': + dependencies: + '@varlet/shared': 3.2.10 + fs-extra: 11.2.0 + globby: 11.1.0 + p-limit: 3.1.0 + svg2ttf: 6.0.3 + svgicons2svgfont: 10.0.6 + xml2js: 0.4.23 + '@vitejs/plugin-legacy@5.4.0(terser@5.31.0)(vite@5.2.11(@types/node@20.12.12)(less@4.2.0)(terser@5.31.0))': dependencies: '@babel/core': 7.24.5 @@ -6139,6 +6304,8 @@ snapshots: - '@vue/composition-api' - vue + '@xmldom/xmldom@0.7.13': {} + acorn-jsx@5.3.2(acorn@8.11.3): dependencies: acorn: 8.11.3 @@ -6442,10 +6609,14 @@ snapshots: dependencies: delayed-stream: 1.0.0 + commander@11.1.0: {} + commander@12.1.0: {} commander@2.20.3: {} + commander@7.2.0: {} + comment-parser@1.4.1: {} common-tags@1.8.2: {} @@ -6477,6 +6648,8 @@ snapshots: core-js@3.37.1: {} + core-util-is@1.0.3: {} + cors@2.8.5: dependencies: object-assign: 4.1.1 @@ -6492,6 +6665,8 @@ snapshots: shebang-command: 2.0.0 which: 2.0.2 + crypto-js@4.2.0: {} + crypto-random-string@2.0.0: {} css-tree@2.3.1: @@ -6503,6 +6678,8 @@ snapshots: csstype@3.1.3: {} + cubic2quad@1.2.1: {} + data-view-buffer@1.0.1: dependencies: call-bind: 1.0.7 @@ -7200,6 +7377,8 @@ snapshots: gensync@1.0.0-beta.2: {} + geometry-interfaces@1.1.4: {} + get-caller-file@2.0.5: {} get-func-name@2.0.2: {} @@ -7504,6 +7683,8 @@ snapshots: dependencies: is-inside-container: 1.0.0 + isarray@0.0.1: {} + isarray@2.0.5: {} isexe@2.0.0: {} @@ -7674,6 +7855,8 @@ snapshots: merge2@1.4.1: {} + microbuffer@1.0.0: {} + micromark@2.11.4: dependencies: debug: 4.3.4 @@ -7755,6 +7938,10 @@ snapshots: natural-compare@1.4.0: {} + neatequal@1.0.0: + dependencies: + varstream: 0.3.2 + needle@3.3.1: dependencies: iconv-lite: 0.6.3 @@ -8040,6 +8227,19 @@ snapshots: parse-json: 5.2.0 type-fest: 0.6.0 + readable-stream@1.1.14: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 0.0.1 + string_decoder: 0.10.31 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + readdirp@3.6.0: dependencies: picomatch: 2.3.1 @@ -8160,8 +8360,7 @@ snapshots: safer-buffer@2.1.2: {} - sax@1.3.0: - optional: true + sax@1.3.0: {} scslre@0.3.0: dependencies: @@ -8316,6 +8515,12 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.0.0 + string_decoder@0.10.31: {} + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + stringify-object@3.3.0: dependencies: get-own-enumerable-property-symbols: 3.0.2 @@ -8356,8 +8561,31 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} + svg-pathdata@6.0.3: {} + svg-tags@1.0.0: {} + svg2ttf@6.0.3: + dependencies: + '@xmldom/xmldom': 0.7.13 + argparse: 2.0.1 + cubic2quad: 1.2.1 + lodash: 4.17.21 + microbuffer: 1.0.0 + svgpath: 2.6.0 + + svgicons2svgfont@10.0.6: + dependencies: + commander: 7.2.0 + geometry-interfaces: 1.1.4 + glob: 7.2.3 + neatequal: 1.0.0 + readable-stream: 3.6.2 + sax: 1.3.0 + svg-pathdata: 6.0.3 + + svgpath@2.6.0: {} + synckit@0.6.2: dependencies: tslib: 2.6.2 @@ -8669,6 +8897,10 @@ snapshots: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 + varstream@0.3.2: + dependencies: + readable-stream: 1.1.14 + vary@1.1.2: {} vconsole@3.15.1: @@ -9046,6 +9278,13 @@ snapshots: xml-name-validator@4.0.0: {} + xml2js@0.4.23: + dependencies: + sax: 1.3.0 + xmlbuilder: 11.0.1 + + xmlbuilder@11.0.1: {} + y18n@5.0.8: {} yallist@3.1.1: {} diff --git a/src/assets/icons/border-radius.svg b/src/assets/icons/border-radius.svg new file mode 100644 index 0000000..7faf0a5 --- /dev/null +++ b/src/assets/icons/border-radius.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/env.d.ts b/src/env.d.ts index 058e692..f8411d1 100644 --- a/src/env.d.ts +++ b/src/env.d.ts @@ -1,5 +1,7 @@ /// +declare module 'virtual-icons' {} + declare module '*.vue' { import type { DefineComponent } from 'vue' diff --git a/src/locales/en-US.json b/src/locales/en-US.json index 9c0f174..615390f 100644 --- a/src/locales/en-US.json +++ b/src/locales/en-US.json @@ -13,7 +13,8 @@ "echartsDemo": "📊 Echarts Demo", "persistPiniaState": "🍍 Persistent Pinia state", "unocssExample": "🎨 Unocss example", - "keepAlive": "🧡 KeepAlive Demo" + "keepAlive": "🧡 KeepAlive Demo", + "iconx": "🎉 Iconx example" }, "mock": { "fromAsyncData": "Data from asynchronous requests", diff --git a/src/locales/zh-CN.json b/src/locales/zh-CN.json index 6fe61f0..33d0266 100644 --- a/src/locales/zh-CN.json +++ b/src/locales/zh-CN.json @@ -13,7 +13,8 @@ "persistPiniaState": "🍍 持久化 Pinia 状态", "404Demo": "🙅 404页 演示", "unocssExample": "🎨 Unocss 示例", - "keepAlive": "🧡 KeepAlive 演示" + "keepAlive": "🧡 KeepAlive 演示", + "iconx": "🎉 Iconx 示例" }, "mock": { "fromAsyncData": "来自异步请求的数据", diff --git a/src/main.ts b/src/main.ts index d129648..de4aadb 100644 --- a/src/main.ts +++ b/src/main.ts @@ -3,10 +3,12 @@ import { createHead } from '@unhead/vue' import App from '@/App.vue' import router from '@/router' import pinia from '@/stores' -import 'virtual:uno.css' -import '@/styles/app.less' import { i18n } from '@/utils/i18n' +import '@/styles/app.less' +import 'virtual:uno.css' +import 'virtual-icons' + // Varlet Desktop adaptation import '@varlet/touch-emulator' diff --git a/src/pages/iconx/index.vue b/src/pages/iconx/index.vue new file mode 100644 index 0000000..62f949d --- /dev/null +++ b/src/pages/iconx/index.vue @@ -0,0 +1,18 @@ + + + diff --git a/src/pages/index.vue b/src/pages/index.vue index 57048c8..2dce4e2 100644 --- a/src/pages/index.vue +++ b/src/pages/index.vue @@ -50,6 +50,7 @@ const menus = computed(() => ([ { title: t('home.persistPiniaState'), router: 'counter' }, { title: t('home.unocssExample'), router: 'unocss' }, { title: t('home.keepAlive'), router: 'keepalive' }, + { title: t('home.iconx'), router: 'iconx' }, { title: t('home.404Demo'), router: 'unknown' }, ])) diff --git a/src/typed-router.d.ts b/src/typed-router.d.ts index 59cec99..56e7ef5 100644 --- a/src/typed-router.d.ts +++ b/src/typed-router.d.ts @@ -22,6 +22,7 @@ declare module 'vue-router/auto-routes' { '/[...all]': RouteRecordInfo<'/[...all]', '/:all(.*)', { all: ParamValue }, { all: ParamValue }>, 'charts': RouteRecordInfo<'charts', '/charts', Record, Record>, 'counter': RouteRecordInfo<'counter', '/counter', Record, Record>, + 'iconx': RouteRecordInfo<'iconx', '/iconx', Record, Record>, 'Keepalive': RouteRecordInfo<'Keepalive', '/keepalive', Record, Record>, 'mock': RouteRecordInfo<'mock', '/mock', Record, Record>, 'profile': RouteRecordInfo<'profile', '/profile', Record, Record>,