diff --git a/.vscode/mcp.json b/.vscode/mcp.json deleted file mode 100644 index ec9c34a8..00000000 --- a/.vscode/mcp.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "servers": { - "nuxt": { - "type": "http", - "url": "https://nuxt.com/mcp" - }, - "motion": { - "command": "npx", - "args": [ - "-y", - "https://api.motion.dev/registry.tgz?package=motion-studio-mcp&version=latest" - ] - } - } -} diff --git a/app/assets/css/main.css b/app/assets/css/main.css index 930153ef..7ad8d294 100644 --- a/app/assets/css/main.css +++ b/app/assets/css/main.css @@ -1,23 +1,5 @@ body { - background: - radial-gradient( - circle at top left, - rgba(232, 83, 73, 0.08), - transparent 28% - ), - radial-gradient( - circle at top right, - rgba(48, 111, 255, 0.08), - transparent 32% - ), - linear-gradient( - 180deg, - var(--color-bg-1) 0%, - var(--color-neutral-2) 46%, - var(--color-bg-1) 100% - ); background-color: var(--color-neutral-2); - background-attachment: fixed; color: var(--color-text-2); --border-radius-small: 4px; --border-radius-medium: 6px; @@ -28,38 +10,6 @@ body { @apply flex min-h-screen flex-col gap-4; } -a, -button, -.arco-btn, -.arco-card, -.arco-menu-item, -.arco-link { - transition: - transform 0.25s ease, - box-shadow 0.25s ease, - border-color 0.25s ease, - background-color 0.25s ease, - color 0.25s ease; -} - -/* .arco-card, -.arco-collapse, -.arco-collapse-item, -.arco-collapse-item-header, -.arco-collapse-item-content, -.arco-menu, -.arco-menu-inner, -.arco-menu-light, -.arco-layout-sider, -.arco-layout-sider-light, -.arco-layout-sider-children, -.arco-menu-inline-header, -.arco-menu-inline-content, -.arco-menu-item, -.arco-menu-item-inner { - background-color: transparent !important; -} */ - .arco-drawer-body { padding: 0; } diff --git a/app/components/AppFooter.vue b/app/components/AppFooter.vue index 130e3c9f..58fe4e41 100644 --- a/app/components/AppFooter.vue +++ b/app/components/AppFooter.vue @@ -1,9 +1,5 @@ @@ -12,40 +8,24 @@ const { hidden, hoverLift, press, viewport, visible } = useMotionPresets() class="mx-auto flex min-h-14 max-w-full flex-col items-center justify-center gap-1 py-3 text-center text-sm md:flex-row md:gap-0 md:py-0" > - + Copyright © {{ new Date().getFullYear() }} KMS Tools - - + + Running on AsiaYun - - + + Code with by {{ t('label.author') }} - + diff --git a/app/components/AppHeader.vue b/app/components/AppHeader.vue index 9c3b3c13..77ceb5e3 100644 --- a/app/components/AppHeader.vue +++ b/app/components/AppHeader.vue @@ -1,19 +1,12 @@ - - - - + + - + {{ title }} - + - - + @@ -109,23 +90,19 @@ const { copy, copied } = useClipboard({ - - - + - - - {{ t('label.x64') }} - {{ t('label.x86') }} - - - - - + + {{ t('label.x64') }} + {{ t('label.x86') }} + + + - - - - - - - - - - - - - - - - - - - - - - - - - {{ t('label.download') }} - - - - - - - {{ copied ? t('label.copy-success') : t('label.copy') }} + + + + + + + + + + + + + + + + + + {{ t('label.download') }} - - - - + + + + {{ copied ? t('label.copy-success') : t('label.copy') }} + + + - - - + + diff --git a/app/components/CommonTips.vue b/app/components/CommonTips.vue index 4e6acc25..548dbab9 100644 --- a/app/components/CommonTips.vue +++ b/app/components/CommonTips.vue @@ -1,10 +1,6 @@ - - - - - - {{ t('title.tips') }} - - - - - - - - - + + + + + {{ t('title.tips') }} + + + + + + + + diff --git a/app/composables/useMotionPresets.ts b/app/composables/useMotionPresets.ts deleted file mode 100644 index a1ea7e39..00000000 --- a/app/composables/useMotionPresets.ts +++ /dev/null @@ -1,111 +0,0 @@ -import { useReducedMotion } from 'motion-v' - -const easeOut = [0.22, 1, 0.36, 1] as const - -const springTransition = { - type: 'spring', - stiffness: 120, - damping: 20, - mass: 1, -} as const - -export function useMotionPresets() { - const reduceMotion = useReducedMotion() - - const viewport = { - once: true, - amount: 0.2, - } as const - - const hidden = (y = 16, scale = 1) => { - if (reduceMotion.value) { - return { opacity: 1, y: 0, scale: 1, filter: 'blur(0px)' } - } - - return { - opacity: 0, - y, - scale, - filter: 'blur(6px)', - } - } - - const visible = (delay = 0) => { - if (reduceMotion.value) { - return { opacity: 1, y: 0, scale: 1, filter: 'blur(0px)' } - } - - return { - opacity: 1, - y: 0, - scale: 1, - filter: 'blur(0px)', - transition: { - ...springTransition, - delay, - }, - } - } - - const softExit = (y = -10) => { - if (reduceMotion.value) { - return { opacity: 1 } - } - - return { - opacity: 0, - y, - filter: 'blur(4px)', - transition: { - duration: 0.2, - ease: 'easeInOut', - }, - } - } - - const hoverLift = (distance = 5, scale = 1.01) => { - if (reduceMotion.value) { - return {} - } - - return { - y: -distance, - scale, - transition: { - duration: 0.22, - ease: easeOut, - }, - } - } - - const press = reduceMotion.value ? { scale: 1 } : { scale: 0.985 } - - const float = (distance = 8, duration = 9) => { - if (reduceMotion.value) { - return {} - } - - return { - y: [0, -distance, 0], - rotate: [0, 0.6, 0], - transition: { - duration, - ease: 'easeInOut' as const, - repeat: Infinity, - }, - } - } - - return { - easeOut, - float, - hidden, - hoverLift, - press, - reduceMotion, - softExit, - springTransition, - viewport, - visible, - } -} diff --git a/app/layouts/default.vue b/app/layouts/default.vue index abd11c9e..64ab5107 100644 --- a/app/layouts/default.vue +++ b/app/layouts/default.vue @@ -1,12 +1,8 @@ - - - - - - - - + + diff --git a/app/pages/activate/windows-server.vue b/app/pages/activate/windows-server.vue index 5c3cb247..a30b5256 100644 --- a/app/pages/activate/windows-server.vue +++ b/app/pages/activate/windows-server.vue @@ -1,12 +1,8 @@ - - - - - - - - + + diff --git a/app/pages/activate/windows.vue b/app/pages/activate/windows.vue index 20921f25..8be71327 100644 --- a/app/pages/activate/windows.vue +++ b/app/pages/activate/windows.vue @@ -1,12 +1,8 @@ - - - - - - - - + + diff --git a/app/pages/check/index.vue b/app/pages/check/index.vue index d6a106d5..209b9855 100644 --- a/app/pages/check/index.vue +++ b/app/pages/check/index.vue @@ -1,6 +1,5 @@ - - - - - - {{ t('title.kms-check') }} - - - - - - - - - - - - - - - - - - - - - - - - - V6 Protocol - V5 Protocol - V4 Protocol - - - - - - - - {{ t('label.submit') }} - - - - - - - - - - {{ resultInfo.message }} - - - - - - + + + + + {{ t('title.kms-check') }} + + + + + + + + + + + + + + + + + + V6 Protocol + V5 Protocol + V4 Protocol + + + + + {{ t('label.submit') }} + + + + + {{ resultInfo.message }} + + + diff --git a/app/pages/index.vue b/app/pages/index.vue index d1c116d1..d111d982 100644 --- a/app/pages/index.vue +++ b/app/pages/index.vue @@ -1,19 +1,7 @@ - - - - - - - - {{ title }} - - - - - - - - - - - - - - - - - {{ t('label.x64') }} - {{ t('label.x86') }} - - - - - - - - {{ item.host }} - - {{ `${(item.rate * 100).toFixed(2)} %` }} - - - {{ `${item.delay.toFixed(2)} ms` }} - - - - - - - - - - - - - - - - - {{ t('label.download') }} - - - - {{ copied ? t('label.copy-success') : t('label.copy') }} - - - - - - - diff --git a/src/components/common-tips.vue b/src/components/common-tips.vue deleted file mode 100644 index f41c0dce..00000000 --- a/src/components/common-tips.vue +++ /dev/null @@ -1,83 +0,0 @@ - - - - - - - - {{ t('title.tips') }} - - - - - - - - - diff --git a/src/components/custom-footer.vue b/src/components/custom-footer.vue deleted file mode 100644 index 2092f1b6..00000000 --- a/src/components/custom-footer.vue +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - Copyright © {{ currentYear }} - - KMS Tools - - - - Code with by - - {{ t('label.author') }} - - - - - - diff --git a/src/components/custom-header.vue b/src/components/custom-header.vue deleted file mode 100644 index 40431503..00000000 --- a/src/components/custom-header.vue +++ /dev/null @@ -1,173 +0,0 @@ - - - - - - - - - - {{ item.label }} - - - - - - - - - - - {{ item.lable }} - - - - - - - - - - - {{ locale.lable }} - - - - - - - - - - - - diff --git a/src/composables/useScript.ts b/src/composables/useScript.ts deleted file mode 100644 index 9703c35c..00000000 --- a/src/composables/useScript.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { Message } from '@arco-design/web-vue' - -export function useScript() { - const { t } = useI18n() - - const useScriptCopy = async (script: string) => { - const { copy, copied } = useClipboard() - await copy(script) - copied.value ? Message.success(t('activate.message.success')) : Message.error(t('activate.message.error')) - } - - const useScriptDownload = (script, fileName) => { - const file = new File([script], fileName, { type: 'application/txt' }) - const url = URL.createObjectURL(file) - const link = document.createElement('a') - link.href = url - link.download = file.name - document.body.appendChild(link) - link.click() - document.body.removeChild(link) - URL.revokeObjectURL(url) - } - - return { - useScriptCopy, - useScriptDownload - } -} diff --git a/src/main.ts b/src/main.ts deleted file mode 100644 index e941a258..00000000 --- a/src/main.ts +++ /dev/null @@ -1,20 +0,0 @@ -import App from '@/App.vue' -import { router } from '@/router' -import { createI18n } from 'vue-i18n' -import messages from '@intlify/unplugin-vue-i18n/messages' -import { useMonitorStore } from '@/store/monitor' - -import '@/styles/custom.less' -import 'virtual:uno.css' -import '@/styles/style.css' - -const app = createApp(App) -const pinia = createPinia() -const i18n = createI18n({ locale: 'zh-cn', messages }) - -app.use(pinia) -app.use(router) -app.use(i18n) -app.mount('#app') - -useMonitorStore().getMonitors() diff --git a/src/router/index.ts b/src/router/index.ts deleted file mode 100644 index 7474655a..00000000 --- a/src/router/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { createWebHistory, createRouter } from 'vue-router' -import { routes } from 'vue-router/auto-routes' - -for (const route of routes) { - if (route.name === '/activate') { - route.redirect = '/activate/windows' - } -} - -export const router = createRouter({ - history: createWebHistory(), - routes, -}) diff --git a/src/store/app.ts b/src/store/app.ts deleted file mode 100644 index 0cf874ee..00000000 --- a/src/store/app.ts +++ /dev/null @@ -1,29 +0,0 @@ -export const useAppStore = defineStore('app', () => { - const theme = useColorMode({ - attribute: 'arco-theme', - emitAuto: true, - selector: 'body', - storageKey: 'theme', - }) - - const { locale: _locale } = useI18n() - - const { language } = useNavigatorLanguage() - - const locale = useStorage( - 'locale', - language.value?.toLocaleLowerCase() || 'zh-cn', - ) - - function setLocale(val: LocaleValue) { - locale.value = val - } - - watchEffect(() => (_locale.value = locale.value)) - - return { - locale, - theme, - setLocale, - } -}) diff --git a/src/store/monitor.ts b/src/store/monitor.ts deleted file mode 100644 index 71446262..00000000 --- a/src/store/monitor.ts +++ /dev/null @@ -1,19 +0,0 @@ -import fetch from '@/utils/fetch' - -export const useMonitorStore = defineStore('monitor', () => { - const monitors = useStorage('monitors', []) - - const getMonitors = async () => { - try { - const { data } = await fetch('/api/server') - data.sort((prev: { rate: number }, next: { rate: number }) => { - return next.rate - prev.rate - }) - monitors.value = data - } catch (err) { - console.log(err) - } - } - - return { getMonitors, monitors } -}) diff --git a/src/styles/custom.less b/src/styles/custom.less deleted file mode 100644 index e83dad50..00000000 --- a/src/styles/custom.less +++ /dev/null @@ -1,22 +0,0 @@ -@import '@arco-design/web-vue/dist/arco.less'; - -@primary-6: #1890ff; - -@border-radius-small: 4px; - -// body { -// font-family: 'AlimamaFangYuanTiVF'; -// } - -// @font-face { -// font-family: 'AlimamaFangYuanTiVF'; -// src: url(@/assets/fonts/AlimamaFangYuanTiVF.woff2); -// } - -.arco-menu { - .arco-menu-inline { - .arco-menu-icon { - margin-right: 12px; - } - } -} diff --git a/src/styles/style.css b/src/styles/style.css deleted file mode 100644 index 879fe388..00000000 --- a/src/styles/style.css +++ /dev/null @@ -1,19 +0,0 @@ -body { - overflow-x: hidden; -} - -#app { - @apply flex flex-col gap-4 min-h-screen bg-[--color-neutral-2] text-[--color-text-2] select-none; -} - -.arco-layout-header span > i { - font-size: 1rem; -} - -.arco-select-dropdown-list-wrapper { - max-height: 400px; -} - -.arco-select-option-content { - width: 100%; -} diff --git a/src/utils/fetch.ts b/src/utils/fetch.ts deleted file mode 100644 index 58d7a802..00000000 --- a/src/utils/fetch.ts +++ /dev/null @@ -1,16 +0,0 @@ -import axios, { AxiosResponse } from 'axios' -import { Notification } from '@arco-design/web-vue' - -const fetch = axios.create({ - baseURL: import.meta.env.VITE_BASE_URL || 'https://kms.ikxin.com', - timeout: 10 * 1000, -}) - -fetch.interceptors.response.use( - (res: AxiosResponse) => res, - (err: Error) => { - Notification.error({ title: 'Error', content: String(err).trim() }) - }, -) - -export default fetch diff --git a/src/utils/formatter.ts b/src/utils/formatter.ts deleted file mode 100644 index 79d6b602..00000000 --- a/src/utils/formatter.ts +++ /dev/null @@ -1,19 +0,0 @@ -export const rateColor = (value: number) => { - if (value >= 1) { - return 'green' - } else if (value >= 0.9) { - return 'orange' - } else { - return 'red' - } -} - -export const delayColor = (value: number) => { - if (value <= 500) { - return 'green' - } else if (value <= 1000) { - return 'orange' - } else { - return 'red' - } -} diff --git a/src/views/activate/office.vue b/src/views/activate/office.vue deleted file mode 100644 index 03b34ee3..00000000 --- a/src/views/activate/office.vue +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - diff --git a/src/views/activate/windows-server.vue b/src/views/activate/windows-server.vue deleted file mode 100644 index 9932def1..00000000 --- a/src/views/activate/windows-server.vue +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - diff --git a/src/views/activate/windows.vue b/src/views/activate/windows.vue deleted file mode 100644 index 63b09700..00000000 --- a/src/views/activate/windows.vue +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - diff --git a/src/views/download/index.vue b/src/views/download/index.vue deleted file mode 100644 index 35a96c75..00000000 --- a/src/views/download/index.vue +++ /dev/null @@ -1,3 +0,0 @@ - - download - diff --git a/src/views/guide/index.vue b/src/views/guide/index.vue deleted file mode 100644 index b1243892..00000000 --- a/src/views/guide/index.vue +++ /dev/null @@ -1,3 +0,0 @@ - - guide - diff --git a/src/views/index.vue b/src/views/index.vue deleted file mode 100644 index 4704d01f..00000000 --- a/src/views/index.vue +++ /dev/null @@ -1,79 +0,0 @@ - - - - - - - - - diff --git a/src/views/monitor.vue b/src/views/monitor.vue deleted file mode 100644 index c79dd337..00000000 --- a/src/views/monitor.vue +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - -