Skip to content

Commit

Permalink
feat: initialize Nuxt application with configuration and structure
Browse files Browse the repository at this point in the history
  • Loading branch information
ikxin committed Dec 26, 2024
1 parent 6b39d19 commit f275170
Show file tree
Hide file tree
Showing 38 changed files with 8,371 additions and 137 deletions.
27 changes: 22 additions & 5 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,24 @@
.idea
.DS_Store
node_modules
# Nuxt dev/build outputs
.output
.data
.nuxt
.nitro
.cache
dist
migrations
sqlite.db

# Node dependencies
node_modules

# Logs
logs
*.log

# Misc
.DS_Store
.fleet
.idea

# Local env files
.env
.env.*
!.env.example
5 changes: 5 additions & 0 deletions app/app.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<template>
<NuxtLayout>
<NuxtPage />
</NuxtLayout>
</template>
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
File renamed without changes
Empty file added app/components/AppFooter.vue
Empty file.
142 changes: 142 additions & 0 deletions app/components/AppHeader.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
<script setup lang="ts">
const { t } = useI18n()
const navItems = computed(() => [
{
name: 'activate',
label: t('label.activate'),
icon: 'icons:activate',
},
{
name: 'tools',
label: t('label.check'),
icon: 'icons:tools',
},
{
name: 'monitor',
label: t('label.monitor'),
icon: 'icons:monitor',
},
])
const themeItems = computed(() => [
{
lable: t('label.auto'),
value: 'auto',
icon: 'icons:auto-mode',
},
{
lable: t('label.dark'),
value: 'dark',
icon: 'icons:dark-mode',
},
{
lable: t('label.light'),
value: 'light',
icon: 'icons:light-mode',
},
])
const locales: LocaleItem[] = [
{
lable: '简体中文',
value: 'zh-cn',
icon: 'flag:cn-4x3',
},
{
lable: '繁体中文',
value: 'zh-tw',
icon: 'flag:tw-4x3',
},
{
lable: 'Deutsch',
value: 'de',
icon: 'flag:de-4x3',
},
{
lable: 'English',
value: 'en',
icon: 'flag:us-4x3',
},
{
lable: 'Français',
value: 'fr',
icon: 'flag:fr-4x3',
},
{
lable: '日本語',
value: 'ja',
icon: 'flag:jp-4x3',
},
{
lable: '한국어',
value: 'ko',
icon: 'flag:kr-4x3',
},
{
lable: 'Nederlands',
value: 'nl',
icon: 'flag:nl-4x3',
},
{
lable: 'Русский',
value: 'ru',
icon: 'flag:ru-4x3',
},
]
</script>

<template>
<ALayoutHeader class="select-none bg-[--color-bg-2] px-2 shadow-md">
<div class="mx-auto flex w-[72rem] max-w-full items-center justify-between">
<Icon class="w-48 h-12 cursor-pointer" name="icons:kms-tools" />

<AMenu
mode="horizontal"
class="grow [&_.arco-menu-overflow-wrap]:text-end [&_.arco-menu-selected-label]:left-4"
>
<AMenuItem
v-for="item in navItems"
:key="item.name"
class="!inline-flex items-center gap-1"
>
<Icon :name="item.icon" />
<span>{{ item.label }}</span>
</AMenuItem>
</AMenu>
<ASpace>
<ADropdown>
<AButton size="small" type="secondary">
<template #icon></template>
</AButton>
<template #content>
<ADoption v-for="item in themeItems" :key="item.value">
<template #icon>
<Icon :name="item.icon" />
</template>
<template #default>{{ item.lable }}</template>
</ADoption>
</template>
</ADropdown>
<ADropdown>
<AButton size="small" type="secondary">
<template #icon><Icon name="icons:languages" /></template>
</AButton>
<template #content>
<ADoption v-for="locale in locales" :key="locale.value">
<template #icon>
<Icon :name="locale.icon!" />
</template>
<template #default>{{ locale.lable }}</template>
</ADoption>
</template>
</ADropdown>
<a target="_blank" href="https://github.com/ikxin/kms-tools">
<AButton size="small" type="secondary">
<template #icon><Icon name="icons:github" /></template>
</AButton>
</a>
</ASpace>
</div>
</ALayoutHeader>
</template>
4 changes: 4 additions & 0 deletions app/layouts/default.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
<template>
<AppHeader />
<slot></slot>
</template>
3 changes: 3 additions & 0 deletions app/pages/index.vue
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<template>
<div></div>
</template>
Binary file removed bun.lockb
Binary file not shown.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
31 changes: 31 additions & 0 deletions nuxt.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({
compatibilityDate: '2024-11-01',
devtools: { enabled: true },
future: {
compatibilityVersion: 4,
},
modules: [
'arco-design-nuxt-module',
'@nuxt/icon',
'@nuxtjs/tailwindcss',
'@nuxtjs/i18n',
],
i18n: {
defaultLocale: 'zh-cn',
langDir: 'locales',
locales: [
{ code: 'zh-cn', file: 'zh-cn.json', name: '简体中文' },
{ code: 'zh-tw', file: 'zh-tw.json', name: '繁體中文' },
],
strategy: 'no_prefix',
},
icon: {
customCollections: [
{
prefix: 'icons',
dir: './app/assets/icons',
},
],
},
})
66 changes: 14 additions & 52 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,60 +1,22 @@
{
"name": "kms-tools",
"name": "nuxt-app",
"private": true,
"version": "1.2.0",
"description": "一个用于生成kms激活脚本的小工具",
"author": "一纸忘忧 <[email protected]>",
"type": "module",
"packageManager": "[email protected]",
"scripts": {
"build": "vite build",
"dev": "vite",
"service": "bun --watch service/index.ts",
"kill-vlmcsd": "pkill -f vlmcsd",
"studio": "drizzle-kit studio",
"generate": "drizzle-kit generate",
"migrate": "drizzle-kit migrate"
"build": "nuxt build",
"dev": "nuxt dev",
"generate": "nuxt generate",
"preview": "nuxt preview",
"postinstall": "nuxt prepare"
},
"dependencies": {
"@arco-design/web-vue": "^2.56.1",
"@elysiajs/cors": "^1.1.0",
"@elysiajs/cron": "^1.1.0",
"@elysiajs/static": "^1.1.0",
"@iconify-json/flag": "^1.2.0",
"@vueuse/core": "^11.0.3",
"@vueuse/integrations": "^11.0.3",
"axios": "^1.7.7",
"dayjs": "^1.11.13",
"echarts": "^5.5.1",
"elysia": "^1.1.11",
"less": "^4.2.0",
"markdown-it-shiki": "^0.9.0",
"mysql2": "^3.11.0",
"pinia": "^2.2.2",
"unocss": "^0.62.3",
"vue": "^3.5.2",
"vue-i18n": "^9.14.0",
"vue-router": "^4.4.3"
},
"devDependencies": {
"@intlify/unplugin-vue-i18n": "^4.0.0",
"@types/bun": "^1.1.6",
"@typescript-eslint/eslint-plugin": "^8.2.0",
"@typescript-eslint/parser": "^8.2.0",
"@vitejs/plugin-vue": "^5.1.2",
"drizzle-kit": "^0.24.0",
"drizzle-orm": "^0.33.0",
"eslint": "^9.9.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-vue": "^9.27.0",
"prettier": "^3.3.3",
"typescript": "^5.5.4",
"unplugin-auto-import": "^0.18.2",
"unplugin-vue-components": "^0.27.4",
"unplugin-vue-markdown": "^0.26.2",
"unplugin-vue-router": "^0.10.7",
"vite": "^5.4.3",
"vite-plugin-vue-devtools": "^7.3.8",
"vue-eslint-parser": "^9.4.3",
"vue-tsc": "^2.1.6"
"@iconify-json/flag": "^1.2.3",
"@nuxt/icon": "1.10.3",
"@nuxtjs/i18n": "9.1.1",
"@nuxtjs/tailwindcss": "^6.12.2",
"arco-design-nuxt-module": "^0.1.0",
"nuxt": "^3.15.0",
"vue": "^3.5.13"
}
}
Loading

0 comments on commit f275170

Please sign in to comment.