fix: change icons

This commit is contained in:
zyronon
2025-08-23 23:00:15 +08:00
parent c1d3e95754
commit 47d222d25a
27 changed files with 225 additions and 413 deletions

101
components.d.ts vendored
View File

@@ -26,10 +26,102 @@ declare module 'vue' {
IconCarbonMove: typeof import('~icons/carbon/move')['default']
IconEosIconsLoading: typeof import('~icons/eos-icons/loading')['default']
IconEpMoon: typeof import('~icons/ep/moon')['default']
IconFluentAdd16Filled: typeof import('~icons/fluent/add16-filled')['default']
IconFluentAdd16Regular: typeof import('~icons/fluent/add16-regular')['default']
IconFluentAdd20Filled: typeof import('~icons/fluent/add20-filled')['default']
IconFluentAdd20Regular: typeof import('~icons/fluent/add20-regular')['default']
IconFluentAdd24Filled: typeof import('~icons/fluent/add24-filled')['default']
IconFluentAddSquare20Regular: typeof import('~icons/fluent/add-square20-regular')['default']
IconFluentAppsList24Regular: typeof import('~icons/fluent/apps-list24-regular')['default']
IconFluentArrowBounce20Regular: typeof import('~icons/fluent/arrow-bounce20-regular')['default']
IconFluentArrowCircleRight16Regular: typeof import('~icons/fluent/arrow-circle-right16-regular')['default']
IconFluentArrowCircleRight20Regular: typeof import('~icons/fluent/arrow-circle-right20-regular')['default']
IconFluentArrowLeft16Regular: typeof import('~icons/fluent/arrow-left16-regular')['default']
IconFluentArrowMove20Regular: typeof import('~icons/fluent/arrow-move20-regular')['default']
IconFluentArrowRight16Regular: typeof import('~icons/fluent/arrow-right16-regular')['default']
IconFluentArrowRight20Regular: typeof import('~icons/fluent/arrow-right20-regular')['default']
IconFluentArrowSort20Regular: typeof import('~icons/fluent/arrow-sort20-regular')['default']
IconFluentArrowSwap12Regular: typeof import('~icons/fluent/arrow-swap12-regular')['default']
IconFluentArrowSwap16Regular: typeof import('~icons/fluent/arrow-swap16-regular')['default']
IconFluentArrowSwap20Regular: typeof import('~icons/fluent/arrow-swap20-regular')['default']
IconFluentArrowSync16Regular: typeof import('~icons/fluent/arrow-sync16-regular')['default']
IconFluentArrowSync20Regular: typeof import('~icons/fluent/arrow-sync20-regular')['default']
IconFluentArrowTurnUpDown20Regular: typeof import('~icons/fluent/arrow-turn-up-down20-regular')['default']
IconFluentBookLetter16Regular: typeof import('~icons/fluent/book-letter16-regular')['default']
IconFluentBookLetter20Regular: typeof import('~icons/fluent/book-letter20-regular')['default']
IconFluentCheckmark20Regular: typeof import('~icons/fluent/checkmark20-regular')['default']
IconFluentCheckmarkCircle16Filled: typeof import('~icons/fluent/checkmark-circle16-filled')['default']
IconFluentCheckmarkCircle16Regular: typeof import('~icons/fluent/checkmark-circle16-regular')['default']
IconFluentCheckmarkCircle20Filled: typeof import('~icons/fluent/checkmark-circle20-filled')['default']
IconFluentCheckmarkCircle20Regular: typeof import('~icons/fluent/checkmark-circle20-regular')['default']
IconFluentChevronLeft12Regular: typeof import('~icons/fluent/chevron-left12-regular')['default']
IconFluentChevronLeft16Regular: typeof import('~icons/fluent/chevron-left16-regular')['default']
IconFluentChevronLeft20Filled: typeof import('~icons/fluent/chevron-left20-filled')['default']
IconFluentChevronLeft28Filled: typeof import('~icons/fluent/chevron-left28-filled')['default']
IconFluentDatabasePerson20Regular: typeof import('~icons/fluent/database-person20-regular')['default']
IconFluentDelete20Regular: typeof import('~icons/fluent/delete20-regular')['default']
IconFluentDelete24Regular: typeof import('~icons/fluent/delete24-regular')['default']
IconFluentDesktopSpeaker20Filled: typeof import('~icons/fluent/desktop-speaker20-filled')['default']
IconFluentDismiss20Regular: typeof import('~icons/fluent/dismiss20-regular')['default']
IconFluentDismissCircle16Regular: typeof import('~icons/fluent/dismiss-circle16-regular')['default']
IconFluentDismissCircle20Filled: typeof import('~icons/fluent/dismiss-circle20-filled')['default']
IconFluentDismissCircle20Regular: typeof import('~icons/fluent/dismiss-circle20-regular')['default']
IconFluentEmoji20Regular: typeof import('~icons/fluent/emoji20-regular')['default']
IconFluentEmojiLaugh20Regular: typeof import('~icons/fluent-emoji/laugh20-regular')['default']
IconFluentEmojiMeme20Regular: typeof import('~icons/fluent-emoji/meme20-regular')['default']
IconFluentEmojiSadSlight20Regular: typeof import('~icons/fluent-emoji/sad-slight20-regular')['default']
IconFluentEmojiSparkle20Regular: typeof import('~icons/fluent-emoji/sparkle20-regular')['default']
IconFluentErrorCircle20Filled: typeof import('~icons/fluent/error-circle20-filled')['default']
IconFluentEye16Regular: typeof import('~icons/fluent/eye16-regular')['default']
IconFluentEyeOff16Regular: typeof import('~icons/fluent/eye-off16-regular')['default']
IconFluentEyeOn16Regular: typeof import('~icons/fluent/eye-on16-regular')['default']
IconFluentHeadphones20Regular: typeof import('~icons/fluent/headphones20-regular')['default']
IconFluentKeyboard20Regular: typeof import('~icons/fluent/keyboard20-regular')['default']
IconFluentKeyboardLayoutFloat20Regular: typeof import('~icons/fluent/keyboard-layout-float20-regular')['default']
IconFluentMailEdit20Regular: typeof import('~icons/fluent/mail-edit20-regular')['default']
IconFluentMyLocation20Regular: typeof import('~icons/fluent/my-location20-regular')['default']
IconFluentPaddingLeft20Regular: typeof import('~icons/fluent/padding-left20-regular')['default']
IconFluentPerson20Regular: typeof import('~icons/fluent/person20-regular')['default']
IconFluentPlay20Regular: typeof import('~icons/fluent/play20-regular')['default']
IconFluentQuestionCircle20Regular: typeof import('~icons/fluent/question-circle20-regular')['default']
IconFluentReplay16Filled: typeof import('~icons/fluent/replay16-filled')['default']
IconFluentReplay20Regular: typeof import('~icons/fluent/replay20-regular')['default']
IconFluentScanType20Regular: typeof import('~icons/fluent/scan-type20-regular')['default']
IconFluentSearch16Regular: typeof import('~icons/fluent/search16-regular')['default']
IconFluentSearch20Regular: typeof import('~icons/fluent/search20-regular')['default']
IconFluentSearch24Regular: typeof import('~icons/fluent/search24-regular')['default']
IconFluentSettings20Regular: typeof import('~icons/fluent/settings20-regular')['default']
IconFluentSettings32Regular: typeof import('~icons/fluent/settings32-regular')['default']
IconFluentShieldError20Regular: typeof import('~icons/fluent/shield-error20-regular')['default']
IconFluentShieldQuestion20Regular: typeof import('~icons/fluent/shield-question20-regular')['default']
IconFluentSpeaker016Regular: typeof import('~icons/fluent/speaker016-regular')['default']
IconFluentSpeaker020Regular: typeof import('~icons/fluent/speaker020-regular')['default']
IconFluentSpeaker120Regular: typeof import('~icons/fluent/speaker120-regular')['default']
IconFluentSpeaker216Filled: typeof import('~icons/fluent/speaker216-filled')['default']
IconFluentSpeaker216Regular: typeof import('~icons/fluent/speaker216-regular')['default']
IconFluentSpeaker220Regular: typeof import('~icons/fluent/speaker220-regular')['default']
IconFluentSpeaker224Regular: typeof import('~icons/fluent/speaker224-regular')['default']
IconFluentSpeakerEdit20Regular: typeof import('~icons/fluent/speaker-edit20-regular')['default']
IconFluentStar12Regular: typeof import('~icons/fluent/star12-regular')['default']
IconFluentStar16Filled: typeof import('~icons/fluent/star16-filled')['default']
IconFluentStar16Regular: typeof import('~icons/fluent/star16-regular')['default']
IconFluentStar20Filled: typeof import('~icons/fluent/star20-filled')['default']
IconFluentStar20Regular: typeof import('~icons/fluent/star20-regular')['default']
IconFluentStarAdd16Regular: typeof import('~icons/fluent/star-add16-regular')['default']
IconFluentStarAdd20Regular: typeof import('~icons/fluent/star-add20-regular')['default']
IconFluentTextEditStyle20Regular: typeof import('~icons/fluent/text-edit-style20-regular')['default']
IconFluentTextField20Regular: typeof import('~icons/fluent/text-field20-regular')['default']
IconFluentTextListAbcLowercaseLtr16Regular: typeof import('~icons/fluent/text-list-abc-lowercase-ltr16-regular')['default']
IconFluentTextListAbcLowercaseLtr20Regular: typeof import('~icons/fluent/text-list-abc-lowercase-ltr20-regular')['default']
IconFluentTextListAbcUppercaseLtr20Regular: typeof import('~icons/fluent/text-list-abc-uppercase-ltr20-regular')['default']
IconFluentTextUnderlineDouble20Regular: typeof import('~icons/fluent/text-underline-double20-regular')['default']
IconFluentTextWholeWord20Regular: typeof import('~icons/fluent/text-whole-word20-regular')['default']
IconFluentTranslate16Regular: typeof import('~icons/fluent/translate16-regular')['default']
IconFluentTranslate20Regular: typeof import('~icons/fluent/translate20-regular')['default']
IconFluentTranslateOff16Regular: typeof import('~icons/fluent/translate-off16-regular')['default']
IconFluentTranslateOff20Regular: typeof import('~icons/fluent/translate-off20-regular')['default']
IconFluentWeatherMoon16Regular: typeof import('~icons/fluent/weather-moon16-regular')['default']
IconFluentWeatherSunny16Regular: typeof import('~icons/fluent/weather-sunny16-regular')['default']
IconFormkitLeft: typeof import('~icons/formkit/left')['default']
IconFormkitRight: typeof import('~icons/formkit/right')['default']
IconGgArrowsExchange: typeof import('~icons/gg/arrows-exchange')['default']
@@ -43,10 +135,19 @@ declare module 'vue' {
IconIcSharpMyLocation: typeof import('~icons/ic/sharp-my-location')['default']
IconIonCloseOutline: typeof import('~icons/ion/close-outline')['default']
IconMajesticonsEyeOffLine: typeof import('~icons/majesticons/eye-off-line')['default']
IconMaterialSymbolsArrowBackIosNewRounded: typeof import('~icons/material-symbols/arrow-back-ios-new-rounded')['default']
IconMaterialSymbolsBook3OutlineRounded: typeof import('~icons/material-symbols/book3-outline-rounded')['default']
IconMaterialSymbolsBook3OutlineRoundeds: typeof import('~icons/material-symbols/book3-outline-roundeds')['default']
IconMaterialSymbolsCheckCircleOutlineRounded: typeof import('~icons/material-symbols/check-circle-outline-rounded')['default']
IconMaterialSymbolsCheckCircleRounded: typeof import('~icons/material-symbols/check-circle-rounded')['default']
IconMaterialSymbolsChevronLeftRounded: typeof import('~icons/material-symbols/chevron-left-rounded')['default']
IconMaterialSymbolsChevronRightRounded: typeof import('~icons/material-symbols/chevron-right-rounded')['default']
IconMaterialSymbolsKeyboardOutline: typeof import('~icons/material-symbols/keyboard-outline')['default']
IconMaterialSymbolsLightDictionaryOutlineSharp: typeof import('~icons/material-symbols-light/dictionary-outline-sharp')['default']
IconMaterialSymbolsLightSettingsOutlineRounded: typeof import('~icons/material-symbols-light/settings-outline-rounded')['default']
IconMaterialSymbolsMoonStarsOutlineRounded: typeof import('~icons/material-symbols/moon-stars-outline-rounded')['default']
IconMaterialSymbolsSettingsOutline: typeof import('~icons/material-symbols/settings-outline')['default']
IconMaterialSymbolsWbSunnyOutlineRounded: typeof import('~icons/material-symbols/wb-sunny-outline-rounded')['default']
IconMdiAboutCircleOutline: typeof import('~icons/mdi/about-circle-outline')['default']
IconMdiAlertCircle: typeof import('~icons/mdi/alert-circle')['default']
IconMdiCheckCircle: typeof import('~icons/mdi/check-circle')['default']

View File

@@ -36,34 +36,9 @@
},
"devDependencies": {
"@alicloud/pop-core": "^1.8.0",
"@iconify-json/basil": "^1.2.4",
"@iconify-json/bi": "^1.2.6",
"@iconify-json/bx": "^1.2.2",
"@iconify-json/carbon": "^1.2.13",
"@iconify-json/eos-icons": "^1.2.4",
"@iconify-json/ep": "^1.2.3",
"@iconify-json/fluent": "^1.2.28",
"@iconify-json/formkit": "^1.2.2",
"@iconify-json/gg": "^1.2.2",
"@iconify-json/hugeicons": "^1.2.10",
"@iconify-json/ic": "^1.2.4",
"@iconify-json/icon-park-outline": "^1.2.4",
"@iconify-json/iconamoon": "^1.2.2",
"@iconify-json/icons8": "^1.2.1",
"@iconify-json/ion": "^1.2.6",
"@iconify-json/majesticons": "^1.2.4",
"@iconify-json/material-symbols": "^1.2.32",
"@iconify-json/material-symbols-light": "^1.2.32",
"@iconify-json/mdi": "^1.2.3",
"@iconify-json/mingcute": "^1.2.5",
"@iconify-json/ph": "^1.2.2",
"@iconify-json/ri": "^1.2.5",
"@iconify-json/solar": "^1.2.4",
"@iconify-json/tabler": "^1.2.22",
"@iconify-json/tdesign": "^1.2.8",
"@iconify-json/twemoji": "^1.2.4",
"@iconify-json/typcn": "^1.2.2",
"@iconify-json/uil": "^1.2.3",
"@types/file-saver": "^2.0.7",
"@types/lodash-es": "^4.17.12",
"@types/md5": "^2.1.33",
@@ -80,6 +55,7 @@
"husky": "^8.0.3",
"rollup-plugin-visualizer": "^5.14.0",
"sass": "^1.89.2",
"sitemap": "^8.0.0",
"tslib": "^2.8.1",
"typescript": "^5.8.3",
"unocss": "^66.4.0",
@@ -89,8 +65,7 @@
"vite": "^7.0.3",
"vite-plugin-externals": "^0.6.2",
"vue-tsc": "^3.0.1",
"xlsx": "^0.18.5",
"sitemap": "^8.0.0"
"xlsx": "^0.18.5"
},
"config": {
"commitizen": {

250
pnpm-lock.yaml generated
View File

@@ -60,90 +60,15 @@ importers:
'@alicloud/pop-core':
specifier: ^1.8.0
version: 1.8.0
'@iconify-json/basil':
specifier: ^1.2.4
version: 1.2.4
'@iconify-json/bi':
specifier: ^1.2.6
version: 1.2.6
'@iconify-json/bx':
specifier: ^1.2.2
version: 1.2.2
'@iconify-json/carbon':
specifier: ^1.2.13
version: 1.2.13
'@iconify-json/eos-icons':
specifier: ^1.2.4
version: 1.2.4
'@iconify-json/ep':
specifier: ^1.2.3
version: 1.2.3
'@iconify-json/fluent':
specifier: ^1.2.28
version: 1.2.28
'@iconify-json/formkit':
specifier: ^1.2.2
version: 1.2.2
'@iconify-json/gg':
specifier: ^1.2.2
version: 1.2.2
'@iconify-json/hugeicons':
specifier: ^1.2.10
version: 1.2.10
'@iconify-json/ic':
specifier: ^1.2.4
version: 1.2.4
'@iconify-json/icon-park-outline':
specifier: ^1.2.4
version: 1.2.4
'@iconify-json/iconamoon':
specifier: ^1.2.2
version: 1.2.2
'@iconify-json/icons8':
specifier: ^1.2.1
version: 1.2.1
'@iconify-json/ion':
specifier: ^1.2.6
version: 1.2.6
'@iconify-json/majesticons':
specifier: ^1.2.4
version: 1.2.4
'@iconify-json/material-symbols':
specifier: ^1.2.32
version: 1.2.32
'@iconify-json/material-symbols-light':
specifier: ^1.2.32
version: 1.2.32
'@iconify-json/mdi':
specifier: ^1.2.3
version: 1.2.3
'@iconify-json/mingcute':
specifier: ^1.2.5
version: 1.2.5
'@iconify-json/ph':
specifier: ^1.2.2
version: 1.2.2
'@iconify-json/ri':
specifier: ^1.2.5
version: 1.2.5
'@iconify-json/solar':
specifier: ^1.2.4
version: 1.2.4
'@iconify-json/tabler':
specifier: ^1.2.22
version: 1.2.22
'@iconify-json/tdesign':
specifier: ^1.2.8
version: 1.2.8
'@iconify-json/twemoji':
specifier: ^1.2.4
version: 1.2.4
'@iconify-json/typcn':
specifier: ^1.2.2
version: 1.2.2
'@iconify-json/uil':
specifier: ^1.2.3
version: 1.2.3
'@types/file-saver':
specifier: ^2.0.7
version: 2.0.7
@@ -547,90 +472,15 @@ packages:
cpu: [x64]
os: [win32]
'@iconify-json/basil@1.2.4':
resolution: {integrity: sha512-KUL5JBdFDF7APY8XiuqvfpiecIby8pIbs6rm3WLgdVDqMlKH0WcWEwd+ilANby8X3AuHQVrjNjByh9MpfAR3lQ==}
'@iconify-json/bi@1.2.6':
resolution: {integrity: sha512-fWfLr1/+DJDe8+rIUXxMwvmWBZFlxRtM59sYnrezJ2xX87QKyXVw3QuforJ4kF2Orrz85J+JTRG6305vaJ7flA==}
'@iconify-json/bx@1.2.2':
resolution: {integrity: sha512-hZVx6LMEkYckScdRdUuQWcmv8Lm2au6Cnf799TLoR6YgiAfFvaJ4M5ElwcnExvCu8ntsS7jW89r0W5LwBAfZXQ==}
'@iconify-json/carbon@1.2.13':
resolution: {integrity: sha512-vXrFFKkfYaZSwf4WfnRQJQMnpEzxlPlupwZZlS1WvOAuNnWahsUudHycaMpoBzDqBfniH4KQ2b5qnw0VMKoJug==}
'@iconify-json/eos-icons@1.2.4':
resolution: {integrity: sha512-gp2BCSF3+aRgMqE7LRAVxT5nXJLOtfcvGnOYwJz4gc4zxcEqAaOByxFVLZej15jXPRJmUv2TSzMNrQ2gDtw4VA==}
'@iconify-json/ep@1.2.3':
resolution: {integrity: sha512-bESiKz5aTcbT4chTVSKjR5P+Nk81ibRtWgR7Gng5JPdF1Az+91+bIOof/OCUKThFRWqWsQ9A4XmSSrakvjuJDQ==}
'@iconify-json/fluent@1.2.28':
resolution: {integrity: sha512-Lnaf38ruWopJv8PdEsK8vXgxKpFSsKED2kI0/575ZXg6XHUMvzSuLlldAVAOEWZmMVPJFC0MXe07Ybnh1ziLvw==}
'@iconify-json/formkit@1.2.2':
resolution: {integrity: sha512-vrv5X44zie1F46e1AsPjN2MEi8ui+6SA1EvWETphAbkd+MaXmxyD4vra3hdTOYYNJDn5dkC7vMGf5WieCMu9zA==}
'@iconify-json/gg@1.2.2':
resolution: {integrity: sha512-8iQh8+Tdb/0jakNYy0+t2GVubjhbaJbuYoPsRhFw8IAs00IQV2BjE9GoB2kGF/UObaJCqvCelB3qRaUdizkrmg==}
'@iconify-json/hugeicons@1.2.10':
resolution: {integrity: sha512-LfbCMlxgM4aRlLdKfsr6+Yg+fOvFx5MQd6tVgoqSPaPL0iN8bZdsDv++TpTlOy043LUVcAbRAu0ZobmWCz6cHw==}
'@iconify-json/ic@1.2.4':
resolution: {integrity: sha512-pzPMmrZrBQuwT7nmtrYdkttun8KalRGgZPIL1Ny9KpF2zjRGIUPN+npTfuD3lrgO/OnSwAoJWuekQwBpt/Cqrw==}
'@iconify-json/icon-park-outline@1.2.4':
resolution: {integrity: sha512-NyZxXe2gD2TbTOyoRRMdtEJhr6i2KQCdDlYYoOn5oZLndQjwpIhw79hzeFhXvP38/o40D3gQ+l+IaSJgbB+0TQ==}
'@iconify-json/iconamoon@1.2.2':
resolution: {integrity: sha512-Xn7YeSDniPgutPr0qil/iQwQelq975OYQ/i2twGjcK4DjGOXBrBC+6q45WtVuQbFfXzM7bgijv4yVnxy0OqUdQ==}
'@iconify-json/icons8@1.2.1':
resolution: {integrity: sha512-YHEpcPkCgyiYiGyHKk5CK4RzELEP5XDueQiguWe7lXJlG5rSkXMVOgOYfmANkwnTRF+/RZX/uQE1uf3y+haDgw==}
'@iconify-json/ion@1.2.6':
resolution: {integrity: sha512-JftEXKfjvJNn3SrGeSBrG/waRkjeTpLdMLNLwpAX4NgI14QgJoAeXEh2iZjNPqioAkeIgErX4Bi6mnFwpjk3BQ==}
'@iconify-json/majesticons@1.2.4':
resolution: {integrity: sha512-8h6zfqN/8eKLNGcHzJd8LZ+vI6aC2MIGq+QTNoYD/H98TL1N/s8ufxal54OkzIsemylXxWLj+NLd0wXDLlVIIg==}
'@iconify-json/material-symbols-light@1.2.32':
resolution: {integrity: sha512-QbXhpJD+PHdl/G/esFrjBWwTOWzmUTILowa8m1yAMtS645+SKcN9R7HZt8Ir6OXbLaxv+6CzLW4oaTyu5nXaTA==}
'@iconify-json/material-symbols@1.2.32':
resolution: {integrity: sha512-Jw3wdiNV8X1MoiS0rFzlZFYek/yYS1GTh/64L3lZkqlPo+uJAb0xdtVWZR54tzY/0G2OuWXMDqeCCQ6I2wB9/w==}
'@iconify-json/mdi@1.2.3':
resolution: {integrity: sha512-O3cLwbDOK7NNDf2ihaQOH5F9JglnulNDFV7WprU2dSoZu3h3cWH//h74uQAB87brHmvFVxIOkuBX2sZSzYhScg==}
'@iconify-json/mingcute@1.2.5':
resolution: {integrity: sha512-LKlW4wahStprbfJcpzUnuayObOVAuztgYSy3v5oTke6cBJNfqEeE/mtMhHgpoSgGJvo5hhde2Q0+DoxKEldY2A==}
'@iconify-json/ph@1.2.2':
resolution: {integrity: sha512-PgkEZNtqa8hBGjHXQa4pMwZa93hmfu8FUSjs/nv4oUU6yLsgv+gh9nu28Kqi8Fz9CCVu4hj1MZs9/60J57IzFw==}
'@iconify-json/ri@1.2.5':
resolution: {integrity: sha512-kWGimOXMZrlYusjBKKXYOWcKhbOHusFsmrmRGmjS7rH0BpML5A9/fy8KHZqFOwZfC4M6amObQYbh8BqO5cMC3w==}
'@iconify-json/solar@1.2.4':
resolution: {integrity: sha512-ruAh+bbYimlzqXW6MtqmvWlfatvFjE7o1fZWieps1h42Dx7AaHu4Z/dgOYSO1RR4MIhNzD+2xgEbFjASgBcEyg==}
'@iconify-json/tabler@1.2.22':
resolution: {integrity: sha512-KmCtTzZyz7dtszdQGJ5wbWqko6exhI38e4aCQqWZE1Z2wGUqBsMXrRWawXkAp6/XNBebt54h0lcxFCaTYBwFJg==}
'@iconify-json/tdesign@1.2.8':
resolution: {integrity: sha512-Q/Ty43etGvXFkEVLYOW2cRaQFbjZoXcOvmOktJRludaN9SX5NeA86VvpriHAfsnsKnRGh0udLy8UscA5JumZKg==}
'@iconify-json/twemoji@1.2.4':
resolution: {integrity: sha512-REYJeXhzaLktNe32DxJJf3t65sYC5KO9K0Jh+RApXRBAo1/IB+jBqd8rny2sXci+wtQLBEfD4z4AGCLBrTMGWA==}
'@iconify-json/typcn@1.2.2':
resolution: {integrity: sha512-I7ckhJgsuvzO1JPgEIsbcjvANVoCs3046w7IcdVpMpz7rJPp2r8+PajvpQ84vHYkCTti297NmOTuTARTiaabTw==}
'@iconify-json/uil@1.2.3':
resolution: {integrity: sha512-if91+UBhDQc6glPsIaXecGIcXnbQZfEO4Gdv89TV2xQ+V5e9GWbY5rNl2fsKZd8COsRQ5lRQAKimVQVL0CZZVg==}
'@iconify/types@2.0.0':
resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==}
@@ -4252,118 +4102,18 @@ snapshots:
'@esbuild/win32-x64@0.25.9':
optional: true
'@iconify-json/basil@1.2.4':
dependencies:
'@iconify/types': 2.0.0
'@iconify-json/bi@1.2.6':
dependencies:
'@iconify/types': 2.0.0
'@iconify-json/bx@1.2.2':
dependencies:
'@iconify/types': 2.0.0
'@iconify-json/carbon@1.2.13':
dependencies:
'@iconify/types': 2.0.0
'@iconify-json/eos-icons@1.2.4':
dependencies:
'@iconify/types': 2.0.0
'@iconify-json/ep@1.2.3':
dependencies:
'@iconify/types': 2.0.0
'@iconify-json/fluent@1.2.28':
dependencies:
'@iconify/types': 2.0.0
'@iconify-json/formkit@1.2.2':
dependencies:
'@iconify/types': 2.0.0
'@iconify-json/gg@1.2.2':
dependencies:
'@iconify/types': 2.0.0
'@iconify-json/hugeicons@1.2.10':
dependencies:
'@iconify/types': 2.0.0
'@iconify-json/ic@1.2.4':
dependencies:
'@iconify/types': 2.0.0
'@iconify-json/icon-park-outline@1.2.4':
dependencies:
'@iconify/types': 2.0.0
'@iconify-json/iconamoon@1.2.2':
dependencies:
'@iconify/types': 2.0.0
'@iconify-json/icons8@1.2.1':
dependencies:
'@iconify/types': 2.0.0
'@iconify-json/ion@1.2.6':
dependencies:
'@iconify/types': 2.0.0
'@iconify-json/majesticons@1.2.4':
dependencies:
'@iconify/types': 2.0.0
'@iconify-json/material-symbols-light@1.2.32':
dependencies:
'@iconify/types': 2.0.0
'@iconify-json/material-symbols@1.2.32':
dependencies:
'@iconify/types': 2.0.0
'@iconify-json/mdi@1.2.3':
dependencies:
'@iconify/types': 2.0.0
'@iconify-json/mingcute@1.2.5':
dependencies:
'@iconify/types': 2.0.0
'@iconify-json/ph@1.2.2':
dependencies:
'@iconify/types': 2.0.0
'@iconify-json/ri@1.2.5':
dependencies:
'@iconify/types': 2.0.0
'@iconify-json/solar@1.2.4':
dependencies:
'@iconify/types': 2.0.0
'@iconify-json/tabler@1.2.22':
dependencies:
'@iconify/types': 2.0.0
'@iconify-json/tdesign@1.2.8':
dependencies:
'@iconify/types': 2.0.0
'@iconify-json/twemoji@1.2.4':
dependencies:
'@iconify/types': 2.0.0
'@iconify-json/typcn@1.2.2':
dependencies:
'@iconify/types': 2.0.0
'@iconify-json/uil@1.2.3':
dependencies:
'@iconify/types': 2.0.0
'@iconify/types@2.0.0': {}
'@iconify/utils@2.3.0':

View File

@@ -37,10 +37,6 @@ defineEmits(['click'])
width="18"
:color="type === 'info'?'#000000':'#ffffff'"
/>
<div class="key-notice" v-if="keyboard">
<IconBiKeyboard width="14" color="#ffffff"/>
<span class="key">{{ keyboard }}</span>
</div>
</div>
</Tooltip>
</template>
@@ -128,18 +124,4 @@ defineEmits(['click'])
opacity: .4;
}
}
.key-notice {
margin-left: .6rem;
display: flex;
align-items: center;
justify-content: center;
font-size: .8rem;
color: white;
//gap: 2rem;
.key {
transform: scale(0.8);
}
}
</style>

View File

@@ -12,7 +12,7 @@ defineProps<{
@click="$emit('click')"
>
<Tooltip :title="title">
<IconCarbonCloseOutline/>
<IconFluentDismissCircle16Regular/>
</Tooltip>
</div>
</template>

View File

@@ -1,5 +1,5 @@
<script setup lang="ts"></script>
<template>
<IconSolarTrashBinMinimalisticLinear/>
<IconFluentDelete20Regular/>
</template>

View File

@@ -43,7 +43,6 @@ function click() {
play()
}
let iconList = ['bx:volume', 'bx:volume-low', 'bx:volume-full']
defineExpose({play})
</script>

View File

@@ -97,18 +97,16 @@ async function goBookDetail(val: DictResource) {
base.currentBook.name || '请选择书籍开始学习'
}}</span>
<BaseIcon @click="router.push('/book-list')">
<IconGgArrowsExchange v-if="base.currentBook.name"/>
<IconFluentAdd20Filled v-else/>
<IconFluentArrowSync16Regular v-if="base.currentBook.name"/>
<IconFluentAdd16Filled v-else/>
</BaseIcon>
</div>
<BaseButton
size="large"
@click="startStudy"
:disabled="!base.currentBook.name"
>
<BaseButton size="large"
@click="startStudy"
:disabled="!base.currentBook.name">
<div class="flex items-center gap-2">
<span>开始学习</span>
<IconIcons8RightRound class="text-2xl"/>
<span class="line-height-[2]">开始学习</span>
<IconFluentArrowCircleRight16Regular class="text-xl"/>
</div>
</BaseButton>
</div>

View File

@@ -113,8 +113,8 @@ const {
:class="!isArticleCollect(item)?'collect':'fill'"
@click.stop="toggleArticleCollect(item)"
:title="!isArticleCollect(item) ? '收藏' : '取消收藏'">
<IconPhStar v-if="!isArticleCollect(item)"/>
<IconPhStarFill v-else/>
<IconFluentStar16Regular v-if="!isArticleCollect(item)"/>
<IconFluentStar16Filled v-else/>
</BaseIcon>
</template>
</ArticleList>

View File

@@ -305,8 +305,8 @@ const {playSentenceAudio} = usePlaySentenceAudio()
:class="!isArticleCollect(item) ? 'collect' : 'fill'"
@click.stop="toggleArticleCollect(item)"
:title="!isArticleCollect(item) ? '收藏' : '取消收藏'">
<IconPhStar v-if="!isArticleCollect(item)"/>
<IconPhStarFill v-else/>
<IconFluentStar16Regular v-if="!isArticleCollect(item)"/>
<IconFluentStar16Filled v-else/>
</BaseIcon>
</template>
</ArticleList>
@@ -322,11 +322,10 @@ const {playSentenceAudio} = usePlaySentenceAudio()
</div>
<div class="footer" :class="!settingStore.showToolbar && 'hide'">
<Tooltip :title="settingStore.showToolbar?'收起':'展开'">
<IconIconParkOutlineDown
<IconFluentChevronLeft20Filled
@click="settingStore.showToolbar = !settingStore.showToolbar"
class="arrow"
:class="!settingStore.showToolbar && 'down'"
width="24"
color="#999"/>
</Tooltip>
@@ -351,27 +350,27 @@ const {playSentenceAudio} = usePlaySentenceAudio()
<BaseIcon
:title="`下一句(${settingStore.shortcutKeyMap[ShortcutKey.Next]})`"
@click="skip">
<IconIconParkOutlineGoAhead/>
<IconFluentArrowBounce20Regular class="transform-rotate-180"/>
</BaseIcon>
<BaseIcon
:title="`重听(${settingStore.shortcutKeyMap[ShortcutKey.PlayWordPronunciation]})`"
@click="play">
<IconFluentReplay16Filled/>
<IconFluentReplay20Regular/>
</BaseIcon>
<BaseIcon
@click="settingStore.dictation = !settingStore.dictation"
:title="`开关默写模式(${settingStore.shortcutKeyMap[ShortcutKey.ToggleDictation]})`"
>
<IconMajesticonsEyeOffLine v-if="settingStore.dictation"/>
<IconMdiEyeOutline v-else/>
<IconFluentEyeOff16Regular v-if="settingStore.dictation"/>
<IconFluentEye16Regular v-else/>
</BaseIcon>
<BaseIcon
:title="`开关释义显示(${settingStore.shortcutKeyMap[ShortcutKey.ToggleShowTranslate]})`"
@click="settingStore.translate = !settingStore.translate">
<IconMdiTranslate v-if="settingStore.translate"/>
<IconMdiTranslateOff v-else/>
<IconFluentTranslate16Regular v-if="settingStore.translate"/>
<IconFluentTranslateOff16Regular v-else/>
</BaseIcon>
<!-- <BaseIcon-->
@@ -382,7 +381,7 @@ const {playSentenceAudio} = usePlaySentenceAudio()
<BaseIcon
@click="settingStore.showPanel = !settingStore.showPanel"
:title="`面板(${settingStore.shortcutKeyMap[ShortcutKey.TogglePanel]})`">
<IconTdesignMenuUnfold/>
<IconFluentTextListAbcUppercaseLtr20Regular/>
</BaseIcon>
</div>
</div>
@@ -451,7 +450,7 @@ const {playSentenceAudio} = usePlaySentenceAudio()
margin-bottom: .8rem;
transition: all var(--anim-time);
position: relative;
margin-top: 1rem;
margin-top: 1.6rem;
&.hide {
margin-bottom: -6rem;
@@ -495,16 +494,17 @@ const {playSentenceAudio} = usePlaySentenceAudio()
.arrow {
position: absolute;
top: -50%;
top: -40%;
left: 50%;
cursor: pointer;
transition: all .5s;
transform: rotate(0);
transform: rotate(-90deg);
padding: .5rem;
font-size: 1.2rem;
&.down {
top: -90%;
transform: rotate(180deg);
top: -70%;
transform: rotate(90deg);
}
}

View File

@@ -297,7 +297,7 @@ function setStartTime(val: Sentence, i: number, j: number) {
</textarea>
<div class="justify-end items-center flex">
<Tooltip>
<IconRiQuestionLine class="mr-3" width="20"/>
<IconFluentQuestionCircle20Regular class="mr-3" width="20"/>
<template #reference>
<div>
<div class="mb-2">使用方法</div>
@@ -359,7 +359,7 @@ function setStartTime(val: Sentence, i: number, j: number) {
</div>
<div class="flex items-center">
<Tooltip>
<IconRiQuestionLine class="mr-3" width="20"/>
<IconFluentQuestionCircle20Regular class="mr-3" width="20"/>
<template #reference>
<div>
<div class="mb-2">使用方法</div>
@@ -425,8 +425,8 @@ function setStartTime(val: Sentence, i: number, j: number) {
@click="setStartTime(sentence,indexI,indexJ)"
:title="indexI === 0 && indexJ === 0 ?'设置开始时间':'使用前一句的结束时间'"
>
<IconIcSharpMyLocation v-if="indexI === 0 && indexJ === 0"/>
<IconTwemojiEndArrow v-else/>
<IconFluentMyLocation20Regular v-if="indexI === 0 && indexJ === 0"/>
<IconFluentPaddingLeft20Regular v-else/>
</BaseIcon>
</div>
<div>-</div>
@@ -437,19 +437,22 @@ function setStartTime(val: Sentence, i: number, j: number) {
@click="sentence.audioPosition[1] = Number(Number(audioRef.currentTime).toFixed(2))"
title="设置结束时间"
>
<IconIcSharpMyLocation/>
<IconFluentMyLocation20Regular/>
</BaseIcon>
</div>
</div>
<div class="flex flex-col">
<BaseIcon :icon="sentence.audioPosition?.length ? 'basil:edit-outline' : 'basil:add-outline'"
title="编辑"
@click="handleShowEditAudioDialog(sentence,indexI,indexJ)">
<IconBasilEditOutline v-if="sentence.audioPosition?.length"/>
<IconBasilAddOutline v-else/>
<IconFluentSpeakerEdit20Regular v-if="!sentence.audioPosition?.length"/>
<IconFluentAddSquare20Regular v-else/>
</BaseIcon>
<BaseIcon v-if="sentence.audioPosition?.length"
<BaseIcon
title="播放"
v-if="sentence.audioPosition?.length"
@click="playSentenceAudio(sentence,audioRef,editArticle)">
<IconHugeiconsPlay/>
<IconFluentPlay20Regular/>
</BaseIcon>
</div>
</div>
@@ -461,11 +464,11 @@ function setStartTime(val: Sentence, i: number, j: number) {
<div class="status">
<span>状态</span>
<div class="warning" v-if="failCount">
<IconTypcnWarningOutline/>
<IconFluentShieldQuestion20Regular/>
共有{{ failCount }}句没有翻译
</div>
<div class="success" v-else>
<IconMdiSuccessCircleOutline/>
<IconFluentCheckmarkCircle16Regular/>
翻译完成
</div>
</div>
@@ -498,9 +501,9 @@ function setStartTime(val: Sentence, i: number, j: number) {
<span v-else> - 结束</span>
</div>
<BaseIcon
title="试听"
title="播放"
@click="playSentenceAudio(editSentence,sentenceAudioRef,editArticle)">
<IconHugeiconsPlay/>
<IconFluentPlay20Regular/>
</BaseIcon>
</div>
</div>
@@ -514,13 +517,13 @@ function setStartTime(val: Sentence, i: number, j: number) {
@click="jumpAudio(editSentence.audioPosition[0])"
title="跳转"
>
<IconIcSharpMyLocation/>
<IconFluentMyLocation20Regular/>
</BaseIcon>
<BaseIcon
@click="setPreEndTimeToCurrentStartTime"
title="使用前一句的结束时间"
>
<IconTwemojiEndArrow/>
<IconFluentPaddingLeft20Regular/>
</BaseIcon>
</div>
<BaseButton @click="recordStart">记录</BaseButton>

View File

@@ -18,7 +18,7 @@ function onClick() {
title="返回"
@click="onClick"
>
<IconFormkitLeft/>
<IconFluentChevronLeft28Filled/>
</BaseIcon>
</template>

View File

@@ -171,7 +171,7 @@ defineRender(
onClick={props.add}
icon="fluent:add-20-filled"
title="添加单词">
<IconFluentAdd20Filled/>
<IconFluentAdd20Regular/>
</BaseIcon>
<BaseIcon
disabled={!currentList.length}
@@ -179,13 +179,13 @@ defineRender(
icon="icon-park-outline:sort-two"
onClick={() => showSortDialog = !showSortDialog}
>
<IconIconParkOutlineSortTwo/>
<IconFluentArrowSort20Regular/>
</BaseIcon>
<BaseIcon
disabled={!currentList.length}
onClick={() => showSearchInput = !showSearchInput}
title="搜索">
<IconFluentSearch24Regular/>
<IconFluentSearch20Regular/>
</BaseIcon>
<MiniDialog
modelValue={showSortDialog}

View File

@@ -47,12 +47,9 @@ const studyProgress = $computed(() => {
class="absolute left-3 bottom-3"/>
<div class="custom" v-if="item.custom">自定义</div>
</template>
<div v-else class="center h-full">
<IconFluentAdd20Filled
width="40px"
/>
<div v-else class="center h-full text-2xl">
<IconFluentAdd16Regular/>
</div>
</div>
</template>

View File

@@ -53,11 +53,11 @@ watch(() => settingStore.load, (n) => {
<div class="href-wrapper">
<div class="round">
<div class="href">2study.top</div>
<IconMdiStarOutline width="22"/>
<IconFluentStar12Regular width="22"/>
</div>
<div class="right">
👈
<IconMdiStar class="star" width="22"/>
<IconFluentStar20Filled class="star" width="22"/>
点亮它!
</div>
</div>

View File

@@ -189,7 +189,7 @@ function quickNextPage() {
:disabled="internalCurrentPage <= 1"
@click="prev"
>
<IconMingcuteLeftLine/>
<IconFluentChevronLeft20Filled/>
</button>
<!-- 页码 -->
@@ -250,7 +250,7 @@ function quickNextPage() {
:disabled="internalCurrentPage >= pageCount"
@click="next"
>
<IconMingcuteRightLine/>
<IconFluentChevronLeft20Filled class="transform-rotate-180"/>
</button>
<!-- 每页条数选择器 -->

View File

@@ -160,7 +160,8 @@ onBeforeUnmount(() => {
{{ displayValue }}
</div>
<div class="select__suffix">
<IconMdiChevronDown
<IconFluentChevronLeft20Filled
class="arrow"
:class="{ 'is-reverse': isOpen }"
width="16"
/>
@@ -235,10 +236,14 @@ onBeforeUnmount(() => {
display: flex;
align-items: center;
color: #999;
transition: transform 0.3s;
.arrow {
transform: rotate(-90deg);
transition: transform 0.3s;
}
.is-reverse {
transform: rotate(180deg);
transform: rotate(90deg);
}
}
}

View File

@@ -3,12 +3,12 @@
<div v-if="visible" class="message" :class="type" :style="style" @mouseenter="handleMouseEnter"
@mouseleave="handleMouseLeave">
<div class="message-content">
<IconMdiCheckCircle v-if="props.type === 'success'" class="message-icon"/>
<IconMdiAlertCircle v-if="props.type === 'warning'" class="message-icon"/>
<IconMdiInformation v-if="props.type === 'info'" class="message-icon"/>
<IconMdiCloseCircle v-if="props.type === 'error'" class="message-icon"/>
<IconFluentCheckmarkCircle20Filled v-if="props.type === 'success'" class="message-icon"/>
<IconFluentErrorCircle20Filled v-if="props.type === 'warning'" class="message-icon"/>
<IconFluentErrorCircle20Filled v-if="props.type === 'info'" class="message-icon"/>
<IconFluentDismissCircle20Filled v-if="props.type === 'error'" class="message-icon"/>
<span class="message-text">{{ message }}</span>
<IconMdiClose v-if="showClose" class="message-close" @click="close"/>
<Close v-if="showClose" class="message-close" @click="close"/>
</div>
</div>
</Transition>

View File

@@ -5,6 +5,7 @@ import {useEventListener} from "@/hooks/event.ts";
import BaseButton from "@/components/BaseButton.vue";
import {useRuntimeStore} from "@/stores/runtime.ts";
import BaseIcon from "@/components/BaseIcon.vue";
export interface ModalProps {
modelValue?: boolean,
@@ -156,10 +157,10 @@ async function cancel() {
]"
>
<Tooltip title="关闭">
<IconIonCloseOutline @click="close"
v-if="showClose"
class="close hvr-grow cursor-pointer"
width="24" color="#929596"/>
<IconFluentDismiss20Regular @click="close"
v-if="showClose"
class="close cursor-pointer"
width="24"/>
</Tooltip>
<div class="modal-header" v-if="header">
<div class="title">{{ props.title }}</div>
@@ -169,7 +170,9 @@ async function cancel() {
<div v-if="content" class="content">{{ content }}</div>
</div>
<div class="modal-footer" v-if="footer">
<div class="left flex items-end"><slot name="footer-left"></slot></div>
<div class="left flex items-end">
<slot name="footer-left"></slot>
</div>
<div class="right">
<BaseButton type="info" @click="cancel">{{ cancelButtonText }}</BaseButton>
<BaseButton

View File

@@ -4,6 +4,7 @@ import BaseIcon from "@/components/BaseIcon.vue";
import Input from "@/pages/pc/components/Input.vue";
import {cloneDeep, throttle} from "@/utils";
import {Article} from "@/types/types.ts";
import DeleteIcon from "@/components/icon/DeleteIcon.vue";
interface IProps {
list: T[]
@@ -125,14 +126,14 @@ defineExpose({scrollBottom})
<BaseIcon
@click="delItem(item)"
title="删除">
<IconFluentDelete24Regular/>
<DeleteIcon/>
</BaseIcon>
<div
@mousedown="draggable = true"
@mouseup="draggable = false"
>
<BaseIcon>
<IconCarbonMove/>
<IconFluentArrowMove20Regular/>
</BaseIcon>
</div>
</div>

View File

@@ -23,31 +23,32 @@ const {toggleTheme} = useTheme()
<div class="top">
<Logo v-if="settingStore.sideExpand"/>
<div class="row" @click="router.push('/words')">
<IconMaterialSymbolsLightDictionaryOutlineSharp/>
<IconFluentTextUnderlineDouble20Regular/>
<span v-if="settingStore.sideExpand">单词</span>
</div>
<div class="row" @click="router.push('/articles')">
<IconPhArticleNyTimes/>
<!-- <IconPhArticleNyTimes/>-->
<IconFluentBookLetter20Regular/>
<span v-if="settingStore.sideExpand">文章</span>
</div>
<div class="row" @click="router.push('/setting')">
<IconUilSetting/>
<IconFluentSettings20Regular/>
<span v-if="settingStore.sideExpand">设置</span>
</div>
</div>
<div class="bottom flex justify-evenly ">
<BaseIcon
@click="settingStore.sideExpand = !settingStore.sideExpand">
<IconFormkitLeft v-if="settingStore.sideExpand"/>
<IconFormkitRight v-else/>
<IconFluentChevronLeft20Filled v-if="settingStore.sideExpand"/>
<IconFluentChevronLeft20Filled class="transform-rotate-180" v-else/>
</BaseIcon>
<BaseIcon
v-if="settingStore.sideExpand"
:title="`切换主题(${settingStore.shortcutKeyMap[ShortcutKey.ToggleTheme]})`"
@click="toggleTheme"
>
<IconEpMoon v-if="settingStore.theme === 'light'"/>
<IconTablerSun v-else/>
<IconFluentWeatherMoon16Regular v-if="settingStore.theme === 'light'"/>
<IconFluentWeatherSunny16Regular v-else/>
</BaseIcon>
</div>
</div>

View File

@@ -174,27 +174,27 @@ function importOldData() {
<div class="left mt-10">
<div class="tabs">
<div class="tab" :class="tabIndex === 0 && 'active'" @click="tabIndex = 0">
<IconIconParkOutlineSettingConfig width="20"/>
<IconFluentAppsList24Regular width="20"/>
<span>练习设置</span>
</div>
<div class="tab" :class="tabIndex === 1 && 'active'" @click="tabIndex = 1">
<IconBxHeadphone width="20"/>
<IconFluentHeadphones20Regular width="20"/>
<span>音效设置</span>
</div>
<div class="tab" :class="tabIndex === 2 && 'active'" @click="tabIndex = 2">
<IconMaterialSymbolsKeyboardOutline width="20"/>
<IconFluentKeyboardLayoutFloat20Regular width="20"/>
<span>快捷键设置</span>
</div>
<div class="tab" :class="tabIndex === 3 && 'active'" @click="tabIndex = 3">
<IconMdiDatabaseCogOutline width="20"/>
<IconFluentDatabasePerson20Regular width="20"/>
<span>数据管理</span>
</div>
<div class="tab" :class="tabIndex === 4 && 'active'" @click="tabIndex = 4">
<IconMingcuteServiceFill width="20"/>
<IconFluentMailEdit20Regular width="20"/>
<span>反馈</span>
</div>
<div class="tab" :class="tabIndex === 5 && 'active'" @click="tabIndex = 5">
<IconMdiAboutCircleOutline width="20"/>
<IconFluentPerson20Regular width="20"/>
<span>关于</span>
</div>
</div>

View File

@@ -276,7 +276,7 @@ defineRender(() => {
class="option-icon"
onClick={() => editWord(val.item)}
title="编辑">
<IconTablerEdit/>
<IconFluentTextEditStyle20Regular/>
</BaseIcon>
<PopConfirm title="确认删除?"
onConfirm={() => delWord(val.item.id)}

View File

@@ -132,7 +132,7 @@ function options(emitType: string) {
style="background: rgb(254,236,236)">
<div class="text-3xl">{{ statStore.wrong }}</div>
<div class="center gap-2">
<IconIconamoonClose class="text-2xl"/>
<IconFluentDismiss20Regular class="text-xl"/>
错词
</div>
</div>
@@ -140,7 +140,7 @@ function options(emitType: string) {
style="background: rgb(231,248,241)">
<div class="text-3xl">{{ statStore.total - statStore.wrong }}</div>
<div class="center gap-2">
<IconTablerCheck class="text-2xl"/>
<IconFluentCheckmark20Regular class="text-xl"/>
正确
</div>
</div>

View File

@@ -384,7 +384,7 @@ useEvents([
<div class="center gap-2 cursor-pointer float-left"
@click="prev"
v-if="prevWord">
<IconBiArrowLeft class="arrow" width="22"/>
<IconFluentArrowLeft16Regular class="arrow" width="22"/>
<Tooltip
:title="`上一个(${settingStore.shortcutKeyMap[ShortcutKey.Previous]})`"
>
@@ -399,7 +399,7 @@ useEvents([
>
<div class="word" :class="settingStore.dictation && 'word-shadow'">{{ nextWord.word }}</div>
</Tooltip>
<IconBiArrowRight class="arrow" width="22"/>
<IconFluentArrowRight16Regular class="arrow" width="22"/>
</div>
</div>
<TypeWord
@@ -426,10 +426,9 @@ useEvents([
<BaseIcon
@click="continueStudy"
:title="`下一组(${settingStore.shortcutKeyMap[ShortcutKey.NextChapter]})`">
<IconBiArrowRight class="arrow" width="22"/>
<IconFluentArrowRight16Regular class="arrow" width="22"/>
</BaseIcon>
</div>
</template>
<div class="panel-page-item pl-4">
<WordList
@@ -447,16 +446,16 @@ useEvents([
:class="!isWordCollect(item)?'collect':'fill'"
@click.stop="toggleWordCollect(item)"
:title="!isWordCollect(item) ? '收藏' : '取消收藏'">
<IconPhStar v-if="!isWordCollect(item)"/>
<IconPhStarFill v-else/>
<IconFluentStar16Regular v-if="!isWordCollect(item)"/>
<IconFluentStar16Filled v-else/>
</BaseIcon>
<BaseIcon
:class="!isWordSimple(item)?'collect':'fill'"
@click.stop="toggleWordSimple(item)"
:title="!isWordSimple(item) ? '标记为已掌握' : '取消标记已掌握'">
<IconMaterialSymbolsCheckCircleOutlineRounded v-if="!isWordSimple(item)"/>
<IconMaterialSymbolsCheckCircleRounded v-else/>
<IconFluentCheckmarkCircle16Regular v-if="!isWordSimple(item)"/>
<IconFluentCheckmarkCircle16Filled v-else/>
</BaseIcon>
</template>
</WordList>

View File

@@ -140,7 +140,7 @@ function check(cb: Function) {
@click="router.push('/dict-list')"
>
<IconGgArrowsExchange v-if="store.sdict.name"/>
<IconFluentArrowSort20Regular v-if="store.sdict.name"/>
<IconFluentAdd20Filled v-else/>
</BaseIcon>
</div>
@@ -194,10 +194,9 @@ function check(cb: Function) {
<BaseButton size="large" :disabled="!store.sdict.name"
:loading="loading"
@click="startPractice">
<!-- <BaseButton size="large" @click="startPractice">-->
<div class="flex items-center gap-2">
<span>开始学习</span>
<IconIcons8RightRound class="text-2xl"/>
<span class="line-height-[2]">开始学习</span>
<IconFluentArrowCircleRight16Regular class="text-xl"/>
</div>
</BaseButton>
</div>

View File

@@ -62,11 +62,10 @@ const progress = $computed(() => {
<template>
<div class="footer" :class="!settingStore.showToolbar && 'hide'">
<Tooltip :title="settingStore.showToolbar?'收起':'展开'">
<IconIconParkOutlineDown
<IconFluentChevronLeft20Filled
@click="settingStore.showToolbar = !settingStore.showToolbar"
class="arrow"
:class="!settingStore.showToolbar && 'down'"
width="24"
color="#999"/>
</Tooltip>
@@ -103,42 +102,42 @@ const progress = $computed(() => {
:class="!isSimple?'collect':'fill'"
@click="$emit('toggleSimple')"
:title="(!isSimple ? '标记为已掌握' : '取消标记已掌握')+`(${settingStore.shortcutKeyMap[ShortcutKey.ToggleSimple]})`">
<IconMaterialSymbolsCheckCircleOutlineRounded v-if="!isSimple"/>
<IconMaterialSymbolsCheckCircleRounded v-else/>
<IconFluentCheckmarkCircle16Regular v-if="!isSimple"/>
<IconFluentCheckmarkCircle16Filled v-else/>
</BaseIcon>
<BaseIcon
:class="!isCollect?'collect':'fill'"
@click.stop="$emit('toggleCollect')"
:title="(!isCollect ? '收藏' : '取消收藏')+`(${settingStore.shortcutKeyMap[ShortcutKey.ToggleCollect]})`">
<IconPhStar v-if="!isCollect"/>
<IconPhStarFill v-else/>
<IconFluentStarAdd16Regular v-if="!isCollect"/>
<IconFluentStar16Filled v-else/>
</BaseIcon>
<BaseIcon
@click="emit('skip')"
:title="`跳过(${settingStore.shortcutKeyMap[ShortcutKey.Next]})`">
<IconIconParkOutlineGoAhead/>
<IconFluentArrowBounce20Regular class="transform-rotate-180"/>
</BaseIcon>
<BaseIcon
@click="settingStore.dictation = !settingStore.dictation"
:title="`开关默写模式(${settingStore.shortcutKeyMap[ShortcutKey.ToggleDictation]})`"
>
<IconMajesticonsEyeOffLine v-if="settingStore.dictation"/>
<IconMdiEyeOutline v-else/>
<IconFluentEyeOff16Regular v-if="settingStore.dictation"/>
<IconFluentEye16Regular v-else/>
</BaseIcon>
<BaseIcon
:title="`开关释义显示(${settingStore.shortcutKeyMap[ShortcutKey.ToggleShowTranslate]})`"
@click="settingStore.translate = !settingStore.translate">
<IconMdiTranslate v-if="settingStore.translate"/>
<IconMdiTranslateOff v-else/>
<IconFluentTranslate16Regular v-if="settingStore.translate"/>
<IconFluentTranslateOff16Regular v-else/>
</BaseIcon>
<BaseIcon
@click="settingStore.showPanel = !settingStore.showPanel"
:title="`单词本(${settingStore.shortcutKeyMap[ShortcutKey.TogglePanel]})`">
<IconTdesignMenuUnfold/>
<IconFluentTextListAbcUppercaseLtr20Regular/>
</BaseIcon>
</div>
</div>
@@ -160,7 +159,7 @@ const progress = $computed(() => {
margin-bottom: .8rem;
transition: all var(--anim-time);
position: relative;
margin-top: 1rem;
margin-top: 1.6rem;
&.hide {
margin-bottom: -6rem;
@@ -215,18 +214,18 @@ const progress = $computed(() => {
.arrow {
position: absolute;
top: -50%;
top: -40%;
left: 50%;
cursor: pointer;
transition: all .5s;
transform: rotate(0);
transform: rotate(-90deg);
padding: .5rem;
font-size: 1.2rem;
&.down {
top: -90%;
transform: rotate(180deg);
transform: rotate(90deg);
}
}
}
</style>