diff --git a/CHANGELOG.zh_CN.md b/CHANGELOG.zh_CN.md index d6d0db05..1bd738bf 100644 --- a/CHANGELOG.zh_CN.md +++ b/CHANGELOG.zh_CN.md @@ -7,6 +7,9 @@ ### ✨ Features - axios 支持 form-data 格式请求 +- 新增图标选择器组件 +- 新增修改密码界面 +- 新增部门管理示例界面 ### ⚡ Performance Improvements diff --git a/build/gen/generateIconJson.ts b/build/gen/generateIconJson.ts new file mode 100644 index 00000000..13f7dece --- /dev/null +++ b/build/gen/generateIconJson.ts @@ -0,0 +1,56 @@ +import path from 'path'; +import fs from 'fs-extra'; +import inquirer from 'inquirer'; +import chalk from 'chalk'; +import pkg from '../../package.json'; + +async function generateIcon() { + const dir = path.resolve(process.cwd(), 'node_modules/@iconify/json'); + + const raw = await fs.readJSON(path.join(dir, 'collections.json')); + + const collections = Object.entries(raw).map(([id, v]) => ({ + ...(v as any), + id, + })); + + const choices = collections.map((item) => ({ key: item.id, value: item.id, name: item.name })); + + inquirer + .prompt([ + { + type: 'checkbox', + 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', + }, + ]) + .then(async (answers) => { + const { iconSet, output } = answers; + const outputDir = path.resolve(process.cwd(), output); + fs.ensureDir(outputDir); + 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); + prefixSet.push(prefix); + } + } + console.log( + `✨ ${chalk.cyan(`[${pkg.name}]`)}` + ' - Icon generated successfully:' + `[${prefixSet}]` + ); + }); +} + +generateIcon(); diff --git a/package.json b/package.json index 0d8db8a4..bc9bcdcd 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,9 @@ "test:gzip": "http-server dist --cors --gzip -c-1", "test:br": "http-server dist --cors --brotli -c-1", "reinstall": "rimraf yarn.lock && rimraf package.lock.json && rimraf node_modules && npm run bootstrap", - "postinstall": "is-ci || husky install" + "install:husky": "is-ci || husky install", + "gen:icon": "esno ./build/gen/generateIconJson.ts", + "postinstall": "npm run install:husky" }, "dependencies": { "@iconify/iconify": "^2.0.0-rc.6", @@ -55,8 +57,9 @@ "@ls-lint/ls-lint": "^1.9.2", "@purge-icons/generated": "^0.7.0", "@types/crypto-js": "^4.0.1", - "@types/fs-extra": "^9.0.7", + "@types/fs-extra": "^9.0.8", "@types/http-proxy": "^1.17.5", + "@types/inquirer": "^7.3.1", "@types/lodash-es": "^4.17.4", "@types/mockjs": "^1.0.3", "@types/nprogress": "^0.2.0", @@ -84,6 +87,7 @@ "fs-extra": "^9.1.0", "http-server": "^0.12.3", "husky": "^5.1.2", + "inquirer": "^8.0.0", "is-ci": "^3.0.0", "less": "^4.1.1", "lint-staged": "^10.5.4", diff --git a/src/components/Icon/index.ts b/src/components/Icon/index.ts index ae16c57d..853eb917 100644 --- a/src/components/Icon/index.ts +++ b/src/components/Icon/index.ts @@ -1,4 +1,6 @@ import Icon from './src/index.vue'; +import IconPicker from './src/IconPicker.vue'; + +export { Icon, IconPicker }; -export { Icon }; export default Icon; diff --git a/src/components/Icon/json/ion-info.json b/src/components/Icon/json/ion-info.json new file mode 100644 index 00000000..c1fbea19 --- /dev/null +++ b/src/components/Icon/json/ion-info.json @@ -0,0 +1,2338 @@ +[ + "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" +] diff --git a/src/components/Icon/src/IconPicker.vue b/src/components/Icon/src/IconPicker.vue new file mode 100644 index 00000000..fb1a6e48 --- /dev/null +++ b/src/components/Icon/src/IconPicker.vue @@ -0,0 +1,170 @@ + + + diff --git a/src/components/Icon/src/index.vue b/src/components/Icon/src/index.vue index 2f86a82a..aae9e5af 100644 --- a/src/components/Icon/src/index.vue +++ b/src/components/Icon/src/index.vue @@ -16,6 +16,7 @@ import Iconify from '@purge-icons/generated'; import { isString } from '/@/utils/is'; import { propTypes } from '/@/utils/propTypes'; + export default defineComponent({ name: 'GIcon', props: { diff --git a/src/components/SimpleMenu/src/index.less b/src/components/SimpleMenu/src/index.less index 5ef67015..6d82dcbc 100644 --- a/src/components/SimpleMenu/src/index.less +++ b/src/components/SimpleMenu/src/index.less @@ -51,7 +51,7 @@ } &--dot { - top: calc(50% - 4px); + top: calc(50% - 2px); width: 6px; height: 6px; padding: 0; diff --git a/src/design/ant/index.less b/src/design/ant/index.less index 9483cc72..22c2d298 100644 --- a/src/design/ant/index.less +++ b/src/design/ant/index.less @@ -14,7 +14,7 @@ } span.anticon:not(.app-iconify) { - vertical-align: 0.125em; + vertical-align: 0.135em; } .ant-back-top { diff --git a/src/hooks/web/usePagination.ts b/src/hooks/web/usePagination.ts new file mode 100644 index 00000000..1e199139 --- /dev/null +++ b/src/hooks/web/usePagination.ts @@ -0,0 +1,34 @@ +import type { Ref } from 'vue'; +import { ref, unref, computed } from 'vue'; + +function pagination(list: T[], pageNo: number, pageSize: number): T[] { + const offset = (pageNo - 1) * Number(pageSize); + const ret = + offset + Number(pageSize) >= list.length + ? list.slice(offset, list.length) + : list.slice(offset, offset + Number(pageSize)); + return ret; +} + +export function usePagination(list: Ref, pageSize: number) { + const currentPage = ref(1); + const pageSizeRef = ref(pageSize); + + const getPaginationList = computed(() => { + return pagination(unref(list), unref(currentPage), unref(pageSizeRef)); + }); + + const getTotal = computed(() => { + return unref(list).length; + }); + + function setCurrentPage(page: number) { + currentPage.value = page; + } + + function setPageSize(pageSize: number) { + pageSizeRef.value = pageSize; + } + + return { setCurrentPage, getTotal, setPageSize, getPaginationList }; +} diff --git a/src/locales/lang/en/component/icon.ts b/src/locales/lang/en/component/icon.ts new file mode 100644 index 00000000..75c31797 --- /dev/null +++ b/src/locales/lang/en/component/icon.ts @@ -0,0 +1,5 @@ +export default { + placeholder: 'Click the select icon', + search: 'Search icon', + copy: 'Copy icon successfully!', +}; diff --git a/src/locales/lang/zh_CN/component/icon.ts b/src/locales/lang/zh_CN/component/icon.ts new file mode 100644 index 00000000..fab538a0 --- /dev/null +++ b/src/locales/lang/zh_CN/component/icon.ts @@ -0,0 +1,5 @@ +export default { + placeholder: '点击选择图标', + search: '搜索图标', + copy: '复制图标成功!', +}; diff --git a/src/router/menus/modules/demo/comp.ts b/src/router/menus/modules/demo/comp.ts index 3a7c59e5..da1fc78b 100644 --- a/src/router/menus/modules/demo/comp.ts +++ b/src/router/menus/modules/demo/comp.ts @@ -6,9 +6,7 @@ const menu: MenuModule = { menu: { name: t('routes.demo.comp.comp'), path: '/comp', - tag: { - dot: true, - }, + children: [ { path: 'basic', @@ -52,9 +50,7 @@ const menu: MenuModule = { { path: 'table', name: t('routes.demo.table.table'), - tag: { - dot: true, - }, + children: [ { path: 'basic', @@ -111,16 +107,10 @@ const menu: MenuModule = { { path: 'editCellTable', name: t('routes.demo.table.editCellTable'), - tag: { - dot: true, - }, }, { path: 'editRowTable', name: t('routes.demo.table.editRowTable'), - tag: { - dot: true, - }, }, ], }, diff --git a/src/router/menus/modules/demo/feat.ts b/src/router/menus/modules/demo/feat.ts index 3cd1a3f6..c66d4150 100644 --- a/src/router/menus/modules/demo/feat.ts +++ b/src/router/menus/modules/demo/feat.ts @@ -14,6 +14,9 @@ const menu: MenuModule = { { path: 'icon', name: t('routes.demo.feat.icon'), + tag: { + content: 'new', + }, }, { path: 'tabs', @@ -51,9 +54,6 @@ const menu: MenuModule = { { path: 'ripple', name: t('routes.demo.feat.ripple'), - tag: { - content: 'new', - }, }, { path: 'full-screen', @@ -89,9 +89,7 @@ const menu: MenuModule = { { name: t('routes.demo.feat.breadcrumb'), path: 'breadcrumb', - tag: { - content: 'new', - }, + children: [ { path: 'flat', diff --git a/src/router/menus/modules/demo/system.ts b/src/router/menus/modules/demo/system.ts index be001077..a847785f 100644 --- a/src/router/menus/modules/demo/system.ts +++ b/src/router/menus/modules/demo/system.ts @@ -6,20 +6,33 @@ const menu: MenuModule = { menu: { name: t('routes.demo.system.moduleName'), path: '/system', + tag: { + dot: true, + }, children: [ { path: 'account', name: t('routes.demo.system.account'), + tag: { + dot: true, + type: 'warn', + }, }, { path: 'dept', name: t('routes.demo.system.dept'), + tag: { + content: 'new', + }, }, { path: 'changePassword', name: t('routes.demo.system.password'), + tag: { + content: 'new', + }, }, ], }, diff --git a/src/settings/projectSetting.ts b/src/settings/projectSetting.ts index 49a5429d..db877800 100644 --- a/src/settings/projectSetting.ts +++ b/src/settings/projectSetting.ts @@ -19,7 +19,7 @@ const setting: ProjectConfig = { settingButtonPosition: SettingButtonPositionEnum.AUTO, // Permission mode - permissionMode: PermissionModeEnum.BACK, + permissionMode: PermissionModeEnum.ROLE, // Permission-related cache is stored in sessionStorage or localStorage permissionCacheType: CacheTypeEnum.SESSION, diff --git a/src/views/demo/feat/icon/index.vue b/src/views/demo/feat/icon/index.vue index f7fb10dc..f5fc3459 100644 --- a/src/views/demo/feat/icon/index.vue +++ b/src/views/demo/feat/icon/index.vue @@ -14,17 +14,23 @@
- - - - + + + + +
+
+ + +
+
Iconify 图标大全 @@ -43,7 +49,7 @@ CodepenCircleFilled, } from '@ant-design/icons-vue'; - import Icon from '/@/components/Icon/index'; + import { Icon, IconPicker } from '/@/components/Icon/index'; import { openWindow } from '/@/utils'; import { PageWrapper } from '/@/components/Page'; @@ -61,6 +67,7 @@ CodepenCircleFilled, Icon, Alert, + IconPicker, }, setup() { return { diff --git a/windi.config.ts b/windi.config.ts index e3334bdc..1499b008 100644 --- a/windi.config.ts +++ b/windi.config.ts @@ -2,13 +2,17 @@ import lineClamp from 'windicss/plugin/line-clamp'; import colors from 'windicss/colors'; import { defineConfig } from 'vite-plugin-windicss'; +import { primaryColor } from './build/config/themeConfig'; export default defineConfig({ darkMode: 'class', plugins: [lineClamp, createEnterPlugin()], theme: { extend: { - colors, + colors: { + ...colors, + primary: primaryColor, + }, screens: { sm: '576px', md: '768px', diff --git a/yarn.lock b/yarn.lock index 34b03d55..131d432d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1307,10 +1307,10 @@ resolved "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== -"@types/fs-extra@^9.0.7": - version "9.0.7" - resolved "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.7.tgz#a9ef2ffdab043def080c5bec94c03402f793577f" - integrity sha512-YGq2A6Yc3bldrLUlm17VNWOnUbnEzJ9CMgOeLFtQF3HOCN5lQBO8VyjG00a5acA5NNSM30kHVGp1trZgnVgi1Q== +"@types/fs-extra@^9.0.8": + version "9.0.8" + resolved "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.8.tgz#32c3c07ddf8caa5020f84b5f65a48470519f78ba" + integrity sha512-bnlTVTwq03Na7DpWxFJ1dvnORob+Otb8xHyUqUWhqvz/Ksg8+JXPlR52oeMSZ37YEOa5PyccbgUNutiQdi13TA== dependencies: "@types/node" "*" @@ -1379,6 +1379,14 @@ dependencies: "@types/node" "*" +"@types/inquirer@^7.3.1": + version "7.3.1" + resolved "https://registry.npmjs.org/@types/inquirer/-/inquirer-7.3.1.tgz#1f231224e7df11ccfaf4cf9acbcc3b935fea292d" + integrity sha512-osD38QVIfcdgsPCT0V3lD7eH0OFurX71Jft18bZrsVQWVRt6TuxRzlr0GJLrxoHZR2V5ph7/qP8se/dcnI7o0g== + dependencies: + "@types/through" "*" + rxjs "^6.4.0" + "@types/json-schema@^7.0.3": version "7.0.7" resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz#98a993516c859eb0d5c4c8f098317a9ea68db9ad" @@ -1480,6 +1488,13 @@ resolved "https://registry.npmjs.org/@types/svgo/-/svgo-1.3.3.tgz#4684af265b4e1125c738f5aaafb302c723f4efe0" integrity sha512-eDLVUvvTn+mol3NpP211DTH9JzSS6YKssRIhHNmXk5BiCl+gc4s+xQQjRFTSsGBohmka5qBsHX6qhL4x88Wkvg== +"@types/through@*": + version "0.0.30" + resolved "https://registry.npmjs.org/@types/through/-/through-0.0.30.tgz#e0e42ce77e897bd6aead6f6ea62aeb135b8a3895" + integrity sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg== + dependencies: + "@types/node" "*" + "@types/tinycolor2@^1.4.2": version "1.4.2" resolved "https://registry.npmjs.org/@types/tinycolor2/-/tinycolor2-1.4.2.tgz#721ca5c5d1a2988b4a886e35c2ffc5735b6afbdf" @@ -1802,7 +1817,7 @@ ansi-escapes@^3.2.0: resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== -ansi-escapes@^4.3.0: +ansi-escapes@^4.2.1, ansi-escapes@^4.3.0: version "4.3.1" resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== @@ -2537,6 +2552,11 @@ cli-width@^2.0.0: resolved "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== +cli-width@^3.0.0: + version "3.0.0" + resolved "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" + integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== + cliui@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz#deefcfdb2e800784aa34f46fa08e06851c7bbbc5" @@ -4015,7 +4035,7 @@ figures@^2.0.0: dependencies: escape-string-regexp "^1.0.5" -figures@^3.2.0: +figures@^3.0.0, figures@^3.2.0: version "3.2.0" resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== @@ -5000,6 +5020,25 @@ inquirer@6.5.2: strip-ansi "^5.1.0" through "^2.3.6" +inquirer@^8.0.0: + version "8.0.0" + resolved "https://registry.npmjs.org/inquirer/-/inquirer-8.0.0.tgz#957a46db1abcf0fdd2ab82deb7470e90afc7d0ac" + integrity sha512-ON8pEJPPCdyjxj+cxsYRe6XfCJepTxANdNnTebsTuQgXpRyZRRT9t4dJwjRubgmvn20CLSEnozRUayXyM9VTXA== + dependencies: + ansi-escapes "^4.2.1" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-width "^3.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.21" + mute-stream "0.0.8" + run-async "^2.4.0" + rxjs "^6.6.6" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + interpret@^1.0.0: version "1.4.0" resolved "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" @@ -5720,6 +5759,11 @@ lodash@^4.17.12, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17 resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + log-symbols@^4.0.0: version "4.0.0" resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" @@ -6176,6 +6220,11 @@ mute-stream@0.0.7: resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + nanoid@^3.0.1, nanoid@^3.1.20: version "3.1.20" resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788" @@ -7536,7 +7585,7 @@ rollup@^2.39.0: optionalDependencies: fsevents "~2.3.1" -run-async@^2.2.0: +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" integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== @@ -7553,6 +7602,13 @@ rxjs@^6.4.0, rxjs@^6.6.3: dependencies: tslib "^1.9.0" +rxjs@^6.6.6: + version "6.6.6" + resolved "https://registry.npmjs.org/rxjs/-/rxjs-6.6.6.tgz#14d8417aa5a07c5e633995b525e1e3c0dec03b70" + integrity sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg== + dependencies: + tslib "^1.9.0" + safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"