Commit 3d4fba61 by mm ven

feat: init

0 parents
Showing 64 changed files with 4677 additions and 0 deletions
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
dist
dist-ssr
*.local
# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
{
"recommendations": ["Vue.volar"]
}
# Vue 3 + Vite
This template should help get you started developing with Vue 3 in Vite. The template uses Vue 3 `<script setup>` SFCs, check out the [script setup docs](https://v3.vuejs.org/api/sfc-script-setup.html#sfc-script-setup) to learn more.
Learn more about IDE Support for Vue in the [Vue Docs Scaling up Guide](https://vuejs.org/guide/scaling-up/tooling.html#ide-support).
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Vite + Vue</title>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.js"></script>
</body>
</html>
{
"name": "yahabbi-web",
"version": "0.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "yahabbi-web",
"version": "0.0.0",
"dependencies": {
"vant": "^4.9.19",
"vue": "^3.5.13",
"vue-i18n": "^9.14.4",
"vue-router": "^4.5.1"
},
"devDependencies": {
"@vitejs/plugin-vue": "^5.2.3",
"vite": "^6.3.5"
}
},
"node_modules/@babel/helper-string-parser": {
"version": "7.27.1",
"resolved": "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
"integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-identifier": {
"version": "7.27.1",
"resolved": "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
"integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/parser": {
"version": "7.27.5",
"resolved": "https://registry.npmmirror.com/@babel/parser/-/parser-7.27.5.tgz",
"integrity": "sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==",
"license": "MIT",
"dependencies": {
"@babel/types": "^7.27.3"
},
"bin": {
"parser": "bin/babel-parser.js"
},
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/@babel/types": {
"version": "7.27.6",
"resolved": "https://registry.npmmirror.com/@babel/types/-/types-7.27.6.tgz",
"integrity": "sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==",
"license": "MIT",
"dependencies": {
"@babel/helper-string-parser": "^7.27.1",
"@babel/helper-validator-identifier": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@esbuild/aix-ppc64": {
"version": "0.25.5",
"resolved": "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz",
"integrity": "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==",
"cpu": [
"ppc64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"aix"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/android-arm": {
"version": "0.25.5",
"resolved": "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.25.5.tgz",
"integrity": "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==",
"cpu": [
"arm"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/android-arm64": {
"version": "0.25.5",
"resolved": "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz",
"integrity": "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/android-x64": {
"version": "0.25.5",
"resolved": "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.25.5.tgz",
"integrity": "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/darwin-arm64": {
"version": "0.25.5",
"resolved": "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz",
"integrity": "sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/darwin-x64": {
"version": "0.25.5",
"resolved": "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz",
"integrity": "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/freebsd-arm64": {
"version": "0.25.5",
"resolved": "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz",
"integrity": "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"freebsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/freebsd-x64": {
"version": "0.25.5",
"resolved": "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz",
"integrity": "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"freebsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-arm": {
"version": "0.25.5",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz",
"integrity": "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==",
"cpu": [
"arm"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-arm64": {
"version": "0.25.5",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz",
"integrity": "sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-ia32": {
"version": "0.25.5",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz",
"integrity": "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==",
"cpu": [
"ia32"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-loong64": {
"version": "0.25.5",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz",
"integrity": "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==",
"cpu": [
"loong64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-mips64el": {
"version": "0.25.5",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz",
"integrity": "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==",
"cpu": [
"mips64el"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-ppc64": {
"version": "0.25.5",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz",
"integrity": "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==",
"cpu": [
"ppc64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-riscv64": {
"version": "0.25.5",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz",
"integrity": "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==",
"cpu": [
"riscv64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-s390x": {
"version": "0.25.5",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz",
"integrity": "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==",
"cpu": [
"s390x"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/linux-x64": {
"version": "0.25.5",
"resolved": "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz",
"integrity": "sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/netbsd-arm64": {
"version": "0.25.5",
"resolved": "https://registry.npmmirror.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz",
"integrity": "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"netbsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/netbsd-x64": {
"version": "0.25.5",
"resolved": "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz",
"integrity": "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"netbsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/openbsd-arm64": {
"version": "0.25.5",
"resolved": "https://registry.npmmirror.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz",
"integrity": "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"openbsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/openbsd-x64": {
"version": "0.25.5",
"resolved": "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz",
"integrity": "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"openbsd"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/sunos-x64": {
"version": "0.25.5",
"resolved": "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz",
"integrity": "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"sunos"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/win32-arm64": {
"version": "0.25.5",
"resolved": "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz",
"integrity": "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/win32-ia32": {
"version": "0.25.5",
"resolved": "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz",
"integrity": "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==",
"cpu": [
"ia32"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@esbuild/win32-x64": {
"version": "0.25.5",
"resolved": "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz",
"integrity": "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">=18"
}
},
"node_modules/@intlify/core-base": {
"version": "9.14.4",
"resolved": "https://registry.npmmirror.com/@intlify/core-base/-/core-base-9.14.4.tgz",
"integrity": "sha512-vtZCt7NqWhKEtHa3SD/322DlgP5uR9MqWxnE0y8Q0tjDs9H5Lxhss+b5wv8rmuXRoHKLESNgw9d+EN9ybBbj9g==",
"license": "MIT",
"dependencies": {
"@intlify/message-compiler": "9.14.4",
"@intlify/shared": "9.14.4"
},
"engines": {
"node": ">= 16"
},
"funding": {
"url": "https://github.com/sponsors/kazupon"
}
},
"node_modules/@intlify/message-compiler": {
"version": "9.14.4",
"resolved": "https://registry.npmmirror.com/@intlify/message-compiler/-/message-compiler-9.14.4.tgz",
"integrity": "sha512-vcyCLiVRN628U38c3PbahrhbbXrckrM9zpy0KZVlDk2Z0OnGwv8uQNNXP3twwGtfLsCf4gu3ci6FMIZnPaqZsw==",
"license": "MIT",
"dependencies": {
"@intlify/shared": "9.14.4",
"source-map-js": "^1.0.2"
},
"engines": {
"node": ">= 16"
},
"funding": {
"url": "https://github.com/sponsors/kazupon"
}
},
"node_modules/@intlify/shared": {
"version": "9.14.4",
"resolved": "https://registry.npmmirror.com/@intlify/shared/-/shared-9.14.4.tgz",
"integrity": "sha512-P9zv6i1WvMc9qDBWvIgKkymjY2ptIiQ065PjDv7z7fDqH3J/HBRBN5IoiR46r/ujRcU7hCuSIZWvCAFCyuOYZA==",
"license": "MIT",
"engines": {
"node": ">= 16"
},
"funding": {
"url": "https://github.com/sponsors/kazupon"
}
},
"node_modules/@jridgewell/sourcemap-codec": {
"version": "1.5.0",
"resolved": "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
"integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
"license": "MIT"
},
"node_modules/@rollup/rollup-android-arm-eabi": {
"version": "4.43.0",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.43.0.tgz",
"integrity": "sha512-Krjy9awJl6rKbruhQDgivNbD1WuLb8xAclM4IR4cN5pHGAs2oIMMQJEiC3IC/9TZJ+QZkmZhlMO/6MBGxPidpw==",
"cpu": [
"arm"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"android"
]
},
"node_modules/@rollup/rollup-android-arm64": {
"version": "4.43.0",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.43.0.tgz",
"integrity": "sha512-ss4YJwRt5I63454Rpj+mXCXicakdFmKnUNxr1dLK+5rv5FJgAxnN7s31a5VchRYxCFWdmnDWKd0wbAdTr0J5EA==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"android"
]
},
"node_modules/@rollup/rollup-darwin-arm64": {
"version": "4.43.0",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.43.0.tgz",
"integrity": "sha512-eKoL8ykZ7zz8MjgBenEF2OoTNFAPFz1/lyJ5UmmFSz5jW+7XbH1+MAgCVHy72aG59rbuQLcJeiMrP8qP5d/N0A==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
]
},
"node_modules/@rollup/rollup-darwin-x64": {
"version": "4.43.0",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.43.0.tgz",
"integrity": "sha512-SYwXJgaBYW33Wi/q4ubN+ldWC4DzQY62S4Ll2dgfr/dbPoF50dlQwEaEHSKrQdSjC6oIe1WgzosoaNoHCdNuMg==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
]
},
"node_modules/@rollup/rollup-freebsd-arm64": {
"version": "4.43.0",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.43.0.tgz",
"integrity": "sha512-SV+U5sSo0yujrjzBF7/YidieK2iF6E7MdF6EbYxNz94lA+R0wKl3SiixGyG/9Klab6uNBIqsN7j4Y/Fya7wAjQ==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"freebsd"
]
},
"node_modules/@rollup/rollup-freebsd-x64": {
"version": "4.43.0",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.43.0.tgz",
"integrity": "sha512-J7uCsiV13L/VOeHJBo5SjasKiGxJ0g+nQTrBkAsmQBIdil3KhPnSE9GnRon4ejX1XDdsmK/l30IYLiAaQEO0Cg==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"freebsd"
]
},
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
"version": "4.43.0",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.43.0.tgz",
"integrity": "sha512-gTJ/JnnjCMc15uwB10TTATBEhK9meBIY+gXP4s0sHD1zHOaIh4Dmy1X9wup18IiY9tTNk5gJc4yx9ctj/fjrIw==",
"cpu": [
"arm"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
"version": "4.43.0",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.43.0.tgz",
"integrity": "sha512-ZJ3gZynL1LDSIvRfz0qXtTNs56n5DI2Mq+WACWZ7yGHFUEirHBRt7fyIk0NsCKhmRhn7WAcjgSkSVVxKlPNFFw==",
"cpu": [
"arm"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-arm64-gnu": {
"version": "4.43.0",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.43.0.tgz",
"integrity": "sha512-8FnkipasmOOSSlfucGYEu58U8cxEdhziKjPD2FIa0ONVMxvl/hmONtX/7y4vGjdUhjcTHlKlDhw3H9t98fPvyA==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-arm64-musl": {
"version": "4.43.0",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.43.0.tgz",
"integrity": "sha512-KPPyAdlcIZ6S9C3S2cndXDkV0Bb1OSMsX0Eelr2Bay4EsF9yi9u9uzc9RniK3mcUGCLhWY9oLr6er80P5DE6XA==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-loongarch64-gnu": {
"version": "4.43.0",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.43.0.tgz",
"integrity": "sha512-HPGDIH0/ZzAZjvtlXj6g+KDQ9ZMHfSP553za7o2Odegb/BEfwJcR0Sw0RLNpQ9nC6Gy8s+3mSS9xjZ0n3rhcYg==",
"cpu": [
"loong64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
"version": "4.43.0",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.43.0.tgz",
"integrity": "sha512-gEmwbOws4U4GLAJDhhtSPWPXUzDfMRedT3hFMyRAvM9Mrnj+dJIFIeL7otsv2WF3D7GrV0GIewW0y28dOYWkmw==",
"cpu": [
"ppc64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
"version": "4.43.0",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.43.0.tgz",
"integrity": "sha512-XXKvo2e+wFtXZF/9xoWohHg+MuRnvO29TI5Hqe9xwN5uN8NKUYy7tXUG3EZAlfchufNCTHNGjEx7uN78KsBo0g==",
"cpu": [
"riscv64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-riscv64-musl": {
"version": "4.43.0",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.43.0.tgz",
"integrity": "sha512-ruf3hPWhjw6uDFsOAzmbNIvlXFXlBQ4nk57Sec8E8rUxs/AI4HD6xmiiasOOx/3QxS2f5eQMKTAwk7KHwpzr/Q==",
"cpu": [
"riscv64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-s390x-gnu": {
"version": "4.43.0",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.43.0.tgz",
"integrity": "sha512-QmNIAqDiEMEvFV15rsSnjoSmO0+eJLoKRD9EAa9rrYNwO/XRCtOGM3A5A0X+wmG+XRrw9Fxdsw+LnyYiZWWcVw==",
"cpu": [
"s390x"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-x64-gnu": {
"version": "4.43.0",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.43.0.tgz",
"integrity": "sha512-jAHr/S0iiBtFyzjhOkAics/2SrXE092qyqEg96e90L3t9Op8OTzS6+IX0Fy5wCt2+KqeHAkti+eitV0wvblEoQ==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-linux-x64-musl": {
"version": "4.43.0",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.43.0.tgz",
"integrity": "sha512-3yATWgdeXyuHtBhrLt98w+5fKurdqvs8B53LaoKD7P7H7FKOONLsBVMNl9ghPQZQuYcceV5CDyPfyfGpMWD9mQ==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"linux"
]
},
"node_modules/@rollup/rollup-win32-arm64-msvc": {
"version": "4.43.0",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.43.0.tgz",
"integrity": "sha512-wVzXp2qDSCOpcBCT5WRWLmpJRIzv23valvcTwMHEobkjippNf+C3ys/+wf07poPkeNix0paTNemB2XrHr2TnGw==",
"cpu": [
"arm64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
]
},
"node_modules/@rollup/rollup-win32-ia32-msvc": {
"version": "4.43.0",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.43.0.tgz",
"integrity": "sha512-fYCTEyzf8d+7diCw8b+asvWDCLMjsCEA8alvtAutqJOJp/wL5hs1rWSqJ1vkjgW0L2NB4bsYJrpKkiIPRR9dvw==",
"cpu": [
"ia32"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
]
},
"node_modules/@rollup/rollup-win32-x64-msvc": {
"version": "4.43.0",
"resolved": "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.43.0.tgz",
"integrity": "sha512-SnGhLiE5rlK0ofq8kzuDkM0g7FN1s5VYY+YSMTibP7CqShxCQvqtNxTARS4xX4PFJfHjG0ZQYX9iGzI3FQh5Aw==",
"cpu": [
"x64"
],
"dev": true,
"license": "MIT",
"optional": true,
"os": [
"win32"
]
},
"node_modules/@types/estree": {
"version": "1.0.7",
"resolved": "https://registry.npmmirror.com/@types/estree/-/estree-1.0.7.tgz",
"integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==",
"dev": true,
"license": "MIT"
},
"node_modules/@vant/popperjs": {
"version": "1.3.0",
"resolved": "https://registry.npmmirror.com/@vant/popperjs/-/popperjs-1.3.0.tgz",
"integrity": "sha512-hB+czUG+aHtjhaEmCJDuXOep0YTZjdlRR+4MSmIFnkCQIxJaXLQdSsR90XWvAI2yvKUI7TCGqR8pQg2RtvkMHw==",
"license": "MIT"
},
"node_modules/@vant/use": {
"version": "1.6.0",
"resolved": "https://registry.npmmirror.com/@vant/use/-/use-1.6.0.tgz",
"integrity": "sha512-PHHxeAASgiOpSmMjceweIrv2AxDZIkWXyaczksMoWvKV2YAYEhoizRuk/xFnKF+emUIi46TsQ+rvlm/t2BBCfA==",
"license": "MIT",
"peerDependencies": {
"vue": "^3.0.0"
}
},
"node_modules/@vitejs/plugin-vue": {
"version": "5.2.4",
"resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-5.2.4.tgz",
"integrity": "sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==",
"dev": true,
"license": "MIT",
"engines": {
"node": "^18.0.0 || >=20.0.0"
},
"peerDependencies": {
"vite": "^5.0.0 || ^6.0.0",
"vue": "^3.2.25"
}
},
"node_modules/@vue/compiler-core": {
"version": "3.5.16",
"resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.16.tgz",
"integrity": "sha512-AOQS2eaQOaaZQoL1u+2rCJIKDruNXVBZSiUD3chnUrsoX5ZTQMaCvXlWNIfxBJuU15r1o7+mpo5223KVtIhAgQ==",
"license": "MIT",
"dependencies": {
"@babel/parser": "^7.27.2",
"@vue/shared": "3.5.16",
"entities": "^4.5.0",
"estree-walker": "^2.0.2",
"source-map-js": "^1.2.1"
}
},
"node_modules/@vue/compiler-dom": {
"version": "3.5.16",
"resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.16.tgz",
"integrity": "sha512-SSJIhBr/teipXiXjmWOVWLnxjNGo65Oj/8wTEQz0nqwQeP75jWZ0n4sF24Zxoht1cuJoWopwj0J0exYwCJ0dCQ==",
"license": "MIT",
"dependencies": {
"@vue/compiler-core": "3.5.16",
"@vue/shared": "3.5.16"
}
},
"node_modules/@vue/compiler-sfc": {
"version": "3.5.16",
"resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.16.tgz",
"integrity": "sha512-rQR6VSFNpiinDy/DVUE0vHoIDUF++6p910cgcZoaAUm3POxgNOOdS/xgoll3rNdKYTYPnnbARDCZOyZ+QSe6Pw==",
"license": "MIT",
"dependencies": {
"@babel/parser": "^7.27.2",
"@vue/compiler-core": "3.5.16",
"@vue/compiler-dom": "3.5.16",
"@vue/compiler-ssr": "3.5.16",
"@vue/shared": "3.5.16",
"estree-walker": "^2.0.2",
"magic-string": "^0.30.17",
"postcss": "^8.5.3",
"source-map-js": "^1.2.1"
}
},
"node_modules/@vue/compiler-ssr": {
"version": "3.5.16",
"resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.16.tgz",
"integrity": "sha512-d2V7kfxbdsjrDSGlJE7my1ZzCXViEcqN6w14DOsDrUCHEA6vbnVCpRFfrc4ryCP/lCKzX2eS1YtnLE/BuC9f/A==",
"license": "MIT",
"dependencies": {
"@vue/compiler-dom": "3.5.16",
"@vue/shared": "3.5.16"
}
},
"node_modules/@vue/devtools-api": {
"version": "6.6.4",
"resolved": "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.6.4.tgz",
"integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==",
"license": "MIT"
},
"node_modules/@vue/reactivity": {
"version": "3.5.16",
"resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.16.tgz",
"integrity": "sha512-FG5Q5ee/kxhIm1p2bykPpPwqiUBV3kFySsHEQha5BJvjXdZTUfmya7wP7zC39dFuZAcf/PD5S4Lni55vGLMhvA==",
"license": "MIT",
"dependencies": {
"@vue/shared": "3.5.16"
}
},
"node_modules/@vue/runtime-core": {
"version": "3.5.16",
"resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.16.tgz",
"integrity": "sha512-bw5Ykq6+JFHYxrQa7Tjr+VSzw7Dj4ldR/udyBZbq73fCdJmyy5MPIFR9IX/M5Qs+TtTjuyUTCnmK3lWWwpAcFQ==",
"license": "MIT",
"dependencies": {
"@vue/reactivity": "3.5.16",
"@vue/shared": "3.5.16"
}
},
"node_modules/@vue/runtime-dom": {
"version": "3.5.16",
"resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.16.tgz",
"integrity": "sha512-T1qqYJsG2xMGhImRUV9y/RseB9d0eCYZQ4CWca9ztCuiPj/XWNNN+lkNBuzVbia5z4/cgxdL28NoQCvC0Xcfww==",
"license": "MIT",
"dependencies": {
"@vue/reactivity": "3.5.16",
"@vue/runtime-core": "3.5.16",
"@vue/shared": "3.5.16",
"csstype": "^3.1.3"
}
},
"node_modules/@vue/server-renderer": {
"version": "3.5.16",
"resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.16.tgz",
"integrity": "sha512-BrX0qLiv/WugguGsnQUJiYOE0Fe5mZTwi6b7X/ybGB0vfrPH9z0gD/Y6WOR1sGCgX4gc25L1RYS5eYQKDMoNIg==",
"license": "MIT",
"dependencies": {
"@vue/compiler-ssr": "3.5.16",
"@vue/shared": "3.5.16"
},
"peerDependencies": {
"vue": "3.5.16"
}
},
"node_modules/@vue/shared": {
"version": "3.5.16",
"resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.16.tgz",
"integrity": "sha512-c/0fWy3Jw6Z8L9FmTyYfkpM5zklnqqa9+a6dz3DvONRKW2NEbh46BP0FHuLFSWi2TnQEtp91Z6zOWNrU6QiyPg==",
"license": "MIT"
},
"node_modules/csstype": {
"version": "3.1.3",
"resolved": "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz",
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
"license": "MIT"
},
"node_modules/entities": {
"version": "4.5.0",
"resolved": "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz",
"integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
"license": "BSD-2-Clause",
"engines": {
"node": ">=0.12"
},
"funding": {
"url": "https://github.com/fb55/entities?sponsor=1"
}
},
"node_modules/esbuild": {
"version": "0.25.5",
"resolved": "https://registry.npmmirror.com/esbuild/-/esbuild-0.25.5.tgz",
"integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
"bin": {
"esbuild": "bin/esbuild"
},
"engines": {
"node": ">=18"
},
"optionalDependencies": {
"@esbuild/aix-ppc64": "0.25.5",
"@esbuild/android-arm": "0.25.5",
"@esbuild/android-arm64": "0.25.5",
"@esbuild/android-x64": "0.25.5",
"@esbuild/darwin-arm64": "0.25.5",
"@esbuild/darwin-x64": "0.25.5",
"@esbuild/freebsd-arm64": "0.25.5",
"@esbuild/freebsd-x64": "0.25.5",
"@esbuild/linux-arm": "0.25.5",
"@esbuild/linux-arm64": "0.25.5",
"@esbuild/linux-ia32": "0.25.5",
"@esbuild/linux-loong64": "0.25.5",
"@esbuild/linux-mips64el": "0.25.5",
"@esbuild/linux-ppc64": "0.25.5",
"@esbuild/linux-riscv64": "0.25.5",
"@esbuild/linux-s390x": "0.25.5",
"@esbuild/linux-x64": "0.25.5",
"@esbuild/netbsd-arm64": "0.25.5",
"@esbuild/netbsd-x64": "0.25.5",
"@esbuild/openbsd-arm64": "0.25.5",
"@esbuild/openbsd-x64": "0.25.5",
"@esbuild/sunos-x64": "0.25.5",
"@esbuild/win32-arm64": "0.25.5",
"@esbuild/win32-ia32": "0.25.5",
"@esbuild/win32-x64": "0.25.5"
}
},
"node_modules/estree-walker": {
"version": "2.0.2",
"resolved": "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz",
"integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==",
"license": "MIT"
},
"node_modules/fdir": {
"version": "6.4.6",
"resolved": "https://registry.npmmirror.com/fdir/-/fdir-6.4.6.tgz",
"integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==",
"dev": true,
"license": "MIT",
"peerDependencies": {
"picomatch": "^3 || ^4"
},
"peerDependenciesMeta": {
"picomatch": {
"optional": true
}
}
},
"node_modules/fsevents": {
"version": "2.3.3",
"resolved": "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz",
"integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
"dev": true,
"hasInstallScript": true,
"license": "MIT",
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
"node_modules/magic-string": {
"version": "0.30.17",
"resolved": "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.17.tgz",
"integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==",
"license": "MIT",
"dependencies": {
"@jridgewell/sourcemap-codec": "^1.5.0"
}
},
"node_modules/nanoid": {
"version": "3.3.11",
"resolved": "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.11.tgz",
"integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"license": "MIT",
"bin": {
"nanoid": "bin/nanoid.cjs"
},
"engines": {
"node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
}
},
"node_modules/picocolors": {
"version": "1.1.1",
"resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz",
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
"license": "ISC"
},
"node_modules/picomatch": {
"version": "4.0.2",
"resolved": "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.2.tgz",
"integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
"dev": true,
"license": "MIT",
"engines": {
"node": ">=12"
},
"funding": {
"url": "https://github.com/sponsors/jonschlinkert"
}
},
"node_modules/postcss": {
"version": "8.5.5",
"resolved": "https://registry.npmmirror.com/postcss/-/postcss-8.5.5.tgz",
"integrity": "sha512-d/jtm+rdNT8tpXuHY5MMtcbJFBkhXE6593XVR9UoGCH8jSFGci7jGvMGH5RYd5PBJW+00NZQt6gf7CbagJCrhg==",
"funding": [
{
"type": "opencollective",
"url": "https://opencollective.com/postcss/"
},
{
"type": "tidelift",
"url": "https://tidelift.com/funding/github/npm/postcss"
},
{
"type": "github",
"url": "https://github.com/sponsors/ai"
}
],
"license": "MIT",
"dependencies": {
"nanoid": "^3.3.11",
"picocolors": "^1.1.1",
"source-map-js": "^1.2.1"
},
"engines": {
"node": "^10 || ^12 || >=14"
}
},
"node_modules/rollup": {
"version": "4.43.0",
"resolved": "https://registry.npmmirror.com/rollup/-/rollup-4.43.0.tgz",
"integrity": "sha512-wdN2Kd3Twh8MAEOEJZsuxuLKCsBEo4PVNLK6tQWAn10VhsVewQLzcucMgLolRlhFybGxfclbPeEYBaP6RvUFGg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@types/estree": "1.0.7"
},
"bin": {
"rollup": "dist/bin/rollup"
},
"engines": {
"node": ">=18.0.0",
"npm": ">=8.0.0"
},
"optionalDependencies": {
"@rollup/rollup-android-arm-eabi": "4.43.0",
"@rollup/rollup-android-arm64": "4.43.0",
"@rollup/rollup-darwin-arm64": "4.43.0",
"@rollup/rollup-darwin-x64": "4.43.0",
"@rollup/rollup-freebsd-arm64": "4.43.0",
"@rollup/rollup-freebsd-x64": "4.43.0",
"@rollup/rollup-linux-arm-gnueabihf": "4.43.0",
"@rollup/rollup-linux-arm-musleabihf": "4.43.0",
"@rollup/rollup-linux-arm64-gnu": "4.43.0",
"@rollup/rollup-linux-arm64-musl": "4.43.0",
"@rollup/rollup-linux-loongarch64-gnu": "4.43.0",
"@rollup/rollup-linux-powerpc64le-gnu": "4.43.0",
"@rollup/rollup-linux-riscv64-gnu": "4.43.0",
"@rollup/rollup-linux-riscv64-musl": "4.43.0",
"@rollup/rollup-linux-s390x-gnu": "4.43.0",
"@rollup/rollup-linux-x64-gnu": "4.43.0",
"@rollup/rollup-linux-x64-musl": "4.43.0",
"@rollup/rollup-win32-arm64-msvc": "4.43.0",
"@rollup/rollup-win32-ia32-msvc": "4.43.0",
"@rollup/rollup-win32-x64-msvc": "4.43.0",
"fsevents": "~2.3.2"
}
},
"node_modules/source-map-js": {
"version": "1.2.1",
"resolved": "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz",
"integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
"license": "BSD-3-Clause",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/tinyglobby": {
"version": "0.2.14",
"resolved": "https://registry.npmmirror.com/tinyglobby/-/tinyglobby-0.2.14.tgz",
"integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"fdir": "^6.4.4",
"picomatch": "^4.0.2"
},
"engines": {
"node": ">=12.0.0"
},
"funding": {
"url": "https://github.com/sponsors/SuperchupuDev"
}
},
"node_modules/vant": {
"version": "4.9.19",
"resolved": "https://registry.npmmirror.com/vant/-/vant-4.9.19.tgz",
"integrity": "sha512-fRt32XI0fO0vB3/YGhZOpTnHKjplUiNuA05yZy8rPZntmbQE5GA57Y7iC7jmMDxSOaLebovynhgCvWnyk9zmDw==",
"license": "MIT",
"dependencies": {
"@vant/popperjs": "^1.3.0",
"@vant/use": "^1.6.0",
"@vue/shared": "^3.5.13"
},
"peerDependencies": {
"vue": "^3.0.0"
}
},
"node_modules/vite": {
"version": "6.3.5",
"resolved": "https://registry.npmmirror.com/vite/-/vite-6.3.5.tgz",
"integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==",
"dev": true,
"license": "MIT",
"dependencies": {
"esbuild": "^0.25.0",
"fdir": "^6.4.4",
"picomatch": "^4.0.2",
"postcss": "^8.5.3",
"rollup": "^4.34.9",
"tinyglobby": "^0.2.13"
},
"bin": {
"vite": "bin/vite.js"
},
"engines": {
"node": "^18.0.0 || ^20.0.0 || >=22.0.0"
},
"funding": {
"url": "https://github.com/vitejs/vite?sponsor=1"
},
"optionalDependencies": {
"fsevents": "~2.3.3"
},
"peerDependencies": {
"@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0",
"jiti": ">=1.21.0",
"less": "*",
"lightningcss": "^1.21.0",
"sass": "*",
"sass-embedded": "*",
"stylus": "*",
"sugarss": "*",
"terser": "^5.16.0",
"tsx": "^4.8.1",
"yaml": "^2.4.2"
},
"peerDependenciesMeta": {
"@types/node": {
"optional": true
},
"jiti": {
"optional": true
},
"less": {
"optional": true
},
"lightningcss": {
"optional": true
},
"sass": {
"optional": true
},
"sass-embedded": {
"optional": true
},
"stylus": {
"optional": true
},
"sugarss": {
"optional": true
},
"terser": {
"optional": true
},
"tsx": {
"optional": true
},
"yaml": {
"optional": true
}
}
},
"node_modules/vue": {
"version": "3.5.16",
"resolved": "https://registry.npmmirror.com/vue/-/vue-3.5.16.tgz",
"integrity": "sha512-rjOV2ecxMd5SiAmof2xzh2WxntRcigkX/He4YFJ6WdRvVUrbt6DxC1Iujh10XLl8xCDRDtGKMeO3D+pRQ1PP9w==",
"license": "MIT",
"dependencies": {
"@vue/compiler-dom": "3.5.16",
"@vue/compiler-sfc": "3.5.16",
"@vue/runtime-dom": "3.5.16",
"@vue/server-renderer": "3.5.16",
"@vue/shared": "3.5.16"
},
"peerDependencies": {
"typescript": "*"
},
"peerDependenciesMeta": {
"typescript": {
"optional": true
}
}
},
"node_modules/vue-i18n": {
"version": "9.14.4",
"resolved": "https://registry.npmmirror.com/vue-i18n/-/vue-i18n-9.14.4.tgz",
"integrity": "sha512-B934C8yUyWLT0EMud3DySrwSUJI7ZNiWYsEEz2gknTthqKiG4dzWE/WSa8AzCuSQzwBEv4HtG1jZDhgzPfWSKQ==",
"license": "MIT",
"dependencies": {
"@intlify/core-base": "9.14.4",
"@intlify/shared": "9.14.4",
"@vue/devtools-api": "^6.5.0"
},
"engines": {
"node": ">= 16"
},
"funding": {
"url": "https://github.com/sponsors/kazupon"
},
"peerDependencies": {
"vue": "^3.0.0"
}
},
"node_modules/vue-router": {
"version": "4.5.1",
"resolved": "https://registry.npmmirror.com/vue-router/-/vue-router-4.5.1.tgz",
"integrity": "sha512-ogAF3P97NPm8fJsE4by9dwSYtDwXIY1nFY9T6DyQnGHd1E2Da94w9JIolpe42LJGIl0DwOHBi8TcRPlPGwbTtw==",
"license": "MIT",
"dependencies": {
"@vue/devtools-api": "^6.6.4"
},
"funding": {
"url": "https://github.com/sponsors/posva"
},
"peerDependencies": {
"vue": "^3.2.0"
}
}
}
}
{
"name": "yahabbi-web",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview"
},
"dependencies": {
"pinia": "^3.0.3",
"swiper": "^11.2.8",
"vant": "^4.9.19",
"vue": "^3.5.13",
"vue-i18n": "^9.14.4",
"vue-router": "^4.5.1"
},
"devDependencies": {
"@vitejs/plugin-vue": "^5.2.3",
"sass-embedded": "^1.89.2",
"vite": "^6.3.5"
}
}
lockfileVersion: '9.0'
settings:
autoInstallPeers: true
excludeLinksFromLockfile: false
importers:
.:
dependencies:
pinia:
specifier: ^3.0.3
version: 3.0.3(vue@3.5.16)
swiper:
specifier: ^11.2.8
version: 11.2.8
vant:
specifier: ^4.9.19
version: 4.9.19(vue@3.5.16)
vue:
specifier: ^3.5.13
version: 3.5.16
vue-i18n:
specifier: ^9.14.4
version: 9.14.4(vue@3.5.16)
vue-router:
specifier: ^4.5.1
version: 4.5.1(vue@3.5.16)
devDependencies:
'@vitejs/plugin-vue':
specifier: ^5.2.3
version: 5.2.4(vite@6.3.5(sass-embedded@1.89.2))(vue@3.5.16)
sass-embedded:
specifier: ^1.89.2
version: 1.89.2
vite:
specifier: ^6.3.5
version: 6.3.5(sass-embedded@1.89.2)
packages:
'@babel/helper-string-parser@7.27.1':
resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
engines: {node: '>=6.9.0'}
'@babel/helper-validator-identifier@7.27.1':
resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==}
engines: {node: '>=6.9.0'}
'@babel/parser@7.27.5':
resolution: {integrity: sha512-OsQd175SxWkGlzbny8J3K8TnnDD0N3lrIUtB92xwyRpzaenGZhxDvxN/JgU00U3CDZNj9tPuDJ5H0WS4Nt3vKg==}
engines: {node: '>=6.0.0'}
hasBin: true
'@babel/types@7.27.6':
resolution: {integrity: sha512-ETyHEk2VHHvl9b9jZP5IHPavHYk57EhanlRRuae9XCpb/j5bDCbPPMOBfCWhnl/7EDJz0jEMCi/RhccCE8r1+Q==}
engines: {node: '>=6.9.0'}
'@bufbuild/protobuf@2.5.2':
resolution: {integrity: sha512-foZ7qr0IsUBjzWIq+SuBLfdQCpJ1j8cTuNNT4owngTHoN5KsJb8L9t65fzz7SCeSWzescoOil/0ldqiL041ABg==}
'@esbuild/aix-ppc64@0.25.5':
resolution: {integrity: sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==}
engines: {node: '>=18'}
cpu: [ppc64]
os: [aix]
'@esbuild/android-arm64@0.25.5':
resolution: {integrity: sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==}
engines: {node: '>=18'}
cpu: [arm64]
os: [android]
'@esbuild/android-arm@0.25.5':
resolution: {integrity: sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==}
engines: {node: '>=18'}
cpu: [arm]
os: [android]
'@esbuild/android-x64@0.25.5':
resolution: {integrity: sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==}
engines: {node: '>=18'}
cpu: [x64]
os: [android]
'@esbuild/darwin-arm64@0.25.5':
resolution: {integrity: sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==}
engines: {node: '>=18'}
cpu: [arm64]
os: [darwin]
'@esbuild/darwin-x64@0.25.5':
resolution: {integrity: sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==}
engines: {node: '>=18'}
cpu: [x64]
os: [darwin]
'@esbuild/freebsd-arm64@0.25.5':
resolution: {integrity: sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==}
engines: {node: '>=18'}
cpu: [arm64]
os: [freebsd]
'@esbuild/freebsd-x64@0.25.5':
resolution: {integrity: sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==}
engines: {node: '>=18'}
cpu: [x64]
os: [freebsd]
'@esbuild/linux-arm64@0.25.5':
resolution: {integrity: sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==}
engines: {node: '>=18'}
cpu: [arm64]
os: [linux]
'@esbuild/linux-arm@0.25.5':
resolution: {integrity: sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==}
engines: {node: '>=18'}
cpu: [arm]
os: [linux]
'@esbuild/linux-ia32@0.25.5':
resolution: {integrity: sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==}
engines: {node: '>=18'}
cpu: [ia32]
os: [linux]
'@esbuild/linux-loong64@0.25.5':
resolution: {integrity: sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==}
engines: {node: '>=18'}
cpu: [loong64]
os: [linux]
'@esbuild/linux-mips64el@0.25.5':
resolution: {integrity: sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==}
engines: {node: '>=18'}
cpu: [mips64el]
os: [linux]
'@esbuild/linux-ppc64@0.25.5':
resolution: {integrity: sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==}
engines: {node: '>=18'}
cpu: [ppc64]
os: [linux]
'@esbuild/linux-riscv64@0.25.5':
resolution: {integrity: sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==}
engines: {node: '>=18'}
cpu: [riscv64]
os: [linux]
'@esbuild/linux-s390x@0.25.5':
resolution: {integrity: sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==}
engines: {node: '>=18'}
cpu: [s390x]
os: [linux]
'@esbuild/linux-x64@0.25.5':
resolution: {integrity: sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==}
engines: {node: '>=18'}
cpu: [x64]
os: [linux]
'@esbuild/netbsd-arm64@0.25.5':
resolution: {integrity: sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==}
engines: {node: '>=18'}
cpu: [arm64]
os: [netbsd]
'@esbuild/netbsd-x64@0.25.5':
resolution: {integrity: sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==}
engines: {node: '>=18'}
cpu: [x64]
os: [netbsd]
'@esbuild/openbsd-arm64@0.25.5':
resolution: {integrity: sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==}
engines: {node: '>=18'}
cpu: [arm64]
os: [openbsd]
'@esbuild/openbsd-x64@0.25.5':
resolution: {integrity: sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==}
engines: {node: '>=18'}
cpu: [x64]
os: [openbsd]
'@esbuild/sunos-x64@0.25.5':
resolution: {integrity: sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==}
engines: {node: '>=18'}
cpu: [x64]
os: [sunos]
'@esbuild/win32-arm64@0.25.5':
resolution: {integrity: sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==}
engines: {node: '>=18'}
cpu: [arm64]
os: [win32]
'@esbuild/win32-ia32@0.25.5':
resolution: {integrity: sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==}
engines: {node: '>=18'}
cpu: [ia32]
os: [win32]
'@esbuild/win32-x64@0.25.5':
resolution: {integrity: sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==}
engines: {node: '>=18'}
cpu: [x64]
os: [win32]
'@intlify/core-base@9.14.4':
resolution: {integrity: sha512-vtZCt7NqWhKEtHa3SD/322DlgP5uR9MqWxnE0y8Q0tjDs9H5Lxhss+b5wv8rmuXRoHKLESNgw9d+EN9ybBbj9g==}
engines: {node: '>= 16'}
'@intlify/message-compiler@9.14.4':
resolution: {integrity: sha512-vcyCLiVRN628U38c3PbahrhbbXrckrM9zpy0KZVlDk2Z0OnGwv8uQNNXP3twwGtfLsCf4gu3ci6FMIZnPaqZsw==}
engines: {node: '>= 16'}
'@intlify/shared@9.14.4':
resolution: {integrity: sha512-P9zv6i1WvMc9qDBWvIgKkymjY2ptIiQ065PjDv7z7fDqH3J/HBRBN5IoiR46r/ujRcU7hCuSIZWvCAFCyuOYZA==}
engines: {node: '>= 16'}
'@jridgewell/sourcemap-codec@1.5.0':
resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
'@rollup/rollup-android-arm-eabi@4.43.0':
resolution: {integrity: sha512-Krjy9awJl6rKbruhQDgivNbD1WuLb8xAclM4IR4cN5pHGAs2oIMMQJEiC3IC/9TZJ+QZkmZhlMO/6MBGxPidpw==}
cpu: [arm]
os: [android]
'@rollup/rollup-android-arm64@4.43.0':
resolution: {integrity: sha512-ss4YJwRt5I63454Rpj+mXCXicakdFmKnUNxr1dLK+5rv5FJgAxnN7s31a5VchRYxCFWdmnDWKd0wbAdTr0J5EA==}
cpu: [arm64]
os: [android]
'@rollup/rollup-darwin-arm64@4.43.0':
resolution: {integrity: sha512-eKoL8ykZ7zz8MjgBenEF2OoTNFAPFz1/lyJ5UmmFSz5jW+7XbH1+MAgCVHy72aG59rbuQLcJeiMrP8qP5d/N0A==}
cpu: [arm64]
os: [darwin]
'@rollup/rollup-darwin-x64@4.43.0':
resolution: {integrity: sha512-SYwXJgaBYW33Wi/q4ubN+ldWC4DzQY62S4Ll2dgfr/dbPoF50dlQwEaEHSKrQdSjC6oIe1WgzosoaNoHCdNuMg==}
cpu: [x64]
os: [darwin]
'@rollup/rollup-freebsd-arm64@4.43.0':
resolution: {integrity: sha512-SV+U5sSo0yujrjzBF7/YidieK2iF6E7MdF6EbYxNz94lA+R0wKl3SiixGyG/9Klab6uNBIqsN7j4Y/Fya7wAjQ==}
cpu: [arm64]
os: [freebsd]
'@rollup/rollup-freebsd-x64@4.43.0':
resolution: {integrity: sha512-J7uCsiV13L/VOeHJBo5SjasKiGxJ0g+nQTrBkAsmQBIdil3KhPnSE9GnRon4ejX1XDdsmK/l30IYLiAaQEO0Cg==}
cpu: [x64]
os: [freebsd]
'@rollup/rollup-linux-arm-gnueabihf@4.43.0':
resolution: {integrity: sha512-gTJ/JnnjCMc15uwB10TTATBEhK9meBIY+gXP4s0sHD1zHOaIh4Dmy1X9wup18IiY9tTNk5gJc4yx9ctj/fjrIw==}
cpu: [arm]
os: [linux]
libc: [glibc]
'@rollup/rollup-linux-arm-musleabihf@4.43.0':
resolution: {integrity: sha512-ZJ3gZynL1LDSIvRfz0qXtTNs56n5DI2Mq+WACWZ7yGHFUEirHBRt7fyIk0NsCKhmRhn7WAcjgSkSVVxKlPNFFw==}
cpu: [arm]
os: [linux]
libc: [musl]
'@rollup/rollup-linux-arm64-gnu@4.43.0':
resolution: {integrity: sha512-8FnkipasmOOSSlfucGYEu58U8cxEdhziKjPD2FIa0ONVMxvl/hmONtX/7y4vGjdUhjcTHlKlDhw3H9t98fPvyA==}
cpu: [arm64]
os: [linux]
libc: [glibc]
'@rollup/rollup-linux-arm64-musl@4.43.0':
resolution: {integrity: sha512-KPPyAdlcIZ6S9C3S2cndXDkV0Bb1OSMsX0Eelr2Bay4EsF9yi9u9uzc9RniK3mcUGCLhWY9oLr6er80P5DE6XA==}
cpu: [arm64]
os: [linux]
libc: [musl]
'@rollup/rollup-linux-loongarch64-gnu@4.43.0':
resolution: {integrity: sha512-HPGDIH0/ZzAZjvtlXj6g+KDQ9ZMHfSP553za7o2Odegb/BEfwJcR0Sw0RLNpQ9nC6Gy8s+3mSS9xjZ0n3rhcYg==}
cpu: [loong64]
os: [linux]
libc: [glibc]
'@rollup/rollup-linux-powerpc64le-gnu@4.43.0':
resolution: {integrity: sha512-gEmwbOws4U4GLAJDhhtSPWPXUzDfMRedT3hFMyRAvM9Mrnj+dJIFIeL7otsv2WF3D7GrV0GIewW0y28dOYWkmw==}
cpu: [ppc64]
os: [linux]
libc: [glibc]
'@rollup/rollup-linux-riscv64-gnu@4.43.0':
resolution: {integrity: sha512-XXKvo2e+wFtXZF/9xoWohHg+MuRnvO29TI5Hqe9xwN5uN8NKUYy7tXUG3EZAlfchufNCTHNGjEx7uN78KsBo0g==}
cpu: [riscv64]
os: [linux]
libc: [glibc]
'@rollup/rollup-linux-riscv64-musl@4.43.0':
resolution: {integrity: sha512-ruf3hPWhjw6uDFsOAzmbNIvlXFXlBQ4nk57Sec8E8rUxs/AI4HD6xmiiasOOx/3QxS2f5eQMKTAwk7KHwpzr/Q==}
cpu: [riscv64]
os: [linux]
libc: [musl]
'@rollup/rollup-linux-s390x-gnu@4.43.0':
resolution: {integrity: sha512-QmNIAqDiEMEvFV15rsSnjoSmO0+eJLoKRD9EAa9rrYNwO/XRCtOGM3A5A0X+wmG+XRrw9Fxdsw+LnyYiZWWcVw==}
cpu: [s390x]
os: [linux]
libc: [glibc]
'@rollup/rollup-linux-x64-gnu@4.43.0':
resolution: {integrity: sha512-jAHr/S0iiBtFyzjhOkAics/2SrXE092qyqEg96e90L3t9Op8OTzS6+IX0Fy5wCt2+KqeHAkti+eitV0wvblEoQ==}
cpu: [x64]
os: [linux]
libc: [glibc]
'@rollup/rollup-linux-x64-musl@4.43.0':
resolution: {integrity: sha512-3yATWgdeXyuHtBhrLt98w+5fKurdqvs8B53LaoKD7P7H7FKOONLsBVMNl9ghPQZQuYcceV5CDyPfyfGpMWD9mQ==}
cpu: [x64]
os: [linux]
libc: [musl]
'@rollup/rollup-win32-arm64-msvc@4.43.0':
resolution: {integrity: sha512-wVzXp2qDSCOpcBCT5WRWLmpJRIzv23valvcTwMHEobkjippNf+C3ys/+wf07poPkeNix0paTNemB2XrHr2TnGw==}
cpu: [arm64]
os: [win32]
'@rollup/rollup-win32-ia32-msvc@4.43.0':
resolution: {integrity: sha512-fYCTEyzf8d+7diCw8b+asvWDCLMjsCEA8alvtAutqJOJp/wL5hs1rWSqJ1vkjgW0L2NB4bsYJrpKkiIPRR9dvw==}
cpu: [ia32]
os: [win32]
'@rollup/rollup-win32-x64-msvc@4.43.0':
resolution: {integrity: sha512-SnGhLiE5rlK0ofq8kzuDkM0g7FN1s5VYY+YSMTibP7CqShxCQvqtNxTARS4xX4PFJfHjG0ZQYX9iGzI3FQh5Aw==}
cpu: [x64]
os: [win32]
'@types/estree@1.0.7':
resolution: {integrity: sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==}
'@vant/popperjs@1.3.0':
resolution: {integrity: sha512-hB+czUG+aHtjhaEmCJDuXOep0YTZjdlRR+4MSmIFnkCQIxJaXLQdSsR90XWvAI2yvKUI7TCGqR8pQg2RtvkMHw==}
'@vant/use@1.6.0':
resolution: {integrity: sha512-PHHxeAASgiOpSmMjceweIrv2AxDZIkWXyaczksMoWvKV2YAYEhoizRuk/xFnKF+emUIi46TsQ+rvlm/t2BBCfA==}
peerDependencies:
vue: ^3.0.0
'@vitejs/plugin-vue@5.2.4':
resolution: {integrity: sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==}
engines: {node: ^18.0.0 || >=20.0.0}
peerDependencies:
vite: ^5.0.0 || ^6.0.0
vue: ^3.2.25
'@vue/compiler-core@3.5.16':
resolution: {integrity: sha512-AOQS2eaQOaaZQoL1u+2rCJIKDruNXVBZSiUD3chnUrsoX5ZTQMaCvXlWNIfxBJuU15r1o7+mpo5223KVtIhAgQ==}
'@vue/compiler-dom@3.5.16':
resolution: {integrity: sha512-SSJIhBr/teipXiXjmWOVWLnxjNGo65Oj/8wTEQz0nqwQeP75jWZ0n4sF24Zxoht1cuJoWopwj0J0exYwCJ0dCQ==}
'@vue/compiler-sfc@3.5.16':
resolution: {integrity: sha512-rQR6VSFNpiinDy/DVUE0vHoIDUF++6p910cgcZoaAUm3POxgNOOdS/xgoll3rNdKYTYPnnbARDCZOyZ+QSe6Pw==}
'@vue/compiler-ssr@3.5.16':
resolution: {integrity: sha512-d2V7kfxbdsjrDSGlJE7my1ZzCXViEcqN6w14DOsDrUCHEA6vbnVCpRFfrc4ryCP/lCKzX2eS1YtnLE/BuC9f/A==}
'@vue/devtools-api@6.6.4':
resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==}
'@vue/devtools-api@7.7.6':
resolution: {integrity: sha512-b2Xx0KvXZObePpXPYHvBRRJLDQn5nhKjXh7vUhMEtWxz1AYNFOVIsh5+HLP8xDGL7sy+Q7hXeUxPHB/KgbtsPw==}
'@vue/devtools-kit@7.7.6':
resolution: {integrity: sha512-geu7ds7tem2Y7Wz+WgbnbZ6T5eadOvozHZ23Atk/8tksHMFOFylKi1xgGlQlVn0wlkEf4hu+vd5ctj1G4kFtwA==}
'@vue/devtools-shared@7.7.6':
resolution: {integrity: sha512-yFEgJZ/WblEsojQQceuyK6FzpFDx4kqrz2ohInxNj5/DnhoX023upTv4OD6lNPLAA5LLkbwPVb10o/7b+Y4FVA==}
'@vue/reactivity@3.5.16':
resolution: {integrity: sha512-FG5Q5ee/kxhIm1p2bykPpPwqiUBV3kFySsHEQha5BJvjXdZTUfmya7wP7zC39dFuZAcf/PD5S4Lni55vGLMhvA==}
'@vue/runtime-core@3.5.16':
resolution: {integrity: sha512-bw5Ykq6+JFHYxrQa7Tjr+VSzw7Dj4ldR/udyBZbq73fCdJmyy5MPIFR9IX/M5Qs+TtTjuyUTCnmK3lWWwpAcFQ==}
'@vue/runtime-dom@3.5.16':
resolution: {integrity: sha512-T1qqYJsG2xMGhImRUV9y/RseB9d0eCYZQ4CWca9ztCuiPj/XWNNN+lkNBuzVbia5z4/cgxdL28NoQCvC0Xcfww==}
'@vue/server-renderer@3.5.16':
resolution: {integrity: sha512-BrX0qLiv/WugguGsnQUJiYOE0Fe5mZTwi6b7X/ybGB0vfrPH9z0gD/Y6WOR1sGCgX4gc25L1RYS5eYQKDMoNIg==}
peerDependencies:
vue: 3.5.16
'@vue/shared@3.5.16':
resolution: {integrity: sha512-c/0fWy3Jw6Z8L9FmTyYfkpM5zklnqqa9+a6dz3DvONRKW2NEbh46BP0FHuLFSWi2TnQEtp91Z6zOWNrU6QiyPg==}
birpc@2.3.0:
resolution: {integrity: sha512-ijbtkn/F3Pvzb6jHypHRyve2QApOCZDR25D/VnkY2G/lBNcXCTsnsCxgY4k4PkVB7zfwzYbY3O9Lcqe3xufS5g==}
buffer-builder@0.2.0:
resolution: {integrity: sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==}
colorjs.io@0.5.2:
resolution: {integrity: sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==}
copy-anything@3.0.5:
resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==}
engines: {node: '>=12.13'}
csstype@3.1.3:
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
entities@4.5.0:
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
engines: {node: '>=0.12'}
esbuild@0.25.5:
resolution: {integrity: sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==}
engines: {node: '>=18'}
hasBin: true
estree-walker@2.0.2:
resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
fdir@6.4.6:
resolution: {integrity: sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==}
peerDependencies:
picomatch: ^3 || ^4
peerDependenciesMeta:
picomatch:
optional: true
fsevents@2.3.3:
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
os: [darwin]
has-flag@4.0.0:
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
engines: {node: '>=8'}
hookable@5.5.3:
resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==}
immutable@5.1.3:
resolution: {integrity: sha512-+chQdDfvscSF1SJqv2gn4SRO2ZyS3xL3r7IW/wWEEzrzLisnOlKiQu5ytC/BVNcS15C39WT2Hg/bjKjDMcu+zg==}
is-what@4.1.16:
resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==}
engines: {node: '>=12.13'}
magic-string@0.30.17:
resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
mitt@3.0.1:
resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==}
nanoid@3.3.11:
resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
perfect-debounce@1.0.0:
resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==}
picocolors@1.1.1:
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
picomatch@4.0.2:
resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==}
engines: {node: '>=12'}
pinia@3.0.3:
resolution: {integrity: sha512-ttXO/InUULUXkMHpTdp9Fj4hLpD/2AoJdmAbAeW2yu1iy1k+pkFekQXw5VpC0/5p51IOR/jDaDRfRWRnMMsGOA==}
peerDependencies:
typescript: '>=4.4.4'
vue: ^2.7.0 || ^3.5.11
peerDependenciesMeta:
typescript:
optional: true
postcss@8.5.5:
resolution: {integrity: sha512-d/jtm+rdNT8tpXuHY5MMtcbJFBkhXE6593XVR9UoGCH8jSFGci7jGvMGH5RYd5PBJW+00NZQt6gf7CbagJCrhg==}
engines: {node: ^10 || ^12 || >=14}
rfdc@1.4.1:
resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==}
rollup@4.43.0:
resolution: {integrity: sha512-wdN2Kd3Twh8MAEOEJZsuxuLKCsBEo4PVNLK6tQWAn10VhsVewQLzcucMgLolRlhFybGxfclbPeEYBaP6RvUFGg==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
rxjs@7.8.2:
resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==}
sass-embedded-android-arm64@1.89.2:
resolution: {integrity: sha512-+pq7a7AUpItNyPu61sRlP6G2A8pSPpyazASb+8AK2pVlFayCSPAEgpwpCE9A2/Xj86xJZeMizzKUHxM2CBCUxA==}
engines: {node: '>=14.0.0'}
cpu: [arm64]
os: [android]
sass-embedded-android-arm@1.89.2:
resolution: {integrity: sha512-oHAPTboBHRZlDBhyRB6dvDKh4KvFs+DZibDHXbkSI6dBZxMTT+Yb2ivocHnctVGucKTLQeT7+OM5DjWHyynL/A==}
engines: {node: '>=14.0.0'}
cpu: [arm]
os: [android]
sass-embedded-android-riscv64@1.89.2:
resolution: {integrity: sha512-HfJJWp/S6XSYvlGAqNdakeEMPOdhBkj2s2lN6SHnON54rahKem+z9pUbCriUJfM65Z90lakdGuOfidY61R9TYg==}
engines: {node: '>=14.0.0'}
cpu: [riscv64]
os: [android]
sass-embedded-android-x64@1.89.2:
resolution: {integrity: sha512-BGPzq53VH5z5HN8de6jfMqJjnRe1E6sfnCWFd4pK+CAiuM7iw5Fx6BQZu3ikfI1l2GY0y6pRXzsVLdp/j4EKEA==}
engines: {node: '>=14.0.0'}
cpu: [x64]
os: [android]
sass-embedded-darwin-arm64@1.89.2:
resolution: {integrity: sha512-UCm3RL/tzMpG7DsubARsvGUNXC5pgfQvP+RRFJo9XPIi6elopY5B6H4m9dRYDpHA+scjVthdiDwkPYr9+S/KGw==}
engines: {node: '>=14.0.0'}
cpu: [arm64]
os: [darwin]
sass-embedded-darwin-x64@1.89.2:
resolution: {integrity: sha512-D9WxtDY5VYtMApXRuhQK9VkPHB8R79NIIR6xxVlN2MIdEid/TZWi1MHNweieETXhWGrKhRKglwnHxxyKdJYMnA==}
engines: {node: '>=14.0.0'}
cpu: [x64]
os: [darwin]
sass-embedded-linux-arm64@1.89.2:
resolution: {integrity: sha512-2N4WW5LLsbtrWUJ7iTpjvhajGIbmDR18ZzYRywHdMLpfdPApuHPMDF5CYzHbS+LLx2UAx7CFKBnj5LLjY6eFgQ==}
engines: {node: '>=14.0.0'}
cpu: [arm64]
os: [linux]
sass-embedded-linux-arm@1.89.2:
resolution: {integrity: sha512-leP0t5U4r95dc90o8TCWfxNXwMAsQhpWxTkdtySDpngoqtTy3miMd7EYNYd1znI0FN1CBaUvbdCMbnbPwygDlA==}
engines: {node: '>=14.0.0'}
cpu: [arm]
os: [linux]
sass-embedded-linux-musl-arm64@1.89.2:
resolution: {integrity: sha512-nTyuaBX6U1A/cG7WJh0pKD1gY8hbg1m2SnzsyoFG+exQ0lBX/lwTLHq3nyhF+0atv7YYhYKbmfz+sjPP8CZ9lw==}
engines: {node: '>=14.0.0'}
cpu: [arm64]
os: [linux]
sass-embedded-linux-musl-arm@1.89.2:
resolution: {integrity: sha512-Z6gG2FiVEEdxYHRi2sS5VIYBmp17351bWtOCUZ/thBM66+e70yiN6Eyqjz80DjL8haRUegNQgy9ZJqsLAAmr9g==}
engines: {node: '>=14.0.0'}
cpu: [arm]
os: [linux]
sass-embedded-linux-musl-riscv64@1.89.2:
resolution: {integrity: sha512-N6oul+qALO0SwGY8JW7H/Vs0oZIMrRMBM4GqX3AjM/6y8JsJRxkAwnfd0fDyK+aICMFarDqQonQNIx99gdTZqw==}
engines: {node: '>=14.0.0'}
cpu: [riscv64]
os: [linux]
sass-embedded-linux-musl-x64@1.89.2:
resolution: {integrity: sha512-K+FmWcdj/uyP8GiG9foxOCPfb5OAZG0uSVq80DKgVSC0U44AdGjvAvVZkrgFEcZ6cCqlNC2JfYmslB5iqdL7tg==}
engines: {node: '>=14.0.0'}
cpu: [x64]
os: [linux]
sass-embedded-linux-riscv64@1.89.2:
resolution: {integrity: sha512-g9nTbnD/3yhOaskeqeBQETbtfDQWRgsjHok6bn7DdAuwBsyrR3JlSFyqKc46pn9Xxd9SQQZU8AzM4IR+sY0A0w==}
engines: {node: '>=14.0.0'}
cpu: [riscv64]
os: [linux]
sass-embedded-linux-x64@1.89.2:
resolution: {integrity: sha512-Ax7dKvzncyQzIl4r7012KCMBvJzOz4uwSNoyoM5IV6y5I1f5hEwI25+U4WfuTqdkv42taCMgpjZbh9ERr6JVMQ==}
engines: {node: '>=14.0.0'}
cpu: [x64]
os: [linux]
sass-embedded-win32-arm64@1.89.2:
resolution: {integrity: sha512-j96iJni50ZUsfD6tRxDQE2QSYQ2WrfHxeiyAXf41Kw0V4w5KYR/Sf6rCZQLMTUOHnD16qTMVpQi20LQSqf4WGg==}
engines: {node: '>=14.0.0'}
cpu: [arm64]
os: [win32]
sass-embedded-win32-x64@1.89.2:
resolution: {integrity: sha512-cS2j5ljdkQsb4PaORiClaVYynE9OAPZG/XjbOMxpQmjRIf7UroY4PEIH+Waf+y47PfXFX9SyxhYuw2NIKGbEng==}
engines: {node: '>=14.0.0'}
cpu: [x64]
os: [win32]
sass-embedded@1.89.2:
resolution: {integrity: sha512-Ack2K8rc57kCFcYlf3HXpZEJFNUX8xd8DILldksREmYXQkRHI879yy8q4mRDJgrojkySMZqmmmW1NxrFxMsYaA==}
engines: {node: '>=16.0.0'}
hasBin: true
source-map-js@1.2.1:
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
engines: {node: '>=0.10.0'}
speakingurl@14.0.1:
resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==}
engines: {node: '>=0.10.0'}
superjson@2.2.2:
resolution: {integrity: sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==}
engines: {node: '>=16'}
supports-color@8.1.1:
resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==}
engines: {node: '>=10'}
swiper@11.2.8:
resolution: {integrity: sha512-S5FVf6zWynPWooi7pJ7lZhSUe2snTzqLuUzbd5h5PHUOhzgvW0bLKBd2wv0ixn6/5o9vwc/IkQT74CRcLJQzeg==}
engines: {node: '>= 4.7.0'}
sync-child-process@1.0.2:
resolution: {integrity: sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==}
engines: {node: '>=16.0.0'}
sync-message-port@1.1.3:
resolution: {integrity: sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg==}
engines: {node: '>=16.0.0'}
tinyglobby@0.2.14:
resolution: {integrity: sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==}
engines: {node: '>=12.0.0'}
tslib@2.8.1:
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
vant@4.9.19:
resolution: {integrity: sha512-fRt32XI0fO0vB3/YGhZOpTnHKjplUiNuA05yZy8rPZntmbQE5GA57Y7iC7jmMDxSOaLebovynhgCvWnyk9zmDw==}
peerDependencies:
vue: ^3.0.0
varint@6.0.0:
resolution: {integrity: sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==}
vite@6.3.5:
resolution: {integrity: sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==}
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
hasBin: true
peerDependencies:
'@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0
jiti: '>=1.21.0'
less: '*'
lightningcss: ^1.21.0
sass: '*'
sass-embedded: '*'
stylus: '*'
sugarss: '*'
terser: ^5.16.0
tsx: ^4.8.1
yaml: ^2.4.2
peerDependenciesMeta:
'@types/node':
optional: true
jiti:
optional: true
less:
optional: true
lightningcss:
optional: true
sass:
optional: true
sass-embedded:
optional: true
stylus:
optional: true
sugarss:
optional: true
terser:
optional: true
tsx:
optional: true
yaml:
optional: true
vue-i18n@9.14.4:
resolution: {integrity: sha512-B934C8yUyWLT0EMud3DySrwSUJI7ZNiWYsEEz2gknTthqKiG4dzWE/WSa8AzCuSQzwBEv4HtG1jZDhgzPfWSKQ==}
engines: {node: '>= 16'}
peerDependencies:
vue: ^3.0.0
vue-router@4.5.1:
resolution: {integrity: sha512-ogAF3P97NPm8fJsE4by9dwSYtDwXIY1nFY9T6DyQnGHd1E2Da94w9JIolpe42LJGIl0DwOHBi8TcRPlPGwbTtw==}
peerDependencies:
vue: ^3.2.0
vue@3.5.16:
resolution: {integrity: sha512-rjOV2ecxMd5SiAmof2xzh2WxntRcigkX/He4YFJ6WdRvVUrbt6DxC1Iujh10XLl8xCDRDtGKMeO3D+pRQ1PP9w==}
peerDependencies:
typescript: '*'
peerDependenciesMeta:
typescript:
optional: true
snapshots:
'@babel/helper-string-parser@7.27.1': {}
'@babel/helper-validator-identifier@7.27.1': {}
'@babel/parser@7.27.5':
dependencies:
'@babel/types': 7.27.6
'@babel/types@7.27.6':
dependencies:
'@babel/helper-string-parser': 7.27.1
'@babel/helper-validator-identifier': 7.27.1
'@bufbuild/protobuf@2.5.2': {}
'@esbuild/aix-ppc64@0.25.5':
optional: true
'@esbuild/android-arm64@0.25.5':
optional: true
'@esbuild/android-arm@0.25.5':
optional: true
'@esbuild/android-x64@0.25.5':
optional: true
'@esbuild/darwin-arm64@0.25.5':
optional: true
'@esbuild/darwin-x64@0.25.5':
optional: true
'@esbuild/freebsd-arm64@0.25.5':
optional: true
'@esbuild/freebsd-x64@0.25.5':
optional: true
'@esbuild/linux-arm64@0.25.5':
optional: true
'@esbuild/linux-arm@0.25.5':
optional: true
'@esbuild/linux-ia32@0.25.5':
optional: true
'@esbuild/linux-loong64@0.25.5':
optional: true
'@esbuild/linux-mips64el@0.25.5':
optional: true
'@esbuild/linux-ppc64@0.25.5':
optional: true
'@esbuild/linux-riscv64@0.25.5':
optional: true
'@esbuild/linux-s390x@0.25.5':
optional: true
'@esbuild/linux-x64@0.25.5':
optional: true
'@esbuild/netbsd-arm64@0.25.5':
optional: true
'@esbuild/netbsd-x64@0.25.5':
optional: true
'@esbuild/openbsd-arm64@0.25.5':
optional: true
'@esbuild/openbsd-x64@0.25.5':
optional: true
'@esbuild/sunos-x64@0.25.5':
optional: true
'@esbuild/win32-arm64@0.25.5':
optional: true
'@esbuild/win32-ia32@0.25.5':
optional: true
'@esbuild/win32-x64@0.25.5':
optional: true
'@intlify/core-base@9.14.4':
dependencies:
'@intlify/message-compiler': 9.14.4
'@intlify/shared': 9.14.4
'@intlify/message-compiler@9.14.4':
dependencies:
'@intlify/shared': 9.14.4
source-map-js: 1.2.1
'@intlify/shared@9.14.4': {}
'@jridgewell/sourcemap-codec@1.5.0': {}
'@rollup/rollup-android-arm-eabi@4.43.0':
optional: true
'@rollup/rollup-android-arm64@4.43.0':
optional: true
'@rollup/rollup-darwin-arm64@4.43.0':
optional: true
'@rollup/rollup-darwin-x64@4.43.0':
optional: true
'@rollup/rollup-freebsd-arm64@4.43.0':
optional: true
'@rollup/rollup-freebsd-x64@4.43.0':
optional: true
'@rollup/rollup-linux-arm-gnueabihf@4.43.0':
optional: true
'@rollup/rollup-linux-arm-musleabihf@4.43.0':
optional: true
'@rollup/rollup-linux-arm64-gnu@4.43.0':
optional: true
'@rollup/rollup-linux-arm64-musl@4.43.0':
optional: true
'@rollup/rollup-linux-loongarch64-gnu@4.43.0':
optional: true
'@rollup/rollup-linux-powerpc64le-gnu@4.43.0':
optional: true
'@rollup/rollup-linux-riscv64-gnu@4.43.0':
optional: true
'@rollup/rollup-linux-riscv64-musl@4.43.0':
optional: true
'@rollup/rollup-linux-s390x-gnu@4.43.0':
optional: true
'@rollup/rollup-linux-x64-gnu@4.43.0':
optional: true
'@rollup/rollup-linux-x64-musl@4.43.0':
optional: true
'@rollup/rollup-win32-arm64-msvc@4.43.0':
optional: true
'@rollup/rollup-win32-ia32-msvc@4.43.0':
optional: true
'@rollup/rollup-win32-x64-msvc@4.43.0':
optional: true
'@types/estree@1.0.7': {}
'@vant/popperjs@1.3.0': {}
'@vant/use@1.6.0(vue@3.5.16)':
dependencies:
vue: 3.5.16
'@vitejs/plugin-vue@5.2.4(vite@6.3.5(sass-embedded@1.89.2))(vue@3.5.16)':
dependencies:
vite: 6.3.5(sass-embedded@1.89.2)
vue: 3.5.16
'@vue/compiler-core@3.5.16':
dependencies:
'@babel/parser': 7.27.5
'@vue/shared': 3.5.16
entities: 4.5.0
estree-walker: 2.0.2
source-map-js: 1.2.1
'@vue/compiler-dom@3.5.16':
dependencies:
'@vue/compiler-core': 3.5.16
'@vue/shared': 3.5.16
'@vue/compiler-sfc@3.5.16':
dependencies:
'@babel/parser': 7.27.5
'@vue/compiler-core': 3.5.16
'@vue/compiler-dom': 3.5.16
'@vue/compiler-ssr': 3.5.16
'@vue/shared': 3.5.16
estree-walker: 2.0.2
magic-string: 0.30.17
postcss: 8.5.5
source-map-js: 1.2.1
'@vue/compiler-ssr@3.5.16':
dependencies:
'@vue/compiler-dom': 3.5.16
'@vue/shared': 3.5.16
'@vue/devtools-api@6.6.4': {}
'@vue/devtools-api@7.7.6':
dependencies:
'@vue/devtools-kit': 7.7.6
'@vue/devtools-kit@7.7.6':
dependencies:
'@vue/devtools-shared': 7.7.6
birpc: 2.3.0
hookable: 5.5.3
mitt: 3.0.1
perfect-debounce: 1.0.0
speakingurl: 14.0.1
superjson: 2.2.2
'@vue/devtools-shared@7.7.6':
dependencies:
rfdc: 1.4.1
'@vue/reactivity@3.5.16':
dependencies:
'@vue/shared': 3.5.16
'@vue/runtime-core@3.5.16':
dependencies:
'@vue/reactivity': 3.5.16
'@vue/shared': 3.5.16
'@vue/runtime-dom@3.5.16':
dependencies:
'@vue/reactivity': 3.5.16
'@vue/runtime-core': 3.5.16
'@vue/shared': 3.5.16
csstype: 3.1.3
'@vue/server-renderer@3.5.16(vue@3.5.16)':
dependencies:
'@vue/compiler-ssr': 3.5.16
'@vue/shared': 3.5.16
vue: 3.5.16
'@vue/shared@3.5.16': {}
birpc@2.3.0: {}
buffer-builder@0.2.0: {}
colorjs.io@0.5.2: {}
copy-anything@3.0.5:
dependencies:
is-what: 4.1.16
csstype@3.1.3: {}
entities@4.5.0: {}
esbuild@0.25.5:
optionalDependencies:
'@esbuild/aix-ppc64': 0.25.5
'@esbuild/android-arm': 0.25.5
'@esbuild/android-arm64': 0.25.5
'@esbuild/android-x64': 0.25.5
'@esbuild/darwin-arm64': 0.25.5
'@esbuild/darwin-x64': 0.25.5
'@esbuild/freebsd-arm64': 0.25.5
'@esbuild/freebsd-x64': 0.25.5
'@esbuild/linux-arm': 0.25.5
'@esbuild/linux-arm64': 0.25.5
'@esbuild/linux-ia32': 0.25.5
'@esbuild/linux-loong64': 0.25.5
'@esbuild/linux-mips64el': 0.25.5
'@esbuild/linux-ppc64': 0.25.5
'@esbuild/linux-riscv64': 0.25.5
'@esbuild/linux-s390x': 0.25.5
'@esbuild/linux-x64': 0.25.5
'@esbuild/netbsd-arm64': 0.25.5
'@esbuild/netbsd-x64': 0.25.5
'@esbuild/openbsd-arm64': 0.25.5
'@esbuild/openbsd-x64': 0.25.5
'@esbuild/sunos-x64': 0.25.5
'@esbuild/win32-arm64': 0.25.5
'@esbuild/win32-ia32': 0.25.5
'@esbuild/win32-x64': 0.25.5
estree-walker@2.0.2: {}
fdir@6.4.6(picomatch@4.0.2):
optionalDependencies:
picomatch: 4.0.2
fsevents@2.3.3:
optional: true
has-flag@4.0.0: {}
hookable@5.5.3: {}
immutable@5.1.3: {}
is-what@4.1.16: {}
magic-string@0.30.17:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.0
mitt@3.0.1: {}
nanoid@3.3.11: {}
perfect-debounce@1.0.0: {}
picocolors@1.1.1: {}
picomatch@4.0.2: {}
pinia@3.0.3(vue@3.5.16):
dependencies:
'@vue/devtools-api': 7.7.6
vue: 3.5.16
postcss@8.5.5:
dependencies:
nanoid: 3.3.11
picocolors: 1.1.1
source-map-js: 1.2.1
rfdc@1.4.1: {}
rollup@4.43.0:
dependencies:
'@types/estree': 1.0.7
optionalDependencies:
'@rollup/rollup-android-arm-eabi': 4.43.0
'@rollup/rollup-android-arm64': 4.43.0
'@rollup/rollup-darwin-arm64': 4.43.0
'@rollup/rollup-darwin-x64': 4.43.0
'@rollup/rollup-freebsd-arm64': 4.43.0
'@rollup/rollup-freebsd-x64': 4.43.0
'@rollup/rollup-linux-arm-gnueabihf': 4.43.0
'@rollup/rollup-linux-arm-musleabihf': 4.43.0
'@rollup/rollup-linux-arm64-gnu': 4.43.0
'@rollup/rollup-linux-arm64-musl': 4.43.0
'@rollup/rollup-linux-loongarch64-gnu': 4.43.0
'@rollup/rollup-linux-powerpc64le-gnu': 4.43.0
'@rollup/rollup-linux-riscv64-gnu': 4.43.0
'@rollup/rollup-linux-riscv64-musl': 4.43.0
'@rollup/rollup-linux-s390x-gnu': 4.43.0
'@rollup/rollup-linux-x64-gnu': 4.43.0
'@rollup/rollup-linux-x64-musl': 4.43.0
'@rollup/rollup-win32-arm64-msvc': 4.43.0
'@rollup/rollup-win32-ia32-msvc': 4.43.0
'@rollup/rollup-win32-x64-msvc': 4.43.0
fsevents: 2.3.3
rxjs@7.8.2:
dependencies:
tslib: 2.8.1
sass-embedded-android-arm64@1.89.2:
optional: true
sass-embedded-android-arm@1.89.2:
optional: true
sass-embedded-android-riscv64@1.89.2:
optional: true
sass-embedded-android-x64@1.89.2:
optional: true
sass-embedded-darwin-arm64@1.89.2:
optional: true
sass-embedded-darwin-x64@1.89.2:
optional: true
sass-embedded-linux-arm64@1.89.2:
optional: true
sass-embedded-linux-arm@1.89.2:
optional: true
sass-embedded-linux-musl-arm64@1.89.2:
optional: true
sass-embedded-linux-musl-arm@1.89.2:
optional: true
sass-embedded-linux-musl-riscv64@1.89.2:
optional: true
sass-embedded-linux-musl-x64@1.89.2:
optional: true
sass-embedded-linux-riscv64@1.89.2:
optional: true
sass-embedded-linux-x64@1.89.2:
optional: true
sass-embedded-win32-arm64@1.89.2:
optional: true
sass-embedded-win32-x64@1.89.2:
optional: true
sass-embedded@1.89.2:
dependencies:
'@bufbuild/protobuf': 2.5.2
buffer-builder: 0.2.0
colorjs.io: 0.5.2
immutable: 5.1.3
rxjs: 7.8.2
supports-color: 8.1.1
sync-child-process: 1.0.2
varint: 6.0.0
optionalDependencies:
sass-embedded-android-arm: 1.89.2
sass-embedded-android-arm64: 1.89.2
sass-embedded-android-riscv64: 1.89.2
sass-embedded-android-x64: 1.89.2
sass-embedded-darwin-arm64: 1.89.2
sass-embedded-darwin-x64: 1.89.2
sass-embedded-linux-arm: 1.89.2
sass-embedded-linux-arm64: 1.89.2
sass-embedded-linux-musl-arm: 1.89.2
sass-embedded-linux-musl-arm64: 1.89.2
sass-embedded-linux-musl-riscv64: 1.89.2
sass-embedded-linux-musl-x64: 1.89.2
sass-embedded-linux-riscv64: 1.89.2
sass-embedded-linux-x64: 1.89.2
sass-embedded-win32-arm64: 1.89.2
sass-embedded-win32-x64: 1.89.2
source-map-js@1.2.1: {}
speakingurl@14.0.1: {}
superjson@2.2.2:
dependencies:
copy-anything: 3.0.5
supports-color@8.1.1:
dependencies:
has-flag: 4.0.0
swiper@11.2.8: {}
sync-child-process@1.0.2:
dependencies:
sync-message-port: 1.1.3
sync-message-port@1.1.3: {}
tinyglobby@0.2.14:
dependencies:
fdir: 6.4.6(picomatch@4.0.2)
picomatch: 4.0.2
tslib@2.8.1: {}
vant@4.9.19(vue@3.5.16):
dependencies:
'@vant/popperjs': 1.3.0
'@vant/use': 1.6.0(vue@3.5.16)
'@vue/shared': 3.5.16
vue: 3.5.16
varint@6.0.0: {}
vite@6.3.5(sass-embedded@1.89.2):
dependencies:
esbuild: 0.25.5
fdir: 6.4.6(picomatch@4.0.2)
picomatch: 4.0.2
postcss: 8.5.5
rollup: 4.43.0
tinyglobby: 0.2.14
optionalDependencies:
fsevents: 2.3.3
sass-embedded: 1.89.2
vue-i18n@9.14.4(vue@3.5.16):
dependencies:
'@intlify/core-base': 9.14.4
'@intlify/shared': 9.14.4
'@vue/devtools-api': 6.6.4
vue: 3.5.16
vue-router@4.5.1(vue@3.5.16):
dependencies:
'@vue/devtools-api': 6.6.4
vue: 3.5.16
vue@3.5.16:
dependencies:
'@vue/compiler-dom': 3.5.16
'@vue/compiler-sfc': 3.5.16
'@vue/runtime-dom': 3.5.16
'@vue/server-renderer': 3.5.16(vue@3.5.16)
'@vue/shared': 3.5.16
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
\ No newline at end of file
<script setup>
// 只需要渲染路由页面
</script>
<template>
<router-view />
</template>
<style scoped>
</style>
This file is too large to display.
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="37.07" height="36" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 198"><path fill="#41B883" d="M204.8 0H256L128 220.8L0 0h97.92L128 51.2L157.44 0h47.36Z"></path><path fill="#41B883" d="m0 0l128 220.8L256 0h-51.2L128 132.48L50.56 0H0Z"></path><path fill="#35495E" d="M50.56 0L128 133.12L204.8 0h-47.36L128 51.2L97.92 0H50.56Z"></path></svg>
\ No newline at end of file
\ No newline at end of file
<template>
<header class="home-header" :class="{ 'rtl': currentLang === 'ar' }">
<img
src="@/assets/common/logo.png"
class="logo"
:alt="$t('nav.home')"
@click="goTab(0, tabs[0])"
:class="{ 'logo-rtl': currentLang === 'ar' }"
/>
<nav class="nav">
<a
v-for="(tab, idx) in tabs"
:key="tab.path"
class="nav-link"
:class="{ active: store.index === idx }"
@click="goTab(idx, tab)"
>{{ $t(tab.name) }}</a
>
</nav>
<div class="header-actions">
<!-- <button class="topup-btn">Top-Up</button> -->
<div class="lang-select">
<div class="lang-btn" @click="toggleLangDropdown">
<span class="lang-btn-label">{{
langList.find((l) => l.value === currentLang)?.label
}}</span>
</div>
<transition name="fade">
<div v-if="showLang" class="lang-dropdown">
<div
v-for="lang in langList"
:key="lang.value"
class="lang-item"
:class="{ active: currentLang === lang.value }"
@click="selectLang(lang.value)"
>
{{ lang.label }}
</div>
</div>
</transition>
</div>
</div>
</header>
</template>
<script setup>
import { useCommonStore } from "@/store/commonStore";
import { useRoute, useRouter } from "vue-router";
import { ref, watch, onMounted } from "vue";
import { useI18n } from 'vue-i18n';
const { t, locale } = useI18n();
const store = useCommonStore();
const route = useRoute();
const router = useRouter();
const tabs = [
{ name: "nav.home", path: "/" },
{ name: "nav.about", path: "/about" },
{ name: "nav.leadership", path: "/leadership" },
{ name: "nav.contact", path: "/contact" },
];
function goTab(idx, tab) {
store.setIndex(idx);
router.push(tab.path);
}
function updateIndexByRoute() {
const idx = tabs.findIndex((tab) => tab.path === route.path);
store.setIndex(idx === -1 ? 0 : idx);
}
watch(() => route.path, updateIndexByRoute, { immediate: true });
onMounted(updateIndexByRoute);
const langList = [
{ label: t('nav.english'), value: "en" },
{ label: t('nav.arabic'), value: "ar" },
];
const showLang = ref(false);
const currentLang = ref(locale.value);
function toggleLangDropdown() {
showLang.value = !showLang.value;
}
function selectLang(val) {
locale.value = val;
currentLang.value = val;
showLang.value = false;
document.dir = val === 'ar' ? 'rtl' : 'ltr';
localStorage.setItem('language', val);
}
watch(locale, (val) => {
currentLang.value = val;
});
</script>
<style scoped>
.home-header {
position: sticky;
top: 0;
display: flex;
align-items: center;
justify-content: space-between;
/* width: 100vw; */
height: 98px;
flex-shrink: 0;
padding-left: 500px;
padding-right: 98px;
background: #000;
z-index: 10;
}
.logo {
position: absolute;
left: 0;
bottom: 0;
height: 78px;
cursor: pointer;
transition: left 0.3s, right 0.3s;
}
/* RTL 适配 */
.home-header.rtl {
padding-left: 98px;
padding-right: 500px;
}
.logo-rtl {
left: auto !important;
right: 0;
}
.nav {
display: flex;
gap: 120px;
}
.nav-link {
color: #fff;
font-size: 20px;
font-weight: 500;
text-decoration: none;
padding-bottom: 4px;
border-bottom: 2px solid transparent;
transition: border-color 0.2s;
cursor: pointer;
}
.nav-link.active {
color: #fff;
border-bottom: 4px solid #a259ff;
}
.header-actions {
display: flex;
align-items: center;
gap: 16px;
transition: margin 0.3s;
}
.rtl .header-actions {
margin-right: auto;
margin-left: 0;
}
.topup-btn {
background: #a259ff;
color: #fff;
border: none;
border-radius: 20px;
padding: 8px 24px;
font-size: 18px;
font-weight: 600;
cursor: pointer;
margin-right: 8px;
}
.lang-select {
position: relative;
}
.lang-btn {
width: 142px;
height: 58px;
/* padding: 16px 0 15px 17px; */
padding-left: 17px;
padding-top: 13px;
background-image: url("@/assets/common/language.png");
background-repeat: no-repeat;
background-size: cover;
cursor: pointer;
text-align: left;
}
.rtl .lang-btn {
padding-left: 17px;
padding-right: 17px;
}
.lang-btn-label {
z-index: 1;
font-family: Microsoft YaHei, Microsoft YaHei;
font-weight: 600;
font-size: 20px;
color: #ffffff;
text-align: center;
font-style: normal;
text-transform: none;
background: linear-gradient(90deg, #c22fff 0%, #8b17ff 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
text-fill-color: transparent;
}
.lang-dropdown {
position: absolute;
top: 56px;
right: 0;
min-width: 160px;
background: #e9eef7;
border-radius: 16px;
box-shadow: 0 8px 32px 0 rgba(24, 31, 43, 0.18);
padding: 18px 0 10px 0;
display: flex;
flex-direction: column;
z-index: 100;
border: 1px solid #e0e0e0;
}
.rtl .lang-dropdown {
right: auto;
left: 0;
}
.lang-item {
font-size: 22px;
color: #181f2b;
font-weight: 500;
padding: 12px 32px;
cursor: pointer;
border-radius: 8px;
transition: background 0.2s;
text-align: left;
}
.lang-item.active,
.lang-item:hover {
background: #f3eaff;
color: #a259ff;
}
.fade-enter-active,
.fade-leave-active {
transition: opacity 0.2s;
}
.fade-enter-from,
.fade-leave-to {
opacity: 0;
}
</style>
\ No newline at end of file
\ No newline at end of file
<template>
<div class="lang-selector">
<van-dropdown-menu>
<van-dropdown-item v-model="lang" :options="options" @change="changeLang" />
</van-dropdown-menu>
</div>
</template>
<script setup>
import { ref } from 'vue'
import { useI18n } from 'vue-i18n'
const { locale } = useI18n()
const lang = ref(locale.value)
const options = [
{ text: 'English', value: 'en' },
{ text: 'العربية', value: 'ar' }
]
function changeLang(val) {
locale.value = val
lang.value = val
document.dir = val === 'ar' ? 'rtl' : 'ltr'
}
</script>
<style scoped>
.lang-selector {
min-width: 100px;
}
</style>
\ No newline at end of file
export default {
nav: {
home: 'الرئيسية',
about: 'عن ياحبي',
leadership: 'قيادتنا',
contact: 'اتصل بنا',
topup: 'شحن الرصيد',
english: 'English',
arabic: 'العربية',
},
home: {
title: 'الأصوات تتحد<br />الحدود تشتعل!',
subtitle: 'الفرح يوحد الآن: ياحبي~',
desc: 'تعرف علينا واستمتع أكثر، تعرف علينا واستمتع أكثر، تعرف علينا واستمتع أكثر،',
google: 'جوجل بلاي',
appstore: 'آب ستور',
},
about: {
join: 'انضم إلينا معًا!',
slides: [
{
desc1: 'تعرف علينا واستمتع أكثر',
title: 'لوحة عالمية، ألوانك المحلية',
desc2: 'مجتمع ياحبي – حيث تتقاطع أنماط الحياة! كن راويًا ثقافيًا. شارك جواهر السوق المخفية، وصفات التمر بلمسة الجدة، أو غروب الشمس في وادي رم.'
},
{
desc1: 'تعرف علينا واستمتع أكثر',
title: 'البطاقات تجمع الثقافات',
desc2: 'منطقة الألعاب: حيث تنبض ألعاب المينا المفضلة بالحياة! ألعاب عربية أصيلة: تحد أصدقاءك في بطولات البلوت، وتفوق على منافسيك في تريكس بليتز أو ماراثونات الدومينو – التقاليد تلتقي التقنية!'
},
{
desc1: 'تعرف علينا واستمتع أكثر',
title: 'حيث يلتقي الشرق الأوسط',
desc2: 'ادخل غرف الصوت في ياحبي – بوابتك إلى العالم العربي! 🎧 دردش مباشرة مع مستخدمين من 22 دولة عربية، من حكايات المغرب إلى شبكات الأعمال الخليجية. اكتشف نبض المينا من خلال الأصوات!'
}
],
google: 'جوجل بلاي',
appstore: 'آب ستور',
},
leadership: {
title: 'فريق القيادة <span class="highlight">الخاصة بنا</span>',
name: 'الاسم',
position: 'المنصب',
team_intro: 'مقدمة الفريق',
team_desc1: 'تعرف علينا واستمتع أكثر، تعرف علينا واستمتع أكثر، تعرف علينا واستمتع أكثر، تعرف علينا واستمتع أكثر. لتعرف علينا واستمتع أكثر.',
team_desc2: 'تعرف علينا واستمتع أكثر، تعرف علينا واستمتع أكثر، تعرف علينا واستمتع أكثر',
},
contact: {
title: 'انضم إلى عائلتنا الكبيرة',
desc: 'كوّن صداقات جديدة هنا واختبر المزيد من طرق اللعب الجديدة',
google: 'جوجل بلاي',
appstore: 'آب ستور',
yahabbi: 'ياحبي',
focus: 'نحن نركز على الدردشة عبر الإنترنت!',
contactus: 'اتصل بنا',
email: '1234567@QQ.COM',
phone: '12345678912',
topup: 'شحن الرصيد',
recharge: 'مدخل الشحن',
download: 'تنزيل',
android: 'أندرويد',
apple: 'نظام أبل',
copyright: 'جميع الحقوق محفوظة..................',
aboutus: 'معلومات عنا',
terms: 'شروط الخدمة',
privacy: 'سياسة الخصوصية'
}
}
\ No newline at end of file
export default {
nav: {
home: 'Home',
about: 'About Yahabbi',
leadership: 'Our Leadership',
contact: 'Contact Us',
topup: 'Top-Up',
english: 'English',
arabic: 'العربية',
},
home: {
title: 'VOICES UNITE<br />BORDERS IGNITE!',
subtitle: 'Joy Unites Now: Yahabbi~',
desc: 'Get To Know Us And Have More Fun,Get To Know Us And Have More Fun,Get To Know Us And Have More Fun,',
google: 'GOOGLE PLAY',
appstore: 'APP STORE',
},
about: {
join: 'JOIN US TOGETHER!',
slides: [
{
desc1: 'Get To Know Us And Have More Fun',
title: 'GLOBAL CANVAS, YOUR LOCAL COLORS',
desc2: 'YAHABBI Community – Where Lifestyles Cross-Pollinate! Be A Cultural Storyteller. Share Hidden Souk Gems, Date Recipes With Grandma\'s Touch, Or That Sunset In Wadi Rum.'
},
{
desc1: 'Get To Know Us And Have More Fun',
title: 'CARDS CONNECT CULTURES',
desc2: 'Platform] Game Zone: Where MENA\'s Favorite Games Come Alive! Authentic Arab Games: Challenge Friends In Baloot Championships, Outsmart Rivals In Trix Blitz, Or Dominoes Marathons – Tradition Meets Tech!'
},
{
desc1: 'Get To Know Us And Have More Fun',
title: 'WHERE THE MIDDLE EAST CONNECTS',
desc2: 'Dive Into YAHABBI\'s Voice Rooms – Your Gateway To The Arab World! 🎧 Chat LIVE With Users Across 22 Arab Nations, From Maghreb Storytelling To Gulf Business Networking. Unlock The Heartbeat Of MENA Culture Through Voices!'
}
],
google: 'GOOGLE PLAY',
appstore: 'APP STORE',
},
leadership: {
title: 'OUR <span class="highlight">LEADERSHIP TEAM</span>',
name: 'NAME',
position: 'POSITION',
team_intro: 'TEAM INTRODUCTION',
team_desc1: 'Get To Know Us And Have More Fun,Get To Know Us And Have More Fun,Get To Know Us And Have More Fun,Get To Know Us And Have More Fun.To Know Us And Have More Fun.',
team_desc2: 'Get To Know Us And Have More Fun,Get To Know Us And Have More Fun,Get To Know Us And Have More Fun',
},
contact: {
title: 'COME AND <span class="highlight">JOIN OUR</span> <br />BIG FAMILY',
desc: 'Make More New Friends Here And Experience More Novel Gameplay',
google: 'GOOGLE PLAY',
appstore: 'APP STORE',
yahabbi: 'YAHABBI',
focus: 'We Focus On Online Chat !',
contactus: 'CONTACT US',
email: '1234567@QQ.COM',
phone: '12345678912',
topup: 'Top-Up',
recharge: 'RECHARGE ENTRY',
download: 'Download',
android: 'ANDROID',
apple: 'APPLE SYSTEM',
copyright: '版权所有信息..................',
aboutus: 'ABOUT US',
terms: 'TERMS OF SERVICE',
privacy: 'PRIVACY POLICY'
}
}
\ No newline at end of file
import en from './en'
import ar from './ar'
export default {
en,
ar
}
\ No newline at end of file
import { createApp } from 'vue'
import { createPinia } from 'pinia'
import { createI18n } from 'vue-i18n'
import Vant from 'vant'
import App from './App.vue'
import router from './router'
import messages from './locales'
import 'vant/lib/index.css'
import './style.css'
// Get saved language from localStorage or default to 'en'
const savedLanguage = localStorage.getItem('language') || 'en'
// Set document direction based on language
document.dir = savedLanguage === 'ar' ? 'rtl' : 'ltr'
const i18n = createI18n({
legacy: false,
locale: savedLanguage,
messages,
})
const app = createApp(App)
const pinia = createPinia()
app.use(pinia)
app.use(router)
app.use(i18n)
app.use(Vant)
app.mount('#app')
import { createRouter, createWebHistory } from 'vue-router'
const routes = [
{
path: '/',
name: 'Home',
component: () => import('../views/Home.vue')
},
{
path: '/about',
name: 'About',
component: () => import('../views/About.vue')
},
{
path: '/leadership',
name: 'Leadership',
component: () => import('../views/Leadership.vue')
},
{
path: '/contact',
name: 'Contact',
component: () => import('../views/Contact.vue')
}
]
const router = createRouter({
history: createWebHistory(),
routes,
})
export default router
\ No newline at end of file
import { defineStore } from 'pinia'
export const useCommonStore = defineStore('common', {
state: () => ({
index: 0
}),
actions: {
setIndex(val) {
this.index = val
}
}
})
\ No newline at end of file
/* modern-css-reset v1.4.0 | MIT License | https://github.com/hankchizljaw/modern-css-reset */
/* Document
========================================================================== */
html {
box-sizing: border-box;
-webkit-text-size-adjust: 100%;
-ms-text-size-adjust: 100%;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
*, *::before, *::after {
box-sizing: inherit;
}
/* Sections
========================================================================== */
body {
margin: 0;
padding: 0;
font-family: system-ui, Avenir, Helvetica, Arial, sans-serif;
font-size: 16px;
line-height: 1.5;
background: #fff;
color: #222;
}
main {
display: block;
}
/* Grouping content
========================================================================== */
hr {
box-sizing: content-box;
height: 0;
overflow: visible;
}
pre {
font-family: monospace, monospace;
font-size: 1em;
}
/* Text-level semantics
========================================================================== */
a {
background-color: transparent;
color: inherit;
text-decoration: none;
}
abbr[title] {
border-bottom: none;
text-decoration: underline dotted;
}
b,
strong {
font-weight: bolder;
}
code,
kbd,
samp {
font-family: monospace, monospace;
font-size: 1em;
}
small {
font-size: 80%;
}
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
/* Embedded content
========================================================================== */
img {
border-style: none;
max-width: 100%;
display: block;
}
/* Forms
========================================================================== */
button,
input,
optgroup,
select,
textarea {
font-family: inherit;
font-size: 100%;
line-height: 1.15;
margin: 0;
}
button,
input {
overflow: visible;
}
button,
select {
text-transform: none;
}
button,
[type="button"],
[type="reset"],
[type="submit"] {
-webkit-appearance: button;
}
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
border-style: none;
padding: 0;
}
button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
outline: 1px dotted ButtonText;
}
fieldset {
padding: 0.35em 0.75em 0.625em;
}
legend {
box-sizing: border-box;
color: inherit;
display: table;
max-width: 100%;
padding: 0;
white-space: normal;
}
progress {
vertical-align: baseline;
}
textarea {
overflow: auto;
}
[type="checkbox"],
[type="radio"] {
box-sizing: border-box;
padding: 0;
}
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}
[type="search"] {
-webkit-appearance: textfield;
outline-offset: -2px;
}
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
::-webkit-file-upload-button {
-webkit-appearance: button;
font: inherit;
}
/* Interactive
========================================================================== */
details {
display: block;
}
summary {
display: list-item;
}
/* Misc
========================================================================== */
template {
display: none;
}
[hidden] {
display: none;
}
/* Remove all animations and transitions for people that prefer not to see them */
@media (prefers-reduced-motion: reduce) {
* {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
scroll-behavior: auto !important;
}
}
h1, h2, h3, h4, h5, h6 {
margin: 0;
padding: 0;
font-size: inherit;
font-weight: inherit;
line-height: inherit;
}
.container {
position: relative;
min-width: 100vw;
max-width: 100vw;
width: 100vw;
height: 100vh;
overflow-x: hidden;
overflow-y: auto;
}
<template>
<div class="container about-bg">
<AppHeader />
<img src="@/assets/icon1.png" alt="" class="about-icon1" />
<img src="@/assets/icon2.png" alt="" class="about-icon2" />
<div class="about-main" :class="{ 'rtl': $i18n.locale === 'ar' }" dir="ltr">
<div class="about-title">{{$t('about.join')}}</div>
<div class="about-swiper">
<swiper
:modules="modules"
:direction="'vertical'"
:slides-per-view="1"
:space-between="0"
:mousewheel="{ releaseOnEdges: true }"
:pagination="{
clickable: true,
el: '.about-bar',
bulletClass: 'about-bar-bullet',
bulletActiveClass: 'active',
renderBullet: (index, className) => {
return `<div class='${className}'></div>`
}
}"
class="swiper-container"
@swiper="onSwiper"
@slideChange="onSlideChange"
>
<swiper-slide v-for="(slide, index) in slides" :key="index">
<div class="about-content" :class="[`about-content-${index}`, { 'rtl': $i18n.locale === 'ar' }]">
<div class="about-left">
<div class="about-section">
<div class="about-h1">
ABOUT
<img src="@/assets/about/name.png" class="about-name" />
</div>
<div class="about-desc1">{{$t(`about.slides[${index}].desc1`)}}</div>
</div>
<div class="about-section">
<div class="about-h2">{{$t(`about.slides[${index}].title`)}}</div>
<div class="about-desc2" v-html="$t(`about.slides[${index}].desc2`)"></div>
</div>
<div class="about-buttons">
<div class="store-btn google-play">
<img src="@/assets/common/google.png" alt="{{$t('about.google')}}" />
</div>
<div class="store-btn app-store">
<img src="@/assets/common/appstore.png" alt="{{$t('about.appstore')}}" />
</div>
</div>
</div>
<div class="about-right">
<img class="about-phone" :src="slide.image" alt="phone" />
</div>
</div>
</swiper-slide>
</swiper>
<!-- Custom pagination outside swiper -->
<div class="about-bar"></div>
<img src="@/assets/about/icon2.png" alt="" class="about-icon3" />
<!-- Scroll indicator -->
<div class="scroll-indicator" v-if="currentIndex < slides.length - 1" @click="goToNextSlide">
<img class="about-up" src="@/assets/about/up.png" alt="up" />
</div>
</div>
<img src="@/assets/about/icon2.png" alt="" class="about-icon4" />
</div>
</div>
</template>
<script setup>
import { ref, onMounted } from "vue";
import AppHeader from "@/components/AppHeader.vue";
import { Swiper, SwiperSlide } from "swiper/vue";
import { Mousewheel, Pagination } from 'swiper/modules';
import "swiper/css";
import "swiper/css/pagination";
import app1 from "@/assets/about/app1.png";
import app2 from "@/assets/about/app2.png";
import app3 from "@/assets/about/app3.png";
import { useI18n } from 'vue-i18n';
const { t, locale } = useI18n();
const modules = [Mousewheel, Pagination];
const slides = [
{
image: app1,
desc1: "Get To Know Us And Have More Fun",
title: "GLOBAL CANVAS, YOUR LOCAL COLORS",
desc2:
"YAHABBI Community – Where Lifestyles Cross-Pollinate! Be A Cultural Storyteller. Share Hidden Souk<br/> Gems, Date Recipes With Grandma's Touch, Or That Sunset In Wadi Rum.",
},
{
image: app2,
desc1: "Get To Know Us And Have More Fun",
title: "CARDS CONNECT CULTURES",
desc2:
"Platform] Game Zone: Where MENA's Favorite Games Come Alive! Authentic Arab Games:<br /> Challenge Friends In Baloot Championships, Outsmart Rivals In Trix Blitz, Or Dominoes<br /> Marathons – Tradition Meets Tech!",
},
{
image: app3,
desc1: "Get To Know Us And Have More Fun",
title: "WHERE THE MIDDLE EAST CONNECTS",
desc2: "Dive Into YAHABBI's Voice Rooms – Your Gateway To The Arab World! 🎧 Chat LIVE With Users Across 22<br /> Arab Nations, From Maghreb Storytelling To Gulf Business Networking. Unlock The Heartbeat Of MENA<br /> Culture Through Voices!",
},
];
const currentIndex = ref(0);
let swiperInstance = ref(null);
const onSwiper = (swiper) => {
swiperInstance.value = swiper;
};
const onSlideChange = (swiper) => {
currentIndex.value = swiper.activeIndex;
};
const goToSlide = (index) => {
if (swiperInstance.value) {
swiperInstance.value.slideTo(index);
}
};
const goToNextSlide = () => {
if (swiperInstance.value && currentIndex.value < slides.length - 1) {
swiperInstance.value.slideTo(currentIndex.value + 1);
}
};
</script>
<style scoped lang="scss">
.about-bg {
position: relative;
background: #000000;
min-height: 100vh;
overflow: hidden;
}
.about-icon1 {
position: absolute;
left: -698px;
top: -300px;
width: 1396px;
object-fit: cover;
z-index: 0;
}
.about-icon2 {
position: absolute;
right: -422px;
bottom: -478px;
width: 1396px;
object-fit: cover;
z-index: 0;
}
.about-icon3 {
position: absolute;
top: 131px;
left: 670px;
width: 85px;
height: 85px;
z-index: 10;
}
.about-icon4 {
position: absolute;
right: -54px;
top: 32px;
width: 107px;
height: 107px;
z-index: 10;
}
.about-main {
// margin: 0 64px;
// padding-top: 10px;
padding: 10px 64px 0;
position: relative;
z-index: 1;
}
.about-title {
margin-bottom: 41px;
text-align: center;
font-family: Microsoft YaHei, Microsoft YaHei;
font-weight: bold;
font-size: 54px;
color: #ffffff;
}
.about-swiper {
position: relative;
height: 660px;
margin: 0 auto;
border-radius: 30px;
overflow: hidden;
}
:deep(.swiper-container) {
width: 100%;
height: 100%;
.swiper-slide {
height: 100%;
width: 100%;
display: flex;
align-items: stretch;
justify-content: stretch;
background: none;
}
}
.about-content {
flex: 1;
display: flex;
justify-content: space-between;
padding: 56px 0 0 60px;
background-image: url(@/assets/about/content_bg.png);
background-size: 100% 100%;
background-repeat: no-repeat;
height: 100%;
border-radius: 30px;
box-sizing: border-box;
transition: all 0.3s;
}
.about-content.rtl {
flex-direction: row-reverse;
padding: 56px 60px 0 0;
}
.about-left {
flex: 1;
display: flex;
flex-direction: column;
padding-right: 100px;
padding-bottom: 60px;
transition: all 0.3s;
}
.rtl .about-left {
padding-right: 0;
padding-left: 100px;
}
.about-right {
position: relative;
display: flex;
justify-content: flex-end;
align-items: center;
height: 100%;
padding-right: 280px;
transition: all 0.3s;
}
.rtl .about-right {
justify-content: flex-start;
padding-right: 0;
padding-left: 280px;
}
.about-section {
margin-bottom: 90px;
width: 100%;
}
.about-h1 {
display: flex;
align-items: center;
font-size: 38px;
font-weight: 900;
color: #fff;
margin-bottom: 8px;
letter-spacing: 1px;
}
.rtl .about-h1 {
flex-direction: row-reverse;
}
.about-name {
width: auto;
height: 70px;
margin-left: 10px;
}
.rtl .about-name {
margin-left: 0;
margin-right: 10px;
}
.about-desc1 {
font-size: 22px;
color: #fff;
font-weight: 400;
text-align: left;
}
.rtl .about-desc1 {
text-align: right;
}
.about-h2 {
margin-bottom: 17px;
font-family: Microsoft YaHei, Microsoft YaHei;
font-weight: bold;
font-size: 32px;
color: #ffffff;
text-align: left;
}
.rtl .about-h2 {
text-align: right;
}
.about-desc2 {
font-family: Microsoft YaHei, Microsoft YaHei;
font-size: 18px;
color: #ffffff;
text-align: left;
}
.rtl .about-desc2 {
text-align: right;
}
.about-buttons {
display: flex;
gap: 40px;
margin-top: 20px;
}
.rtl .about-buttons {
flex-direction: row-reverse;
}
.store-btn {
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
img {
height: 92px;
}
}
.about-phone {
max-height: 520px;
object-fit: contain;
border-radius: 40px;
box-shadow: 0 8px 32px 0 rgba(24, 31, 43, 0.18);
}
.scroll-indicator {
position: absolute;
right: 177px;
bottom: 57px;
display: flex;
justify-content: flex-end;
align-items: center;
cursor: pointer;
z-index: 10;
animation: bounce 2s infinite;
transition: all 0.3s;
}
.rtl .scroll-indicator {
right: auto;
left: 177px;
justify-content: flex-start;
}
@keyframes bounce {
0%, 20%, 50%, 80%, 100% {
transform: translateY(-50%) scale(1);
}
40% {
transform: translateY(-60%) scale(1.1);
}
60% {
transform: translateY(-55%) scale(1.05);
}
}
.about-up {
width: 36px;
height: 120px;
object-fit: contain;
}
.about-bar {
display: flex;
justify-content: center;
position: absolute;
right: 20px;
top: 50%;
transform: translateY(-50%);
flex-direction: column;
gap: 10px;
z-index: 10;
transition: all 0.3s;
}
.rtl .about-bar {
right: auto;
left: 20px;
}
:deep(.about-bar-bullet) {
width: 10px;
height: 10px;
background-color: #EAEAEA;
border-radius: 50%;
cursor: pointer;
display: block;
transition: all 0.2s ease;
&:hover {
transform: scale(1.2);
}
}
:deep(.about-bar-bullet.active) {
width: 12px;
height: 22px;
background-image: url(@/assets/about/dot_active.png);
background-size: cover;
background-repeat: no-repeat;
border-radius: 0;
background-color: transparent;
margin-left: -2px;
}
@media (max-width: 1200px) {
.about-content {
padding: 40px;
}
.about-left {
max-width: 55%;
}
.about-phone {
max-height: 480px;
}
}
</style>
<template>
<div class="container contact-bg" :class="{ 'rtl': $i18n.locale === 'ar' }">
<AppHeader />
<img src="@/assets/icon1.png" alt="" class="contact-icon1" />
<img src="@/assets/icon2.png" alt="" class="contact-icon2" />
<img src="@/assets/icon2.png" alt="" class="contact-icon3" />
<div class="contact-main">
<div class="contact-content-wrapper">
<div class="contact-content">
<div class="contact-left">
<div class="phone-mockup">
<img src="@/assets/about/app3.png" alt="phone" />
</div>
</div>
<div class="contact-right">
<div class="contact-title" v-html="$t('contact.title')"></div>
<div class="contact-desc">{{$t('contact.desc')}}</div>
<img
class="contact-arrow"
src="@/assets/contact/down.png"
alt="arrow"
/>
<div class="contact-btns">
<img
src="@/assets/common/google.png"
class="store-btn"
:alt="$t('contact.google')"
/>
<img
src="@/assets/common/appstore.png"
class="store-btn"
:alt="$t('contact.appstore')"
/>
</div>
<img
class="star-deco"
src="@/assets/contact/icon3.png"
alt="star"
/>
</div>
</div>
</div>
</div>
<div class="footer-wrapper">
<img
class="footer-bg-curve"
src="@/assets/contact/bottom_bg.png"
alt="footer-bg"
/>
<div class="footer-content">
<div class="footer-main">
<div class="footer-brand">
<div class="footer-title">{{$t('contact.yahabbi')}}</div>
<div class="footer-subtitle">{{$t('contact.focus')}}</div>
</div>
<div class="footer-links-group">
<div class="footer-col">
<div class="footer-col-title">{{$t('contact.contactus')}}</div>
<div class="footer-col-item">{{$t('contact.email')}}</div>
<div class="footer-col-item">{{$t('contact.phone')}}</div>
</div>
<div class="footer-col">
<div class="footer-col-title">{{$t('contact.topup')}}</div>
<div class="footer-col-item">{{$t('contact.recharge')}}</div>
</div>
<div class="footer-col">
<div class="footer-col-title">{{$t('contact.download')}}</div>
<div class="footer-col-item">{{$t('contact.android')}}</div>
<div class="footer-col-item">{{$t('contact.apple')}}</div>
</div>
</div>
</div>
<div class="footer-bottom">
<div class="copyright">{{$t('contact.copyright')}}</div>
<div class="legal-links">
<span>{{$t('contact.aboutus')}}</span>
<span>{{$t('contact.terms')}}</span>
<span>{{$t('contact.privacy')}}</span>
</div>
</div>
</div>
</div>
</div>
</template>
<script setup>
import AppHeader from "@/components/AppHeader.vue";
import { useI18n } from 'vue-i18n';
const { t, locale } = useI18n();
</script>
<style scoped lang="scss">
.contact-bg {
background-color: #000000;
position: relative;
overflow-x: hidden;
}
.contact-icon1 {
position: absolute;
left: -698px;
top: -300px;
width: 1396px;
object-fit: cover;
z-index: 0;
}
.contact-icon2 {
position: absolute;
right: -422px;
bottom: -308px;
width: 1396px;
object-fit: cover;
z-index: 0;
}
.contact-icon3 {
position: fixed;
left: 50%;
transform: translateX(-50%);
bottom: 0;
width: 648px;
height: 458px;
object-fit: cover;
z-index: 1;
}
.contact-main {
width: 100%;
padding: 34px 102px 39px;
box-sizing: border-box;
position: relative;
z-index: 2;
}
.contact-content-wrapper {
background-image: url("@/assets/contact/content_bg.png");
background-size: 100% 100%;
background-repeat: no-repeat;
}
.contact-content {
position: relative;
display: flex;
align-items: flex-end;
justify-content: space-between;
}
.contact-left {
position: absolute;
bottom: -107px;
left: 160px;
// flex: 1;
// transform: translateY(40px);
}
.rtl .contact-left {
left: auto;
right: 160px;
}
.phone-mockup img {
width: 415px;
height: auto;
object-fit: contain;
}
.contact-right {
flex: 1;
padding: 121px 0 60px 800px;
position: relative;
}
.rtl .contact-right {
padding: 121px 800px 60px 0;
}
.contact-title {
font-size: 64px;
font-weight: 900;
color: #fff;
line-height: 1.2;
margin-bottom: 24px;
}
.highlight {
position: relative;
display: inline-block;
background: linear-gradient(90deg, #c844ff 0%, #982fff 100%);
-webkit-background-clip: text;
background-clip: text;
color: transparent;
padding-bottom: 5px;
&::after {
content: "";
position: absolute;
bottom: -12px;
left: 0;
width: 100%;
height: 34px;
background: url(@/assets/leadership/name_desc.png);
background-size: cover;
background-repeat: no-repeat;
}
}
.highlight-underline {
position: absolute;
bottom: -5px;
left: 0;
width: 100%;
height: 20px;
object-fit: fill;
}
.contact-desc {
font-family: Microsoft YaHei, Microsoft YaHei;
font-weight: 600;
font-size: 16px;
color: #ffffff;
margin-bottom: 60px;
}
.contact-arrow {
width: 36px;
height: auto;
margin-bottom: 80px;
animation: arrow-down-bounce 1.5s infinite;
}
@keyframes arrow-down-bounce {
0%, 100% {
transform: translateY(0);
}
30% {
transform: translateY(18px);
}
60% {
transform: translateY(8px);
}
}
.contact-btns {
display: flex;
gap: 24px;
}
.store-btn {
display: flex;
align-items: center;
gap: 12px;
background: #fff;
border: none;
border-radius: 40px;
padding: 16px 36px;
font-size: 18px;
font-weight: 700;
color: #000;
cursor: pointer;
transition: all 0.3s ease;
box-shadow: 0 4px 15px rgba(255, 255, 255, 0.2);
}
.store-btn:hover {
transform: translateY(-3px);
box-shadow: 0 8px 25px rgba(255, 255, 255, 0.3);
}
.main-buttons {
position: absolute;
right: 90px;
bottom: 120px;
display: flex;
gap: 74px;
}
.store-btn {
height: 98px;
display: flex;
align-items: center;
cursor: pointer;
}
.store-btn img {
height: 48px;
}
.store-btn img {
height: 28px;
}
.star-deco {
position: absolute;
top: 210px;
right: 120px;
width: 80px;
height: 80px;
}
.rtl .star-deco {
right: auto;
left: 120px;
}
.footer-wrapper {
width: 100%;
position: relative;
z-index: 1;
}
.footer-bg-curve {
width: 100%;
display: block;
position: absolute;
top: 0;
left: 0;
z-index: -1;
}
.footer-content {
padding-top: 200px;
padding-bottom: 24px;
color: #fff;
}
.footer-main {
width: 100%;
padding: 0 102px;
box-sizing: border-box;
display: flex;
justify-content: space-between;
margin-bottom: 40px;
}
.footer-brand {
flex-shrink: 0;
}
.footer-title {
font-size: 40px;
font-weight: 800;
margin-bottom: 8px;
}
.footer-subtitle {
font-size: 18px;
opacity: 0.8;
}
.footer-links-group {
display: flex;
gap: 80px;
padding-top: 10px;
}
.footer-col-title {
font-size: 20px;
font-weight: 700;
margin-bottom: 16px;
}
.footer-col-item {
font-size: 16px;
line-height: 1.8;
opacity: 0.8;
}
.footer-bottom {
width: 100%;
padding: 20px 102px 0 102px;
box-sizing: border-box;
border-top: 1px solid #fff;
margin: 0 auto;
display: flex;
justify-content: space-between;
align-items: center;
font-size: 14px;
opacity: 0.7;
}
.legal-links {
display: flex;
gap: 40px;
}
</style>
<template>
<div class="container design-bg">
<AppHeader class="header-abs" />
<main class="main">
<div class="content">
<h1 class="main-title" v-html="$t('home.title')"></h1>
<div class="main-subtitle">{{$t('home.subtitle')}}</div>
<div class="main-desc">{{$t('home.desc')}}</div>
<div class="main-buttons">
<img
src="@/assets/common/google.png"
class="store-btn"
:alt="$t('home.google')"
/>
<img
src="@/assets/common/appstore.png"
class="store-btn"
:alt="$t('home.appstore')"
/>
</div>
</div>
</main>
</div>
</template>
<script setup>
import AppHeader from "@/components/AppHeader.vue";
import { useI18n } from 'vue-i18n';
const { t } = useI18n();
</script>
<style scoped>
.design-bg {
display: flex;
flex-direction: column;
background: url("@/assets/home/bg.png") center top/1920px 1080px no-repeat;
}
.main {
position: relative;
flex: 1;
display: flex;
flex-direction: column;
justify-content: center;
}
.content {
position: relative;
margin: 0 80px;
padding: 82px 90px 120px 162px;
height: 787px;
background: rgba(0, 0, 0, 0.35);
border-radius: 36px 36px 36px 36px;
}
.main-title {
margin-bottom: 49px;
font-family: Microsoft YaHei, Microsoft YaHei;
font-weight: bold;
font-size: 72px;
color: #ffffff;
letter-spacing: 4px;
text-shadow: 0px 5px 15px rgba(0, 0, 0, 0.35);
}
.main-subtitle {
margin-bottom: 13px;
font-family: Microsoft YaHei, Microsoft YaHei;
font-size: 34px;
color: #ffffff;
text-shadow: 0px 4px 5px rgba(0, 0, 0, 0.35);
}
.main-desc {
font-family: Microsoft YaHei, Microsoft YaHei;
font-size: 18px;
color: #ffffff;
text-shadow: 0px 4px 5px rgba(0, 0, 0, 0.35);
}
.main-buttons {
position: absolute;
right: 90px;
bottom: 120px;
display: flex;
gap: 74px;
}
.store-btn {
height: 98px;
display: flex;
align-items: center;
cursor: pointer;
}
.store-btn img {
height: 48px;
}
.footer-abs {
position: absolute;
left: 0;
bottom: 0;
width: 1920px;
z-index: 10;
}
</style>
<template>
<div class="container leadership-bg" :class="{ rtl: $i18n.locale === 'ar' }">
<AppHeader />
<img src="@/assets/icon1.png" alt="" class="leadership-icon1" />
<img src="@/assets/icon2.png" alt="" class="leadership-icon2" />
<img src="@/assets/leadership/icon5.png" alt="" class="leadership-icon4" />
<div class="leadership-main">
<div class="leadership-title" v-html="$t('leadership.title')"></div>
<img
class="star star-left"
src="@/assets/leadership/icon3.png"
alt="star"
/>
<img
class="star star-right"
src="@/assets/leadership/icon4.png"
alt="star"
/>
<div class="leadership-slider-outer">
<div class="arrow-btn-outer">
<div class="arrow-btn left" @click="slidePrev">
<img src="@/assets/leadership/left.png" alt="left" />
</div>
<div class="arrow-btn right" @click="slideNext">
<img src="@/assets/leadership/right.png" alt="right" />
</div>
</div>
<div class="leadership-slider" :key="$i18n.locale">
<Swiper
:modules="modules"
:slides-per-view="4"
:space-between="71"
:navigation="false"
:loop="leaders.length > 4"
class="leader-swiper"
@swiper="onSwiper"
>
<SwiperSlide v-for="(leader, idx) in leaders" :key="idx">
<div class="leader-card">
<img class="leader-photo" :src="leader.photo" alt="leader" />
<span class="dot"></span>
<div class="leader-info-bar">
<div class="leader-name">{{ $t("leadership.name") }}</div>
<div class="leader-position">
{{ $t("leadership.position") }}
</div>
</div>
</div>
</SwiperSlide>
</Swiper>
</div>
</div>
<div class="team-intro-block">
<div class="team-intro-text">
<div class="team-intro-title">{{ $t("leadership.team_intro") }}</div>
<div class="team-intro-desc">{{ $t("leadership.team_desc1") }}</div>
<div class="team-intro-desc">{{ $t("leadership.team_desc2") }}</div>
</div>
<img
class="team-intro-img"
src="@/assets/leadership/name_desc.png"
alt="team"
/>
<img
src="@/assets/leadership/icon5.png"
alt=""
class="leadership-icon3"
/>
</div>
</div>
</div>
</template>
<script setup>
import AppHeader from "@/components/AppHeader.vue";
import { Swiper, SwiperSlide } from "swiper/vue";
import { Navigation } from "swiper/modules";
import "swiper/css";
import leader1 from "@/assets/leadership/icon1.png";
import leader2 from "@/assets/leadership/icon2.png";
import leader3 from "@/assets/leadership/icon3.png";
import leader4 from "@/assets/leadership/icon4.png";
import leader5 from "@/assets/leadership/icon5.png";
import { ref, watch } from "vue";
import { useI18n } from "vue-i18n";
const { t, locale } = useI18n();
const modules = [Navigation];
const leaders = [
{ photo: leader1 },
{ photo: leader2 },
{ photo: leader3 },
{ photo: leader4 },
{ photo: leader5 },
];
const swiperRef = ref(null);
const onSwiper = (swiper) => {
swiperRef.value = swiper;
};
const slidePrev = () => {
swiperRef.value && swiperRef.value.slidePrev();
};
const slideNext = () => {
swiperRef.value && swiperRef.value.slideNext();
};
// Watch for changes in the locale
watch(locale, (newLocale) => {
console.log("123 locale.value", newLocale);
if (swiperRef.value) {
console.log('123 11');
swiperRef.value.update(); // Update the Swiper instance
}
});
</script>
<style scoped lang="scss">
.leadership-bg {
background: #000000;
position: relative;
padding-bottom: 40px;
}
.leadership-icon1 {
position: absolute;
left: -698px;
top: -300px;
width: 1396px;
object-fit: cover;
z-index: 0;
}
.leadership-icon2 {
position: absolute;
right: -422px;
bottom: -308px;
width: 1396px;
object-fit: cover;
z-index: 0;
}
.leadership-icon3 {
width: 212px;
height: 212px;
position: absolute;
left: 222px;
bottom: -8px;
}
.leadership-icon4 {
width: 212px;
height: 212px;
position: absolute;
right: -24px;
top: 577px;
}
.leadership-main {
position: relative;
max-width: 1400px;
margin: 0 auto;
padding-top: 48px;
}
.leadership-title {
position: relative;
margin-bottom: 49px;
padding-left: 40px;
font-family: Microsoft YaHei, Microsoft YaHei;
font-weight: 800;
font-size: 52px;
color: #ffffff;
z-index: 2;
.highlight {
position: relative;
display: inline-block;
font-weight: 800;
background: linear-gradient(90deg, #c844ff 0%, #982fff 100%);
background-clip: text;
-webkit-background-clip: text;
color: transparent;
-webkit-text-fill-color: transparent;
line-height: 1.1;
padding-bottom: 0;
&::after {
content: "";
position: absolute;
bottom: -8px;
left: 0;
width: 100%;
height: 34px;
background: url(@/assets/leadership/name_desc.png);
background-size: cover;
background-repeat: no-repeat;
z-index: -1;
}
}
}
.star-left {
position: absolute;
width: 60px;
top: 88px;
left: -61px;
width: 61px;
height: 60px;
}
.star-right {
position: absolute;
width: 60px;
top: 13px;
left: 50%;
transform: translateX(-50%);
width: 80px;
height: 80px;
}
.leadership-slider-outer {
width: 100%;
max-width: 1400px;
margin: 0 auto 69px auto;
position: relative;
}
.leadership-slider {
position: relative;
width: 100%;
padding: 28px 17px 28px 41px;
box-sizing: border-box;
overflow: hidden;
}
.arrow-btn-outer {
position: absolute;
right: -71px;
top: 50%;
transform: translateY(-50%);
display: flex;
align-items: center;
z-index: 10;
}
.rtl .arrow-btn-outer {
right: auto;
left: -71px;
flex-direction: row-reverse;
}
.arrow-btn {
width: 18px;
height: 26px;
cursor: pointer;
}
.leader-swiper {
width: 100%;
max-width: 1400px;
overflow: visible;
.swiper-wrapper {
align-items: stretch;
overflow: visible;
}
.swiper-slide {
overflow: visible;
}
}
.leadership-cards {
display: flex;
gap: 71px;
overflow: visible;
}
.leader-card {
background: #fff1;
border-radius: 8px;
overflow: visible;
width: 283px;
height: 341px;
display: flex;
flex-direction: column;
align-items: center;
position: relative;
}
.leader-card:hover {
transform: scale(1.07) translateY(-8px);
z-index: 3;
}
.leader-photo {
width: 100%;
height: 100%;
object-fit: cover;
border-radius: 8px;
}
.dot {
position: absolute;
top: 15px;
right: 16px;
width: 12px;
height: 12px;
background: #fff;
border-radius: 50%;
border: 2px solid #eaeaea;
box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.08);
z-index: 3;
}
.leader-info-bar {
position: absolute;
left: -23px;
bottom: 13px;
width: 262px;
height: 102px;
padding: 10px 22px 22px;
background: linear-gradient(90deg, #c22fff 0%, #8b17ff 100%), #b178ff;
border-radius: 8px;
box-sizing: border-box;
}
.leader-name {
margin-bottom: 5px;
font-family: Microsoft YaHei, Microsoft YaHei;
font-weight: 600;
font-size: 28px;
color: #ffffff;
}
.leader-position {
font-family: Microsoft YaHei, Microsoft YaHei;
font-weight: 600;
font-size: 20px;
color: #ffffff;
}
.team-intro-block {
display: flex;
align-items: center;
margin: 0 auto;
max-width: 1400px;
width: 100%;
height: 350px;
min-height: 350px;
padding: 32px 28px 37px 27px;
overflow: hidden;
background-image: url(@/assets/leadership/content_bg.png);
background-size: 100% 100%;
background-position: center;
background-repeat: no-repeat;
}
.team-intro-desc + .team-intro-desc {
margin-top: 12px;
}
.team-intro-text {
padding-top: 38px;
display: flex;
flex-direction: column;
justify-content: center;
height: 100%;
}
.team-intro-title {
margin-bottom: 20px;
font-family: Microsoft YaHei, Microsoft YaHei;
font-weight: 600;
font-size: 32px;
color: #ffffff;
}
.team-intro-desc {
font-family: Microsoft YaHei, Microsoft YaHei;
font-weight: 600;
font-size: 16px;
color: #ffffff;
}
.team-intro-img {
flex: 1;
object-fit: cover;
width: 834px;
height: 295px;
border-radius: 20px;
}
@media (max-width: 1200px) {
.leadership-main {
max-width: 98vw;
}
.leader-swiper {
width: 98vw;
}
.team-intro-block {
flex-direction: column;
min-height: 0;
}
.team-intro-img {
min-width: 0;
max-width: 100%;
border-radius: 0 0 20px 20px;
}
}
</style>
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import { fileURLToPath, URL } from 'url'
// https://vite.dev/config/
export default defineConfig({
plugins: [vue()],
resolve: {
alias: {
'@': fileURLToPath(new URL('./src', import.meta.url))
}
}
})
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!