Major facelift

This commit is contained in:
Nicola Spadari
2024-06-16 17:00:07 +02:00
parent 879b55e59e
commit 9d9bea7e32
23 changed files with 386 additions and 92 deletions

View File

@@ -1,7 +1,12 @@
<h1 align="center">Nuxtor</h1>
<p align="center">
<img width="150" src="./src/public/logo.svg" alt="logo">
</p>
<h1 align="center">NUXTOR</h1>
<hr />
<p align="center">
**⚠️ `nuxtor` is still a WIP ⚠️**
</p>
## Usage

View File

@@ -7,6 +7,7 @@ export default defineNuxtConfig({
modules: [
"@vueuse/nuxt",
"@unocss/nuxt",
"nuxt-svgo",
"@nuxt/eslint"
],
app: {
@@ -23,6 +24,14 @@ export default defineNuxtConfig({
noscript: [
{ children: "JavaScript is required to run this project" }
]
},
pageTransition: {
name: "page",
mode: "out-in"
},
layoutTransition: {
name: "layout",
mode: "out-in"
}
},
experimental: {
@@ -31,6 +40,9 @@ export default defineNuxtConfig({
css: [
"@unocss/reset/tailwind.css"
],
svgo: {
autoImportPath: "@/assets/"
},
vite: {
clearScreen: false,
envPrefix: ["VITE_", "TAURI_"],

View File

@@ -37,6 +37,7 @@
"eslint": "8.57.0",
"internal-ip": "^8.0.0",
"nuxt": "^3.12.1",
"nuxt-svgo": "^4.0.1",
"sass": "^1.77.5",
"typescript": "^5.4.5",
"unplugin-auto-import": "^0.17.6"

214
pnpm-lock.yaml generated
View File

@@ -9,7 +9,7 @@ importers:
.:
dependencies:
'@tauri-apps/api':
specifier: '>=2.0.0-beta.0'
specifier: '>=2.0.0-beta.13'
version: 2.0.0-beta.13
'@tauri-apps/plugin-notification':
specifier: 2.0.0-beta.5
@@ -31,7 +31,7 @@ importers:
specifier: ^0.3.13
version: 0.3.13(eslint@8.57.0)(nuxt@3.12.1(@parcel/watcher@2.4.1)(@types/node@20.12.7)(@unocss/reset@0.61.0)(encoding@0.1.13)(eslint@8.57.0)(floating-vue@5.2.2(@nuxt/kit@3.12.1(rollup@4.14.3))(vue@3.4.29(typescript@5.4.5)))(ioredis@5.3.2)(optionator@0.9.3)(rollup@4.14.3)(sass@1.77.5)(terser@5.30.3)(typescript@5.4.5)(unocss@0.61.0(@unocss/webpack@0.61.0(rollup@4.14.3)(webpack@5.91.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.14.3)(vite@5.3.1(@types/node@20.12.7)(sass@1.77.5)(terser@5.30.3)))(vite@5.3.1(@types/node@20.12.7)(sass@1.77.5)(terser@5.30.3)))(rollup@4.14.3)(typescript@5.4.5)(vite@5.3.1(@types/node@20.12.7)(sass@1.77.5)(terser@5.30.3))
'@tauri-apps/cli':
specifier: '>=2.0.0-beta.0'
specifier: '>=2.0.0-beta.20'
version: 2.0.0-beta.20
'@unocss/eslint-plugin':
specifier: ^0.61.0
@@ -49,11 +49,14 @@ importers:
specifier: 8.57.0
version: 8.57.0
internal-ip:
specifier: ^7.0.0
version: 7.0.0
specifier: ^8.0.0
version: 8.0.0
nuxt:
specifier: ^3.12.1
version: 3.12.1(@parcel/watcher@2.4.1)(@types/node@20.12.7)(@unocss/reset@0.61.0)(encoding@0.1.13)(eslint@8.57.0)(floating-vue@5.2.2(@nuxt/kit@3.12.1(rollup@4.14.3))(vue@3.4.29(typescript@5.4.5)))(ioredis@5.3.2)(optionator@0.9.3)(rollup@4.14.3)(sass@1.77.5)(terser@5.30.3)(typescript@5.4.5)(unocss@0.61.0(@unocss/webpack@0.61.0(rollup@4.14.3)(webpack@5.91.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.14.3)(vite@5.3.1(@types/node@20.12.7)(sass@1.77.5)(terser@5.30.3)))(vite@5.3.1(@types/node@20.12.7)(sass@1.77.5)(terser@5.30.3))
nuxt-svgo:
specifier: ^4.0.1
version: 4.0.1(rollup@4.14.3)(vue@3.4.29(typescript@5.4.5))
sass:
specifier: ^1.77.5
version: 1.77.5
@@ -2148,6 +2151,14 @@ packages:
resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==}
engines: {node: '>=8'}
cidr-regex@4.0.3:
resolution: {integrity: sha512-HOwDIy/rhKeMf6uOzxtv7FAbrz8zPjmVKfSpM+U7/bNBXC5rtOyr758jxcptiSx6ZZn5LOhPJT5WWxPAGDV8dw==}
engines: {node: '>=14'}
cidr-tools@6.4.2:
resolution: {integrity: sha512-KZC8t2ipCqU2M+ISmTxRDGu9bku5MRU3V1cWyGEFJTZEzRhGvBJvVsbpZO5UAu12fExRFihtYGXAlgFFpmK9jw==}
engines: {node: '>=16'}
citty@0.1.6:
resolution: {integrity: sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==}
@@ -2170,6 +2181,10 @@ packages:
resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==}
engines: {node: '>=12'}
clone-regexp@3.0.0:
resolution: {integrity: sha512-ujdnoq2Kxb8s3ItNBtnYeXdm07FcU0u8ARAT1lQ2YdMwQC+cdiXX8KoqMVuglztILivceTtp4ivqGSmEmhBUJw==}
engines: {node: '>=12'}
cluster-key-slot@1.1.2:
resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==}
engines: {node: '>=0.10.0'}
@@ -2238,6 +2253,10 @@ packages:
console-control-strings@1.1.0:
resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==}
convert-hrtime@5.0.0:
resolution: {integrity: sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==}
engines: {node: '>=12'}
convert-source-map@2.0.0:
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
@@ -2387,9 +2406,9 @@ packages:
resolution: {integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==}
engines: {node: '>=18'}
default-gateway@6.0.3:
resolution: {integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==}
engines: {node: '>= 10'}
default-gateway@7.2.2:
resolution: {integrity: sha512-AD7TrdNNPXRZIGw63dw+lnGmT4v7ggZC5NHNJgAYWm5njrwoze1q5JSAW9YuLy2tjnoLUG/r8FEB93MCh9QJPg==}
engines: {node: '>= 16'}
define-lazy-prop@2.0.0:
resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==}
@@ -2911,6 +2930,10 @@ packages:
function-bind@1.1.2:
resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
function-timeout@0.1.1:
resolution: {integrity: sha512-0NVVC0TaP7dSTvn1yMiy6d6Q8gifzbvQafO46RtLG/kHJUBNd+pVRGOBoK44wNBvtSPUJRfdVvkFdD3p0xvyZg==}
engines: {node: '>=14.16'}
gauge@3.0.2:
resolution: {integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==}
engines: {node: '>=10'}
@@ -3137,9 +3160,9 @@ packages:
resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==}
engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0}
internal-ip@7.0.0:
resolution: {integrity: sha512-qE4TeD4brqC45Vq/+VASeMiS1KRyfBkR6HT2sh9pZVVCzSjPkaCEfKFU+dL0PRv7NHJtvoKN2r82G6wTfzorkw==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
internal-ip@8.0.0:
resolution: {integrity: sha512-e6c3zxr9COnnc29PIz9LffmALOt0XhIJdR7f83DyHcQksL3B40KGmU3Sr1lrHja3i7Zyqo+AbwKZ+nZiMvg/OA==}
engines: {node: '>=16'}
ioredis@5.3.2:
resolution: {integrity: sha512-1DKMMzlIHM02eBBVOFQ1+AolGjs6+xEcM4PDL7NqOS6szq7H9jSaEkIUH6/a5Hl241LzW6JLSiAbNvTQjUupUA==}
@@ -3149,13 +3172,13 @@ packages:
resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==}
engines: {node: '>= 12'}
ip-regex@4.3.0:
resolution: {integrity: sha512-B9ZWJxHHOHUhUjCPrMpLD4xEq35bUTClHM1S6CBU5ixQnkZmwipwgc96vAd7AAGM9TGHvJR+Uss+/Ak6UphK+Q==}
engines: {node: '>=8'}
ip-bigint@7.3.0:
resolution: {integrity: sha512-2qVAe0Q9+Y+5nGvmogwK9y4kefD5Ks5l/IG0Jo1lhU9gIF34jifhqrwXwzkIl+LC594Q6SyAlngs4p890xsXVw==}
engines: {node: '>=16'}
ipaddr.js@2.2.0:
resolution: {integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==}
engines: {node: '>= 10'}
ip-regex@5.0.0:
resolution: {integrity: sha512-fOCG6lhoKKakwv+C6KdsOnGvgXnmgfmp0myi3bcNwj3qfwPAxRKWEuFhvEFF7ceYIz6+1jRZ+yguLFAmUNPEfw==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
iron-webcrypto@1.1.0:
resolution: {integrity: sha512-5vgYsCakNlaQub1orZK5QmNYhwYtcllTkZBp5sfIaCqY93Cf6l+v2rtE+E4TMbcfjxDMCdrO8wmp7+ZvhDECLA==}
@@ -3217,9 +3240,9 @@ packages:
resolution: {integrity: sha512-K55T22lfpQ63N4KEN57jZUAaAYqYHEe8veb/TycJRk9DdSCLLcovXz/mL6mOnhQaZsQGwPhuFopdQIlqGSEjiQ==}
engines: {node: '>=18'}
is-ip@3.1.0:
resolution: {integrity: sha512-35vd5necO7IitFPjd/YBeqwWnyDWbuLH9ZXQdMfDA8TEo7pv5X8yfrvVO3xbJbLUlERCMvf6X0hTUamQxCYJ9Q==}
engines: {node: '>=8'}
is-ip@5.0.1:
resolution: {integrity: sha512-FCsGHdlrOnZQcp0+XT5a+pYowf33itBalCl+7ovNXC/7o5BhIpG14M3OrpPPdBSIQJCm+0M5+9mO7S9VVTTCFw==}
engines: {node: '>=14.16'}
is-lambda@1.0.1:
resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==}
@@ -3246,6 +3269,10 @@ packages:
is-reference@1.2.1:
resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==}
is-regexp@3.1.0:
resolution: {integrity: sha512-rbku49cWloU5bSMI+zaRaXdQHXnthP6DZ/vLnfdSKyL4zUzuWnomtOEiZZOd+ioQ+avFo/qau3KPTc7Fjy1uPA==}
engines: {node: '>=12'}
is-ssh@1.4.0:
resolution: {integrity: sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==}
@@ -3546,6 +3573,10 @@ packages:
resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==}
engines: {node: '>=4'}
mini-svg-data-uri@1.4.4:
resolution: {integrity: sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==}
hasBin: true
minimatch@3.1.2:
resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
@@ -3765,6 +3796,21 @@ packages:
engines: {node: ^16.10.0 || >=18.0.0}
hasBin: true
nuxt-svgo@4.0.1:
resolution: {integrity: sha512-jN82aehGXMXMkapNnk15Vr712EXtPIfG8SX8O//m5Ls/QgD7bbIMkGRbfJKfoX6a4NZm0ojkwvv/hWex8aVY/A==}
peerDependencies:
svgo-loader: ^4.0.0
vue: '>=3.2.13'
vue-loader: ^17.0.0
vue-svg-loader: 0.17.0-beta.2
peerDependenciesMeta:
svgo-loader:
optional: true
vue-loader:
optional: true
vue-svg-loader:
optional: true
nuxt@3.12.1:
resolution: {integrity: sha512-J9TO/b0KSTpKn4yzknIPYRhcJ+UwR/uFM2j0G2FPHAWKxo513ty7Y2unHejWfkuQBL6Ergw6o0E7XsIT059VQw==}
engines: {node: ^14.18.0 || >=16.10.0}
@@ -3824,13 +3870,9 @@ packages:
resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==}
engines: {node: '>= 0.8.0'}
p-event@4.2.0:
resolution: {integrity: sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==}
engines: {node: '>=8'}
p-finally@1.0.0:
resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==}
engines: {node: '>=4'}
p-event@5.0.1:
resolution: {integrity: sha512-dd589iCQ7m1L0bmC5NLlVYfy3TbBEsMUfWx9PyAgPeIcFZ/E2yaTZ4Rz4MiBmmJShviiftHVXOqfnfzJ6kyMrQ==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
p-limit@2.3.0:
resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
@@ -3860,9 +3902,9 @@ packages:
resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==}
engines: {node: '>=10'}
p-timeout@3.2.0:
resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==}
engines: {node: '>=8'}
p-timeout@5.1.0:
resolution: {integrity: sha512-auFDyzzzGZZZdHz3BtET9VEz0SE/uMEAx7uWfGPucfzEwwe/xH0iVeZibQmANYE/hp9T2+UUZT5m+BKyrDp3Ew==}
engines: {node: '>=12'}
p-try@2.2.0:
resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
@@ -3943,9 +3985,6 @@ packages:
perfect-debounce@1.0.0:
resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==}
picocolors@1.0.0:
resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
picocolors@1.0.1:
resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==}
@@ -4510,6 +4549,9 @@ packages:
resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==}
engines: {node: '>=0.6.19'}
string-natural-compare@3.0.1:
resolution: {integrity: sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==}
string-width@4.2.3:
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
engines: {node: '>=8'}
@@ -4560,6 +4602,10 @@ packages:
peerDependencies:
postcss: ^8.4.31
super-regex@0.2.0:
resolution: {integrity: sha512-WZzIx3rC1CvbMDloLsVw0lkZVKJWbrkJ0k1ghKFmcnPrW1+jWbgTkTEWVtD9lMdmI4jZEz40+naBxl1dCUhXXw==}
engines: {node: '>=14.16'}
supports-color@5.5.0:
resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
engines: {node: '>=4'}
@@ -4642,6 +4688,10 @@ packages:
text-table@0.2.0:
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
time-span@5.1.0:
resolution: {integrity: sha512-75voc/9G4rDIJleOo4jPvN4/YC4GRZrY8yy1uU4lwrB3XEQbWve8zXoO5No4eFrGcTAMYyoY67p8jRQdtA1HbA==}
engines: {node: '>=12'}
tiny-invariant@1.3.3:
resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==}
@@ -5252,12 +5302,12 @@ snapshots:
'@babel/code-frame@7.24.2':
dependencies:
'@babel/highlight': 7.24.2
picocolors: 1.0.0
picocolors: 1.0.1
'@babel/code-frame@7.24.7':
dependencies:
'@babel/highlight': 7.24.7
picocolors: 1.0.0
picocolors: 1.0.1
'@babel/compat-data@7.24.4': {}
@@ -5527,14 +5577,14 @@ snapshots:
'@babel/helper-validator-identifier': 7.22.20
chalk: 2.4.2
js-tokens: 4.0.0
picocolors: 1.0.0
picocolors: 1.0.1
'@babel/highlight@7.24.7':
dependencies:
'@babel/helper-validator-identifier': 7.24.7
chalk: 2.4.2
js-tokens: 4.0.0
picocolors: 1.0.0
picocolors: 1.0.1
'@babel/parser@7.24.4':
dependencies:
@@ -7726,7 +7776,7 @@ snapshots:
caniuse-lite: 1.0.30001610
fraction.js: 4.3.7
normalize-range: 0.1.2
picocolors: 1.0.0
picocolors: 1.0.1
postcss: 8.4.38
postcss-value-parser: 4.2.0
@@ -7877,6 +7927,17 @@ snapshots:
ci-info@4.0.0: {}
cidr-regex@4.0.3:
dependencies:
ip-regex: 5.0.0
cidr-tools@6.4.2:
dependencies:
cidr-regex: 4.0.3
ip-bigint: 7.3.0
ip-regex: 5.0.0
string-natural-compare: 3.0.1
citty@0.1.6:
dependencies:
consola: 3.2.3
@@ -7901,6 +7962,10 @@ snapshots:
strip-ansi: 6.0.1
wrap-ansi: 7.0.0
clone-regexp@3.0.0:
dependencies:
is-regexp: 3.1.0
cluster-key-slot@1.1.2: {}
color-convert@1.9.3:
@@ -7951,6 +8016,8 @@ snapshots:
console-control-strings@1.1.0: {}
convert-hrtime@5.0.0: {}
convert-source-map@2.0.0: {}
cookie-es@1.1.0: {}
@@ -8083,9 +8150,9 @@ snapshots:
bundle-name: 4.1.0
default-browser-id: 5.0.0
default-gateway@6.0.3:
default-gateway@7.2.2:
dependencies:
execa: 5.1.1
execa: 7.2.0
define-lazy-prop@2.0.0: {}
@@ -8746,6 +8813,8 @@ snapshots:
function-bind@1.1.2: {}
function-timeout@0.1.1: {}
gauge@3.0.2:
dependencies:
aproba: 2.0.0
@@ -8988,12 +9057,12 @@ snapshots:
ini@4.1.1: {}
internal-ip@7.0.0:
internal-ip@8.0.0:
dependencies:
default-gateway: 6.0.3
ipaddr.js: 2.2.0
is-ip: 3.1.0
p-event: 4.2.0
cidr-tools: 6.4.2
default-gateway: 7.2.2
is-ip: 5.0.1
p-event: 5.0.1
ioredis@5.3.2:
dependencies:
@@ -9014,9 +9083,9 @@ snapshots:
jsbn: 1.1.0
sprintf-js: 1.1.3
ip-regex@4.3.0: {}
ip-bigint@7.3.0: {}
ipaddr.js@2.2.0: {}
ip-regex@5.0.0: {}
iron-webcrypto@1.1.0: {}
@@ -9066,9 +9135,10 @@ snapshots:
global-directory: 4.0.1
is-path-inside: 4.0.0
is-ip@3.1.0:
is-ip@5.0.1:
dependencies:
ip-regex: 4.3.0
ip-regex: 5.0.0
super-regex: 0.2.0
is-lambda@1.0.1: {}
@@ -9086,6 +9156,8 @@ snapshots:
dependencies:
'@types/estree': 1.0.5
is-regexp@3.1.0: {}
is-ssh@1.4.0:
dependencies:
protocols: 2.0.1
@@ -9194,7 +9266,7 @@ snapshots:
launch-editor@2.6.1:
dependencies:
picocolors: 1.0.0
picocolors: 1.0.1
shell-quote: 1.8.1
lazystream@1.0.1:
@@ -9368,6 +9440,8 @@ snapshots:
min-indent@1.0.1: {}
mini-svg-data-uri@1.4.4: {}
minimatch@3.1.2:
dependencies:
brace-expansion: 1.1.11
@@ -9669,6 +9743,16 @@ snapshots:
optionalDependencies:
fsevents: 2.3.3
nuxt-svgo@4.0.1(rollup@4.14.3)(vue@3.4.29(typescript@5.4.5)):
dependencies:
'@nuxt/kit': 3.12.1(rollup@4.14.3)
mini-svg-data-uri: 1.4.4
svgo: 3.3.2
vue: 3.4.29(typescript@5.4.5)
transitivePeerDependencies:
- rollup
- supports-color
nuxt@3.12.1(@parcel/watcher@2.4.1)(@types/node@20.12.7)(@unocss/reset@0.61.0)(encoding@0.1.13)(eslint@8.57.0)(floating-vue@5.2.2(@nuxt/kit@3.12.1(rollup@4.14.3))(vue@3.4.29(typescript@5.4.5)))(ioredis@5.3.2)(optionator@0.9.3)(rollup@4.14.3)(sass@1.77.5)(terser@5.30.3)(typescript@5.4.5)(unocss@0.61.0(@unocss/webpack@0.61.0(rollup@4.14.3)(webpack@5.91.0(esbuild@0.21.5)))(postcss@8.4.38)(rollup@4.14.3)(vite@5.3.1(@types/node@20.12.7)(sass@1.77.5)(terser@5.30.3)))(vite@5.3.1(@types/node@20.12.7)(sass@1.77.5)(terser@5.30.3)):
dependencies:
'@nuxt/devalue': 2.0.2
@@ -9851,11 +9935,9 @@ snapshots:
prelude-ls: 1.2.1
type-check: 0.4.0
p-event@4.2.0:
p-event@5.0.1:
dependencies:
p-timeout: 3.2.0
p-finally@1.0.0: {}
p-timeout: 5.1.0
p-limit@2.3.0:
dependencies:
@@ -9885,9 +9967,7 @@ snapshots:
dependencies:
aggregate-error: 3.1.0
p-timeout@3.2.0:
dependencies:
p-finally: 1.0.0
p-timeout@5.1.0: {}
p-try@2.2.0: {}
@@ -9976,8 +10056,6 @@ snapshots:
perfect-debounce@1.0.0: {}
picocolors@1.0.0: {}
picocolors@1.0.1: {}
picomatch@2.3.1: {}
@@ -10160,7 +10238,7 @@ snapshots:
postcss@8.4.38:
dependencies:
nanoid: 3.3.7
picocolors: 1.0.0
picocolors: 1.0.1
source-map-js: 1.2.0
prelude-ls@1.2.1: {}
@@ -10540,6 +10618,8 @@ snapshots:
string-argv@0.3.2: {}
string-natural-compare@3.0.1: {}
string-width@4.2.3:
dependencies:
emoji-regex: 8.0.0
@@ -10592,6 +10672,12 @@ snapshots:
postcss: 8.4.38
postcss-selector-parser: 6.1.0
super-regex@0.2.0:
dependencies:
clone-regexp: 3.0.0
function-timeout: 0.1.1
time-span: 5.1.0
supports-color@5.5.0:
dependencies:
has-flag: 3.0.0
@@ -10618,7 +10704,7 @@ snapshots:
css-tree: 2.3.1
css-what: 6.1.0
csso: 5.0.5
picocolors: 1.0.0
picocolors: 1.0.1
synckit@0.6.2:
dependencies:
@@ -10676,6 +10762,10 @@ snapshots:
text-table@0.2.0: {}
time-span@5.1.0:
dependencies:
convert-hrtime: 5.0.0
tiny-invariant@1.3.3: {}
to-fast-properties@2.0.0: {}
@@ -10970,7 +11060,7 @@ snapshots:
cac: 6.7.14
debug: 4.3.4
pathe: 1.1.2
picocolors: 1.0.0
picocolors: 1.0.1
vite: 5.3.1(@types/node@20.12.7)(sass@1.77.5)(terser@5.30.3)
transitivePeerDependencies:
- '@types/node'
@@ -11014,7 +11104,7 @@ snapshots:
fs-extra: 11.2.0
open: 10.1.0
perfect-debounce: 1.0.0
picocolors: 1.0.0
picocolors: 1.0.1
sirv: 2.0.4
vite: 5.3.1(@types/node@20.12.7)(sass@1.77.5)(terser@5.30.3)
optionalDependencies:

View File

@@ -12,6 +12,7 @@
"app:default",
"resources:default",
"menu:default",
"shell:allow-open",
{
"identifier": "shell:allow-execute",
"allow": [

View File

@@ -1 +1 @@
{"main":{"identifier":"main","description":"Capabilities for the main window","local":true,"windows":["main"],"permissions":["path:default","event:default","window:default","app:default","resources:default","menu:default",{"identifier":"shell:allow-execute","allow":[{"args":["-c",{"validator":"\\S+"}],"cmd":"sh","name":"exec-sh","sidecar":false}]},"notification:default","os:allow-platform"]}}
{"main":{"identifier":"main","description":"Capabilities for the main window","local":true,"windows":["main"],"permissions":["path:default","event:default","window:default","app:default","resources:default","menu:default","shell:allow-open",{"identifier":"shell:allow-execute","allow":[{"args":["-c",{"validator":"\\S+"}],"cmd":"sh","name":"exec-sh","sidecar":false}]},"notification:default","os:allow-platform"]}}

View File

@@ -39,8 +39,8 @@
"windows": [
{
"title": "Nuxtor",
"width": 1920,
"height": 1080,
"width": 1280,
"height": 720,
"resizable": true,
"fullscreen": false
}

View File

@@ -1,6 +1,8 @@
<template>
<Body bg-dark-800 text-white>
<NuxtPage />
<NuxtLayout>
<NuxtPage />
</NuxtLayout>
</Body>
</template>
@@ -19,12 +21,18 @@ img {
}
// Transitions
.fade-enter-active,
.fade-leave-active {
.page-enter-active,
.page-leave-active {
@apply transition-opacity ease-in-out duration-300;
}
.fade-enter-from,
.fade-leave-to {
.layout-enter-active,
.layout-leave-active {
@apply transition-opacity ease-in-out duration-500;
}
.page-enter-from,
.page-leave-to,
.layout-enter-from,
.layout-leave-to {
@apply opacity-0;
}
</style>

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,5 @@
<template>
<div class="pointer-events-none absolute inset-x-0 top-1/5 transform-gpu blur-3xl -z-10" aria-hidden="true">
<div class="relative left-[calc(50%+36rem)] aspect-[1155/678] w-[72.1875rem] from-[#00DC82] to-[#FFC131] bg-gradient-to-tr opacity-30 -translate-x-1/2" style="clip-path: polygon(74.1% 44.1%, 100% 61.6%, 97.5% 26.9%, 85.5% 0.1%, 80.7% 2%, 72.5% 32.5%, 60.2% 62.4%, 52.4% 68.1%, 47.5% 58.3%, 45.2% 34.5%, 27.5% 76.7%, 0.1% 64.9%, 17.9% 100%, 27.6% 76.8%, 76.1% 97.7%, 74.1% 44.1%)" />
</div>
</template>

View File

@@ -0,0 +1,5 @@
<template>
<div class="pointer-events-none absolute inset-x-0 transform-gpu blur-3xl -top-1/4 -z-10" aria-hidden="true">
<div class="relative left-[calc(50%-30rem)] aspect-[1155/678] w-[72.1875rem] rotate-[30deg] from-[#FFC131] to-[#00DC82] bg-gradient-to-tr opacity-30 -translate-x-1/2" style="clip-path: polygon(74.1% 44.1%, 100% 61.6%, 97.5% 26.9%, 85.5% 0.1%, 80.7% 2%, 72.5% 32.5%, 60.2% 62.4%, 52.4% 68.1%, 47.5% 58.3%, 45.2% 34.5%, 27.5% 76.7%, 0.1% 64.9%, 17.9% 100%, 27.6% 76.8%, 76.1% 97.7%, 74.1% 44.1%)" />
</div>
</template>

View File

@@ -0,0 +1,5 @@
<template>
<NuxtLink transition-colors gap-1 rounded-md bg-emerald-500 px-3.5 py-2.5 text-sm text-white font-semibold shadow-sm hover="bg-emerald-600" focus-visible="outline-2 outline-emerald-600 outline-offset-2 outline">
<slot />
</NuxtLink>
</template>

View File

@@ -0,0 +1,67 @@
<template>
<header class="top-0 z-10">
<nav crate flex items-center justify-between py-6>
<div class="flex lg:flex-1">
<NuxtLink to="/" class="p-1.5 -m-1.5">
<span class="sr-only">{{ name }}</span>
<SvgoLogo :font-controlled="false" size-8 />
</NuxtLink>
</div>
<div class="flex lg:hidden">
<button type="button" class="inline-flex items-center justify-center rounded-md p-2.5 text-gray-400 -m-2.5">
<span class="sr-only">Open main menu</span>
<svg class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true">
<path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5" />
</svg>
</button>
</div>
<div hidden lg="flex gap-x-12">
<NuxtLink to="/command" class="text-sm text-white font-semibold leading-6">Command</NuxtLink>
<NuxtLink to="/notification" class="text-sm text-white font-semibold leading-6">Notification</NuxtLink>
<NuxtLink to="/os" class="text-sm text-white font-semibold leading-6">OS Information</NuxtLink>
<NuxtLink to="/this-page-does-not-exist" class="text-sm text-white font-semibold leading-6">404</NuxtLink>
</div>
<div hidden lg="flex flex-1 justify-end">
<p class="text-sm text-white font-semibold leading-6">
v{{ tauriVersion }}
</p>
</div>
</nav>
<!-- Mobile menu, show/hide based on menu open state. -->
<!-- <div class="lg:hidden" role="dialog" aria-modal="true">
<div class="fixed inset-0 z-10" />
<div class="fixed inset-y-0 right-0 z-10 w-full overflow-y-auto bg-gray-900 px-6 py-6 sm:max-w-sm sm:ring-1 sm:ring-white/10">
<div class="flex items-center justify-between">
<a href="#" class="p-1.5 -m-1.5">
<span class="sr-only">Your Company</span>
<img class="h-8 w-auto" src="https://tailwindui.com/img/logos/mark.svg?color=indigo&shade=500" alt="">
</a>
<button type="button" class="rounded-md p-2.5 text-gray-400 -m-2.5">
<span class="sr-only">Close menu</span>
<svg class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true">
<path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12" />
</svg>
</button>
</div>
<div class="mt-6 flow-root">
<div class="-my-6 divide-y divide-gray-500/25">
<div class="py-6 space-y-2">
<a href="#" class="block rounded-lg px-3 py-2 text-base text-white font-semibold leading-7 -mx-3 hover:bg-gray-800">Product</a>
<a href="#" class="block rounded-lg px-3 py-2 text-base text-white font-semibold leading-7 -mx-3 hover:bg-gray-800">Features</a>
<a href="#" class="block rounded-lg px-3 py-2 text-base text-white font-semibold leading-7 -mx-3 hover:bg-gray-800">Marketplace</a>
<a href="#" class="block rounded-lg px-3 py-2 text-base text-white font-semibold leading-7 -mx-3 hover:bg-gray-800">Company</a>
</div>
<div class="py-6">
<a href="#" class="block rounded-lg px-3 py-2.5 text-base text-white font-semibold leading-7 -mx-3 hover:bg-gray-800">Log in</a>
</div>
</div>
</div>
</div>
</div> -->
</header>
</template>
<script lang="ts" setup>
const { name } = useConstants();
const tauriVersion = await getTauriVersion();
</script>

View File

@@ -0,0 +1,17 @@
export const useConstants = () => {
const name = "Nuxtor";
const author = "Nicola Spadari";
const repo = "https://github.com/NicolaSpadari";
const tauriSite = "https://tauri.app";
const nuxtSite = "https://nuxt.com";
const unoSite = "https://unocss.dev";
return {
name,
author,
repo,
tauriSite,
nuxtSite,
unoSite
};
};

View File

@@ -1,14 +0,0 @@
const test = ref("Text from composable");
export const useTest = () => {
const setValue = async () => {
const { data } = await useFetch<MyTest>("/api/test");
test.value = data.value!.text;
};
return {
test,
setValue
};
};

6
src/layouts/blank.vue Normal file
View File

@@ -0,0 +1,6 @@
<template>
<div>
<SiteNavbar />
<slot />
</div>
</template>

9
src/layouts/default.vue Normal file
View File

@@ -0,0 +1,9 @@
<template>
<div>
<SiteNavbar sticky />
<div crate>
<slot />
</div>
</div>
</template>

12
src/layouts/home.vue Normal file
View File

@@ -0,0 +1,12 @@
<template>
<div>
<SiteNavbar class="fixed w-full" />
<div relative isolate overflow-hidden px-6 lg="px-8">
<DesignTopBlob />
<DesignBottomBlob />
<slot />
</div>
</div>
</template>

View File

@@ -1,5 +1,26 @@
<template>
<div>
<p>404</p>
</div>
<main class="grid place-items-center px-6 py-24 lg:px-8 sm:py-32">
<div class="text-center">
<p class="text-base text-emerald-500 font-semibold">
404
</p>
<h1 class="mt-4 text-3xl text-neutral-300 font-bold tracking-tight sm:text-5xl">
Page not found
</h1>
<p class="mt-6 text-base text-neutral-400 leading-7">
Sorry, we couldn't find the page you're looking for.
</p>
<div class="mt-10 flex items-center justify-center gap-x-6">
<Hyperlink to="/">
Back
</Hyperlink>
</div>
</div>
</main>
</template>
<script lang="ts" setup>
definePageMeta({
layout: "blank"
});
</script>

5
src/pages/command.vue Normal file
View File

@@ -0,0 +1,5 @@
<template>
<div>
<p>WIP: command</p>
</div>
</template>

View File

@@ -1,11 +1,40 @@
<template>
<div grid h-screen place-content-center>
<Test />
<div relative isolate overflow-hidden px-6 lg="px-8">
<div grid mx-auto h-screen max-w-2xl place-content-center>
<SvgoLogo :filled="true" :font-controlled="false" mx-auto mb-8 size-40 />
{{ data }}
<div text-center>
<h1 animate-pulse text-4xl text-light-300 font-bold tracking-wider font-heading sm="text-6xl">
{{ name.toUpperCase() }}
</h1>
<p mt-5 flex gap-1 text-neutral-300 leading-8>
Powered by
<NuxtLink :to="nuxtSite" target="_blank" text-accent underline>
Nuxt 3
</NuxtLink>
-
<NuxtLink :to="tauriSite" target="_blank" text-accent underline>
Tauri
</NuxtLink>
-
<NuxtLink :to="unoSite" target="_blank" text-accent underline>
UnoCSS
</NuxtLink>
</p>
<div mt-15>
<Hyperlink :to="repo">
Made by {{ author }}
</Hyperlink>
</div>
</div>
</div>
</div>
</template>
<script lang="ts" setup>
const { data } = await useFetch("https://jsonplaceholder.typicode.com/todos/1");
const { name, author, repo, tauriSite, nuxtSite, unoSite } = useConstants();
definePageMeta({
layout: "home"
});
</script>

View File

@@ -0,0 +1,5 @@
<template>
<div>
<p>WIP: notification</p>
</div>
</template>

5
src/pages/os.vue Normal file
View File

@@ -0,0 +1,5 @@
<template>
<div>
<p>WIP: os</p>
</div>
</template>