diff --git a/.gitignore b/.gitignore index a5baf4b..79aa87c 100644 --- a/.gitignore +++ b/.gitignore @@ -55,3 +55,8 @@ src/components.d.ts # Optional REPL history .node_repl_history +# Tauri +src-tauri/target +src-tauri/Cargo.lock +src-tauri/WixTools + diff --git a/index.html b/index.html index 155e78a..a1571b2 100644 --- a/index.html +++ b/index.html @@ -14,12 +14,12 @@ - + @@ -30,7 +30,7 @@ rel="stylesheet" /> - Neptune Wallet + Neptune Privacy diff --git a/package.json b/package.json index 9c8b8ce..6f3981c 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "neptune-wallet", + "name": "neptune-privacy", "private": true, "version": "0.0.0", "type": "module", @@ -9,10 +9,14 @@ "preview": "vite preview", "type-check": "vue-tsc --build --force", "lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix --ignore-path .eslintignore", - "format": "prettier --write \"src/**/*.{js,jsx,ts,tsx,vue,css,scss,json}\"" + "format": "prettier --write \"src/**/*.{js,jsx,ts,tsx,vue,css,scss,json}\"", + "tauri": "tauri", + "tauri:dev": "tauri dev", + "tauri:build": "tauri build" }, "dependencies": { "@tailwindcss/vite": "^4.1.17", + "@tanstack/vue-form": "^1.26.0", "@vueuse/core": "^14.0.0", "axios": "^1.7.9", "class-variance-authority": "^0.7.1", @@ -25,10 +29,13 @@ "tailwindcss-animate": "^1.0.7", "vue": "^3.5.24", "vue-i18n": "^10.0.8", - "vue-router": "^4.5.0" + "vue-router": "^4.5.0", + "vue-sonner": "^2.0.9", + "zod": "^4.1.13" }, "devDependencies": { "@rushstack/eslint-patch": "^1.15.0", + "@tauri-apps/cli": "^2.9.4", "@types/node": "^24.10.1", "@typescript-eslint/eslint-plugin": "^8.0.0", "@typescript-eslint/parser": "^8.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index dd16676..d9d0deb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,6 +11,9 @@ importers: '@tailwindcss/vite': specifier: ^4.1.17 version: 4.1.17(vite@7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2)) + '@tanstack/vue-form': + specifier: ^1.26.0 + version: 1.26.0(vue@3.5.24(typescript@5.9.3)) '@vueuse/core': specifier: ^14.0.0 version: 14.0.0(vue@3.5.24(typescript@5.9.3)) @@ -50,10 +53,19 @@ importers: vue-router: specifier: ^4.5.0 version: 4.6.3(vue@3.5.24(typescript@5.9.3)) + vue-sonner: + specifier: ^2.0.9 + version: 2.0.9 + zod: + specifier: ^4.1.13 + version: 4.1.13 devDependencies: '@rushstack/eslint-patch': specifier: ^1.15.0 version: 1.15.0 + '@tauri-apps/cli': + specifier: ^2.9.4 + version: 2.9.4 '@types/node': specifier: ^24.10.1 version: 24.10.1 @@ -600,14 +612,113 @@ packages: peerDependencies: vite: ^5.2.0 || ^6 || ^7 + '@tanstack/devtools-event-client@0.3.5': + resolution: {integrity: sha512-RL1f5ZlfZMpghrCIdzl6mLOFLTuhqmPNblZgBaeKfdtk5rfbjykurv+VfYydOFXj0vxVIoA2d/zT7xfD7Ph8fw==} + engines: {node: '>=18'} + + '@tanstack/form-core@1.26.0': + resolution: {integrity: sha512-CVSrNwnRt8V0vULOr82slIckaB7w7dOMKF+GMP9rmbaCBzXHJt+JQRj4NiH4PyPz31DAJoFE+BxcrhcVU2ZjTw==} + + '@tanstack/pacer@0.15.4': + resolution: {integrity: sha512-vGY+CWsFZeac3dELgB6UZ4c7OacwsLb8hvL2gLS6hTgy8Fl0Bm/aLokHaeDIP+q9F9HUZTnp360z9uv78eg8pg==} + engines: {node: '>=18'} + + '@tanstack/store@0.7.7': + resolution: {integrity: sha512-xa6pTan1bcaqYDS9BDpSiS63qa6EoDkPN9RsRaxHuDdVDNntzq3xNwR5YKTU/V3SkSyC9T4YVOPh2zRQN0nhIQ==} + '@tanstack/virtual-core@3.13.12': resolution: {integrity: sha512-1YBOJfRHV4sXUmWsFSf5rQor4Ss82G8dQWLRbnk3GA4jeP8hQt1hxXh0tmflpC0dz3VgEv/1+qwPyLeWkQuPFA==} + '@tanstack/vue-form@1.26.0': + resolution: {integrity: sha512-6dIxrA2ZpyrEq6QiSA47PUEvwedqYY+dBFfBvzhB2ugKBgwGvhomTaB5Bo7s2qaxeTcpBaEFifSny3IYxCULIQ==} + peerDependencies: + vue: ^3.4.0 + + '@tanstack/vue-store@0.7.7': + resolution: {integrity: sha512-6iv1Odmreff6TgEjQN11xoddsCnpn+/ul7MZ2DadHT3/RSY1YdoFafK8lCa889MEFi/5K0zAhf8psIkgTrRa9A==} + peerDependencies: + '@vue/composition-api': ^1.2.1 + vue: ^2.5.0 || ^3.0.0 + peerDependenciesMeta: + '@vue/composition-api': + optional: true + '@tanstack/vue-virtual@3.13.12': resolution: {integrity: sha512-vhF7kEU9EXWXh+HdAwKJ2m3xaOnTTmgcdXcF2pim8g4GvI7eRrk2YRuV5nUlZnd/NbCIX4/Ja2OZu5EjJL06Ww==} peerDependencies: vue: ^2.7.0 || ^3.0.0 + '@tauri-apps/cli-darwin-arm64@2.9.4': + resolution: {integrity: sha512-9rHkMVtbMhe0AliVbrGpzMahOBg3rwV46JYRELxR9SN6iu1dvPOaMaiC4cP6M/aD1424ziXnnMdYU06RAH8oIw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@tauri-apps/cli-darwin-x64@2.9.4': + resolution: {integrity: sha512-VT9ymNuT06f5TLjCZW2hfSxbVtZDhORk7CDUDYiq5TiSYQdxkl8MVBy0CCFFcOk4QAkUmqmVUA9r3YZ/N/vPRQ==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@tauri-apps/cli-linux-arm-gnueabihf@2.9.4': + resolution: {integrity: sha512-tTWkEPig+2z3Rk0zqZYfjUYcgD+aSm72wdrIhdYobxbQZOBw0zfn50YtWv+av7bm0SHvv75f0l7JuwgZM1HFow==} + engines: {node: '>= 10'} + cpu: [arm] + os: [linux] + + '@tauri-apps/cli-linux-arm64-gnu@2.9.4': + resolution: {integrity: sha512-ql6vJ611qoqRYHxkKPnb2vHa27U+YRKRmIpLMMBeZnfFtZ938eao7402AQCH1mO2+/8ioUhbpy9R/ZcLTXVmkg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tauri-apps/cli-linux-arm64-musl@2.9.4': + resolution: {integrity: sha512-vg7yNn7ICTi6hRrcA/6ff2UpZQP7un3xe3SEld5QM0prgridbKAiXGaCKr3BnUBx/rGXegQlD/wiLcWdiiraSw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@tauri-apps/cli-linux-riscv64-gnu@2.9.4': + resolution: {integrity: sha512-l8L+3VxNk6yv5T/Z/gv5ysngmIpsai40B9p6NQQyqYqxImqYX37pqREoEBl1YwG7szGnDibpWhidPrWKR59OJA==} + engines: {node: '>= 10'} + cpu: [riscv64] + os: [linux] + + '@tauri-apps/cli-linux-x64-gnu@2.9.4': + resolution: {integrity: sha512-PepPhCXc/xVvE3foykNho46OmCyx47E/aG676vKTVp+mqin5d+IBqDL6wDKiGNT5OTTxKEyNlCQ81Xs2BQhhqA==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tauri-apps/cli-linux-x64-musl@2.9.4': + resolution: {integrity: sha512-zcd1QVffh5tZs1u1SCKUV/V7RRynebgYUNWHuV0FsIF1MjnULUChEXhAhug7usCDq4GZReMJOoXa6rukEozWIw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@tauri-apps/cli-win32-arm64-msvc@2.9.4': + resolution: {integrity: sha512-/7ZhnP6PY04bEob23q8MH/EoDISdmR1wuNm0k9d5HV7TDMd2GGCDa8dPXA4vJuglJKXIfXqxFmZ4L+J+MO42+w==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@tauri-apps/cli-win32-ia32-msvc@2.9.4': + resolution: {integrity: sha512-1LmAfaC4Cq+3O1Ir1ksdhczhdtFSTIV51tbAGtbV/mr348O+M52A/xwCCXQank0OcdBxy5BctqkMtuZnQvA8uQ==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + + '@tauri-apps/cli-win32-x64-msvc@2.9.4': + resolution: {integrity: sha512-EdYd4c9wGvtPB95kqtEyY+bUR+k4kRw3IA30mAQ1jPH6z57AftT8q84qwv0RDp6kkEqOBKxeInKfqi4BESYuqg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@tauri-apps/cli@2.9.4': + resolution: {integrity: sha512-pvylWC9QckrOS9ATWXIXcgu7g2hKK5xTL5ZQyZU/U0n9l88SEFGcWgLQNa8WZmd+wWIOWhkxOFcOl3i6ubDNNw==} + engines: {node: '>= 10'} + hasBin: true + '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} @@ -1684,6 +1795,20 @@ packages: peerDependencies: vue: ^3.5.0 + vue-sonner@2.0.9: + resolution: {integrity: sha512-i6BokNlNDL93fpzNxN/LZSn6D6MzlO+i3qXt6iVZne3x1k7R46d5HlFB4P8tYydhgqOrRbIZEsnRd3kG7qGXyw==} + peerDependencies: + '@nuxt/kit': ^4.0.3 + '@nuxt/schema': ^4.0.3 + nuxt: ^4.0.3 + peerDependenciesMeta: + '@nuxt/kit': + optional: true + '@nuxt/schema': + optional: true + nuxt: + optional: true + vue-tsc@3.1.5: resolution: {integrity: sha512-L/G9IUjOWhBU0yun89rv8fKqmKC+T0HfhrFjlIml71WpfBv9eb4E9Bev8FMbyueBIU9vxQqbd+oOsVcDa5amGw==} hasBin: true @@ -1718,6 +1843,9 @@ packages: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + zod@4.1.13: + resolution: {integrity: sha512-AvvthqfqrAhNH9dnfmrfKzX5upOdjUVJYFqNSlkmGf64gRaTzlPwz99IHYnVs28qYAybvAlBV+H7pn0saFY4Ig==} + snapshots: '@babel/helper-string-parser@7.27.1': {} @@ -2083,13 +2211,89 @@ snapshots: tailwindcss: 4.1.17 vite: 7.2.4(@types/node@24.10.1)(jiti@2.6.1)(lightningcss@1.30.2) + '@tanstack/devtools-event-client@0.3.5': {} + + '@tanstack/form-core@1.26.0': + dependencies: + '@tanstack/devtools-event-client': 0.3.5 + '@tanstack/pacer': 0.15.4 + '@tanstack/store': 0.7.7 + + '@tanstack/pacer@0.15.4': + dependencies: + '@tanstack/devtools-event-client': 0.3.5 + '@tanstack/store': 0.7.7 + + '@tanstack/store@0.7.7': {} + '@tanstack/virtual-core@3.13.12': {} + '@tanstack/vue-form@1.26.0(vue@3.5.24(typescript@5.9.3))': + dependencies: + '@tanstack/form-core': 1.26.0 + '@tanstack/vue-store': 0.7.7(vue@3.5.24(typescript@5.9.3)) + vue: 3.5.24(typescript@5.9.3) + transitivePeerDependencies: + - '@vue/composition-api' + + '@tanstack/vue-store@0.7.7(vue@3.5.24(typescript@5.9.3))': + dependencies: + '@tanstack/store': 0.7.7 + vue: 3.5.24(typescript@5.9.3) + vue-demi: 0.14.10(vue@3.5.24(typescript@5.9.3)) + '@tanstack/vue-virtual@3.13.12(vue@3.5.24(typescript@5.9.3))': dependencies: '@tanstack/virtual-core': 3.13.12 vue: 3.5.24(typescript@5.9.3) + '@tauri-apps/cli-darwin-arm64@2.9.4': + optional: true + + '@tauri-apps/cli-darwin-x64@2.9.4': + optional: true + + '@tauri-apps/cli-linux-arm-gnueabihf@2.9.4': + optional: true + + '@tauri-apps/cli-linux-arm64-gnu@2.9.4': + optional: true + + '@tauri-apps/cli-linux-arm64-musl@2.9.4': + optional: true + + '@tauri-apps/cli-linux-riscv64-gnu@2.9.4': + optional: true + + '@tauri-apps/cli-linux-x64-gnu@2.9.4': + optional: true + + '@tauri-apps/cli-linux-x64-musl@2.9.4': + optional: true + + '@tauri-apps/cli-win32-arm64-msvc@2.9.4': + optional: true + + '@tauri-apps/cli-win32-ia32-msvc@2.9.4': + optional: true + + '@tauri-apps/cli-win32-x64-msvc@2.9.4': + optional: true + + '@tauri-apps/cli@2.9.4': + optionalDependencies: + '@tauri-apps/cli-darwin-arm64': 2.9.4 + '@tauri-apps/cli-darwin-x64': 2.9.4 + '@tauri-apps/cli-linux-arm-gnueabihf': 2.9.4 + '@tauri-apps/cli-linux-arm64-gnu': 2.9.4 + '@tauri-apps/cli-linux-arm64-musl': 2.9.4 + '@tauri-apps/cli-linux-riscv64-gnu': 2.9.4 + '@tauri-apps/cli-linux-x64-gnu': 2.9.4 + '@tauri-apps/cli-linux-x64-musl': 2.9.4 + '@tauri-apps/cli-win32-arm64-msvc': 2.9.4 + '@tauri-apps/cli-win32-ia32-msvc': 2.9.4 + '@tauri-apps/cli-win32-x64-msvc': 2.9.4 + '@types/estree@1.0.8': {} '@types/json-schema@7.0.15': {} @@ -3223,6 +3427,8 @@ snapshots: '@vue/devtools-api': 6.6.4 vue: 3.5.24(typescript@5.9.3) + vue-sonner@2.0.9: {} + vue-tsc@3.1.5(typescript@5.9.3): dependencies: '@volar/typescript': 2.4.23 @@ -3250,3 +3456,5 @@ snapshots: xml-name-validator@4.0.0: {} yocto-queue@0.1.0: {} + + zod@4.1.13: {} diff --git a/src-tauri/.gitignore b/src-tauri/.gitignore new file mode 100644 index 0000000..502406b --- /dev/null +++ b/src-tauri/.gitignore @@ -0,0 +1,4 @@ +# Generated by Cargo +# will have compiled files and executables +/target/ +/gen/schemas diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml new file mode 100644 index 0000000..8352e35 --- /dev/null +++ b/src-tauri/Cargo.toml @@ -0,0 +1,31 @@ +[package] +name = "app" +version = "0.1.0" +description = "A Tauri App" +authors = ["you"] +license = "" +repository = "" +edition = "2021" +rust-version = "1.77.2" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[lib] +name = "app_lib" +crate-type = ["staticlib", "cdylib", "rlib"] + +[build-dependencies] +tauri-build = { version = "2.5.1", features = [] } + +[dependencies] +serde_json = "1.0" +serde = { version = "1.0", features = ["derive"] } +log = "0.4" +tauri = { version = "2.9.2", features = [] } +tauri-plugin-log = "2" + +[target.'cfg(target_os = "android")'.dependencies] +jni = "0.21" + +[target.'cfg(target_os = "ios")'.dependencies] +objc = "0.2" diff --git a/src-tauri/build.rs b/src-tauri/build.rs new file mode 100644 index 0000000..795b9b7 --- /dev/null +++ b/src-tauri/build.rs @@ -0,0 +1,3 @@ +fn main() { + tauri_build::build() +} diff --git a/src-tauri/capabilities/default.json b/src-tauri/capabilities/default.json new file mode 100644 index 0000000..c135d7f --- /dev/null +++ b/src-tauri/capabilities/default.json @@ -0,0 +1,11 @@ +{ + "$schema": "../gen/schemas/desktop-schema.json", + "identifier": "default", + "description": "enables the default permissions", + "windows": [ + "main" + ], + "permissions": [ + "core:default" + ] +} diff --git a/src-tauri/icons/128x128.png b/src-tauri/icons/128x128.png new file mode 100644 index 0000000..97a6964 Binary files /dev/null and b/src-tauri/icons/128x128.png differ diff --git a/src-tauri/icons/128x128@2x.png b/src-tauri/icons/128x128@2x.png new file mode 100644 index 0000000..bda696b Binary files /dev/null and b/src-tauri/icons/128x128@2x.png differ diff --git a/src-tauri/icons/32x32.png b/src-tauri/icons/32x32.png new file mode 100644 index 0000000..ca187f8 Binary files /dev/null and b/src-tauri/icons/32x32.png differ diff --git a/src-tauri/icons/64x64.png b/src-tauri/icons/64x64.png new file mode 100644 index 0000000..0f34baa Binary files /dev/null and b/src-tauri/icons/64x64.png differ diff --git a/src-tauri/icons/Square107x107Logo.png b/src-tauri/icons/Square107x107Logo.png new file mode 100644 index 0000000..8118b1a Binary files /dev/null and b/src-tauri/icons/Square107x107Logo.png differ diff --git a/src-tauri/icons/Square142x142Logo.png b/src-tauri/icons/Square142x142Logo.png new file mode 100644 index 0000000..af244c2 Binary files /dev/null and b/src-tauri/icons/Square142x142Logo.png differ diff --git a/src-tauri/icons/Square150x150Logo.png b/src-tauri/icons/Square150x150Logo.png new file mode 100644 index 0000000..067d329 Binary files /dev/null and b/src-tauri/icons/Square150x150Logo.png differ diff --git a/src-tauri/icons/Square284x284Logo.png b/src-tauri/icons/Square284x284Logo.png new file mode 100644 index 0000000..5c9f5a1 Binary files /dev/null and b/src-tauri/icons/Square284x284Logo.png differ diff --git a/src-tauri/icons/Square30x30Logo.png b/src-tauri/icons/Square30x30Logo.png new file mode 100644 index 0000000..f9a4ac0 Binary files /dev/null and b/src-tauri/icons/Square30x30Logo.png differ diff --git a/src-tauri/icons/Square310x310Logo.png b/src-tauri/icons/Square310x310Logo.png new file mode 100644 index 0000000..08dc34f Binary files /dev/null and b/src-tauri/icons/Square310x310Logo.png differ diff --git a/src-tauri/icons/Square44x44Logo.png b/src-tauri/icons/Square44x44Logo.png new file mode 100644 index 0000000..bc143d7 Binary files /dev/null and b/src-tauri/icons/Square44x44Logo.png differ diff --git a/src-tauri/icons/Square71x71Logo.png b/src-tauri/icons/Square71x71Logo.png new file mode 100644 index 0000000..3f0568d Binary files /dev/null and b/src-tauri/icons/Square71x71Logo.png differ diff --git a/src-tauri/icons/Square89x89Logo.png b/src-tauri/icons/Square89x89Logo.png new file mode 100644 index 0000000..6700d94 Binary files /dev/null and b/src-tauri/icons/Square89x89Logo.png differ diff --git a/src-tauri/icons/StoreLogo.png b/src-tauri/icons/StoreLogo.png new file mode 100644 index 0000000..4fabc85 Binary files /dev/null and b/src-tauri/icons/StoreLogo.png differ diff --git a/src-tauri/icons/android/mipmap-anydpi-v26/ic_launcher.xml b/src-tauri/icons/android/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 0000000..2ffbf24 --- /dev/null +++ b/src-tauri/icons/android/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png b/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000..165287b Binary files /dev/null and b/src-tauri/icons/android/mipmap-hdpi/ic_launcher.png differ diff --git a/src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png b/src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png new file mode 100644 index 0000000..372c63e Binary files /dev/null and b/src-tauri/icons/android/mipmap-hdpi/ic_launcher_foreground.png differ diff --git a/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png b/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png new file mode 100644 index 0000000..d5c60a5 Binary files /dev/null and b/src-tauri/icons/android/mipmap-hdpi/ic_launcher_round.png differ diff --git a/src-tauri/icons/android/mipmap-mdpi/ic_launcher.png b/src-tauri/icons/android/mipmap-mdpi/ic_launcher.png new file mode 100644 index 0000000..fc3bd08 Binary files /dev/null and b/src-tauri/icons/android/mipmap-mdpi/ic_launcher.png differ diff --git a/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png b/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png new file mode 100644 index 0000000..d04ab6e Binary files /dev/null and b/src-tauri/icons/android/mipmap-mdpi/ic_launcher_foreground.png differ diff --git a/src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png b/src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png new file mode 100644 index 0000000..a17b92f Binary files /dev/null and b/src-tauri/icons/android/mipmap-mdpi/ic_launcher_round.png differ diff --git a/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png b/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000..c744eea Binary files /dev/null and b/src-tauri/icons/android/mipmap-xhdpi/ic_launcher.png differ diff --git a/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png b/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000..eef633a Binary files /dev/null and b/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_foreground.png differ diff --git a/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png b/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png new file mode 100644 index 0000000..b71e73c Binary files /dev/null and b/src-tauri/icons/android/mipmap-xhdpi/ic_launcher_round.png differ diff --git a/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png b/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000..a6c708b Binary files /dev/null and b/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher.png differ diff --git a/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png b/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000..755a5c0 Binary files /dev/null and b/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_foreground.png differ diff --git a/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png b/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png new file mode 100644 index 0000000..91f2ad3 Binary files /dev/null and b/src-tauri/icons/android/mipmap-xxhdpi/ic_launcher_round.png differ diff --git a/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png b/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 0000000..0f654a9 Binary files /dev/null and b/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png b/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png new file mode 100644 index 0000000..ea5fb9d Binary files /dev/null and b/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_foreground.png differ diff --git a/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png b/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 0000000..2d1b3e8 Binary files /dev/null and b/src-tauri/icons/android/mipmap-xxxhdpi/ic_launcher_round.png differ diff --git a/src-tauri/icons/android/values/ic_launcher_background.xml b/src-tauri/icons/android/values/ic_launcher_background.xml new file mode 100644 index 0000000..ea9c223 --- /dev/null +++ b/src-tauri/icons/android/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ + + + #fff + \ No newline at end of file diff --git a/src-tauri/icons/icon.icns b/src-tauri/icons/icon.icns new file mode 100644 index 0000000..0359d0d Binary files /dev/null and b/src-tauri/icons/icon.icns differ diff --git a/src-tauri/icons/icon.ico b/src-tauri/icons/icon.ico new file mode 100644 index 0000000..b41c203 Binary files /dev/null and b/src-tauri/icons/icon.ico differ diff --git a/src-tauri/icons/icon.png b/src-tauri/icons/icon.png new file mode 100644 index 0000000..e1ba2e1 Binary files /dev/null and b/src-tauri/icons/icon.png differ diff --git a/src-tauri/icons/ios/AppIcon-20x20@1x.png b/src-tauri/icons/ios/AppIcon-20x20@1x.png new file mode 100644 index 0000000..a3c6e3d Binary files /dev/null and b/src-tauri/icons/ios/AppIcon-20x20@1x.png differ diff --git a/src-tauri/icons/ios/AppIcon-20x20@2x-1.png b/src-tauri/icons/ios/AppIcon-20x20@2x-1.png new file mode 100644 index 0000000..ef39ecd Binary files /dev/null and b/src-tauri/icons/ios/AppIcon-20x20@2x-1.png differ diff --git a/src-tauri/icons/ios/AppIcon-20x20@2x.png b/src-tauri/icons/ios/AppIcon-20x20@2x.png new file mode 100644 index 0000000..ef39ecd Binary files /dev/null and b/src-tauri/icons/ios/AppIcon-20x20@2x.png differ diff --git a/src-tauri/icons/ios/AppIcon-20x20@3x.png b/src-tauri/icons/ios/AppIcon-20x20@3x.png new file mode 100644 index 0000000..4a7f35a Binary files /dev/null and b/src-tauri/icons/ios/AppIcon-20x20@3x.png differ diff --git a/src-tauri/icons/ios/AppIcon-29x29@1x.png b/src-tauri/icons/ios/AppIcon-29x29@1x.png new file mode 100644 index 0000000..d01d5f2 Binary files /dev/null and b/src-tauri/icons/ios/AppIcon-29x29@1x.png differ diff --git a/src-tauri/icons/ios/AppIcon-29x29@2x-1.png b/src-tauri/icons/ios/AppIcon-29x29@2x-1.png new file mode 100644 index 0000000..7e1295b Binary files /dev/null and b/src-tauri/icons/ios/AppIcon-29x29@2x-1.png differ diff --git a/src-tauri/icons/ios/AppIcon-29x29@2x.png b/src-tauri/icons/ios/AppIcon-29x29@2x.png new file mode 100644 index 0000000..7e1295b Binary files /dev/null and b/src-tauri/icons/ios/AppIcon-29x29@2x.png differ diff --git a/src-tauri/icons/ios/AppIcon-29x29@3x.png b/src-tauri/icons/ios/AppIcon-29x29@3x.png new file mode 100644 index 0000000..6aa6d5e Binary files /dev/null and b/src-tauri/icons/ios/AppIcon-29x29@3x.png differ diff --git a/src-tauri/icons/ios/AppIcon-40x40@1x.png b/src-tauri/icons/ios/AppIcon-40x40@1x.png new file mode 100644 index 0000000..ef39ecd Binary files /dev/null and b/src-tauri/icons/ios/AppIcon-40x40@1x.png differ diff --git a/src-tauri/icons/ios/AppIcon-40x40@2x-1.png b/src-tauri/icons/ios/AppIcon-40x40@2x-1.png new file mode 100644 index 0000000..6064af4 Binary files /dev/null and b/src-tauri/icons/ios/AppIcon-40x40@2x-1.png differ diff --git a/src-tauri/icons/ios/AppIcon-40x40@2x.png b/src-tauri/icons/ios/AppIcon-40x40@2x.png new file mode 100644 index 0000000..6064af4 Binary files /dev/null and b/src-tauri/icons/ios/AppIcon-40x40@2x.png differ diff --git a/src-tauri/icons/ios/AppIcon-40x40@3x.png b/src-tauri/icons/ios/AppIcon-40x40@3x.png new file mode 100644 index 0000000..8ead371 Binary files /dev/null and b/src-tauri/icons/ios/AppIcon-40x40@3x.png differ diff --git a/src-tauri/icons/ios/AppIcon-512@2x.png b/src-tauri/icons/ios/AppIcon-512@2x.png new file mode 100644 index 0000000..22bf142 Binary files /dev/null and b/src-tauri/icons/ios/AppIcon-512@2x.png differ diff --git a/src-tauri/icons/ios/AppIcon-60x60@2x.png b/src-tauri/icons/ios/AppIcon-60x60@2x.png new file mode 100644 index 0000000..8ead371 Binary files /dev/null and b/src-tauri/icons/ios/AppIcon-60x60@2x.png differ diff --git a/src-tauri/icons/ios/AppIcon-60x60@3x.png b/src-tauri/icons/ios/AppIcon-60x60@3x.png new file mode 100644 index 0000000..9b596fe Binary files /dev/null and b/src-tauri/icons/ios/AppIcon-60x60@3x.png differ diff --git a/src-tauri/icons/ios/AppIcon-76x76@1x.png b/src-tauri/icons/ios/AppIcon-76x76@1x.png new file mode 100644 index 0000000..cbb7746 Binary files /dev/null and b/src-tauri/icons/ios/AppIcon-76x76@1x.png differ diff --git a/src-tauri/icons/ios/AppIcon-76x76@2x.png b/src-tauri/icons/ios/AppIcon-76x76@2x.png new file mode 100644 index 0000000..db13ccd Binary files /dev/null and b/src-tauri/icons/ios/AppIcon-76x76@2x.png differ diff --git a/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png b/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png new file mode 100644 index 0000000..dce86d9 Binary files /dev/null and b/src-tauri/icons/ios/AppIcon-83.5x83.5@2x.png differ diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs new file mode 100644 index 0000000..6f2a230 --- /dev/null +++ b/src-tauri/src/lib.rs @@ -0,0 +1,25 @@ +#[cfg_attr(mobile, tauri::mobile_entry_point)] +pub fn run() { + tauri::Builder::default() + .setup(|app| { + // Setup logging with rotation and file targets + app.handle().plugin( + tauri_plugin_log::Builder::default() + .level(log::LevelFilter::Info) + .target(tauri_plugin_log::Target::new( + tauri_plugin_log::TargetKind::Stdout, + )) + .target(tauri_plugin_log::Target::new( + tauri_plugin_log::TargetKind::LogDir { + file_name: Some("neptune-privacy".into()) + } + )) + .max_file_size(10_485_760) // 10MB + .rotation_strategy(tauri_plugin_log::RotationStrategy::KeepAll) + .build(), + )?; + Ok(()) + }) + .run(tauri::generate_context!()) + .expect("error while running tauri application"); +} diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs new file mode 100644 index 0000000..ad5fe83 --- /dev/null +++ b/src-tauri/src/main.rs @@ -0,0 +1,6 @@ +// Prevents additional console window on Windows in release, DO NOT REMOVE!! +#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")] + +fn main() { + app_lib::run(); +} diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json new file mode 100644 index 0000000..8583b36 --- /dev/null +++ b/src-tauri/tauri.conf.json @@ -0,0 +1,57 @@ +{ + "$schema": "../node_modules/@tauri-apps/cli/config.schema.json", + "productName": "Neptune Privacy", + "version": "0.1.0", + "identifier": "com.neptune.privacy", + "build": { + "frontendDist": "../dist", + "devUrl": "http://localhost:5173", + "beforeDevCommand": "pnpm dev", + "beforeBuildCommand": "pnpm build" + }, + "app": { + "windows": [ + { + "title": "Neptune Privacy", + "width": 800, + "height": 800, + "minWidth": 375, + "resizable": true, + "fullscreen": false, + "center": true + } + ], + "security": { + "csp": { + "default-src": "'self' 'unsafe-inline'", + "connect-src": "'self' https: wss: http://localhost:* ws://localhost:*", + "script-src": "'self' 'unsafe-inline' 'unsafe-eval'", + "style-src": "'self' 'unsafe-inline'", + "img-src": "'self' data: https: http:", + "font-src": "'self' data:", + "worker-src": "'self' blob:" + }, + "dangerousDisableAssetCspModification": false, + "freezePrototype": true + }, + "withGlobalTauri": false, + "macOSPrivateApi": false + }, + "bundle": { + "active": true, + "targets": "all", + "icon": [ + "icons/32x32.png", + "icons/128x128.png", + "icons/128x128@2x.png", + "icons/icon.icns", + "icons/icon.ico" + ], + "iOS": { + "minimumSystemVersion": "13.0" + }, + "android": { + "minSdkVersion": 24 + } + } +} diff --git a/src/App.vue b/src/App.vue index 369ab23..c81acc7 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,30 +1,7 @@ - + diff --git a/src/assets/fonts/Montserrat-VariableFont_wght.ttf b/src/assets/fonts/Montserrat-VariableFont_wght.ttf new file mode 100644 index 0000000..451e692 Binary files /dev/null and b/src/assets/fonts/Montserrat-VariableFont_wght.ttf differ diff --git a/src/components/commons/layout/Layout.vue b/src/components/commons/layout/Layout.vue new file mode 100644 index 0000000..13ac8fb --- /dev/null +++ b/src/components/commons/layout/Layout.vue @@ -0,0 +1,94 @@ + + + + + + diff --git a/src/components/commons/layout/index.ts b/src/components/commons/layout/index.ts new file mode 100644 index 0000000..f810949 --- /dev/null +++ b/src/components/commons/layout/index.ts @@ -0,0 +1 @@ +export { default as Layout } from './Layout.vue' diff --git a/src/components/ui/alert/Alert.vue b/src/components/ui/alert/Alert.vue new file mode 100644 index 0000000..9feea31 --- /dev/null +++ b/src/components/ui/alert/Alert.vue @@ -0,0 +1,17 @@ + + + diff --git a/src/components/ui/alert/AlertDescription.vue b/src/components/ui/alert/AlertDescription.vue new file mode 100644 index 0000000..afeaa01 --- /dev/null +++ b/src/components/ui/alert/AlertDescription.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/alert/AlertTitle.vue b/src/components/ui/alert/AlertTitle.vue new file mode 100644 index 0000000..1f98d11 --- /dev/null +++ b/src/components/ui/alert/AlertTitle.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/alert/index.ts b/src/components/ui/alert/index.ts new file mode 100644 index 0000000..22746b5 --- /dev/null +++ b/src/components/ui/alert/index.ts @@ -0,0 +1,24 @@ +import type { VariantProps } from "class-variance-authority" +import { cva } from "class-variance-authority" + +export { default as Alert } from "./Alert.vue" +export { default as AlertDescription } from "./AlertDescription.vue" +export { default as AlertTitle } from "./AlertTitle.vue" + +export const alertVariants = cva( + "relative w-full rounded-lg border px-4 py-3 text-sm [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground [&>svg~*]:pl-7", + { + variants: { + variant: { + default: "bg-background text-foreground", + destructive: + "border-destructive/50 text-destructive dark:border-destructive [&>svg]:text-destructive", + }, + }, + defaultVariants: { + variant: "default", + }, + }, +) + +export type AlertVariants = VariantProps diff --git a/src/components/ui/badge/Badge.vue b/src/components/ui/badge/Badge.vue new file mode 100644 index 0000000..0374568 --- /dev/null +++ b/src/components/ui/badge/Badge.vue @@ -0,0 +1,17 @@ + + + diff --git a/src/components/ui/badge/index.ts b/src/components/ui/badge/index.ts new file mode 100644 index 0000000..5ab6ef6 --- /dev/null +++ b/src/components/ui/badge/index.ts @@ -0,0 +1,26 @@ +import type { VariantProps } from "class-variance-authority" +import { cva } from "class-variance-authority" + +export { default as Badge } from "./Badge.vue" + +export const badgeVariants = cva( + "inline-flex gap-1 items-center rounded-md border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2", + { + variants: { + variant: { + default: + "border-transparent bg-primary text-primary-foreground shadow hover:bg-primary/80", + secondary: + "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80", + destructive: + "border-transparent bg-destructive text-destructive-foreground shadow hover:bg-destructive/80", + outline: "text-foreground", + }, + }, + defaultVariants: { + variant: "default", + }, + }, +) + +export type BadgeVariants = VariantProps diff --git a/src/components/ui/card/Card.vue b/src/components/ui/card/Card.vue new file mode 100644 index 0000000..9b0be92 --- /dev/null +++ b/src/components/ui/card/Card.vue @@ -0,0 +1,21 @@ + + + diff --git a/src/components/ui/card/CardContent.vue b/src/components/ui/card/CardContent.vue new file mode 100644 index 0000000..4c4dfc7 --- /dev/null +++ b/src/components/ui/card/CardContent.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/card/CardDescription.vue b/src/components/ui/card/CardDescription.vue new file mode 100644 index 0000000..02bddba --- /dev/null +++ b/src/components/ui/card/CardDescription.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/card/CardFooter.vue b/src/components/ui/card/CardFooter.vue new file mode 100644 index 0000000..fad3928 --- /dev/null +++ b/src/components/ui/card/CardFooter.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/card/CardHeader.vue b/src/components/ui/card/CardHeader.vue new file mode 100644 index 0000000..119700c --- /dev/null +++ b/src/components/ui/card/CardHeader.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/card/CardTitle.vue b/src/components/ui/card/CardTitle.vue new file mode 100644 index 0000000..66d04ad --- /dev/null +++ b/src/components/ui/card/CardTitle.vue @@ -0,0 +1,18 @@ + + + diff --git a/src/components/ui/card/index.ts b/src/components/ui/card/index.ts new file mode 100644 index 0000000..e5c7cb2 --- /dev/null +++ b/src/components/ui/card/index.ts @@ -0,0 +1,6 @@ +export { default as Card } from "./Card.vue" +export { default as CardContent } from "./CardContent.vue" +export { default as CardDescription } from "./CardDescription.vue" +export { default as CardFooter } from "./CardFooter.vue" +export { default as CardHeader } from "./CardHeader.vue" +export { default as CardTitle } from "./CardTitle.vue" diff --git a/src/components/ui/input/Input.vue b/src/components/ui/input/Input.vue new file mode 100644 index 0000000..f924222 --- /dev/null +++ b/src/components/ui/input/Input.vue @@ -0,0 +1,24 @@ + + + diff --git a/src/components/ui/input/index.ts b/src/components/ui/input/index.ts new file mode 100644 index 0000000..9976b86 --- /dev/null +++ b/src/components/ui/input/index.ts @@ -0,0 +1 @@ +export { default as Input } from "./Input.vue" diff --git a/src/components/ui/label/Label.vue b/src/components/ui/label/Label.vue new file mode 100644 index 0000000..a746407 --- /dev/null +++ b/src/components/ui/label/Label.vue @@ -0,0 +1,25 @@ + + + diff --git a/src/components/ui/label/index.ts b/src/components/ui/label/index.ts new file mode 100644 index 0000000..036e35c --- /dev/null +++ b/src/components/ui/label/index.ts @@ -0,0 +1 @@ +export { default as Label } from "./Label.vue" diff --git a/src/components/ui/progress/Progress.vue b/src/components/ui/progress/Progress.vue new file mode 100644 index 0000000..cab152c --- /dev/null +++ b/src/components/ui/progress/Progress.vue @@ -0,0 +1,36 @@ + + + diff --git a/src/components/ui/progress/index.ts b/src/components/ui/progress/index.ts new file mode 100644 index 0000000..8598b96 --- /dev/null +++ b/src/components/ui/progress/index.ts @@ -0,0 +1 @@ +export { default as Progress } from "./Progress.vue" diff --git a/src/components/ui/separator/Separator.vue b/src/components/ui/separator/Separator.vue new file mode 100644 index 0000000..3daf562 --- /dev/null +++ b/src/components/ui/separator/Separator.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/components/ui/separator/index.ts b/src/components/ui/separator/index.ts new file mode 100644 index 0000000..4407287 --- /dev/null +++ b/src/components/ui/separator/index.ts @@ -0,0 +1 @@ +export { default as Separator } from "./Separator.vue" diff --git a/src/components/ui/theme-toggle/ThemeToggle.vue b/src/components/ui/theme-toggle/ThemeToggle.vue index 1114be7..8628724 100644 --- a/src/components/ui/theme-toggle/ThemeToggle.vue +++ b/src/components/ui/theme-toggle/ThemeToggle.vue @@ -1,4 +1,6 @@ + + diff --git a/src/views/Auth/components/create/ConfirmSeedStep.vue b/src/views/Auth/components/create/ConfirmSeedStep.vue new file mode 100644 index 0000000..16d3458 --- /dev/null +++ b/src/views/Auth/components/create/ConfirmSeedStep.vue @@ -0,0 +1,279 @@ + + + diff --git a/src/views/Auth/components/create/CreatePasswordStep.vue b/src/views/Auth/components/create/CreatePasswordStep.vue new file mode 100644 index 0000000..eb76a54 --- /dev/null +++ b/src/views/Auth/components/create/CreatePasswordStep.vue @@ -0,0 +1,259 @@ + + + diff --git a/src/views/Auth/components/create/CreateWalletFlow.vue b/src/views/Auth/components/create/CreateWalletFlow.vue new file mode 100644 index 0000000..5137d09 --- /dev/null +++ b/src/views/Auth/components/create/CreateWalletFlow.vue @@ -0,0 +1,161 @@ + + + diff --git a/src/views/Auth/components/create/SeedPhraseDisplayStep.vue b/src/views/Auth/components/create/SeedPhraseDisplayStep.vue new file mode 100644 index 0000000..8645863 --- /dev/null +++ b/src/views/Auth/components/create/SeedPhraseDisplayStep.vue @@ -0,0 +1,173 @@ + + + diff --git a/src/views/Auth/components/create/WalletCreatedStep.vue b/src/views/Auth/components/create/WalletCreatedStep.vue new file mode 100644 index 0000000..7ce9aba --- /dev/null +++ b/src/views/Auth/components/create/WalletCreatedStep.vue @@ -0,0 +1,143 @@ + + + diff --git a/src/views/Auth/components/index.ts b/src/views/Auth/components/index.ts new file mode 100644 index 0000000..d830cd5 --- /dev/null +++ b/src/views/Auth/components/index.ts @@ -0,0 +1,5 @@ +export { default as OnboardingTab } from './onboarding/OnboardingTab.vue' +export { default as LoginTab } from './login/LoginTab.vue' +export { default as CreateWalletFlow } from './create/CreateWalletFlow.vue' +export { default as RecoverWalletFlow } from './recovery/RecoverWalletFlow.vue' + diff --git a/src/views/Auth/components/login/LoginTab.vue b/src/views/Auth/components/login/LoginTab.vue new file mode 100644 index 0000000..3e19df8 --- /dev/null +++ b/src/views/Auth/components/login/LoginTab.vue @@ -0,0 +1,170 @@ + + + diff --git a/src/views/Auth/components/onboarding/OnboardingTab.vue b/src/views/Auth/components/onboarding/OnboardingTab.vue new file mode 100644 index 0000000..7bf0551 --- /dev/null +++ b/src/views/Auth/components/onboarding/OnboardingTab.vue @@ -0,0 +1,110 @@ + + + diff --git a/src/views/Auth/components/recovery/RecoverSeedInput.vue b/src/views/Auth/components/recovery/RecoverSeedInput.vue new file mode 100644 index 0000000..8859856 --- /dev/null +++ b/src/views/Auth/components/recovery/RecoverSeedInput.vue @@ -0,0 +1,130 @@ + + + diff --git a/src/views/Auth/components/recovery/RecoverWalletFlow.vue b/src/views/Auth/components/recovery/RecoverWalletFlow.vue new file mode 100644 index 0000000..236141e --- /dev/null +++ b/src/views/Auth/components/recovery/RecoverWalletFlow.vue @@ -0,0 +1,302 @@ + + + diff --git a/src/views/AuthView.vue b/src/views/AuthView.vue deleted file mode 100644 index de22d38..0000000 --- a/src/views/AuthView.vue +++ /dev/null @@ -1,11 +0,0 @@ - - - - diff --git a/src/views/HistoryView.vue b/src/views/HistoryView.vue new file mode 100644 index 0000000..5ccaeba --- /dev/null +++ b/src/views/HistoryView.vue @@ -0,0 +1,18 @@ + + + + diff --git a/src/views/HomeView.vue b/src/views/HomeView.vue index eb9cc27..7cc2e14 100644 --- a/src/views/HomeView.vue +++ b/src/views/HomeView.vue @@ -3,9 +3,58 @@ const { t } = useI18n() diff --git a/src/views/SettingsView.vue b/src/views/SettingsView.vue new file mode 100644 index 0000000..753c8a8 --- /dev/null +++ b/src/views/SettingsView.vue @@ -0,0 +1,27 @@ + + + + diff --git a/src/views/Wallet/WalletView.vue b/src/views/Wallet/WalletView.vue new file mode 100644 index 0000000..d5387f7 --- /dev/null +++ b/src/views/Wallet/WalletView.vue @@ -0,0 +1,19 @@ + + + + diff --git a/src/views/index.ts b/src/views/index.ts new file mode 100644 index 0000000..f0cd746 --- /dev/null +++ b/src/views/index.ts @@ -0,0 +1,2 @@ +export const AuthPage = () => import('@/views/Auth/AuthView.vue') +export const WalletPage = () => import('@/views/Wallet/WalletView.vue') diff --git a/tailwind.config.ts b/tailwind.config.ts index 5d8fb66..f585a17 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -2,4 +2,18 @@ // This file is kept for shadcn-vue compatibility but configuration is done in CSS export default { // No prefix for Tailwind v4 CSS-first approach + theme: { + extend: { + fontFamily: { + sans: [ + 'Montserrat', + '-apple-system', + 'BlinkMacSystemFont', + 'Segoe UI', + 'Roboto', + 'sans-serif', + ], + }, + }, + }, } diff --git a/vite.config.ts b/vite.config.ts index b13bba2..5ab62a3 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -11,19 +11,16 @@ export default defineConfig({ vue(), tailwindcss(), - // Auto import Vue APIs (ref, computed, watch, etc.) AutoImport({ imports: [ - 'vue', - 'vue-router', - 'pinia', - '@vueuse/core', + { + 'vue-router': ['useRoute', 'useRouter'], + }, { 'vue-i18n': ['useI18n'], }, ], dts: 'src/auto-imports.d.ts', - dirs: ['src/composables', 'src/stores'], vueTemplate: true, eslintrc: { enabled: true, @@ -31,7 +28,6 @@ export default defineConfig({ }, }), - // Auto import components Components({ dts: 'src/components.d.ts', dirs: ['src/components'], @@ -45,4 +41,30 @@ export default defineConfig({ '@': path.resolve(__dirname, './src'), }, }, + + server: { + port: 5173, + strictPort: true, + host: '0.0.0.0', + hmr: { + protocol: 'ws', + host: 'localhost', + port: 5183, + }, + }, + + // Prevent vite from obscuring rust errors + clearScreen: false, + + // Env variables starting with the item of `envPrefix` will be exposed in tauri's source code through `import.meta.env` + envPrefix: ['VITE_', 'TAURI_'], + + build: { + // Tauri uses Chromium on Windows and WebKit on macOS and Linux + target: process.env.TAURI_ENV_PLATFORM == 'windows' ? 'chrome105' : 'safari13', + // Don't minify for debug builds + minify: !process.env.TAURI_ENV_DEBUG ? 'esbuild' : false, + // Produce sourcemaps for debug builds + sourcemap: !!process.env.TAURI_ENV_DEBUG, + }, })