diff --git a/components.d.ts b/components.d.ts index 49962b3d..1ced7e82 100644 --- a/components.d.ts +++ b/components.d.ts @@ -153,11 +153,3 @@ declare module 'vue' { WordList: typeof import('./src/components/list/WordList.vue')['default'] } } -e')['default'] - Toast: typeof import('./src/components/base/toast/Toast.vue')['default'] - Tooltip: typeof import('./src/components/base/Tooltip.vue')['default'] - VolumeIcon: typeof import('./src/components/icon/VolumeIcon.vue')['default'] - WordItem: typeof import('./src/components/WordItem.vue')['default'] - WordList: typeof import('./src/components/list/WordList.vue')['default'] - } -} diff --git a/package.json b/package.json index 648997b3..1ca80ccc 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "dependencies": { "@imengyu/vue3-context-menu": "^1.5.1", "@vueuse/core": "14.0.0-alpha.0", + "@zumer/snapdom": "^2.0.0", "axios": "^1.10.0", "compromise": "^14.14.4", "copy-to-clipboard": "^3.3.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2d5e0dac..66e28c6a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,6 +14,9 @@ importers: '@vueuse/core': specifier: 14.0.0-alpha.0 version: 14.0.0-alpha.0(vue@3.5.18(typescript@5.9.2)) + '@zumer/snapdom': + specifier: ^2.0.0 + version: 2.0.0 axios: specifier: ^1.10.0 version: 1.11.0 @@ -623,25 +626,21 @@ packages: resolution: {integrity: sha512-mMB1AvqzTH25rbUo1eRfvFzNqBopX6aRlDmO1fIVVzIWi6YJNKckxbkGaatez4hH/n86IR6aEdZFM3qBUjn3Tg==} cpu: [arm64] os: [linux] - libc: [glibc] '@oxc-resolver/binding-linux-arm64-musl@4.2.0': resolution: {integrity: sha512-9oPBU8Yb35z15/14LzALn/8rRwwrtfe19l25N1MRZVSONGiOwfzWNqDNjWiDdyW+EUt/hlylmFOItZmreL6iIw==} cpu: [arm64] os: [linux] - libc: [musl] '@oxc-resolver/binding-linux-x64-gnu@4.2.0': resolution: {integrity: sha512-8wU4fwHb0b45i0qMBJ24UYBEtaLyvYWUOqVVCn0SpQZ1mhWWC8dvD6+zIVAKRVex/cKdgzi3imXoKGIDqVEu9w==} cpu: [x64] os: [linux] - libc: [glibc] '@oxc-resolver/binding-linux-x64-musl@4.2.0': resolution: {integrity: sha512-5CS2wlGxzESPJCj4NlNGr73QCku75VpGtkwNp8qJF4hLELKAzkoqIB0eBbcvNPg8m2rB7YeXb1u+puGUKXDhNQ==} cpu: [x64] os: [linux] - libc: [musl] '@oxc-resolver/binding-wasm32-wasi@4.2.0': resolution: {integrity: sha512-VOLpvmVAQZjvj/7Et/gYzW6yBqL9VKjLWOGaFiQ7cvTpY9R9d/1mrNKEuP3beDHF2si2fM5f2pl9bL+N4tvwiA==} @@ -687,42 +686,36 @@ packages: engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] - libc: [glibc] '@parcel/watcher-linux-arm-musl@2.5.1': resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==} engines: {node: '>= 10.0.0'} cpu: [arm] os: [linux] - libc: [musl] '@parcel/watcher-linux-arm64-glibc@2.5.1': resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] - libc: [glibc] '@parcel/watcher-linux-arm64-musl@2.5.1': resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==} engines: {node: '>= 10.0.0'} cpu: [arm64] os: [linux] - libc: [musl] '@parcel/watcher-linux-x64-glibc@2.5.1': resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] - libc: [glibc] '@parcel/watcher-linux-x64-musl@2.5.1': resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==} engines: {node: '>= 10.0.0'} cpu: [x64] os: [linux] - libc: [musl] '@parcel/watcher-win32-arm64@2.5.1': resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==} @@ -792,67 +785,56 @@ packages: resolution: {integrity: sha512-EtP8aquZ0xQg0ETFcxUbU71MZlHaw9MChwrQzatiE8U/bvi5uv/oChExXC4mWhjiqK7azGJBqU0tt5H123SzVA==} cpu: [arm] os: [linux] - libc: [glibc] '@rollup/rollup-linux-arm-musleabihf@4.46.2': resolution: {integrity: sha512-qO7F7U3u1nfxYRPM8HqFtLd+raev2K137dsV08q/LRKRLEc7RsiDWihUnrINdsWQxPR9jqZ8DIIZ1zJJAm5PjQ==} cpu: [arm] os: [linux] - libc: [musl] '@rollup/rollup-linux-arm64-gnu@4.46.2': resolution: {integrity: sha512-3dRaqLfcOXYsfvw5xMrxAk9Lb1f395gkoBYzSFcc/scgRFptRXL9DOaDpMiehf9CO8ZDRJW2z45b6fpU5nwjng==} cpu: [arm64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-arm64-musl@4.46.2': resolution: {integrity: sha512-fhHFTutA7SM+IrR6lIfiHskxmpmPTJUXpWIsBXpeEwNgZzZZSg/q4i6FU4J8qOGyJ0TR+wXBwx/L7Ho9z0+uDg==} cpu: [arm64] os: [linux] - libc: [musl] '@rollup/rollup-linux-loongarch64-gnu@4.46.2': resolution: {integrity: sha512-i7wfGFXu8x4+FRqPymzjD+Hyav8l95UIZ773j7J7zRYc3Xsxy2wIn4x+llpunexXe6laaO72iEjeeGyUFmjKeA==} cpu: [loong64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-ppc64-gnu@4.46.2': resolution: {integrity: sha512-B/l0dFcHVUnqcGZWKcWBSV2PF01YUt0Rvlurci5P+neqY/yMKchGU8ullZvIv5e8Y1C6wOn+U03mrDylP5q9Yw==} cpu: [ppc64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-riscv64-gnu@4.46.2': resolution: {integrity: sha512-32k4ENb5ygtkMwPMucAb8MtV8olkPT03oiTxJbgkJa7lJ7dZMr0GCFJlyvy+K8iq7F/iuOr41ZdUHaOiqyR3iQ==} cpu: [riscv64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-riscv64-musl@4.46.2': resolution: {integrity: sha512-t5B2loThlFEauloaQkZg9gxV05BYeITLvLkWOkRXogP4qHXLkWSbSHKM9S6H1schf/0YGP/qNKtiISlxvfmmZw==} cpu: [riscv64] os: [linux] - libc: [musl] '@rollup/rollup-linux-s390x-gnu@4.46.2': resolution: {integrity: sha512-YKjekwTEKgbB7n17gmODSmJVUIvj8CX7q5442/CK80L8nqOUbMtf8b01QkG3jOqyr1rotrAnW6B/qiHwfcuWQA==} cpu: [s390x] os: [linux] - libc: [glibc] '@rollup/rollup-linux-x64-gnu@4.46.2': resolution: {integrity: sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA==} cpu: [x64] os: [linux] - libc: [glibc] '@rollup/rollup-linux-x64-musl@4.46.2': resolution: {integrity: sha512-7kX69DIrBeD7yNp4A5b81izs8BqoZkCIaxQaOpumcJ1S/kmqNFjPhDu1LHeVXv0SexfHQv5cqHsxLOjETuqDuA==} cpu: [x64] os: [linux] - libc: [musl] '@rollup/rollup-win32-arm64-msvc@4.46.2': resolution: {integrity: sha512-wiJWMIpeaak/jsbaq2HMh/rzZxHVW1rU6coyeNNpMwk5isiPjSTx0a4YLSlYDwBH/WBvLz+EtsNqQScZTLJy3g==} @@ -1272,6 +1254,9 @@ packages: peerDependencies: vue: ^3.5.0 + '@zumer/snapdom@2.0.0': + resolution: {integrity: sha512-e/fkm5wCUd+9CssUIyH09xTeR4DvRTmZLGVOlnXLhr4HeI7sdc6ed8cLPiZKFtiQDRiwD3EKx4RIUrpQOJQY7A==} + acorn@8.15.0: resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==} engines: {node: '>=0.4.0'} @@ -5071,6 +5056,8 @@ snapshots: dependencies: vue: 3.5.18(typescript@5.9.2) + '@zumer/snapdom@2.0.0': {} + acorn@8.15.0: {} address@1.2.2: {} diff --git a/public/imgs/0.jpg b/public/imgs/0.jpg new file mode 100644 index 00000000..9cbbf11d Binary files /dev/null and b/public/imgs/0.jpg differ diff --git a/public/imgs/1.jpg b/public/imgs/1.jpg new file mode 100644 index 00000000..9e93ab75 Binary files /dev/null and b/public/imgs/1.jpg differ diff --git a/public/imgs/2.jpg b/public/imgs/2.jpg new file mode 100644 index 00000000..c7e29083 Binary files /dev/null and b/public/imgs/2.jpg differ diff --git a/public/imgs/3.jpg b/public/imgs/3.jpg new file mode 100644 index 00000000..7a4e32bd Binary files /dev/null and b/public/imgs/3.jpg differ diff --git a/public/imgs/4.jpg b/public/imgs/4.jpg new file mode 100644 index 00000000..5e1fa7d3 Binary files /dev/null and b/public/imgs/4.jpg differ diff --git a/public/imgs/5.jpg b/public/imgs/5.jpg new file mode 100644 index 00000000..c6e2d224 Binary files /dev/null and b/public/imgs/5.jpg differ diff --git a/public/imgs/6.jpg b/public/imgs/6.jpg new file mode 100644 index 00000000..a10a3a32 Binary files /dev/null and b/public/imgs/6.jpg differ diff --git a/public/imgs/7.jpg b/public/imgs/7.jpg new file mode 100644 index 00000000..b08924a8 Binary files /dev/null and b/public/imgs/7.jpg differ diff --git a/public/imgs/8.jpg b/public/imgs/8.jpg new file mode 100644 index 00000000..232816f2 Binary files /dev/null and b/public/imgs/8.jpg differ diff --git a/public/imgs/9.jpg b/public/imgs/9.jpg new file mode 100644 index 00000000..2c186311 Binary files /dev/null and b/public/imgs/9.jpg differ diff --git a/public/imgs/qr.png b/public/imgs/qr.png new file mode 100644 index 00000000..2c80ef41 Binary files /dev/null and b/public/imgs/qr.png differ diff --git a/src/components/ChannelIcons.vue b/src/components/ChannelIcons.vue index 019d43c6..103e0225 100644 --- a/src/components/ChannelIcons.vue +++ b/src/components/ChannelIcons.vue @@ -1,14 +1,15 @@ - - + @@ -285,21 +145,13 @@ onMounted(generateShareImage) - + - + @@ -308,84 +160,80 @@ onMounted(generateShareImage) + v-model="showShareDialog" + title="分享" :close-on-click-bg="true" custom-class="!max-w-4xl !w-auto"> - - - - - + + + + + + + + + + {{ userStore.user?.username }} + {{ dayjs().format('YYYY年MM月DD日') }} + + + Type Words | 英语学习 + + - - - - - + + + 我在 {{ APP_NAME }} 学习了 {{ studyStats.time }} + + + + 进度 + + + - - - - + + + + {{ studyStats.accuracy }}% + 正确率 + + + {{ studyStats.newWords }} + 新词 + + + {{ studyStats.review }} + 复习 + - - {{ baseStore.user?.name || '学习者' }} - {{ dayjs().format('YYYY年MM月DD日') }} - - - Type Words | 英语学习 - - - - - - {{ studyStats.total }} - 总词数 + + + {{ sentence.en }} + {{ sentence.cn }} - - {{ studyStats.time }} - 学习时长 - - - {{ studyStats.accuracy }}% - 正确率 - - - - - - Keep going, never give up! - 坚持就是胜利 - + - - Type Words - 词文记 - 高效英语学习 - {{ window.location.origin }} - - - - - + + Type Words + {{ Origin }} + 一次敲击,一点进步,开源单词学习工具 + + + - + 🎯 @@ -405,35 +253,30 @@ onMounted(generateShareImage) 🔥 - 分享你的战绩,收获朋友们的点赞和认可,让你的朋友圈也掀起一股英语学习的热潮! + 分享你的学习记录,收获朋友们的点赞和认可,让你的朋友圈也掀起一股英语学习的热潮! - - - + + + 换个背景 - 随心装扮 - - - - - 复制到剪贴板 - + + + + 复制到剪贴板 + - - - 保存高清海报 + + + 保存高清海报 + @@ -485,4 +328,8 @@ a { .animate-spin { animation: spin 1s linear infinite; } - \ No newline at end of file + +.stat-card { + @apply text-center bg-gray-900/30 py-4 rounded-2xl; +} + diff --git a/src/components/base/Progress.vue b/src/components/base/Progress.vue index bd50f93e..3b4848c6 100644 --- a/src/components/base/Progress.vue +++ b/src/components/base/Progress.vue @@ -1,5 +1,5 @@