Browse Source

chore: improve icon-picker logic

Vben 4 years ago
parent
commit
d67bd496e8

+ 1 - 1
CHANGELOG.zh_CN.md

@@ -7,7 +7,7 @@
 ### ✨ Features
 
 - axios 支持 form-data 格式请求
-- 新增图标选择器组件
+- 新增图标选择器组件(支持本地和在线方式)
 - 新增修改密码界面
 - 新增部门管理示例界面
 - 新增 WebSocket 示例和服务脚本

+ 23 - 7
build/gen/generateIconJson.ts

@@ -19,34 +19,50 @@ async function generateIcon() {
   inquirer
     .prompt([
       {
-        type: 'checkbox',
+        type: 'list',
+        name: 'useType',
+        choices: [
+          { key: 'local', value: 'local', name: 'Local' },
+          { key: 'onLine', value: 'onLine', name: 'OnLine' },
+        ],
+        message: 'How to use icons?',
+      },
+      {
+        type: 'list',
         name: 'iconSet',
         choices: choices,
         message: 'Select the icon set that needs to be generated?',
-        default: true,
       },
       {
         type: 'input',
         name: 'output',
         message: 'Select the icon set that needs to be generated?',
-        default: 'src/components/Icon/json',
+        default: 'src/components/Icon/data',
       },
     ])
     .then(async (answers) => {
-      const { iconSet, output } = answers;
+      const { iconSet, output, useType } = answers;
       const outputDir = path.resolve(process.cwd(), output);
       fs.ensureDir(outputDir);
-      const genCollections = collections.filter((item) => iconSet.includes(item.id));
+      const genCollections = collections.filter((item) => [iconSet].includes(item.id));
       const prefixSet: string[] = [];
       for (const info of genCollections) {
         const data = await fs.readJSON(path.join(dir, 'json', `${info.id}.json`));
         if (data) {
           const { prefix } = data;
-          const icons = Object.keys(data.icons).map((item) => `${prefix}:${item}`);
-          await fs.writeJSON(path.join(output, `${prefix}-info.json`), icons);
+          const isLocal = useType === 'local';
+          const icons = Object.keys(data.icons).map(
+            (item) => `${isLocal ? prefix + ':' : ''}${item}`
+          );
+
+          await fs.writeFileSync(
+            path.join(output, `icons.data.ts`),
+            `export default ${isLocal ? JSON.stringify(icons) : JSON.stringify({ prefix, icons })}`
+          );
           prefixSet.push(prefix);
         }
       }
+      fs.emptyDir(path.join(process.cwd(), 'node_modules/.vite'));
       console.log(
         `✨ ${chalk.cyan(`[${pkg.name}]`)}` + ' - Icon generated successfully:' + `[${prefixSet}]`
       );

+ 6 - 7
package.json

@@ -41,7 +41,7 @@
     "path-to-regexp": "^6.2.0",
     "qrcode": "^1.4.4",
     "sortablejs": "^1.13.0",
-    "vditor": "^3.8.1",
+    "vditor": "^3.8.2",
     "vue": "^3.0.7",
     "vue-i18n": "^9.0.0",
     "vue-router": "^4.0.4",
@@ -82,11 +82,11 @@
     "eslint": "^7.21.0",
     "eslint-config-prettier": "^8.1.0",
     "eslint-plugin-prettier": "^3.3.1",
-    "eslint-plugin-vue": "^7.6.0",
+    "eslint-plugin-vue": "^7.7.0",
     "esno": "^0.4.5",
     "fs-extra": "^9.1.0",
     "http-server": "^0.12.3",
-    "husky": "^5.1.2",
+    "husky": "^5.1.3",
     "inquirer": "^8.0.0",
     "is-ci": "^3.0.0",
     "less": "^4.1.1",
@@ -105,19 +105,18 @@
     "vite-plugin-compression": "^0.2.3",
     "vite-plugin-html": "^2.0.3",
     "vite-plugin-imagemin": "^0.2.9",
-    "vite-plugin-mock": "^2.1.5",
+    "vite-plugin-mock": "^2.2.0",
     "vite-plugin-purge-icons": "^0.7.0",
     "vite-plugin-pwa": "^0.5.6",
     "vite-plugin-style-import": "^0.7.6",
     "vite-plugin-theme": "^0.4.8",
     "vite-plugin-windicss": "0.6.2",
-    "vue-eslint-parser": "^7.5.0",
+    "vue-eslint-parser": "^7.6.0",
     "yargs": "^16.2.0"
   },
   "resolutions": {
     "//": "Used to install imagemin dependencies, because imagemin may not be installed in China.If it is abroad, you can delete it",
-    "bin-wrapper": "npm:bin-wrapper-china",
-    "ecstatic": "4.1.4"
+    "bin-wrapper": "npm:bin-wrapper-china"
   },
   "repository": {
     "type": "git",

+ 793 - 0
src/components/Icon/data/icons.data.ts

@@ -0,0 +1,793 @@
+export default {
+  prefix: 'ant-design',
+  icons: [
+    'account-book-filled',
+    'account-book-outlined',
+    'account-book-twotone',
+    'aim-outlined',
+    'alert-filled',
+    'alert-outlined',
+    'alert-twotone',
+    'alibaba-outlined',
+    'align-center-outlined',
+    'align-left-outlined',
+    'align-right-outlined',
+    'alipay-circle-filled',
+    'alipay-circle-outlined',
+    'alipay-outlined',
+    'alipay-square-filled',
+    'aliwangwang-filled',
+    'aliwangwang-outlined',
+    'aliyun-outlined',
+    'amazon-circle-filled',
+    'amazon-outlined',
+    'amazon-square-filled',
+    'android-filled',
+    'android-outlined',
+    'ant-cloud-outlined',
+    'ant-design-outlined',
+    'apartment-outlined',
+    'api-filled',
+    'api-outlined',
+    'api-twotone',
+    'apple-filled',
+    'apple-outlined',
+    'appstore-add-outlined',
+    'appstore-filled',
+    'appstore-outlined',
+    'appstore-twotone',
+    'area-chart-outlined',
+    'arrow-down-outlined',
+    'arrow-left-outlined',
+    'arrow-right-outlined',
+    'arrow-up-outlined',
+    'arrows-alt-outlined',
+    'audio-filled',
+    'audio-muted-outlined',
+    'audio-outlined',
+    'audio-twotone',
+    'audit-outlined',
+    'backward-filled',
+    'backward-outlined',
+    'bank-filled',
+    'bank-outlined',
+    'bank-twotone',
+    'bar-chart-outlined',
+    'barcode-outlined',
+    'bars-outlined',
+    'behance-circle-filled',
+    'behance-outlined',
+    'behance-square-filled',
+    'behance-square-outlined',
+    'bell-filled',
+    'bell-outlined',
+    'bell-twotone',
+    'bg-colors-outlined',
+    'block-outlined',
+    'bold-outlined',
+    'book-filled',
+    'book-outlined',
+    'book-twotone',
+    'border-bottom-outlined',
+    'border-horizontal-outlined',
+    'border-inner-outlined',
+    'border-left-outlined',
+    'border-outer-outlined',
+    'border-outlined',
+    'border-right-outlined',
+    'border-top-outlined',
+    'border-verticle-outlined',
+    'borderless-table-outlined',
+    'box-plot-filled',
+    'box-plot-outlined',
+    'box-plot-twotone',
+    'branches-outlined',
+    'bug-filled',
+    'bug-outlined',
+    'bug-twotone',
+    'build-filled',
+    'build-outlined',
+    'build-twotone',
+    'bulb-filled',
+    'bulb-outlined',
+    'bulb-twotone',
+    'calculator-filled',
+    'calculator-outlined',
+    'calculator-twotone',
+    'calendar-filled',
+    'calendar-outlined',
+    'calendar-twotone',
+    'camera-filled',
+    'camera-outlined',
+    'camera-twotone',
+    'car-filled',
+    'car-outlined',
+    'car-twotone',
+    'caret-down-filled',
+    'caret-down-outlined',
+    'caret-left-filled',
+    'caret-left-outlined',
+    'caret-right-filled',
+    'caret-right-outlined',
+    'caret-up-filled',
+    'caret-up-outlined',
+    'carry-out-filled',
+    'carry-out-outlined',
+    'carry-out-twotone',
+    'check-circle-filled',
+    'check-circle-outlined',
+    'check-circle-twotone',
+    'check-outlined',
+    'check-square-filled',
+    'check-square-outlined',
+    'check-square-twotone',
+    'chrome-filled',
+    'chrome-outlined',
+    'ci-circle-filled',
+    'ci-circle-outlined',
+    'ci-circle-twotone',
+    'ci-outlined',
+    'ci-twotone',
+    'clear-outlined',
+    'clock-circle-filled',
+    'clock-circle-outlined',
+    'clock-circle-twotone',
+    'close-circle-filled',
+    'close-circle-outlined',
+    'close-circle-twotone',
+    'close-outlined',
+    'close-square-filled',
+    'close-square-outlined',
+    'close-square-twotone',
+    'cloud-download-outlined',
+    'cloud-filled',
+    'cloud-outlined',
+    'cloud-server-outlined',
+    'cloud-sync-outlined',
+    'cloud-twotone',
+    'cloud-upload-outlined',
+    'cluster-outlined',
+    'code-filled',
+    'code-outlined',
+    'code-sandbox-circle-filled',
+    'code-sandbox-outlined',
+    'code-sandbox-square-filled',
+    'code-twotone',
+    'codepen-circle-filled',
+    'codepen-circle-outlined',
+    'codepen-outlined',
+    'codepen-square-filled',
+    'coffee-outlined',
+    'column-height-outlined',
+    'column-width-outlined',
+    'comment-outlined',
+    'compass-filled',
+    'compass-outlined',
+    'compass-twotone',
+    'compress-outlined',
+    'console-sql-outlined',
+    'contacts-filled',
+    'contacts-outlined',
+    'contacts-twotone',
+    'container-filled',
+    'container-outlined',
+    'container-twotone',
+    'control-filled',
+    'control-outlined',
+    'control-twotone',
+    'copy-filled',
+    'copy-outlined',
+    'copy-twotone',
+    'copyright-circle-filled',
+    'copyright-circle-outlined',
+    'copyright-circle-twotone',
+    'copyright-outlined',
+    'copyright-twotone',
+    'credit-card-filled',
+    'credit-card-outlined',
+    'credit-card-twotone',
+    'crown-filled',
+    'crown-outlined',
+    'crown-twotone',
+    'customer-service-filled',
+    'customer-service-outlined',
+    'customer-service-twotone',
+    'dash-outlined',
+    'dashboard-filled',
+    'dashboard-outlined',
+    'dashboard-twotone',
+    'database-filled',
+    'database-outlined',
+    'database-twotone',
+    'delete-column-outlined',
+    'delete-filled',
+    'delete-outlined',
+    'delete-row-outlined',
+    'delete-twotone',
+    'delivered-procedure-outlined',
+    'deployment-unit-outlined',
+    'desktop-outlined',
+    'diff-filled',
+    'diff-outlined',
+    'diff-twotone',
+    'dingding-outlined',
+    'dingtalk-circle-filled',
+    'dingtalk-outlined',
+    'dingtalk-square-filled',
+    'disconnect-outlined',
+    'dislike-filled',
+    'dislike-outlined',
+    'dislike-twotone',
+    'dollar-circle-filled',
+    'dollar-circle-outlined',
+    'dollar-circle-twotone',
+    'dollar-outlined',
+    'dollar-twotone',
+    'dot-chart-outlined',
+    'double-left-outlined',
+    'double-right-outlined',
+    'down-circle-filled',
+    'down-circle-outlined',
+    'down-circle-twotone',
+    'down-outlined',
+    'down-square-filled',
+    'down-square-outlined',
+    'down-square-twotone',
+    'download-outlined',
+    'drag-outlined',
+    'dribbble-circle-filled',
+    'dribbble-outlined',
+    'dribbble-square-filled',
+    'dribbble-square-outlined',
+    'dropbox-circle-filled',
+    'dropbox-outlined',
+    'dropbox-square-filled',
+    'edit-filled',
+    'edit-outlined',
+    'edit-twotone',
+    'ellipsis-outlined',
+    'enter-outlined',
+    'environment-filled',
+    'environment-outlined',
+    'environment-twotone',
+    'euro-circle-filled',
+    'euro-circle-outlined',
+    'euro-circle-twotone',
+    'euro-outlined',
+    'euro-twotone',
+    'exception-outlined',
+    'exclamation-circle-filled',
+    'exclamation-circle-outlined',
+    'exclamation-circle-twotone',
+    'exclamation-outlined',
+    'expand-alt-outlined',
+    'expand-outlined',
+    'experiment-filled',
+    'experiment-outlined',
+    'experiment-twotone',
+    'export-outlined',
+    'eye-filled',
+    'eye-invisible-filled',
+    'eye-invisible-outlined',
+    'eye-invisible-twotone',
+    'eye-outlined',
+    'eye-twotone',
+    'facebook-filled',
+    'facebook-outlined',
+    'fall-outlined',
+    'fast-backward-filled',
+    'fast-backward-outlined',
+    'fast-forward-filled',
+    'fast-forward-outlined',
+    'field-binary-outlined',
+    'field-number-outlined',
+    'field-string-outlined',
+    'field-time-outlined',
+    'file-add-filled',
+    'file-add-outlined',
+    'file-add-twotone',
+    'file-done-outlined',
+    'file-excel-filled',
+    'file-excel-outlined',
+    'file-excel-twotone',
+    'file-exclamation-filled',
+    'file-exclamation-outlined',
+    'file-exclamation-twotone',
+    'file-filled',
+    'file-gif-outlined',
+    'file-image-filled',
+    'file-image-outlined',
+    'file-image-twotone',
+    'file-jpg-outlined',
+    'file-markdown-filled',
+    'file-markdown-outlined',
+    'file-markdown-twotone',
+    'file-outlined',
+    'file-pdf-filled',
+    'file-pdf-outlined',
+    'file-pdf-twotone',
+    'file-ppt-filled',
+    'file-ppt-outlined',
+    'file-ppt-twotone',
+    'file-protect-outlined',
+    'file-search-outlined',
+    'file-sync-outlined',
+    'file-text-filled',
+    'file-text-outlined',
+    'file-text-twotone',
+    'file-twotone',
+    'file-unknown-filled',
+    'file-unknown-outlined',
+    'file-unknown-twotone',
+    'file-word-filled',
+    'file-word-outlined',
+    'file-word-twotone',
+    'file-zip-filled',
+    'file-zip-outlined',
+    'file-zip-twotone',
+    'filter-filled',
+    'filter-outlined',
+    'filter-twotone',
+    'fire-filled',
+    'fire-outlined',
+    'fire-twotone',
+    'flag-filled',
+    'flag-outlined',
+    'flag-twotone',
+    'folder-add-filled',
+    'folder-add-outlined',
+    'folder-add-twotone',
+    'folder-filled',
+    'folder-open-filled',
+    'folder-open-outlined',
+    'folder-open-twotone',
+    'folder-outlined',
+    'folder-twotone',
+    'folder-view-outlined',
+    'font-colors-outlined',
+    'font-size-outlined',
+    'fork-outlined',
+    'form-outlined',
+    'format-painter-filled',
+    'format-painter-outlined',
+    'forward-filled',
+    'forward-outlined',
+    'frown-filled',
+    'frown-outlined',
+    'frown-twotone',
+    'fullscreen-exit-outlined',
+    'fullscreen-outlined',
+    'function-outlined',
+    'fund-filled',
+    'fund-outlined',
+    'fund-projection-screen-outlined',
+    'fund-twotone',
+    'fund-view-outlined',
+    'funnel-plot-filled',
+    'funnel-plot-outlined',
+    'funnel-plot-twotone',
+    'gateway-outlined',
+    'gif-outlined',
+    'gift-filled',
+    'gift-outlined',
+    'gift-twotone',
+    'github-filled',
+    'github-outlined',
+    'gitlab-filled',
+    'gitlab-outlined',
+    'global-outlined',
+    'gold-filled',
+    'gold-outlined',
+    'gold-twotone',
+    'golden-filled',
+    'google-circle-filled',
+    'google-outlined',
+    'google-plus-circle-filled',
+    'google-plus-outlined',
+    'google-plus-square-filled',
+    'google-square-filled',
+    'group-outlined',
+    'hdd-filled',
+    'hdd-outlined',
+    'hdd-twotone',
+    'heart-filled',
+    'heart-outlined',
+    'heart-twotone',
+    'heat-map-outlined',
+    'highlight-filled',
+    'highlight-outlined',
+    'highlight-twotone',
+    'history-outlined',
+    'home-filled',
+    'home-outlined',
+    'home-twotone',
+    'hourglass-filled',
+    'hourglass-outlined',
+    'hourglass-twotone',
+    'html5-filled',
+    'html5-outlined',
+    'html5-twotone',
+    'idcard-filled',
+    'idcard-outlined',
+    'idcard-twotone',
+    'ie-circle-filled',
+    'ie-outlined',
+    'ie-square-filled',
+    'import-outlined',
+    'inbox-outlined',
+    'info-circle-filled',
+    'info-circle-outlined',
+    'info-circle-twotone',
+    'info-outlined',
+    'insert-row-above-outlined',
+    'insert-row-below-outlined',
+    'insert-row-left-outlined',
+    'insert-row-right-outlined',
+    'instagram-filled',
+    'instagram-outlined',
+    'insurance-filled',
+    'insurance-outlined',
+    'insurance-twotone',
+    'interaction-filled',
+    'interaction-outlined',
+    'interaction-twotone',
+    'issues-close-outlined',
+    'italic-outlined',
+    'key-outlined',
+    'laptop-outlined',
+    'layout-filled',
+    'layout-outlined',
+    'layout-twotone',
+    'left-circle-filled',
+    'left-circle-outlined',
+    'left-circle-twotone',
+    'left-outlined',
+    'left-square-filled',
+    'left-square-outlined',
+    'left-square-twotone',
+    'like-filled',
+    'like-outlined',
+    'like-twotone',
+    'line-chart-outlined',
+    'line-height-outlined',
+    'line-outlined',
+    'link-outlined',
+    'linkedin-filled',
+    'linkedin-outlined',
+    'loading-3-quarters-outlined',
+    'loading-outlined',
+    'lock-filled',
+    'lock-outlined',
+    'lock-twotone',
+    'login-outlined',
+    'logout-outlined',
+    'mac-command-filled',
+    'mac-command-outlined',
+    'mail-filled',
+    'mail-outlined',
+    'mail-twotone',
+    'man-outlined',
+    'medicine-box-filled',
+    'medicine-box-outlined',
+    'medicine-box-twotone',
+    'medium-circle-filled',
+    'medium-outlined',
+    'medium-square-filled',
+    'medium-workmark-outlined',
+    'meh-filled',
+    'meh-outlined',
+    'meh-twotone',
+    'menu-fold-outlined',
+    'menu-outlined',
+    'menu-unfold-outlined',
+    'merge-cells-outlined',
+    'message-filled',
+    'message-outlined',
+    'message-twotone',
+    'minus-circle-filled',
+    'minus-circle-outlined',
+    'minus-circle-twotone',
+    'minus-outlined',
+    'minus-square-filled',
+    'minus-square-outlined',
+    'minus-square-twotone',
+    'mobile-filled',
+    'mobile-outlined',
+    'mobile-twotone',
+    'money-collect-filled',
+    'money-collect-outlined',
+    'money-collect-twotone',
+    'monitor-outlined',
+    'more-outlined',
+    'node-collapse-outlined',
+    'node-expand-outlined',
+    'node-index-outlined',
+    'notification-filled',
+    'notification-outlined',
+    'notification-twotone',
+    'number-outlined',
+    'one-to-one-outlined',
+    'ordered-list-outlined',
+    'paper-clip-outlined',
+    'partition-outlined',
+    'pause-circle-filled',
+    'pause-circle-outlined',
+    'pause-circle-twotone',
+    'pause-outlined',
+    'pay-circle-filled',
+    'pay-circle-outlined',
+    'percentage-outlined',
+    'phone-filled',
+    'phone-outlined',
+    'phone-twotone',
+    'pic-center-outlined',
+    'pic-left-outlined',
+    'pic-right-outlined',
+    'picture-filled',
+    'picture-outlined',
+    'picture-twotone',
+    'pie-chart-filled',
+    'pie-chart-outlined',
+    'pie-chart-twotone',
+    'play-circle-filled',
+    'play-circle-outlined',
+    'play-circle-twotone',
+    'play-square-filled',
+    'play-square-outlined',
+    'play-square-twotone',
+    'plus-circle-filled',
+    'plus-circle-outlined',
+    'plus-circle-twotone',
+    'plus-outlined',
+    'plus-square-filled',
+    'plus-square-outlined',
+    'plus-square-twotone',
+    'pound-circle-filled',
+    'pound-circle-outlined',
+    'pound-circle-twotone',
+    'pound-outlined',
+    'poweroff-outlined',
+    'printer-filled',
+    'printer-outlined',
+    'printer-twotone',
+    'profile-filled',
+    'profile-outlined',
+    'profile-twotone',
+    'project-filled',
+    'project-outlined',
+    'project-twotone',
+    'property-safety-filled',
+    'property-safety-outlined',
+    'property-safety-twotone',
+    'pull-request-outlined',
+    'pushpin-filled',
+    'pushpin-outlined',
+    'pushpin-twotone',
+    'qq-circle-filled',
+    'qq-outlined',
+    'qq-square-filled',
+    'qrcode-outlined',
+    'question-circle-filled',
+    'question-circle-outlined',
+    'question-circle-twotone',
+    'question-outlined',
+    'radar-chart-outlined',
+    'radius-bottomleft-outlined',
+    'radius-bottomright-outlined',
+    'radius-setting-outlined',
+    'radius-upleft-outlined',
+    'radius-upright-outlined',
+    'read-filled',
+    'read-outlined',
+    'reconciliation-filled',
+    'reconciliation-outlined',
+    'reconciliation-twotone',
+    'red-envelope-filled',
+    'red-envelope-outlined',
+    'red-envelope-twotone',
+    'reddit-circle-filled',
+    'reddit-outlined',
+    'reddit-square-filled',
+    'redo-outlined',
+    'reload-outlined',
+    'rest-filled',
+    'rest-outlined',
+    'rest-twotone',
+    'retweet-outlined',
+    'right-circle-filled',
+    'right-circle-outlined',
+    'right-circle-twotone',
+    'right-outlined',
+    'right-square-filled',
+    'right-square-outlined',
+    'right-square-twotone',
+    'rise-outlined',
+    'robot-filled',
+    'robot-outlined',
+    'rocket-filled',
+    'rocket-outlined',
+    'rocket-twotone',
+    'rollback-outlined',
+    'rotate-left-outlined',
+    'rotate-right-outlined',
+    'safety-certificate-filled',
+    'safety-certificate-outlined',
+    'safety-certificate-twotone',
+    'safety-outlined',
+    'save-filled',
+    'save-outlined',
+    'save-twotone',
+    'scan-outlined',
+    'schedule-filled',
+    'schedule-outlined',
+    'schedule-twotone',
+    'scissor-outlined',
+    'search-outlined',
+    'security-scan-filled',
+    'security-scan-outlined',
+    'security-scan-twotone',
+    'select-outlined',
+    'send-outlined',
+    'setting-filled',
+    'setting-outlined',
+    'setting-twotone',
+    'shake-outlined',
+    'share-alt-outlined',
+    'shop-filled',
+    'shop-outlined',
+    'shop-twotone',
+    'shopping-cart-outlined',
+    'shopping-filled',
+    'shopping-outlined',
+    'shopping-twotone',
+    'shrink-outlined',
+    'signal-filled',
+    'sisternode-outlined',
+    'sketch-circle-filled',
+    'sketch-outlined',
+    'sketch-square-filled',
+    'skin-filled',
+    'skin-outlined',
+    'skin-twotone',
+    'skype-filled',
+    'skype-outlined',
+    'slack-circle-filled',
+    'slack-outlined',
+    'slack-square-filled',
+    'slack-square-outlined',
+    'sliders-filled',
+    'sliders-outlined',
+    'sliders-twotone',
+    'small-dash-outlined',
+    'smile-filled',
+    'smile-outlined',
+    'smile-twotone',
+    'snippets-filled',
+    'snippets-outlined',
+    'snippets-twotone',
+    'solution-outlined',
+    'sort-ascending-outlined',
+    'sort-descending-outlined',
+    'sound-filled',
+    'sound-outlined',
+    'sound-twotone',
+    'split-cells-outlined',
+    'star-filled',
+    'star-outlined',
+    'star-twotone',
+    'step-backward-filled',
+    'step-backward-outlined',
+    'step-forward-filled',
+    'step-forward-outlined',
+    'stock-outlined',
+    'stop-filled',
+    'stop-outlined',
+    'stop-twotone',
+    'strikethrough-outlined',
+    'subnode-outlined',
+    'swap-left-outlined',
+    'swap-outlined',
+    'swap-right-outlined',
+    'switcher-filled',
+    'switcher-outlined',
+    'switcher-twotone',
+    'sync-outlined',
+    'table-outlined',
+    'tablet-filled',
+    'tablet-outlined',
+    'tablet-twotone',
+    'tag-filled',
+    'tag-outlined',
+    'tag-twotone',
+    'tags-filled',
+    'tags-outlined',
+    'tags-twotone',
+    'taobao-circle-filled',
+    'taobao-circle-outlined',
+    'taobao-outlined',
+    'taobao-square-filled',
+    'team-outlined',
+    'thunderbolt-filled',
+    'thunderbolt-outlined',
+    'thunderbolt-twotone',
+    'to-top-outlined',
+    'tool-filled',
+    'tool-outlined',
+    'tool-twotone',
+    'trademark-circle-filled',
+    'trademark-circle-outlined',
+    'trademark-circle-twotone',
+    'trademark-outlined',
+    'transaction-outlined',
+    'translation-outlined',
+    'trophy-filled',
+    'trophy-outlined',
+    'trophy-twotone',
+    'twitter-circle-filled',
+    'twitter-outlined',
+    'twitter-square-filled',
+    'underline-outlined',
+    'undo-outlined',
+    'ungroup-outlined',
+    'unlock-filled',
+    'unlock-outlined',
+    'unlock-twotone',
+    'unordered-list-outlined',
+    'up-circle-filled',
+    'up-circle-outlined',
+    'up-circle-twotone',
+    'up-outlined',
+    'up-square-filled',
+    'up-square-outlined',
+    'up-square-twotone',
+    'upload-outlined',
+    'usb-filled',
+    'usb-outlined',
+    'usb-twotone',
+    'user-add-outlined',
+    'user-delete-outlined',
+    'user-outlined',
+    'user-switch-outlined',
+    'usergroup-add-outlined',
+    'usergroup-delete-outlined',
+    'verified-outlined',
+    'vertical-align-bottom-outlined',
+    'vertical-align-middle-outlined',
+    'vertical-align-top-outlined',
+    'vertical-left-outlined',
+    'vertical-right-outlined',
+    'video-camera-add-outlined',
+    'video-camera-filled',
+    'video-camera-outlined',
+    'video-camera-twotone',
+    'wallet-filled',
+    'wallet-outlined',
+    'wallet-twotone',
+    'warning-filled',
+    'warning-outlined',
+    'warning-twotone',
+    'wechat-filled',
+    'wechat-outlined',
+    'weibo-circle-filled',
+    'weibo-circle-outlined',
+    'weibo-outlined',
+    'weibo-square-filled',
+    'weibo-square-outlined',
+    'whats-app-outlined',
+    'wifi-outlined',
+    'windows-filled',
+    'windows-outlined',
+    'woman-outlined',
+    'yahoo-filled',
+    'yahoo-outlined',
+    'youtube-filled',
+    'youtube-outlined',
+    'yuque-filled',
+    'yuque-outlined',
+    'zhihu-circle-filled',
+    'zhihu-outlined',
+    'zhihu-square-filled',
+    'zoom-in-outlined',
+    'zoom-out-outlined',
+  ],
+};

+ 4 - 1
src/components/Icon/index.ts

@@ -1,5 +1,8 @@
 import Icon from './src/index.vue';
-import IconPicker from './src/IconPicker.vue';
+// import IconPicker from './src/IconPicker.vue';
+import { createAsyncComponent } from '/@/utils/factory/createAsyncComponent';
+
+const IconPicker = createAsyncComponent(() => import('./src/IconPicker.vue'));
 
 export { Icon, IconPicker };
 

+ 0 - 2338
src/components/Icon/json/ion-info.json

@@ -1,2338 +0,0 @@
-[
-  "ion:accessibility",
-  "ion:accessibility-outline",
-  "ion:accessibility-sharp",
-  "ion:add",
-  "ion:add-circle",
-  "ion:add-circle-outline",
-  "ion:add-circle-sharp",
-  "ion:add-outline",
-  "ion:add-sharp",
-  "ion:airplane",
-  "ion:airplane-outline",
-  "ion:airplane-sharp",
-  "ion:alarm",
-  "ion:alarm-outline",
-  "ion:alarm-sharp",
-  "ion:albums",
-  "ion:albums-outline",
-  "ion:albums-sharp",
-  "ion:alert",
-  "ion:alert-circle",
-  "ion:alert-circle-outline",
-  "ion:alert-circle-sharp",
-  "ion:alert-circled",
-  "ion:alert-outline",
-  "ion:alert-sharp",
-  "ion:american-football",
-  "ion:american-football-outline",
-  "ion:american-football-sharp",
-  "ion:analytics",
-  "ion:analytics-outline",
-  "ion:analytics-sharp",
-  "ion:android-bulb",
-  "ion:android-checkbox-outline-blank",
-  "ion:android-contact",
-  "ion:android-favorite-outline",
-  "ion:android-hangout",
-  "ion:android-more-horizontal",
-  "ion:android-plane",
-  "ion:android-sunny",
-  "ion:android-time",
-  "ion:android-train",
-  "ion:aperture",
-  "ion:aperture-outline",
-  "ion:aperture-sharp",
-  "ion:apps",
-  "ion:apps-outline",
-  "ion:apps-sharp",
-  "ion:archive",
-  "ion:archive-outline",
-  "ion:archive-sharp",
-  "ion:arrow-back",
-  "ion:arrow-back-circle",
-  "ion:arrow-back-circle-outline",
-  "ion:arrow-back-circle-sharp",
-  "ion:arrow-back-outline",
-  "ion:arrow-back-sharp",
-  "ion:arrow-down",
-  "ion:arrow-down-a",
-  "ion:arrow-down-b",
-  "ion:arrow-down-c",
-  "ion:arrow-down-circle",
-  "ion:arrow-down-circle-outline",
-  "ion:arrow-down-circle-sharp",
-  "ion:arrow-down-outline",
-  "ion:arrow-down-sharp",
-  "ion:arrow-expand",
-  "ion:arrow-forward",
-  "ion:arrow-forward-circle",
-  "ion:arrow-forward-circle-outline",
-  "ion:arrow-forward-circle-sharp",
-  "ion:arrow-forward-outline",
-  "ion:arrow-forward-sharp",
-  "ion:arrow-graph-down-left",
-  "ion:arrow-graph-down-right",
-  "ion:arrow-graph-up-left",
-  "ion:arrow-graph-up-right",
-  "ion:arrow-left-a",
-  "ion:arrow-left-b",
-  "ion:arrow-left-c",
-  "ion:arrow-move",
-  "ion:arrow-redo",
-  "ion:arrow-redo-circle",
-  "ion:arrow-redo-circle-outline",
-  "ion:arrow-redo-circle-sharp",
-  "ion:arrow-redo-outline",
-  "ion:arrow-redo-sharp",
-  "ion:arrow-resize",
-  "ion:arrow-return-left",
-  "ion:arrow-return-right",
-  "ion:arrow-right-a",
-  "ion:arrow-right-b",
-  "ion:arrow-right-c",
-  "ion:arrow-shrink",
-  "ion:arrow-swap",
-  "ion:arrow-undo",
-  "ion:arrow-undo-circle",
-  "ion:arrow-undo-circle-outline",
-  "ion:arrow-undo-circle-sharp",
-  "ion:arrow-undo-outline",
-  "ion:arrow-undo-sharp",
-  "ion:arrow-up",
-  "ion:arrow-up-a",
-  "ion:arrow-up-b",
-  "ion:arrow-up-c",
-  "ion:arrow-up-circle",
-  "ion:arrow-up-circle-outline",
-  "ion:arrow-up-circle-sharp",
-  "ion:arrow-up-outline",
-  "ion:arrow-up-sharp",
-  "ion:asterisk",
-  "ion:at",
-  "ion:at-circle",
-  "ion:at-circle-outline",
-  "ion:at-circle-sharp",
-  "ion:at-outline",
-  "ion:at-sharp",
-  "ion:attach",
-  "ion:attach-outline",
-  "ion:attach-sharp",
-  "ion:backspace",
-  "ion:backspace-outline",
-  "ion:backspace-sharp",
-  "ion:bag",
-  "ion:bag-add",
-  "ion:bag-add-outline",
-  "ion:bag-add-sharp",
-  "ion:bag-check",
-  "ion:bag-check-outline",
-  "ion:bag-check-sharp",
-  "ion:bag-handle",
-  "ion:bag-handle-outline",
-  "ion:bag-handle-sharp",
-  "ion:bag-outline",
-  "ion:bag-remove",
-  "ion:bag-remove-outline",
-  "ion:bag-remove-sharp",
-  "ion:bag-sharp",
-  "ion:balloon",
-  "ion:balloon-outline",
-  "ion:balloon-sharp",
-  "ion:ban",
-  "ion:ban-outline",
-  "ion:ban-sharp",
-  "ion:bandage",
-  "ion:bandage-outline",
-  "ion:bandage-sharp",
-  "ion:bar-chart",
-  "ion:bar-chart-outline",
-  "ion:bar-chart-sharp",
-  "ion:barbell",
-  "ion:barbell-outline",
-  "ion:barbell-sharp",
-  "ion:barcode",
-  "ion:barcode-outline",
-  "ion:barcode-sharp",
-  "ion:baseball",
-  "ion:baseball-outline",
-  "ion:baseball-sharp",
-  "ion:basket",
-  "ion:basket-outline",
-  "ion:basket-sharp",
-  "ion:basketball",
-  "ion:basketball-outline",
-  "ion:basketball-sharp",
-  "ion:battery-charging",
-  "ion:battery-charging-outline",
-  "ion:battery-charging-sharp",
-  "ion:battery-dead",
-  "ion:battery-dead-outline",
-  "ion:battery-dead-sharp",
-  "ion:battery-empty",
-  "ion:battery-full",
-  "ion:battery-full-outline",
-  "ion:battery-full-sharp",
-  "ion:battery-half",
-  "ion:battery-half-outline",
-  "ion:battery-half-sharp",
-  "ion:battery-low",
-  "ion:beaker",
-  "ion:beaker-outline",
-  "ion:beaker-sharp",
-  "ion:bed",
-  "ion:bed-outline",
-  "ion:bed-sharp",
-  "ion:beer",
-  "ion:beer-outline",
-  "ion:beer-sharp",
-  "ion:bicycle",
-  "ion:bicycle-outline",
-  "ion:bicycle-sharp",
-  "ion:bluetooth",
-  "ion:bluetooth-outline",
-  "ion:bluetooth-sharp",
-  "ion:boat",
-  "ion:boat-outline",
-  "ion:boat-sharp",
-  "ion:body",
-  "ion:body-outline",
-  "ion:body-sharp",
-  "ion:bonfire",
-  "ion:bonfire-outline",
-  "ion:bonfire-sharp",
-  "ion:book",
-  "ion:book-outline",
-  "ion:book-sharp",
-  "ion:bookmark",
-  "ion:bookmark-outline",
-  "ion:bookmark-sharp",
-  "ion:bookmarks",
-  "ion:bookmarks-outline",
-  "ion:bookmarks-sharp",
-  "ion:bowling-ball",
-  "ion:bowling-ball-outline",
-  "ion:bowling-ball-sharp",
-  "ion:bowtie",
-  "ion:briefcase",
-  "ion:briefcase-outline",
-  "ion:briefcase-sharp",
-  "ion:browsers",
-  "ion:browsers-outline",
-  "ion:browsers-sharp",
-  "ion:brush",
-  "ion:brush-outline",
-  "ion:brush-sharp",
-  "ion:bug",
-  "ion:bug-outline",
-  "ion:bug-sharp",
-  "ion:build",
-  "ion:build-outline",
-  "ion:build-sharp",
-  "ion:bulb",
-  "ion:bulb-outline",
-  "ion:bulb-sharp",
-  "ion:bus",
-  "ion:bus-outline",
-  "ion:bus-sharp",
-  "ion:business",
-  "ion:business-outline",
-  "ion:business-sharp",
-  "ion:cafe",
-  "ion:cafe-outline",
-  "ion:cafe-sharp",
-  "ion:calculator",
-  "ion:calculator-outline",
-  "ion:calculator-sharp",
-  "ion:calendar",
-  "ion:calendar-clear",
-  "ion:calendar-clear-outline",
-  "ion:calendar-clear-sharp",
-  "ion:calendar-number",
-  "ion:calendar-number-outline",
-  "ion:calendar-number-sharp",
-  "ion:calendar-outline",
-  "ion:calendar-sharp",
-  "ion:call",
-  "ion:call-outline",
-  "ion:call-sharp",
-  "ion:camera",
-  "ion:camera-outline",
-  "ion:camera-reverse",
-  "ion:camera-reverse-outline",
-  "ion:camera-reverse-sharp",
-  "ion:camera-sharp",
-  "ion:car",
-  "ion:car-outline",
-  "ion:car-sharp",
-  "ion:car-sport",
-  "ion:car-sport-outline",
-  "ion:car-sport-sharp",
-  "ion:card",
-  "ion:card-outline",
-  "ion:card-sharp",
-  "ion:caret-back",
-  "ion:caret-back-circle",
-  "ion:caret-back-circle-outline",
-  "ion:caret-back-circle-sharp",
-  "ion:caret-back-outline",
-  "ion:caret-back-sharp",
-  "ion:caret-down",
-  "ion:caret-down-circle",
-  "ion:caret-down-circle-outline",
-  "ion:caret-down-circle-sharp",
-  "ion:caret-down-outline",
-  "ion:caret-down-sharp",
-  "ion:caret-forward",
-  "ion:caret-forward-circle",
-  "ion:caret-forward-circle-outline",
-  "ion:caret-forward-circle-sharp",
-  "ion:caret-forward-outline",
-  "ion:caret-forward-sharp",
-  "ion:caret-up",
-  "ion:caret-up-circle",
-  "ion:caret-up-circle-outline",
-  "ion:caret-up-circle-sharp",
-  "ion:caret-up-outline",
-  "ion:caret-up-sharp",
-  "ion:cart",
-  "ion:cart-outline",
-  "ion:cart-sharp",
-  "ion:cash",
-  "ion:cash-outline",
-  "ion:cash-sharp",
-  "ion:cellular",
-  "ion:cellular-outline",
-  "ion:cellular-sharp",
-  "ion:chatbox",
-  "ion:chatbox-ellipses",
-  "ion:chatbox-ellipses-outline",
-  "ion:chatbox-ellipses-sharp",
-  "ion:chatbox-outline",
-  "ion:chatbox-sharp",
-  "ion:chatbox-working",
-  "ion:chatboxes",
-  "ion:chatbubble",
-  "ion:chatbubble-ellipses",
-  "ion:chatbubble-ellipses-outline",
-  "ion:chatbubble-ellipses-sharp",
-  "ion:chatbubble-outline",
-  "ion:chatbubble-sharp",
-  "ion:chatbubble-working",
-  "ion:chatbubbles",
-  "ion:chatbubbles-outline",
-  "ion:chatbubbles-sharp",
-  "ion:checkbox",
-  "ion:checkbox-outline",
-  "ion:checkbox-sharp",
-  "ion:checkmark",
-  "ion:checkmark-circle",
-  "ion:checkmark-circle-outline",
-  "ion:checkmark-circle-sharp",
-  "ion:checkmark-circled",
-  "ion:checkmark-done",
-  "ion:checkmark-done-circle",
-  "ion:checkmark-done-circle-outline",
-  "ion:checkmark-done-circle-sharp",
-  "ion:checkmark-done-outline",
-  "ion:checkmark-done-sharp",
-  "ion:checkmark-outline",
-  "ion:checkmark-round",
-  "ion:checkmark-sharp",
-  "ion:chevron-back",
-  "ion:chevron-back-circle",
-  "ion:chevron-back-circle-outline",
-  "ion:chevron-back-circle-sharp",
-  "ion:chevron-back-outline",
-  "ion:chevron-back-sharp",
-  "ion:chevron-down",
-  "ion:chevron-down-circle",
-  "ion:chevron-down-circle-outline",
-  "ion:chevron-down-circle-sharp",
-  "ion:chevron-down-outline",
-  "ion:chevron-down-sharp",
-  "ion:chevron-forward",
-  "ion:chevron-forward-circle",
-  "ion:chevron-forward-circle-outline",
-  "ion:chevron-forward-circle-sharp",
-  "ion:chevron-forward-outline",
-  "ion:chevron-forward-sharp",
-  "ion:chevron-left",
-  "ion:chevron-right",
-  "ion:chevron-up",
-  "ion:chevron-up-circle",
-  "ion:chevron-up-circle-outline",
-  "ion:chevron-up-circle-sharp",
-  "ion:chevron-up-outline",
-  "ion:chevron-up-sharp",
-  "ion:clipboard",
-  "ion:clipboard-outline",
-  "ion:clipboard-sharp",
-  "ion:clock",
-  "ion:close",
-  "ion:close-circle",
-  "ion:close-circle-outline",
-  "ion:close-circle-sharp",
-  "ion:close-circled",
-  "ion:close-outline",
-  "ion:close-round",
-  "ion:close-sharp",
-  "ion:closed-captioning",
-  "ion:cloud",
-  "ion:cloud-circle",
-  "ion:cloud-circle-outline",
-  "ion:cloud-circle-sharp",
-  "ion:cloud-done",
-  "ion:cloud-done-outline",
-  "ion:cloud-done-sharp",
-  "ion:cloud-download",
-  "ion:cloud-download-outline",
-  "ion:cloud-download-sharp",
-  "ion:cloud-offline",
-  "ion:cloud-offline-outline",
-  "ion:cloud-offline-sharp",
-  "ion:cloud-outline",
-  "ion:cloud-sharp",
-  "ion:cloud-upload",
-  "ion:cloud-upload-outline",
-  "ion:cloud-upload-sharp",
-  "ion:cloudy",
-  "ion:cloudy-night",
-  "ion:cloudy-night-outline",
-  "ion:cloudy-night-sharp",
-  "ion:cloudy-outline",
-  "ion:cloudy-sharp",
-  "ion:code",
-  "ion:code-download",
-  "ion:code-download-outline",
-  "ion:code-download-sharp",
-  "ion:code-outline",
-  "ion:code-sharp",
-  "ion:code-slash",
-  "ion:code-slash-outline",
-  "ion:code-slash-sharp",
-  "ion:code-working",
-  "ion:code-working-outline",
-  "ion:code-working-sharp",
-  "ion:coffee",
-  "ion:cog",
-  "ion:cog-outline",
-  "ion:cog-sharp",
-  "ion:color-fill",
-  "ion:color-fill-outline",
-  "ion:color-fill-sharp",
-  "ion:color-filter",
-  "ion:color-filter-outline",
-  "ion:color-filter-sharp",
-  "ion:color-palette",
-  "ion:color-palette-outline",
-  "ion:color-palette-sharp",
-  "ion:color-wand",
-  "ion:color-wand-outline",
-  "ion:color-wand-sharp",
-  "ion:compass",
-  "ion:compass-outline",
-  "ion:compass-sharp",
-  "ion:compose",
-  "ion:connection-bars",
-  "ion:construct",
-  "ion:construct-outline",
-  "ion:construct-sharp",
-  "ion:contract",
-  "ion:contract-outline",
-  "ion:contract-sharp",
-  "ion:contrast",
-  "ion:contrast-outline",
-  "ion:contrast-sharp",
-  "ion:copy",
-  "ion:copy-outline",
-  "ion:copy-sharp",
-  "ion:create",
-  "ion:create-outline",
-  "ion:create-sharp",
-  "ion:crop",
-  "ion:crop-outline",
-  "ion:crop-sharp",
-  "ion:cube",
-  "ion:cube-outline",
-  "ion:cube-sharp",
-  "ion:cut",
-  "ion:cut-outline",
-  "ion:cut-sharp",
-  "ion:desktop",
-  "ion:desktop-outline",
-  "ion:desktop-sharp",
-  "ion:diamond",
-  "ion:diamond-outline",
-  "ion:diamond-sharp",
-  "ion:dice",
-  "ion:dice-outline",
-  "ion:dice-sharp",
-  "ion:disc",
-  "ion:disc-outline",
-  "ion:disc-sharp",
-  "ion:document",
-  "ion:document-attach",
-  "ion:document-attach-outline",
-  "ion:document-attach-sharp",
-  "ion:document-lock",
-  "ion:document-lock-outline",
-  "ion:document-lock-sharp",
-  "ion:document-outline",
-  "ion:document-sharp",
-  "ion:document-text",
-  "ion:document-text-outline",
-  "ion:document-text-sharp",
-  "ion:documents",
-  "ion:documents-outline",
-  "ion:documents-sharp",
-  "ion:download",
-  "ion:download-outline",
-  "ion:download-sharp",
-  "ion:drag",
-  "ion:duplicate",
-  "ion:duplicate-outline",
-  "ion:duplicate-sharp",
-  "ion:ear",
-  "ion:ear-outline",
-  "ion:ear-sharp",
-  "ion:earth",
-  "ion:earth-outline",
-  "ion:earth-sharp",
-  "ion:easel",
-  "ion:easel-outline",
-  "ion:easel-sharp",
-  "ion:edit",
-  "ion:egg",
-  "ion:egg-outline",
-  "ion:egg-sharp",
-  "ion:eject",
-  "ion:ellipse",
-  "ion:ellipse-outline",
-  "ion:ellipse-sharp",
-  "ion:ellipsis-horizontal",
-  "ion:ellipsis-horizontal-circle",
-  "ion:ellipsis-horizontal-circle-outline",
-  "ion:ellipsis-horizontal-circle-sharp",
-  "ion:ellipsis-horizontal-outline",
-  "ion:ellipsis-horizontal-sharp",
-  "ion:ellipsis-vertical",
-  "ion:ellipsis-vertical-circle",
-  "ion:ellipsis-vertical-circle-outline",
-  "ion:ellipsis-vertical-circle-sharp",
-  "ion:ellipsis-vertical-outline",
-  "ion:ellipsis-vertical-sharp",
-  "ion:email",
-  "ion:email-unread",
-  "ion:enter",
-  "ion:enter-outline",
-  "ion:enter-sharp",
-  "ion:erlenmeyer-flask",
-  "ion:erlenmeyer-flask-bubbles",
-  "ion:exit",
-  "ion:exit-outline",
-  "ion:exit-sharp",
-  "ion:expand",
-  "ion:expand-outline",
-  "ion:expand-sharp",
-  "ion:extension-puzzle",
-  "ion:extension-puzzle-outline",
-  "ion:extension-puzzle-sharp",
-  "ion:eye",
-  "ion:eye-disabled",
-  "ion:eye-off",
-  "ion:eye-off-outline",
-  "ion:eye-off-sharp",
-  "ion:eye-outline",
-  "ion:eye-sharp",
-  "ion:eyedrop",
-  "ion:eyedrop-outline",
-  "ion:eyedrop-sharp",
-  "ion:fast-food",
-  "ion:fast-food-outline",
-  "ion:fast-food-sharp",
-  "ion:female",
-  "ion:female-outline",
-  "ion:female-sharp",
-  "ion:file-tray",
-  "ion:file-tray-full",
-  "ion:file-tray-full-outline",
-  "ion:file-tray-full-sharp",
-  "ion:file-tray-outline",
-  "ion:file-tray-sharp",
-  "ion:file-tray-stacked",
-  "ion:file-tray-stacked-outline",
-  "ion:file-tray-stacked-sharp",
-  "ion:filing",
-  "ion:film",
-  "ion:film-marker",
-  "ion:film-outline",
-  "ion:film-sharp",
-  "ion:filter",
-  "ion:filter-circle",
-  "ion:filter-circle-outline",
-  "ion:filter-circle-sharp",
-  "ion:filter-outline",
-  "ion:filter-sharp",
-  "ion:finger-print",
-  "ion:finger-print-outline",
-  "ion:finger-print-sharp",
-  "ion:fireball",
-  "ion:fish",
-  "ion:fish-outline",
-  "ion:fish-sharp",
-  "ion:fitness",
-  "ion:fitness-outline",
-  "ion:fitness-sharp",
-  "ion:flag",
-  "ion:flag-outline",
-  "ion:flag-sharp",
-  "ion:flame",
-  "ion:flame-outline",
-  "ion:flame-sharp",
-  "ion:flash",
-  "ion:flash-off",
-  "ion:flash-off-outline",
-  "ion:flash-off-sharp",
-  "ion:flash-outline",
-  "ion:flash-sharp",
-  "ion:flashlight",
-  "ion:flashlight-outline",
-  "ion:flashlight-sharp",
-  "ion:flask",
-  "ion:flask-outline",
-  "ion:flask-sharp",
-  "ion:flower",
-  "ion:flower-outline",
-  "ion:flower-sharp",
-  "ion:folder",
-  "ion:folder-open",
-  "ion:folder-open-outline",
-  "ion:folder-open-sharp",
-  "ion:folder-outline",
-  "ion:folder-sharp",
-  "ion:football",
-  "ion:football-outline",
-  "ion:football-sharp",
-  "ion:footsteps",
-  "ion:footsteps-outline",
-  "ion:footsteps-sharp",
-  "ion:fork",
-  "ion:fork-repo",
-  "ion:forward",
-  "ion:funnel",
-  "ion:funnel-outline",
-  "ion:funnel-sharp",
-  "ion:game-controller",
-  "ion:game-controller-outline",
-  "ion:game-controller-sharp",
-  "ion:gear-a",
-  "ion:gear-b",
-  "ion:gift",
-  "ion:gift-outline",
-  "ion:gift-sharp",
-  "ion:git-branch",
-  "ion:git-branch-outline",
-  "ion:git-branch-sharp",
-  "ion:git-commit",
-  "ion:git-commit-outline",
-  "ion:git-commit-sharp",
-  "ion:git-compare",
-  "ion:git-compare-outline",
-  "ion:git-compare-sharp",
-  "ion:git-merge",
-  "ion:git-merge-outline",
-  "ion:git-merge-sharp",
-  "ion:git-network",
-  "ion:git-network-outline",
-  "ion:git-network-sharp",
-  "ion:git-pull-request",
-  "ion:git-pull-request-outline",
-  "ion:git-pull-request-sharp",
-  "ion:glasses",
-  "ion:glasses-outline",
-  "ion:glasses-sharp",
-  "ion:globe",
-  "ion:globe-outline",
-  "ion:globe-sharp",
-  "ion:golf",
-  "ion:golf-outline",
-  "ion:golf-sharp",
-  "ion:grid",
-  "ion:grid-outline",
-  "ion:grid-sharp",
-  "ion:hammer",
-  "ion:hammer-outline",
-  "ion:hammer-sharp",
-  "ion:hand-left",
-  "ion:hand-left-outline",
-  "ion:hand-left-sharp",
-  "ion:hand-right",
-  "ion:hand-right-outline",
-  "ion:hand-right-sharp",
-  "ion:happy",
-  "ion:happy-outline",
-  "ion:happy-sharp",
-  "ion:hardware-chip",
-  "ion:hardware-chip-outline",
-  "ion:hardware-chip-sharp",
-  "ion:headphone",
-  "ion:headset",
-  "ion:headset-outline",
-  "ion:headset-sharp",
-  "ion:heart",
-  "ion:heart-broken",
-  "ion:heart-circle",
-  "ion:heart-circle-outline",
-  "ion:heart-circle-sharp",
-  "ion:heart-dislike",
-  "ion:heart-dislike-circle",
-  "ion:heart-dislike-circle-outline",
-  "ion:heart-dislike-circle-sharp",
-  "ion:heart-dislike-outline",
-  "ion:heart-dislike-sharp",
-  "ion:heart-half",
-  "ion:heart-half-outline",
-  "ion:heart-half-sharp",
-  "ion:heart-outline",
-  "ion:heart-sharp",
-  "ion:help",
-  "ion:help-buoy",
-  "ion:help-buoy-outline",
-  "ion:help-buoy-sharp",
-  "ion:help-circle",
-  "ion:help-circle-outline",
-  "ion:help-circle-sharp",
-  "ion:help-circled",
-  "ion:help-outline",
-  "ion:help-sharp",
-  "ion:home",
-  "ion:home-outline",
-  "ion:home-sharp",
-  "ion:hourglass",
-  "ion:hourglass-outline",
-  "ion:hourglass-sharp",
-  "ion:ice-cream",
-  "ion:ice-cream-outline",
-  "ion:ice-cream-sharp",
-  "ion:icecream",
-  "ion:id-card",
-  "ion:id-card-outline",
-  "ion:id-card-sharp",
-  "ion:image",
-  "ion:image-outline",
-  "ion:image-sharp",
-  "ion:images",
-  "ion:images-outline",
-  "ion:images-sharp",
-  "ion:infinite",
-  "ion:infinite-outline",
-  "ion:infinite-sharp",
-  "ion:information",
-  "ion:information-circle",
-  "ion:information-circle-outline",
-  "ion:information-circle-sharp",
-  "ion:information-circled",
-  "ion:information-outline",
-  "ion:information-sharp",
-  "ion:invert-mode",
-  "ion:invert-mode-outline",
-  "ion:invert-mode-sharp",
-  "ion:ionic",
-  "ion:ios-add",
-  "ion:ios-add-circle",
-  "ion:ios-add-circle-outline",
-  "ion:ios-airplane",
-  "ion:ios-alarm",
-  "ion:ios-alarm-outline",
-  "ion:ios-albums",
-  "ion:ios-albums-outline",
-  "ion:ios-alert",
-  "ion:ios-american-football",
-  "ion:ios-americanfootball",
-  "ion:ios-americanfootball-outline",
-  "ion:ios-analytics",
-  "ion:ios-analytics-outline",
-  "ion:ios-aperture",
-  "ion:ios-apps",
-  "ion:ios-appstore",
-  "ion:ios-archive",
-  "ion:ios-arrow-back",
-  "ion:ios-arrow-down",
-  "ion:ios-arrow-dropdown",
-  "ion:ios-arrow-dropdown-circle",
-  "ion:ios-arrow-dropleft",
-  "ion:ios-arrow-dropleft-circle",
-  "ion:ios-arrow-dropright",
-  "ion:ios-arrow-dropright-circle",
-  "ion:ios-arrow-dropup",
-  "ion:ios-arrow-dropup-circle",
-  "ion:ios-arrow-forward",
-  "ion:ios-arrow-left",
-  "ion:ios-arrow-right",
-  "ion:ios-arrow-round-back",
-  "ion:ios-arrow-round-down",
-  "ion:ios-arrow-round-forward",
-  "ion:ios-arrow-round-up",
-  "ion:ios-arrow-thin-down",
-  "ion:ios-arrow-thin-left",
-  "ion:ios-arrow-thin-right",
-  "ion:ios-arrow-thin-up",
-  "ion:ios-arrow-up",
-  "ion:ios-at",
-  "ion:ios-at-outline",
-  "ion:ios-attach",
-  "ion:ios-backspace",
-  "ion:ios-barcode",
-  "ion:ios-barcode-outline",
-  "ion:ios-baseball",
-  "ion:ios-baseball-outline",
-  "ion:ios-basket",
-  "ion:ios-basketball",
-  "ion:ios-basketball-outline",
-  "ion:ios-battery-charging",
-  "ion:ios-battery-dead",
-  "ion:ios-battery-full",
-  "ion:ios-beaker",
-  "ion:ios-bed",
-  "ion:ios-beer",
-  "ion:ios-bell",
-  "ion:ios-bell-outline",
-  "ion:ios-bicycle",
-  "ion:ios-bluetooth",
-  "ion:ios-boat",
-  "ion:ios-body",
-  "ion:ios-body-outline",
-  "ion:ios-bolt",
-  "ion:ios-bolt-outline",
-  "ion:ios-bonfire",
-  "ion:ios-book",
-  "ion:ios-book-outline",
-  "ion:ios-bookmark",
-  "ion:ios-bookmarks",
-  "ion:ios-bookmarks-outline",
-  "ion:ios-bowtie",
-  "ion:ios-box",
-  "ion:ios-box-outline",
-  "ion:ios-briefcase",
-  "ion:ios-briefcase-outline",
-  "ion:ios-browsers",
-  "ion:ios-browsers-outline",
-  "ion:ios-brush",
-  "ion:ios-bug",
-  "ion:ios-build",
-  "ion:ios-bulb",
-  "ion:ios-bus",
-  "ion:ios-business",
-  "ion:ios-cafe",
-  "ion:ios-calculator",
-  "ion:ios-calculator-outline",
-  "ion:ios-calendar",
-  "ion:ios-calendar-outline",
-  "ion:ios-call",
-  "ion:ios-camera",
-  "ion:ios-camera-outline",
-  "ion:ios-car",
-  "ion:ios-card",
-  "ion:ios-cart",
-  "ion:ios-cart-outline",
-  "ion:ios-cash",
-  "ion:ios-cellular",
-  "ion:ios-chatboxes",
-  "ion:ios-chatboxes-outline",
-  "ion:ios-chatbubble",
-  "ion:ios-chatbubble-outline",
-  "ion:ios-chatbubbles",
-  "ion:ios-checkbox",
-  "ion:ios-checkbox-outline",
-  "ion:ios-checkmark",
-  "ion:ios-checkmark-circle",
-  "ion:ios-checkmark-circle-outline",
-  "ion:ios-checkmark-empty",
-  "ion:ios-checkmark-outline",
-  "ion:ios-circle-filled",
-  "ion:ios-circle-outline",
-  "ion:ios-clipboard",
-  "ion:ios-clock",
-  "ion:ios-clock-outline",
-  "ion:ios-close",
-  "ion:ios-close-circle",
-  "ion:ios-close-circle-outline",
-  "ion:ios-close-empty",
-  "ion:ios-close-outline",
-  "ion:ios-cloud",
-  "ion:ios-cloud-circle",
-  "ion:ios-cloud-done",
-  "ion:ios-cloud-download",
-  "ion:ios-cloud-download-outline",
-  "ion:ios-cloud-outline",
-  "ion:ios-cloud-upload",
-  "ion:ios-cloud-upload-outline",
-  "ion:ios-cloudy",
-  "ion:ios-cloudy-night",
-  "ion:ios-cloudy-night-outline",
-  "ion:ios-cloudy-outline",
-  "ion:ios-code",
-  "ion:ios-code-download",
-  "ion:ios-code-working",
-  "ion:ios-cog",
-  "ion:ios-cog-outline",
-  "ion:ios-color-fill",
-  "ion:ios-color-filter",
-  "ion:ios-color-filter-outline",
-  "ion:ios-color-palette",
-  "ion:ios-color-wand",
-  "ion:ios-color-wand-outline",
-  "ion:ios-compass",
-  "ion:ios-compose",
-  "ion:ios-compose-outline",
-  "ion:ios-construct",
-  "ion:ios-contact",
-  "ion:ios-contact-outline",
-  "ion:ios-contacts",
-  "ion:ios-contract",
-  "ion:ios-contrast",
-  "ion:ios-copy",
-  "ion:ios-copy-outline",
-  "ion:ios-create",
-  "ion:ios-crop",
-  "ion:ios-crop-strong",
-  "ion:ios-cube",
-  "ion:ios-cut",
-  "ion:ios-desktop",
-  "ion:ios-disc",
-  "ion:ios-document",
-  "ion:ios-done-all",
-  "ion:ios-download",
-  "ion:ios-download-outline",
-  "ion:ios-easel",
-  "ion:ios-egg",
-  "ion:ios-email",
-  "ion:ios-email-outline",
-  "ion:ios-exit",
-  "ion:ios-expand",
-  "ion:ios-eye",
-  "ion:ios-eye-off",
-  "ion:ios-eye-outline",
-  "ion:ios-fastforward",
-  "ion:ios-fastforward-outline",
-  "ion:ios-female",
-  "ion:ios-filing",
-  "ion:ios-filing-outline",
-  "ion:ios-film",
-  "ion:ios-film-outline",
-  "ion:ios-finger-print",
-  "ion:ios-fitness",
-  "ion:ios-flag",
-  "ion:ios-flag-outline",
-  "ion:ios-flame",
-  "ion:ios-flame-outline",
-  "ion:ios-flash",
-  "ion:ios-flash-off",
-  "ion:ios-flashlight",
-  "ion:ios-flask",
-  "ion:ios-flask-outline",
-  "ion:ios-flower",
-  "ion:ios-flower-outline",
-  "ion:ios-folder",
-  "ion:ios-folder-open",
-  "ion:ios-folder-outline",
-  "ion:ios-football",
-  "ion:ios-football-outline",
-  "ion:ios-funnel",
-  "ion:ios-game-controller-a",
-  "ion:ios-game-controller-a-outline",
-  "ion:ios-game-controller-b",
-  "ion:ios-game-controller-b-outline",
-  "ion:ios-gear",
-  "ion:ios-gear-outline",
-  "ion:ios-gift",
-  "ion:ios-git-branch",
-  "ion:ios-git-commit",
-  "ion:ios-git-compare",
-  "ion:ios-git-merge",
-  "ion:ios-git-network",
-  "ion:ios-git-pull-request",
-  "ion:ios-glasses",
-  "ion:ios-glasses-outline",
-  "ion:ios-globe",
-  "ion:ios-grid",
-  "ion:ios-grid-view",
-  "ion:ios-grid-view-outline",
-  "ion:ios-hammer",
-  "ion:ios-hand",
-  "ion:ios-happy",
-  "ion:ios-headset",
-  "ion:ios-heart",
-  "ion:ios-heart-dislike",
-  "ion:ios-heart-empty",
-  "ion:ios-heart-half",
-  "ion:ios-heart-outline",
-  "ion:ios-help",
-  "ion:ios-help-buoy",
-  "ion:ios-help-circle",
-  "ion:ios-help-circle-outline",
-  "ion:ios-help-empty",
-  "ion:ios-help-outline",
-  "ion:ios-home",
-  "ion:ios-home-outline",
-  "ion:ios-hourglass",
-  "ion:ios-ice-cream",
-  "ion:ios-image",
-  "ion:ios-images",
-  "ion:ios-infinite",
-  "ion:ios-infinite-outline",
-  "ion:ios-information",
-  "ion:ios-information-circle",
-  "ion:ios-information-circle-outline",
-  "ion:ios-information-empty",
-  "ion:ios-information-outline",
-  "ion:ios-ionic-outline",
-  "ion:ios-jet",
-  "ion:ios-journal",
-  "ion:ios-key",
-  "ion:ios-keypad",
-  "ion:ios-keypad-outline",
-  "ion:ios-laptop",
-  "ion:ios-leaf",
-  "ion:ios-lightbulb",
-  "ion:ios-lightbulb-outline",
-  "ion:ios-link",
-  "ion:ios-list",
-  "ion:ios-list-box",
-  "ion:ios-list-outline",
-  "ion:ios-locate",
-  "ion:ios-location",
-  "ion:ios-location-outline",
-  "ion:ios-lock",
-  "ion:ios-locked",
-  "ion:ios-locked-outline",
-  "ion:ios-log-in",
-  "ion:ios-log-out",
-  "ion:ios-loop",
-  "ion:ios-loop-strong",
-  "ion:ios-magnet",
-  "ion:ios-mail",
-  "ion:ios-mail-open",
-  "ion:ios-mail-unread",
-  "ion:ios-male",
-  "ion:ios-man",
-  "ion:ios-map",
-  "ion:ios-medal",
-  "ion:ios-medical",
-  "ion:ios-medical-outline",
-  "ion:ios-medkit",
-  "ion:ios-medkit-outline",
-  "ion:ios-megaphone",
-  "ion:ios-menu",
-  "ion:ios-mic",
-  "ion:ios-mic-off",
-  "ion:ios-mic-outline",
-  "ion:ios-microphone",
-  "ion:ios-minus",
-  "ion:ios-minus-empty",
-  "ion:ios-minus-outline",
-  "ion:ios-monitor",
-  "ion:ios-monitor-outline",
-  "ion:ios-moon",
-  "ion:ios-moon-outline",
-  "ion:ios-more",
-  "ion:ios-more-outline",
-  "ion:ios-move",
-  "ion:ios-musical-note",
-  "ion:ios-musical-notes",
-  "ion:ios-navigate",
-  "ion:ios-navigate-outline",
-  "ion:ios-notifications",
-  "ion:ios-notifications-off",
-  "ion:ios-notifications-outline",
-  "ion:ios-nuclear",
-  "ion:ios-nutrition",
-  "ion:ios-nutrition-outline",
-  "ion:ios-open",
-  "ion:ios-options",
-  "ion:ios-outlet",
-  "ion:ios-paper",
-  "ion:ios-paper-outline",
-  "ion:ios-paper-plane",
-  "ion:ios-paperplane",
-  "ion:ios-paperplane-outline",
-  "ion:ios-partly-sunny",
-  "ion:ios-partlysunny",
-  "ion:ios-partlysunny-outline",
-  "ion:ios-pause",
-  "ion:ios-pause-outline",
-  "ion:ios-paw",
-  "ion:ios-paw-outline",
-  "ion:ios-people",
-  "ion:ios-people-outline",
-  "ion:ios-person",
-  "ion:ios-person-add",
-  "ion:ios-person-outline",
-  "ion:ios-personadd",
-  "ion:ios-personadd-outline",
-  "ion:ios-phone-landscape",
-  "ion:ios-phone-portrait",
-  "ion:ios-photos",
-  "ion:ios-photos-outline",
-  "ion:ios-pie",
-  "ion:ios-pie-outline",
-  "ion:ios-pin",
-  "ion:ios-pint",
-  "ion:ios-pint-outline",
-  "ion:ios-pizza",
-  "ion:ios-planet",
-  "ion:ios-play",
-  "ion:ios-play-circle",
-  "ion:ios-play-outline",
-  "ion:ios-plus",
-  "ion:ios-plus-empty",
-  "ion:ios-plus-outline",
-  "ion:ios-podium",
-  "ion:ios-power",
-  "ion:ios-pricetag",
-  "ion:ios-pricetag-outline",
-  "ion:ios-pricetags",
-  "ion:ios-pricetags-outline",
-  "ion:ios-print",
-  "ion:ios-printer",
-  "ion:ios-printer-outline",
-  "ion:ios-pulse",
-  "ion:ios-pulse-strong",
-  "ion:ios-qr-scanner",
-  "ion:ios-quote",
-  "ion:ios-radio",
-  "ion:ios-radio-button-off",
-  "ion:ios-radio-button-on",
-  "ion:ios-rainy",
-  "ion:ios-rainy-outline",
-  "ion:ios-recording",
-  "ion:ios-recording-outline",
-  "ion:ios-redo",
-  "ion:ios-redo-outline",
-  "ion:ios-refresh",
-  "ion:ios-refresh-circle",
-  "ion:ios-refresh-empty",
-  "ion:ios-refresh-outline",
-  "ion:ios-reload",
-  "ion:ios-remove",
-  "ion:ios-remove-circle",
-  "ion:ios-remove-circle-outline",
-  "ion:ios-reorder",
-  "ion:ios-repeat",
-  "ion:ios-resize",
-  "ion:ios-restaurant",
-  "ion:ios-return-left",
-  "ion:ios-return-right",
-  "ion:ios-reverse-camera",
-  "ion:ios-reverse-camera-outline",
-  "ion:ios-rewind",
-  "ion:ios-rewind-outline",
-  "ion:ios-ribbon",
-  "ion:ios-rocket",
-  "ion:ios-rose",
-  "ion:ios-rose-outline",
-  "ion:ios-sad",
-  "ion:ios-save",
-  "ion:ios-school",
-  "ion:ios-search",
-  "ion:ios-search-strong",
-  "ion:ios-send",
-  "ion:ios-settings",
-  "ion:ios-settings-strong",
-  "ion:ios-share",
-  "ion:ios-share-alt",
-  "ion:ios-shirt",
-  "ion:ios-shuffle",
-  "ion:ios-shuffle-strong",
-  "ion:ios-skip-backward",
-  "ion:ios-skip-forward",
-  "ion:ios-skipbackward",
-  "ion:ios-skipbackward-outline",
-  "ion:ios-skipforward",
-  "ion:ios-skipforward-outline",
-  "ion:ios-snow",
-  "ion:ios-snowy",
-  "ion:ios-speedometer",
-  "ion:ios-speedometer-outline",
-  "ion:ios-square",
-  "ion:ios-square-outline",
-  "ion:ios-star",
-  "ion:ios-star-half",
-  "ion:ios-star-outline",
-  "ion:ios-stats",
-  "ion:ios-stopwatch",
-  "ion:ios-stopwatch-outline",
-  "ion:ios-subway",
-  "ion:ios-sunny",
-  "ion:ios-sunny-outline",
-  "ion:ios-swap",
-  "ion:ios-switch",
-  "ion:ios-sync",
-  "ion:ios-tablet-landscape",
-  "ion:ios-tablet-portrait",
-  "ion:ios-telephone",
-  "ion:ios-telephone-outline",
-  "ion:ios-tennisball",
-  "ion:ios-tennisball-outline",
-  "ion:ios-text",
-  "ion:ios-thermometer",
-  "ion:ios-thumbs-down",
-  "ion:ios-thumbs-up",
-  "ion:ios-thunderstorm",
-  "ion:ios-thunderstorm-outline",
-  "ion:ios-time",
-  "ion:ios-time-outline",
-  "ion:ios-timer",
-  "ion:ios-timer-outline",
-  "ion:ios-today",
-  "ion:ios-toggle",
-  "ion:ios-toggle-outline",
-  "ion:ios-train",
-  "ion:ios-transgender",
-  "ion:ios-trash",
-  "ion:ios-trash-outline",
-  "ion:ios-trending-down",
-  "ion:ios-trending-up",
-  "ion:ios-trophy",
-  "ion:ios-tv",
-  "ion:ios-umbrella",
-  "ion:ios-undo",
-  "ion:ios-undo-outline",
-  "ion:ios-unlock",
-  "ion:ios-unlocked",
-  "ion:ios-unlocked-outline",
-  "ion:ios-upload",
-  "ion:ios-upload-outline",
-  "ion:ios-videocam",
-  "ion:ios-videocam-outline",
-  "ion:ios-volume-high",
-  "ion:ios-volume-low",
-  "ion:ios-volume-mute",
-  "ion:ios-volume-off",
-  "ion:ios-walk",
-  "ion:ios-wallet",
-  "ion:ios-warning",
-  "ion:ios-watch",
-  "ion:ios-water",
-  "ion:ios-wifi",
-  "ion:ios-wine",
-  "ion:ios-wineglass",
-  "ion:ios-wineglass-outline",
-  "ion:ios-woman",
-  "ion:ios-world",
-  "ion:ios-world-outline",
-  "ion:ipad",
-  "ion:iphone",
-  "ion:ipod",
-  "ion:jet",
-  "ion:journal",
-  "ion:journal-outline",
-  "ion:journal-sharp",
-  "ion:key",
-  "ion:key-outline",
-  "ion:key-sharp",
-  "ion:keypad",
-  "ion:keypad-outline",
-  "ion:keypad-sharp",
-  "ion:knife",
-  "ion:language",
-  "ion:language-outline",
-  "ion:language-sharp",
-  "ion:laptop",
-  "ion:laptop-outline",
-  "ion:laptop-sharp",
-  "ion:layers",
-  "ion:layers-outline",
-  "ion:layers-sharp",
-  "ion:leaf",
-  "ion:leaf-outline",
-  "ion:leaf-sharp",
-  "ion:levels",
-  "ion:library",
-  "ion:library-outline",
-  "ion:library-sharp",
-  "ion:lightbulb",
-  "ion:link",
-  "ion:link-outline",
-  "ion:link-sharp",
-  "ion:list",
-  "ion:list-circle",
-  "ion:list-circle-outline",
-  "ion:list-circle-sharp",
-  "ion:list-outline",
-  "ion:list-sharp",
-  "ion:load-a",
-  "ion:load-b",
-  "ion:load-c",
-  "ion:load-d",
-  "ion:locate",
-  "ion:locate-outline",
-  "ion:locate-sharp",
-  "ion:location",
-  "ion:location-outline",
-  "ion:location-sharp",
-  "ion:lock-closed",
-  "ion:lock-closed-outline",
-  "ion:lock-closed-sharp",
-  "ion:lock-combination",
-  "ion:lock-open",
-  "ion:lock-open-outline",
-  "ion:lock-open-sharp",
-  "ion:locked",
-  "ion:log-in",
-  "ion:log-in-outline",
-  "ion:log-in-sharp",
-  "ion:log-out",
-  "ion:log-out-outline",
-  "ion:log-out-sharp",
-  "ion:logo-alipay",
-  "ion:logo-amazon",
-  "ion:logo-amplify",
-  "ion:logo-android",
-  "ion:logo-angular",
-  "ion:logo-apple",
-  "ion:logo-apple-appstore",
-  "ion:logo-apple-ar",
-  "ion:logo-behance",
-  "ion:logo-bitbucket",
-  "ion:logo-bitcoin",
-  "ion:logo-buffer",
-  "ion:logo-capacitor",
-  "ion:logo-chrome",
-  "ion:logo-closed-captioning",
-  "ion:logo-codepen",
-  "ion:logo-css3",
-  "ion:logo-designernews",
-  "ion:logo-deviantart",
-  "ion:logo-discord",
-  "ion:logo-docker",
-  "ion:logo-dribbble",
-  "ion:logo-dropbox",
-  "ion:logo-edge",
-  "ion:logo-electron",
-  "ion:logo-euro",
-  "ion:logo-facebook",
-  "ion:logo-figma",
-  "ion:logo-firebase",
-  "ion:logo-firefox",
-  "ion:logo-flickr",
-  "ion:logo-foursquare",
-  "ion:logo-freebsd-devil",
-  "ion:logo-game-controller-a",
-  "ion:logo-game-controller-b",
-  "ion:logo-github",
-  "ion:logo-gitlab",
-  "ion:logo-google",
-  "ion:logo-google-playstore",
-  "ion:logo-googleplus",
-  "ion:logo-hackernews",
-  "ion:logo-html5",
-  "ion:logo-instagram",
-  "ion:logo-ionic",
-  "ion:logo-ionitron",
-  "ion:logo-javascript",
-  "ion:logo-laravel",
-  "ion:logo-linkedin",
-  "ion:logo-markdown",
-  "ion:logo-mastodon",
-  "ion:logo-medium",
-  "ion:logo-microsoft",
-  "ion:logo-model-s",
-  "ion:logo-no-smoking",
-  "ion:logo-nodejs",
-  "ion:logo-npm",
-  "ion:logo-octocat",
-  "ion:logo-paypal",
-  "ion:logo-pinterest",
-  "ion:logo-playstation",
-  "ion:logo-polymer",
-  "ion:logo-pwa",
-  "ion:logo-python",
-  "ion:logo-react",
-  "ion:logo-reddit",
-  "ion:logo-rss",
-  "ion:logo-sass",
-  "ion:logo-skype",
-  "ion:logo-slack",
-  "ion:logo-snapchat",
-  "ion:logo-soundcloud",
-  "ion:logo-stackoverflow",
-  "ion:logo-steam",
-  "ion:logo-stencil",
-  "ion:logo-tableau",
-  "ion:logo-tiktok",
-  "ion:logo-tumblr",
-  "ion:logo-tux",
-  "ion:logo-twitch",
-  "ion:logo-twitter",
-  "ion:logo-usd",
-  "ion:logo-venmo",
-  "ion:logo-vercel",
-  "ion:logo-vimeo",
-  "ion:logo-vk",
-  "ion:logo-vue",
-  "ion:logo-web-component",
-  "ion:logo-wechat",
-  "ion:logo-whatsapp",
-  "ion:logo-windows",
-  "ion:logo-wordpress",
-  "ion:logo-xbox",
-  "ion:logo-xing",
-  "ion:logo-yahoo",
-  "ion:logo-yen",
-  "ion:logo-youtube",
-  "ion:loop",
-  "ion:magnet",
-  "ion:magnet-outline",
-  "ion:magnet-sharp",
-  "ion:mail",
-  "ion:mail-open",
-  "ion:mail-open-outline",
-  "ion:mail-open-sharp",
-  "ion:mail-outline",
-  "ion:mail-sharp",
-  "ion:mail-unread",
-  "ion:mail-unread-outline",
-  "ion:mail-unread-sharp",
-  "ion:male",
-  "ion:male-female",
-  "ion:male-female-outline",
-  "ion:male-female-sharp",
-  "ion:male-outline",
-  "ion:male-sharp",
-  "ion:man",
-  "ion:man-outline",
-  "ion:man-sharp",
-  "ion:map",
-  "ion:map-outline",
-  "ion:map-sharp",
-  "ion:md-add",
-  "ion:md-add-circle",
-  "ion:md-add-circle-outline",
-  "ion:md-airplane",
-  "ion:md-alarm",
-  "ion:md-albums",
-  "ion:md-alert",
-  "ion:md-american-football",
-  "ion:md-analytics",
-  "ion:md-aperture",
-  "ion:md-apps",
-  "ion:md-appstore",
-  "ion:md-archive",
-  "ion:md-arrow-back",
-  "ion:md-arrow-down",
-  "ion:md-arrow-dropdown",
-  "ion:md-arrow-dropdown-circle",
-  "ion:md-arrow-dropleft",
-  "ion:md-arrow-dropleft-circle",
-  "ion:md-arrow-dropright",
-  "ion:md-arrow-dropright-circle",
-  "ion:md-arrow-dropup",
-  "ion:md-arrow-dropup-circle",
-  "ion:md-arrow-forward",
-  "ion:md-arrow-round-back",
-  "ion:md-arrow-round-down",
-  "ion:md-arrow-round-forward",
-  "ion:md-arrow-round-up",
-  "ion:md-arrow-up",
-  "ion:md-at",
-  "ion:md-attach",
-  "ion:md-backspace",
-  "ion:md-barcode",
-  "ion:md-baseball",
-  "ion:md-basket",
-  "ion:md-basketball",
-  "ion:md-battery-charging",
-  "ion:md-battery-dead",
-  "ion:md-battery-full",
-  "ion:md-beaker",
-  "ion:md-bed",
-  "ion:md-beer",
-  "ion:md-bicycle",
-  "ion:md-bluetooth",
-  "ion:md-boat",
-  "ion:md-body",
-  "ion:md-bonfire",
-  "ion:md-book",
-  "ion:md-bookmark",
-  "ion:md-bookmarks",
-  "ion:md-bowtie",
-  "ion:md-briefcase",
-  "ion:md-browsers",
-  "ion:md-brush",
-  "ion:md-bug",
-  "ion:md-build",
-  "ion:md-bulb",
-  "ion:md-bus",
-  "ion:md-business",
-  "ion:md-cafe",
-  "ion:md-calculator",
-  "ion:md-calendar",
-  "ion:md-call",
-  "ion:md-camera",
-  "ion:md-car",
-  "ion:md-card",
-  "ion:md-cart",
-  "ion:md-cash",
-  "ion:md-cellular",
-  "ion:md-chatboxes",
-  "ion:md-chatbubbles",
-  "ion:md-checkbox",
-  "ion:md-checkbox-outline",
-  "ion:md-checkmark",
-  "ion:md-checkmark-circle",
-  "ion:md-checkmark-circle-outline",
-  "ion:md-clipboard",
-  "ion:md-clock",
-  "ion:md-close",
-  "ion:md-close-circle",
-  "ion:md-close-circle-outline",
-  "ion:md-cloud",
-  "ion:md-cloud-circle",
-  "ion:md-cloud-done",
-  "ion:md-cloud-download",
-  "ion:md-cloud-outline",
-  "ion:md-cloud-upload",
-  "ion:md-cloudy",
-  "ion:md-cloudy-night",
-  "ion:md-code",
-  "ion:md-code-download",
-  "ion:md-code-working",
-  "ion:md-cog",
-  "ion:md-color-fill",
-  "ion:md-color-filter",
-  "ion:md-color-palette",
-  "ion:md-color-wand",
-  "ion:md-compass",
-  "ion:md-construct",
-  "ion:md-contact",
-  "ion:md-contacts",
-  "ion:md-contract",
-  "ion:md-contrast",
-  "ion:md-copy",
-  "ion:md-create",
-  "ion:md-crop",
-  "ion:md-cube",
-  "ion:md-cut",
-  "ion:md-desktop",
-  "ion:md-disc",
-  "ion:md-document",
-  "ion:md-done-all",
-  "ion:md-download",
-  "ion:md-easel",
-  "ion:md-egg",
-  "ion:md-exit",
-  "ion:md-expand",
-  "ion:md-eye",
-  "ion:md-eye-off",
-  "ion:md-fastforward",
-  "ion:md-female",
-  "ion:md-filing",
-  "ion:md-film",
-  "ion:md-finger-print",
-  "ion:md-fitness",
-  "ion:md-flag",
-  "ion:md-flame",
-  "ion:md-flash",
-  "ion:md-flash-off",
-  "ion:md-flashlight",
-  "ion:md-flask",
-  "ion:md-flower",
-  "ion:md-folder",
-  "ion:md-folder-open",
-  "ion:md-football",
-  "ion:md-funnel",
-  "ion:md-gift",
-  "ion:md-git-branch",
-  "ion:md-git-commit",
-  "ion:md-git-compare",
-  "ion:md-git-merge",
-  "ion:md-git-network",
-  "ion:md-git-pull-request",
-  "ion:md-glasses",
-  "ion:md-globe",
-  "ion:md-grid",
-  "ion:md-hammer",
-  "ion:md-hand",
-  "ion:md-happy",
-  "ion:md-headset",
-  "ion:md-heart",
-  "ion:md-heart-dislike",
-  "ion:md-heart-empty",
-  "ion:md-heart-half",
-  "ion:md-help",
-  "ion:md-help-buoy",
-  "ion:md-help-circle",
-  "ion:md-help-circle-outline",
-  "ion:md-home",
-  "ion:md-hourglass",
-  "ion:md-ice-cream",
-  "ion:md-image",
-  "ion:md-images",
-  "ion:md-infinite",
-  "ion:md-information",
-  "ion:md-information-circle",
-  "ion:md-information-circle-outline",
-  "ion:md-jet",
-  "ion:md-journal",
-  "ion:md-key",
-  "ion:md-keypad",
-  "ion:md-laptop",
-  "ion:md-leaf",
-  "ion:md-link",
-  "ion:md-list",
-  "ion:md-list-box",
-  "ion:md-locate",
-  "ion:md-lock",
-  "ion:md-log-in",
-  "ion:md-log-out",
-  "ion:md-magnet",
-  "ion:md-mail",
-  "ion:md-mail-open",
-  "ion:md-mail-unread",
-  "ion:md-male",
-  "ion:md-man",
-  "ion:md-map",
-  "ion:md-medal",
-  "ion:md-medical",
-  "ion:md-medkit",
-  "ion:md-megaphone",
-  "ion:md-menu",
-  "ion:md-mic",
-  "ion:md-mic-off",
-  "ion:md-microphone",
-  "ion:md-moon",
-  "ion:md-more",
-  "ion:md-move",
-  "ion:md-musical-note",
-  "ion:md-musical-notes",
-  "ion:md-navigate",
-  "ion:md-notifications",
-  "ion:md-notifications-off",
-  "ion:md-notifications-outline",
-  "ion:md-nuclear",
-  "ion:md-nutrition",
-  "ion:md-open",
-  "ion:md-options",
-  "ion:md-outlet",
-  "ion:md-paper",
-  "ion:md-paper-plane",
-  "ion:md-partly-sunny",
-  "ion:md-pause",
-  "ion:md-paw",
-  "ion:md-people",
-  "ion:md-person",
-  "ion:md-person-add",
-  "ion:md-phone-landscape",
-  "ion:md-phone-portrait",
-  "ion:md-photos",
-  "ion:md-pie",
-  "ion:md-pin",
-  "ion:md-pint",
-  "ion:md-pizza",
-  "ion:md-planet",
-  "ion:md-play",
-  "ion:md-play-circle",
-  "ion:md-podium",
-  "ion:md-power",
-  "ion:md-pricetag",
-  "ion:md-pricetags",
-  "ion:md-print",
-  "ion:md-pulse",
-  "ion:md-qr-scanner",
-  "ion:md-quote",
-  "ion:md-radio",
-  "ion:md-radio-button-off",
-  "ion:md-radio-button-on",
-  "ion:md-rainy",
-  "ion:md-recording",
-  "ion:md-redo",
-  "ion:md-refresh",
-  "ion:md-refresh-circle",
-  "ion:md-remove",
-  "ion:md-remove-circle",
-  "ion:md-remove-circle-outline",
-  "ion:md-reorder",
-  "ion:md-repeat",
-  "ion:md-resize",
-  "ion:md-restaurant",
-  "ion:md-return-left",
-  "ion:md-return-right",
-  "ion:md-reverse-camera",
-  "ion:md-rewind",
-  "ion:md-ribbon",
-  "ion:md-rocket",
-  "ion:md-rose",
-  "ion:md-sad",
-  "ion:md-save",
-  "ion:md-school",
-  "ion:md-search",
-  "ion:md-send",
-  "ion:md-settings",
-  "ion:md-share",
-  "ion:md-share-alt",
-  "ion:md-shirt",
-  "ion:md-shuffle",
-  "ion:md-skip-backward",
-  "ion:md-skip-forward",
-  "ion:md-snow",
-  "ion:md-speedometer",
-  "ion:md-square",
-  "ion:md-square-outline",
-  "ion:md-star",
-  "ion:md-star-half",
-  "ion:md-star-outline",
-  "ion:md-stats",
-  "ion:md-stopwatch",
-  "ion:md-subway",
-  "ion:md-sunny",
-  "ion:md-swap",
-  "ion:md-switch",
-  "ion:md-sync",
-  "ion:md-tablet-landscape",
-  "ion:md-tablet-portrait",
-  "ion:md-tennisball",
-  "ion:md-text",
-  "ion:md-thermometer",
-  "ion:md-thumbs-down",
-  "ion:md-thumbs-up",
-  "ion:md-thunderstorm",
-  "ion:md-time",
-  "ion:md-timer",
-  "ion:md-today",
-  "ion:md-train",
-  "ion:md-transgender",
-  "ion:md-trash",
-  "ion:md-trending-down",
-  "ion:md-trending-up",
-  "ion:md-trophy",
-  "ion:md-tv",
-  "ion:md-umbrella",
-  "ion:md-undo",
-  "ion:md-unlock",
-  "ion:md-videocam",
-  "ion:md-volume-high",
-  "ion:md-volume-low",
-  "ion:md-volume-mute",
-  "ion:md-volume-off",
-  "ion:md-walk",
-  "ion:md-wallet",
-  "ion:md-warning",
-  "ion:md-watch",
-  "ion:md-water",
-  "ion:md-wifi",
-  "ion:md-wine",
-  "ion:md-woman",
-  "ion:medal",
-  "ion:medal-outline",
-  "ion:medal-sharp",
-  "ion:medical",
-  "ion:medical-outline",
-  "ion:medical-sharp",
-  "ion:medkit",
-  "ion:medkit-outline",
-  "ion:medkit-sharp",
-  "ion:megaphone",
-  "ion:megaphone-outline",
-  "ion:megaphone-sharp",
-  "ion:menu",
-  "ion:menu-outline",
-  "ion:menu-sharp",
-  "ion:merge",
-  "ion:mic",
-  "ion:mic-a",
-  "ion:mic-b",
-  "ion:mic-c",
-  "ion:mic-circle",
-  "ion:mic-circle-outline",
-  "ion:mic-circle-sharp",
-  "ion:mic-off",
-  "ion:mic-off-circle",
-  "ion:mic-off-circle-outline",
-  "ion:mic-off-circle-sharp",
-  "ion:mic-off-outline",
-  "ion:mic-off-sharp",
-  "ion:mic-outline",
-  "ion:mic-sharp",
-  "ion:minus",
-  "ion:minus-circled",
-  "ion:minus-round",
-  "ion:model-s",
-  "ion:monitor",
-  "ion:moon",
-  "ion:moon-outline",
-  "ion:moon-sharp",
-  "ion:more",
-  "ion:mouse",
-  "ion:move",
-  "ion:move-outline",
-  "ion:move-sharp",
-  "ion:music-note",
-  "ion:musical-note",
-  "ion:musical-note-outline",
-  "ion:musical-note-sharp",
-  "ion:musical-notes",
-  "ion:musical-notes-outline",
-  "ion:musical-notes-sharp",
-  "ion:navicon",
-  "ion:navicon-round",
-  "ion:navigate",
-  "ion:navigate-circle",
-  "ion:navigate-circle-outline",
-  "ion:navigate-circle-sharp",
-  "ion:navigate-outline",
-  "ion:navigate-sharp",
-  "ion:network",
-  "ion:newspaper",
-  "ion:newspaper-outline",
-  "ion:newspaper-sharp",
-  "ion:no-smoking",
-  "ion:notifications",
-  "ion:notifications-circle",
-  "ion:notifications-circle-outline",
-  "ion:notifications-circle-sharp",
-  "ion:notifications-off",
-  "ion:notifications-off-circle",
-  "ion:notifications-off-circle-outline",
-  "ion:notifications-off-circle-sharp",
-  "ion:notifications-off-outline",
-  "ion:notifications-off-sharp",
-  "ion:notifications-outline",
-  "ion:notifications-sharp",
-  "ion:nuclear",
-  "ion:nuclear-outline",
-  "ion:nuclear-sharp",
-  "ion:nutrition",
-  "ion:nutrition-outline",
-  "ion:nutrition-sharp",
-  "ion:open",
-  "ion:open-outline",
-  "ion:open-sharp",
-  "ion:options",
-  "ion:options-outline",
-  "ion:options-sharp",
-  "ion:outlet",
-  "ion:paintbrush",
-  "ion:paintbucket",
-  "ion:paper-airplane",
-  "ion:paper-plane",
-  "ion:paper-plane-outline",
-  "ion:paper-plane-sharp",
-  "ion:paperclip",
-  "ion:partly-sunny",
-  "ion:partly-sunny-outline",
-  "ion:partly-sunny-sharp",
-  "ion:pause",
-  "ion:pause-circle",
-  "ion:pause-circle-outline",
-  "ion:pause-circle-sharp",
-  "ion:pause-outline",
-  "ion:pause-sharp",
-  "ion:paw",
-  "ion:paw-outline",
-  "ion:paw-sharp",
-  "ion:pencil",
-  "ion:pencil-outline",
-  "ion:pencil-sharp",
-  "ion:people",
-  "ion:people-circle",
-  "ion:people-circle-outline",
-  "ion:people-circle-sharp",
-  "ion:people-outline",
-  "ion:people-sharp",
-  "ion:person",
-  "ion:person-add",
-  "ion:person-add-outline",
-  "ion:person-add-sharp",
-  "ion:person-circle",
-  "ion:person-circle-outline",
-  "ion:person-circle-sharp",
-  "ion:person-outline",
-  "ion:person-remove",
-  "ion:person-remove-outline",
-  "ion:person-remove-sharp",
-  "ion:person-sharp",
-  "ion:person-stalker",
-  "ion:phone-landscape",
-  "ion:phone-landscape-outline",
-  "ion:phone-landscape-sharp",
-  "ion:phone-portrait",
-  "ion:phone-portrait-outline",
-  "ion:phone-portrait-sharp",
-  "ion:pie-chart",
-  "ion:pie-chart-outline",
-  "ion:pie-chart-sharp",
-  "ion:pin",
-  "ion:pin-outline",
-  "ion:pin-sharp",
-  "ion:pinpoint",
-  "ion:pint",
-  "ion:pint-outline",
-  "ion:pint-sharp",
-  "ion:pizza",
-  "ion:pizza-outline",
-  "ion:pizza-sharp",
-  "ion:plane",
-  "ion:planet",
-  "ion:planet-outline",
-  "ion:planet-sharp",
-  "ion:play",
-  "ion:play-back",
-  "ion:play-back-circle",
-  "ion:play-back-circle-outline",
-  "ion:play-back-circle-sharp",
-  "ion:play-back-outline",
-  "ion:play-back-sharp",
-  "ion:play-circle",
-  "ion:play-circle-outline",
-  "ion:play-circle-sharp",
-  "ion:play-forward",
-  "ion:play-forward-circle",
-  "ion:play-forward-circle-outline",
-  "ion:play-forward-circle-sharp",
-  "ion:play-forward-outline",
-  "ion:play-forward-sharp",
-  "ion:play-outline",
-  "ion:play-sharp",
-  "ion:play-skip-back",
-  "ion:play-skip-back-circle",
-  "ion:play-skip-back-circle-outline",
-  "ion:play-skip-back-circle-sharp",
-  "ion:play-skip-back-outline",
-  "ion:play-skip-back-sharp",
-  "ion:play-skip-forward",
-  "ion:play-skip-forward-circle",
-  "ion:play-skip-forward-circle-outline",
-  "ion:play-skip-forward-circle-sharp",
-  "ion:play-skip-forward-outline",
-  "ion:play-skip-forward-sharp",
-  "ion:playstation",
-  "ion:plus",
-  "ion:plus-circled",
-  "ion:plus-round",
-  "ion:podium",
-  "ion:podium-outline",
-  "ion:podium-sharp",
-  "ion:pound",
-  "ion:power",
-  "ion:power-outline",
-  "ion:power-sharp",
-  "ion:pricetag",
-  "ion:pricetag-outline",
-  "ion:pricetag-sharp",
-  "ion:pricetags",
-  "ion:pricetags-outline",
-  "ion:pricetags-sharp",
-  "ion:print",
-  "ion:print-outline",
-  "ion:print-sharp",
-  "ion:printer",
-  "ion:prism",
-  "ion:prism-outline",
-  "ion:prism-sharp",
-  "ion:pull-request",
-  "ion:pulse",
-  "ion:pulse-outline",
-  "ion:pulse-sharp",
-  "ion:push",
-  "ion:push-outline",
-  "ion:push-sharp",
-  "ion:qr-code",
-  "ion:qr-code-outline",
-  "ion:qr-code-sharp",
-  "ion:qr-scanner",
-  "ion:quote",
-  "ion:radio",
-  "ion:radio-button-off",
-  "ion:radio-button-off-outline",
-  "ion:radio-button-off-sharp",
-  "ion:radio-button-on",
-  "ion:radio-button-on-outline",
-  "ion:radio-button-on-sharp",
-  "ion:radio-outline",
-  "ion:radio-sharp",
-  "ion:radio-waves",
-  "ion:rainy",
-  "ion:rainy-outline",
-  "ion:rainy-sharp",
-  "ion:reader",
-  "ion:reader-outline",
-  "ion:reader-sharp",
-  "ion:receipt",
-  "ion:receipt-outline",
-  "ion:receipt-sharp",
-  "ion:record",
-  "ion:recording",
-  "ion:recording-outline",
-  "ion:recording-sharp",
-  "ion:refresh",
-  "ion:refresh-circle",
-  "ion:refresh-circle-outline",
-  "ion:refresh-circle-sharp",
-  "ion:refresh-outline",
-  "ion:refresh-sharp",
-  "ion:reload",
-  "ion:reload-circle",
-  "ion:reload-circle-outline",
-  "ion:reload-circle-sharp",
-  "ion:reload-outline",
-  "ion:reload-sharp",
-  "ion:remove",
-  "ion:remove-circle",
-  "ion:remove-circle-outline",
-  "ion:remove-circle-sharp",
-  "ion:remove-outline",
-  "ion:remove-sharp",
-  "ion:reorder-four",
-  "ion:reorder-four-outline",
-  "ion:reorder-four-sharp",
-  "ion:reorder-three",
-  "ion:reorder-three-outline",
-  "ion:reorder-three-sharp",
-  "ion:reorder-two",
-  "ion:reorder-two-outline",
-  "ion:reorder-two-sharp",
-  "ion:repeat",
-  "ion:repeat-outline",
-  "ion:repeat-sharp",
-  "ion:reply",
-  "ion:reply-all",
-  "ion:resize",
-  "ion:resize-outline",
-  "ion:resize-sharp",
-  "ion:restaurant",
-  "ion:restaurant-outline",
-  "ion:restaurant-sharp",
-  "ion:return-down-back",
-  "ion:return-down-back-outline",
-  "ion:return-down-back-sharp",
-  "ion:return-down-forward",
-  "ion:return-down-forward-outline",
-  "ion:return-down-forward-sharp",
-  "ion:return-up-back",
-  "ion:return-up-back-outline",
-  "ion:return-up-back-sharp",
-  "ion:return-up-forward",
-  "ion:return-up-forward-outline",
-  "ion:return-up-forward-sharp",
-  "ion:ribbon",
-  "ion:ribbon-a",
-  "ion:ribbon-b",
-  "ion:ribbon-outline",
-  "ion:ribbon-sharp",
-  "ion:rocket",
-  "ion:rocket-outline",
-  "ion:rocket-sharp",
-  "ion:rose",
-  "ion:rose-outline",
-  "ion:rose-sharp",
-  "ion:sad",
-  "ion:sad-outline",
-  "ion:sad-sharp",
-  "ion:save",
-  "ion:save-outline",
-  "ion:save-sharp",
-  "ion:scale",
-  "ion:scale-outline",
-  "ion:scale-sharp",
-  "ion:scan",
-  "ion:scan-circle",
-  "ion:scan-circle-outline",
-  "ion:scan-circle-sharp",
-  "ion:scan-outline",
-  "ion:scan-sharp",
-  "ion:school",
-  "ion:school-outline",
-  "ion:school-sharp",
-  "ion:scissors",
-  "ion:search",
-  "ion:search-circle",
-  "ion:search-circle-outline",
-  "ion:search-circle-sharp",
-  "ion:search-outline",
-  "ion:search-sharp",
-  "ion:send",
-  "ion:send-outline",
-  "ion:send-sharp",
-  "ion:server",
-  "ion:server-outline",
-  "ion:server-sharp",
-  "ion:settings",
-  "ion:settings-outline",
-  "ion:settings-sharp",
-  "ion:shapes",
-  "ion:shapes-outline",
-  "ion:shapes-sharp",
-  "ion:share",
-  "ion:share-outline",
-  "ion:share-sharp",
-  "ion:share-social",
-  "ion:share-social-outline",
-  "ion:share-social-sharp",
-  "ion:shield",
-  "ion:shield-checkmark",
-  "ion:shield-checkmark-outline",
-  "ion:shield-checkmark-sharp",
-  "ion:shield-half",
-  "ion:shield-half-outline",
-  "ion:shield-half-sharp",
-  "ion:shield-outline",
-  "ion:shield-sharp",
-  "ion:shirt",
-  "ion:shirt-outline",
-  "ion:shirt-sharp",
-  "ion:shuffle",
-  "ion:shuffle-outline",
-  "ion:shuffle-sharp",
-  "ion:skip-backward",
-  "ion:skip-forward",
-  "ion:skull",
-  "ion:skull-outline",
-  "ion:skull-sharp",
-  "ion:snow",
-  "ion:snow-outline",
-  "ion:snow-sharp",
-  "ion:social-android-outline",
-  "ion:social-angular-outline",
-  "ion:social-apple-outline",
-  "ion:social-bitcoin-outline",
-  "ion:social-buffer-outline",
-  "ion:social-chrome-outline",
-  "ion:social-codepen-outline",
-  "ion:social-css3-outline",
-  "ion:social-designernews-outline",
-  "ion:social-dribbble",
-  "ion:social-dropbox-outline",
-  "ion:social-euro-outline",
-  "ion:social-facebook",
-  "ion:social-facebook-outline",
-  "ion:social-foursquare-outline",
-  "ion:social-github-outline",
-  "ion:social-google",
-  "ion:social-google-outline",
-  "ion:social-googleplus",
-  "ion:social-googleplus-outline",
-  "ion:social-hackernews-outline",
-  "ion:social-html5-outline",
-  "ion:social-instagram",
-  "ion:social-instagram-outline",
-  "ion:social-javascript-outline",
-  "ion:social-linkedin-outline",
-  "ion:social-octocat",
-  "ion:social-pinterest-outline",
-  "ion:social-reddit",
-  "ion:social-rss-outline",
-  "ion:social-skype-outline",
-  "ion:social-snapchat-outline",
-  "ion:social-tumblr-outline",
-  "ion:social-tux",
-  "ion:social-twitch",
-  "ion:social-twitter-outline",
-  "ion:social-usd-outline",
-  "ion:social-vimeo",
-  "ion:social-vimeo-outline",
-  "ion:social-whatsapp-outline",
-  "ion:social-windows-outline",
-  "ion:social-wordpress-outline",
-  "ion:social-yahoo-outline",
-  "ion:social-yen-outline",
-  "ion:social-youtube-outline",
-  "ion:soup-can",
-  "ion:soup-can-outline",
-  "ion:sparkles",
-  "ion:sparkles-outline",
-  "ion:sparkles-sharp",
-  "ion:speakerphone",
-  "ion:speedometer",
-  "ion:speedometer-outline",
-  "ion:speedometer-sharp",
-  "ion:spoon",
-  "ion:square",
-  "ion:square-outline",
-  "ion:square-sharp",
-  "ion:star",
-  "ion:star-half",
-  "ion:star-half-outline",
-  "ion:star-half-sharp",
-  "ion:star-outline",
-  "ion:star-sharp",
-  "ion:stats-bars",
-  "ion:stats-chart",
-  "ion:stats-chart-outline",
-  "ion:stats-chart-sharp",
-  "ion:steam",
-  "ion:stop",
-  "ion:stop-circle",
-  "ion:stop-circle-outline",
-  "ion:stop-circle-sharp",
-  "ion:stop-outline",
-  "ion:stop-sharp",
-  "ion:stopwatch",
-  "ion:stopwatch-outline",
-  "ion:stopwatch-sharp",
-  "ion:storefront",
-  "ion:storefront-outline",
-  "ion:storefront-sharp",
-  "ion:subway",
-  "ion:subway-outline",
-  "ion:subway-sharp",
-  "ion:sunny",
-  "ion:sunny-outline",
-  "ion:sunny-sharp",
-  "ion:swap-horizontal",
-  "ion:swap-horizontal-outline",
-  "ion:swap-horizontal-sharp",
-  "ion:swap-vertical",
-  "ion:swap-vertical-outline",
-  "ion:swap-vertical-sharp",
-  "ion:sync",
-  "ion:sync-circle",
-  "ion:sync-circle-outline",
-  "ion:sync-circle-sharp",
-  "ion:sync-outline",
-  "ion:sync-sharp",
-  "ion:tablet-landscape",
-  "ion:tablet-landscape-outline",
-  "ion:tablet-landscape-sharp",
-  "ion:tablet-portrait",
-  "ion:tablet-portrait-outline",
-  "ion:tablet-portrait-sharp",
-  "ion:telescope",
-  "ion:telescope-outline",
-  "ion:telescope-sharp",
-  "ion:tennisball",
-  "ion:tennisball-outline",
-  "ion:tennisball-sharp",
-  "ion:terminal",
-  "ion:terminal-outline",
-  "ion:terminal-sharp",
-  "ion:text",
-  "ion:text-outline",
-  "ion:text-sharp",
-  "ion:thermometer",
-  "ion:thermometer-outline",
-  "ion:thermometer-sharp",
-  "ion:thumbs-down",
-  "ion:thumbs-down-outline",
-  "ion:thumbs-down-sharp",
-  "ion:thumbs-up",
-  "ion:thumbs-up-outline",
-  "ion:thumbs-up-sharp",
-  "ion:thumbsdown",
-  "ion:thumbsup",
-  "ion:thunderstorm",
-  "ion:thunderstorm-outline",
-  "ion:thunderstorm-sharp",
-  "ion:ticket",
-  "ion:ticket-outline",
-  "ion:ticket-sharp",
-  "ion:time",
-  "ion:time-outline",
-  "ion:time-sharp",
-  "ion:timer",
-  "ion:timer-outline",
-  "ion:timer-sharp",
-  "ion:today",
-  "ion:today-outline",
-  "ion:today-sharp",
-  "ion:toggle",
-  "ion:toggle-filled",
-  "ion:toggle-outline",
-  "ion:toggle-sharp",
-  "ion:trail-sign",
-  "ion:trail-sign-outline",
-  "ion:trail-sign-sharp",
-  "ion:train",
-  "ion:train-outline",
-  "ion:train-sharp",
-  "ion:transgender",
-  "ion:transgender-outline",
-  "ion:transgender-sharp",
-  "ion:trash",
-  "ion:trash-a",
-  "ion:trash-b",
-  "ion:trash-bin",
-  "ion:trash-bin-outline",
-  "ion:trash-bin-sharp",
-  "ion:trash-outline",
-  "ion:trash-sharp",
-  "ion:trending-down",
-  "ion:trending-down-outline",
-  "ion:trending-down-sharp",
-  "ion:trending-up",
-  "ion:trending-up-outline",
-  "ion:trending-up-sharp",
-  "ion:triangle",
-  "ion:triangle-outline",
-  "ion:triangle-sharp",
-  "ion:trophy",
-  "ion:trophy-outline",
-  "ion:trophy-sharp",
-  "ion:tshirt",
-  "ion:tshirt-outline",
-  "ion:tv",
-  "ion:tv-outline",
-  "ion:tv-sharp",
-  "ion:umbrella",
-  "ion:umbrella-outline",
-  "ion:umbrella-sharp",
-  "ion:university",
-  "ion:unlink",
-  "ion:unlink-outline",
-  "ion:unlink-sharp",
-  "ion:unlocked",
-  "ion:upload",
-  "ion:usb",
-  "ion:videocam",
-  "ion:videocam-off",
-  "ion:videocam-off-outline",
-  "ion:videocam-off-sharp",
-  "ion:videocam-outline",
-  "ion:videocam-sharp",
-  "ion:videocamera",
-  "ion:volume-high",
-  "ion:volume-high-outline",
-  "ion:volume-high-sharp",
-  "ion:volume-low",
-  "ion:volume-low-outline",
-  "ion:volume-low-sharp",
-  "ion:volume-medium",
-  "ion:volume-medium-outline",
-  "ion:volume-medium-sharp",
-  "ion:volume-mute",
-  "ion:volume-mute-outline",
-  "ion:volume-mute-sharp",
-  "ion:volume-off",
-  "ion:volume-off-outline",
-  "ion:volume-off-sharp",
-  "ion:walk",
-  "ion:walk-outline",
-  "ion:walk-sharp",
-  "ion:wallet",
-  "ion:wallet-outline",
-  "ion:wallet-sharp",
-  "ion:wand",
-  "ion:warning",
-  "ion:warning-outline",
-  "ion:warning-sharp",
-  "ion:watch",
-  "ion:watch-outline",
-  "ion:watch-sharp",
-  "ion:water",
-  "ion:water-outline",
-  "ion:water-sharp",
-  "ion:waterdrop",
-  "ion:wifi",
-  "ion:wifi-outline",
-  "ion:wifi-sharp",
-  "ion:wine",
-  "ion:wine-outline",
-  "ion:wine-sharp",
-  "ion:wineglass",
-  "ion:woman",
-  "ion:woman-outline",
-  "ion:woman-sharp",
-  "ion:wrench",
-  "ion:xbox"
-]

+ 16 - 1
src/components/Icon/src/IconPicker.vue

@@ -34,6 +34,7 @@
                   class="p-2 w-1/8 cursor-pointer mr-1 mt-1 flex justify-center items-center border border-solid hover:bg-primary hover:text-white"
                   @click="handleClick(icon)"
                 >
+                  <!-- <Icon :icon="icon" :prefix="prefix" /> -->
                   <Icon :icon="icon" />
                 </li>
               </ul>
@@ -66,14 +67,28 @@
   import { Input, Popover, Pagination, Empty } from 'ant-design-vue';
   import Icon from './index.vue';
 
-  import icons from '../json/ion-info.json';
+  import iconsData from '../data/icons.data';
   import { propTypes } from '/@/utils/propTypes';
   import { usePagination } from '/@/hooks/web/usePagination';
   import { useDebounce } from '/@/hooks/core/useDebounce';
   import { useI18n } from '/@/hooks/web/useI18n';
   import { useCopyToClipboard } from '/@/hooks/web/useCopyToClipboard';
   import { useMessage } from '/@/hooks/web/useMessage';
+  // import '@iconify/iconify';
+
+  function getIcons() {
+    const data = iconsData as any;
+    const prefix: string = data?.prefix ?? '';
+    let result: string[] = [];
+    if (prefix) {
+      result = (data?.icons ?? []).map((item) => `${prefix}:${item}`);
+    } else if (Array.isArray(iconsData)) {
+      result = iconsData as string[];
+    }
+    return result;
+  }
 
+  const icons = getIcons();
   export default defineComponent({
     name: 'IconPicker',
     components: { [Input.name]: Input, Icon, Popover, ScrollContainer, Pagination, Empty },

+ 0 - 1
src/components/Icon/src/index.vue

@@ -46,7 +46,6 @@
           const icon = unref(getIconRef);
           if (!icon) return;
           const svg = Iconify.renderSVG(icon, {});
-
           if (svg) {
             el.textContent = '';
             el.appendChild(svg);

+ 1 - 1
src/locales/lang/en.ts

@@ -1,8 +1,8 @@
 import { genMessage } from '../helper';
-const modules = import.meta.globEager('./en/**/*.ts');
 import antdLocale from 'ant-design-vue/es/locale/en_US';
 import momentLocale from 'moment/dist/locale/eu';
 
+const modules = import.meta.globEager('./en/**/*.ts');
 export default {
   message: {
     ...genMessage(modules, 'en'),

+ 1 - 1
src/locales/lang/zh_CN.ts

@@ -1,8 +1,8 @@
 import { genMessage } from '../helper';
-const modules = import.meta.globEager('./zh_CN/**/*.ts');
 import antdLocale from 'ant-design-vue/es/locale/zh_CN';
 import momentLocale from 'moment/dist/locale/zh-cn';
 
+const modules = import.meta.globEager('./zh_CN/**/*.ts');
 export default {
   message: {
     ...genMessage(modules, 'zh_CN'),

+ 1 - 1
src/locales/setupI18n.ts

@@ -13,7 +13,7 @@ export let i18n: ReturnType<typeof createI18n>;
 async function createI18nOptions(): Promise<I18nOptions> {
   const locale = localeStore.getLocale;
   const defaultLocal = await import(`./lang/${locale}.ts`);
-  const message = defaultLocal.default?.message;
+  const message = defaultLocal.default?.message ?? {};
 
   return {
     legacy: false,

+ 0 - 1
src/router/helper/routeHelper.ts

@@ -19,7 +19,6 @@ let dynamicViewsModules: Record<
 // 动态引入
 function asyncImportRoute(routes: AppRouteRecordRaw[] | undefined) {
   dynamicViewsModules = dynamicViewsModules || import.meta.glob('../../views/**/*.{vue,tsx}');
-
   if (!routes) return;
   routes.forEach((item) => {
     const { component, name } = item;

+ 1 - 0
vite.config.ts

@@ -52,6 +52,7 @@ export default ({ command, mode }: ConfigEnv): UserConfig => {
     },
 
     build: {
+      // minify: 'esbuild',
       outDir: OUTPUT_DIR,
       polyfillDynamicImport: VITE_LEGACY,
       terserOptions: {

+ 45 - 163
yarn.lock

@@ -2219,22 +2219,6 @@ bluebird@^3.7.2:
   resolved "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
   integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
 
-body-parser@^1.19.0:
-  version "1.19.0"
-  resolved "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a"
-  integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==
-  dependencies:
-    bytes "3.1.0"
-    content-type "~1.0.4"
-    debug "2.6.9"
-    depd "~1.1.2"
-    http-errors "1.7.2"
-    iconv-lite "0.4.24"
-    on-finished "~2.3.0"
-    qs "6.7.0"
-    raw-body "2.4.0"
-    type-is "~1.6.17"
-
 boolbase@^1.0.0, boolbase@~1.0.0:
   version "1.0.0"
   resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
@@ -2323,11 +2307,6 @@ builtin-modules@^3.1.0:
   resolved "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.2.0.tgz#45d5db99e7ee5e6bc4f362e008bf917ab5049887"
   integrity sha512-lGzLKcioL90C7wMczpkY0n/oART3MbBa8R9OFGE1rJxoVI86u4WAGfEk8Wjv10eKSyTHVGkSo3bvBylCEtk7LA==
 
-bytes@3.1.0:
-  version "3.1.0"
-  resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6"
-  integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==
-
 cache-base@^1.0.1:
   version "1.0.1"
   resolved "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
@@ -2526,11 +2505,6 @@ chardet@^0.7.0:
   resolved "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e"
   integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==
 
-charset@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npmjs.org/charset/-/charset-1.0.1.tgz#8d59546c355be61049a8fa9164747793319852bd"
-  integrity sha512-6dVyOOYjpfFcL1Y4qChrAoQLRHvj2ziyhcm0QJlhOcAhykL/k1kTUPbeo+87MNRTRdk2OIIsIXbuF3x2wi5EXg==
-
 chokidar@^3.5.1:
   version "3.5.1"
   resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a"
@@ -2820,11 +2794,6 @@ content-disposition@^0.5.2:
   dependencies:
     safe-buffer "5.1.2"
 
-content-type@~1.0.4:
-  version "1.0.4"
-  resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
-  integrity sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==
-
 conventional-changelog-angular@^5.0.11, conventional-changelog-angular@^5.0.12:
   version "5.0.12"
   resolved "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz#c979b8b921cbfe26402eb3da5bbfda02d865a2b9"
@@ -3200,11 +3169,6 @@ dateformat@^3.0.0:
   resolved "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz#a6e37499a4d9a9cf85ef5872044d62901c9889ae"
   integrity sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==
 
-dayjs@^1.10.4:
-  version "1.10.4"
-  resolved "https://registry.npmjs.org/dayjs/-/dayjs-1.10.4.tgz#8e544a9b8683f61783f570980a8a80eaf54ab1e2"
-  integrity sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw==
-
 debug@2.6.9, debug@^2.2.0, debug@^2.3.3:
   version "2.6.9"
   resolved "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
@@ -3355,11 +3319,6 @@ define-property@^2.0.2:
     is-descriptor "^1.0.2"
     isobject "^3.0.1"
 
-depd@~1.1.2:
-  version "1.1.2"
-  resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
-  integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
-
 detect-file@^1.0.0:
   version "1.0.0"
   resolved "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7"
@@ -3510,17 +3469,15 @@ echarts@^5.0.2:
     tslib "2.0.3"
     zrender "5.0.4"
 
-ecstatic@4.1.4, ecstatic@^3.3.2:
-  version "4.1.4"
-  resolved "https://registry.npmjs.org/ecstatic/-/ecstatic-4.1.4.tgz#86bf340dabe56c4d0c93d406ac36c040f68e1d79"
-  integrity sha512-8E4ZLK4uRuB9pwywGpy/B9vcz4gCp6IY7u4cMbeCINr/fjb1v+0wf0Ae2XlfSnG8xZYnE4uaJBjFkYI0bqcIdw==
+ecstatic@^3.3.2:
+  version "3.3.2"
+  resolved "https://registry.npmjs.org/ecstatic/-/ecstatic-3.3.2.tgz#6d1dd49814d00594682c652adb66076a69d46c48"
+  integrity sha512-fLf9l1hnwrHI2xn9mEDT7KIi22UDqA2jaCwyCbSUJh9a1V+LEUSL/JO/6TIz/QyuBURWUHrFL5Kg2TtO1bkkog==
   dependencies:
-    charset "^1.0.1"
     he "^1.1.1"
-    mime "^2.4.1"
+    mime "^1.6.0"
     minimist "^1.1.0"
-    on-finished "^2.3.0"
-    url-join "^4.0.0"
+    url-join "^2.0.5"
 
 ee-first@1.1.1:
   version "1.1.1"
@@ -3668,11 +3625,6 @@ esbuild-register@^2.0.0:
     source-map-support "^0.5.19"
     strip-json-comments "^3.1.1"
 
-esbuild@^0.8.50:
-  version "0.8.50"
-  resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.8.50.tgz#ebf24fde0cdad1a369789dd6fd7a820b0a01e46c"
-  integrity sha512-oidFLXssA7IccYzkqLVZSqNJDwDq8Mh/vqvrW+3fPWM7iUiC5O2bCllhnO8+K9LlyL/2Z6n+WwRJAz9fqSIVRg==
-
 esbuild@^0.8.52:
   version "0.8.52"
   resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.8.52.tgz#6dabf11c517af449a96d66da20dfc204ee7b5294"
@@ -3683,6 +3635,11 @@ esbuild@^0.8.53:
   resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.8.53.tgz#b408bb0ca1b29dab13d8bbf7d59f59afe6776e86"
   integrity sha512-GIaYGdMukH58hu+lf07XWAeESBYFAsz8fXnrylHDCbBXKOSNtFmoYA8PhSeSF+3/qzeJ0VjzV9AkLURo5yfu3g==
 
+esbuild@^0.8.54:
+  version "0.8.54"
+  resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.8.54.tgz#2f32ff80e95c69a0f25b799d76a27c05e2857cdf"
+  integrity sha512-DJH38OiTgXJxFb/EhHrCrY8eGmtdkTtWymHpN9IYN9AF+4jykT0dQArr7wzFejpVbaB0TMIq2+vfNRWr3LXpvw==
+
 escalade@^3.1.1:
   version "3.1.1"
   resolved "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
@@ -3710,15 +3667,15 @@ eslint-plugin-prettier@^3.3.1:
   dependencies:
     prettier-linter-helpers "^1.0.0"
 
-eslint-plugin-vue@^7.6.0:
-  version "7.6.0"
-  resolved "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-7.6.0.tgz#ea616e6dfd45d545adb16cba628c5a992cc31f0b"
-  integrity sha512-qYpKwAvpcQXyUXVcG8Zd+fxHDx9iSgTQuO7dql7Ug/2BCvNNDr6s3I9p8MoUo23JJdO7ZAjW3vSwY/EBf4uBcw==
+eslint-plugin-vue@^7.7.0:
+  version "7.7.0"
+  resolved "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-7.7.0.tgz#a90df4595e670821bf243bd2750ededdb74948b8"
+  integrity sha512-mYz4bpLGv5jx6YG/GvKkqbGSfV7uma2u1P3mLA41Q5vQl8W1MeuTneB8tfsLq6xxxesFubcrOC0BZBJ5R+eaCQ==
   dependencies:
     eslint-utils "^2.1.0"
     natural-compare "^1.4.0"
     semver "^7.3.2"
-    vue-eslint-parser "^7.5.0"
+    vue-eslint-parser "^7.6.0"
 
 eslint-scope@^5.0.0, eslint-scope@^5.1.1:
   version "5.1.1"
@@ -4838,17 +4795,6 @@ http-cache-semantics@3.8.1:
   resolved "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz#39b0e16add9b605bf0a9ef3d9daaf4843b4cacd2"
   integrity sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==
 
-http-errors@1.7.2:
-  version "1.7.2"
-  resolved "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f"
-  integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==
-  dependencies:
-    depd "~1.1.2"
-    inherits "2.0.3"
-    setprototypeof "1.1.1"
-    statuses ">= 1.5.0 < 2"
-    toidentifier "1.0.0"
-
 http-proxy@^1.18.0:
   version "1.18.1"
   resolved "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549"
@@ -4879,12 +4825,12 @@ human-signals@^1.1.1:
   resolved "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3"
   integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==
 
-husky@^5.1.2:
-  version "5.1.2"
-  resolved "https://registry.npmjs.org/husky/-/husky-5.1.2.tgz#dc6a1f68640455d8d98c28875e073087f86c5081"
-  integrity sha512-lilaRYeDXcAOj8DuRnN9IxUyEMVbYg9rK7yVNkPB5V4hCvxIUxpMeiv9K2h77CE0HzjCnk1Br0oWe1IghXngDQ==
+husky@^5.1.3:
+  version "5.1.3"
+  resolved "https://registry.npmjs.org/husky/-/husky-5.1.3.tgz#1a0645a4fe3ffc006c4d0d8bd0bcb4c98787cc9d"
+  integrity sha512-fbNJ+Gz5wx2LIBtMweJNY1D7Uc8p1XERi5KNRMccwfQA+rXlxWNSdUxswo0gT8XqxywTIw7Ywm/F4v/O35RdMg==
 
-iconv-lite@0.4.24, iconv-lite@^0.4.24, iconv-lite@^0.4.4:
+iconv-lite@^0.4.24, iconv-lite@^0.4.4:
   version "0.4.24"
   resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
   integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==
@@ -5037,11 +4983,6 @@ inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3:
   resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
   integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
 
-inherits@2.0.3:
-  version "2.0.3"
-  resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
-  integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
-
 ini@^1.3.2, ini@^1.3.4, ini@^1.3.5:
   version "1.3.8"
   resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
@@ -6013,11 +5954,6 @@ mdn-data@2.0.4:
   resolved "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz#699b3c38ac6f1d728091a64650b65d388502fd5b"
   integrity sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==
 
-media-typer@0.3.0:
-  version "0.3.0"
-  resolved "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
-  integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
-
 meow@^3.3.0:
   version "3.7.0"
   resolved "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb"
@@ -6126,28 +6062,16 @@ micromatch@^4.0.2:
     braces "^3.0.1"
     picomatch "^2.0.5"
 
-mime-db@1.45.0, mime-db@^1.28.0:
+mime-db@^1.28.0:
   version "1.45.0"
   resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea"
   integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w==
 
-mime-types@~2.1.24:
-  version "2.1.28"
-  resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.28.tgz#1160c4757eab2c5363888e005273ecf79d2a0ecd"
-  integrity sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ==
-  dependencies:
-    mime-db "1.45.0"
-
-mime@^1.4.1:
+mime@^1.4.1, mime@^1.6.0:
   version "1.6.0"
   resolved "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
   integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
 
-mime@^2.4.1:
-  version "2.5.0"
-  resolved "https://registry.npmjs.org/mime/-/mime-2.5.0.tgz#2b4af934401779806ee98026bb42e8c1ae1876b1"
-  integrity sha512-ft3WayFSFUVBuJj7BMLKAQcSlItKtfjsKDDsii3rqFDAZ7t11zRe8ASw/GlmivGwVUYtwkQrxiGGpL6gFvB0ag==
-
 mimic-fn@^1.0.0:
   version "1.2.0"
   resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022"
@@ -6500,7 +6424,7 @@ omit.js@^2.0.0:
   resolved "https://registry.npmjs.org/omit.js/-/omit.js-2.0.2.tgz#dd9b8436fab947a5f3ff214cb2538631e313ec2f"
   integrity sha512-hJmu9D+bNB40YpL9jYebQl4lsTW6yEHRTroJzNLqQJYHm7c+NQnJGfZmIWh8S3q3KoaxV1aLhV6B3+0N0/kyJg==
 
-on-finished@^2.3.0, on-finished@~2.3.0:
+on-finished@~2.3.0:
   version "2.3.0"
   resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947"
   integrity sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=
@@ -7192,11 +7116,6 @@ qrcode@^1.4.4:
     pngjs "^3.3.0"
     yargs "^13.2.4"
 
-qs@6.7.0:
-  version "6.7.0"
-  resolved "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc"
-  integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==
-
 qs@^6.4.0:
   version "6.9.6"
   resolved "https://registry.npmjs.org/qs/-/qs-6.9.6.tgz#26ed3c8243a431b2924aca84cc90471f35d5a0ee"
@@ -7223,16 +7142,6 @@ randombytes@^2.1.0:
   dependencies:
     safe-buffer "^5.1.0"
 
-raw-body@2.4.0:
-  version "2.4.0"
-  resolved "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332"
-  integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==
-  dependencies:
-    bytes "3.1.0"
-    http-errors "1.7.2"
-    iconv-lite "0.4.24"
-    unpipe "1.0.0"
-
 read-pkg-up@^1.0.1:
   version "1.0.1"
   resolved "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02"
@@ -7611,20 +7520,13 @@ rollup@^2.25.0:
   optionalDependencies:
     fsevents "~2.1.2"
 
-rollup@^2.38.5:
+rollup@^2.38.5, rollup@^2.40.0:
   version "2.40.0"
   resolved "https://registry.npmjs.org/rollup/-/rollup-2.40.0.tgz#efc218eaede7ab590954df50f96195188999c304"
   integrity sha512-WiOGAPbXoHu+TOz6hyYUxIksOwsY/21TRWoO593jgYt8mvYafYqQl+axaA8y1z2HFazNUUrsMSjahV2A6/2R9A==
   optionalDependencies:
     fsevents "~2.3.1"
 
-rollup@^2.39.0:
-  version "2.39.1"
-  resolved "https://registry.npmjs.org/rollup/-/rollup-2.39.1.tgz#7afd4cefd8a332c5102a8063d301fde1f31a9173"
-  integrity sha512-9rfr0Z6j+vE+eayfNVFr1KZ+k+jiUl2+0e4quZafy1x6SFCjzFspfRSO2ZZQeWeX9noeDTUDgg6eCENiEPFvQg==
-  optionalDependencies:
-    fsevents "~2.3.1"
-
 run-async@^2.2.0, run-async@^2.4.0:
   version "2.4.1"
   resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455"
@@ -7765,11 +7667,6 @@ set-value@^2.0.0, set-value@^2.0.1:
     is-plain-object "^2.0.3"
     split-string "^3.0.1"
 
-setprototypeof@1.1.1:
-  version "1.1.1"
-  resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683"
-  integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==
-
 shallow-equal@^1.0.0:
   version "1.2.1"
   resolved "https://registry.npmjs.org/shallow-equal/-/shallow-equal-1.2.1.tgz#4c16abfa56043aa20d050324efa68940b0da79da"
@@ -8044,7 +7941,7 @@ static-extend@^0.1.1:
     define-property "^0.2.5"
     object-copy "^0.1.0"
 
-"statuses@>= 1.5.0 < 2", statuses@~1.5.0:
+statuses@~1.5.0:
   version "1.5.0"
   resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
   integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
@@ -8595,11 +8492,6 @@ to-regex@^3.0.1, to-regex@^3.0.2:
     regex-not "^1.0.2"
     safe-regex "^1.1.0"
 
-toidentifier@1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
-  integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
-
 tr46@^1.0.1:
   version "1.0.1"
   resolved "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09"
@@ -8707,14 +8599,6 @@ type-fest@^0.8.1:
   resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"
   integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==
 
-type-is@~1.6.17:
-  version "1.6.18"
-  resolved "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
-  integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==
-  dependencies:
-    media-typer "0.3.0"
-    mime-types "~2.1.24"
-
 typedarray-to-buffer@^3.1.5:
   version "3.1.5"
   resolved "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080"
@@ -8833,7 +8717,7 @@ universalify@^2.0.0:
   resolved "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz#75a4984efedc4b08975c5aeb73f530d02df25717"
   integrity sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==
 
-unpipe@1.0.0, unpipe@~1.0.0:
+unpipe@~1.0.0:
   version "1.0.0"
   resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
   integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
@@ -8882,10 +8766,10 @@ urix@^0.1.0:
   resolved "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
   integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
 
-url-join@^4.0.0:
-  version "4.0.1"
-  resolved "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz#b642e21a2646808ffa178c4c5fda39844e12cde7"
-  integrity sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==
+url-join@^2.0.5:
+  version "2.0.5"
+  resolved "https://registry.npmjs.org/url-join/-/url-join-2.0.5.tgz#5af22f18c052a000a48d7b82c5e9c2e2feeda728"
+  integrity sha1-WvIvGMBSoACkjXuCxenC4v7tpyg=
 
 url-parse-lax@^1.0.0:
   version "1.0.0"
@@ -8949,10 +8833,10 @@ validate-npm-package-license@^3.0.1:
     spdx-correct "^3.0.0"
     spdx-expression-parse "^3.0.0"
 
-vditor@^3.8.1:
-  version "3.8.1"
-  resolved "https://registry.npmjs.org/vditor/-/vditor-3.8.1.tgz#93567193d481ff1772b56ca28691ccf67094e7cb"
-  integrity sha512-aVqkaF81sTA58038RZzNPOz/iW3ZjRgU2A78kcBX/oWecfhh1w679OuFf2owYGMZlFJmO4Bme1L0y52XNajb/A==
+vditor@^3.8.2:
+  version "3.8.2"
+  resolved "https://registry.npmjs.org/vditor/-/vditor-3.8.2.tgz#0e7f1631736854b2a7621a96e9ef2fa25291921d"
+  integrity sha512-A74dg1EZWCvZPowasaYFybdgZYYpTOJibqOVsrcdyo5yMaQ43/5oMcUCcmE9cdbchZCEBTE+20jSJjhk4Whurw==
   dependencies:
     diff-match-patch "^1.0.5"
 
@@ -9015,22 +8899,20 @@ vite-plugin-imagemin@^0.2.9:
     imagemin-svgo "^8.0.0"
     imagemin-webp "^6.0.0"
 
-vite-plugin-mock@^2.1.5:
-  version "2.1.5"
-  resolved "https://registry.npmjs.org/vite-plugin-mock/-/vite-plugin-mock-2.1.5.tgz#ab0868cdba49d1357ba61e098b2e6d82ab872a60"
-  integrity sha512-/hFifHvf7I4bTkD2PyVw8pu/nUKDdnXcPxZQMZq0bId/5Z8l2iTPwVkFyyuJb38h0eGTPojqeHK8JALWfS9sCQ==
+vite-plugin-mock@^2.2.0:
+  version "2.2.0"
+  resolved "https://registry.npmjs.org/vite-plugin-mock/-/vite-plugin-mock-2.2.0.tgz#ecdfed8b46b9d9113bf036757721b24c6c45817b"
+  integrity sha512-CukTLrbVPFJIdE6gLaVGF6f66CF4ur0EOOo2kc7Ae+l/3p7vDMdqaJgaH+8pEVYMH6Q04SIJQeEsotSuhiN1Eg==
   dependencies:
     "@rollup/plugin-node-resolve" "^11.2.0"
     "@types/mockjs" "^1.0.3"
-    body-parser "^1.19.0"
     chalk "^4.1.0"
     chokidar "^3.5.1"
     connect "^3.7.0"
-    dayjs "^1.10.4"
     debug "^4.3.2"
-    esbuild "^0.8.50"
+    esbuild "^0.8.54"
     fast-glob "^3.2.5"
-    rollup "^2.39.0"
+    rollup "^2.40.0"
     rollup-plugin-esbuild "^2.6.1"
 
 vite-plugin-purge-icons@^0.7.0:
@@ -9100,10 +8982,10 @@ vue-demi@latest:
   resolved "https://registry.npmjs.org/vue-demi/-/vue-demi-0.6.0.tgz#e314282f704cb449119b9fd002cbbc0e39f591fe"
   integrity sha512-8GEJa0mHJpYJeGeq5fD1pJct2kfdl30PHfmL1NaJ97mgKPyKojlIRt/3inGBK4Y0ylCI6T5vOo3chwpqDOq/Hw==
 
-vue-eslint-parser@^7.5.0:
-  version "7.5.0"
-  resolved "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.5.0.tgz#b68221c55fee061899afcfb4441ec74c1495285e"
-  integrity sha512-6EHzl00hIpy4yWZo3qSbtvtVw1A1cTKOv1w95QSuAqGgk4113XtRjvNIiEGo49r0YWOPYsrmI4Dl64axL5Agrw==
+vue-eslint-parser@^7.6.0:
+  version "7.6.0"
+  resolved "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-7.6.0.tgz#01ea1a2932f581ff244336565d712801f8f72561"
+  integrity sha512-QXxqH8ZevBrtiZMZK0LpwaMfevQi9UL7lY6Kcp+ogWHC88AuwUPwwCIzkOUc1LR4XsYAt/F9yHXAB/QoD17QXA==
   dependencies:
     debug "^4.1.1"
     eslint-scope "^5.0.0"