diff --git a/web/.eslintrc.js b/web/.eslintrc.js
index 7595837..dcd061c 100644
--- a/web/.eslintrc.js
+++ b/web/.eslintrc.js
@@ -11,6 +11,8 @@ module.exports = {
},
extends: [
'plugin:vue/vue3-essential',
+ 'plugin:vue/vue3-strongly-recommended',
+ 'plugin:vue/vue3-recommended',
'eslint:recommended',
'@vue/eslint-config-typescript',
],
diff --git a/web/components.d.ts b/web/components.d.ts
index aff89cb..e9e1214 100644
--- a/web/components.d.ts
+++ b/web/components.d.ts
@@ -8,6 +8,7 @@ export {}
declare module 'vue' {
export interface GlobalComponents {
HelloWorld: typeof import('./src/components/HelloWorld.vue')['default']
+ NavBar: typeof import('./src/components/NavBar.vue')['default']
RouterLink: typeof import('vue-router')['RouterLink']
RouterView: typeof import('vue-router')['RouterView']
}
diff --git a/web/package.json b/web/package.json
index 5cbefcd..21732b7 100644
--- a/web/package.json
+++ b/web/package.json
@@ -19,6 +19,7 @@
"@types/node": "^20.14.10",
"@vitejs/plugin-vue": "^5.0.5",
"@vue/eslint-config-typescript": "^13.0.0",
+ "@vue/language-server": "^2.1.4",
"eslint": "^8.57.0",
"eslint-config-standard": "^17.1.0",
"eslint-plugin-import": "^2.29.1",
@@ -26,6 +27,7 @@
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^6.4.0",
"eslint-plugin-vue": "^9.27.0",
+ "prettier": "^3.3.3",
"sass": "1.77.6",
"typescript": "^5.4.2",
"unplugin-fonts": "^1.1.1",
diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml
index 25fc394..9897e9c 100644
--- a/web/pnpm-lock.yaml
+++ b/web/pnpm-lock.yaml
@@ -36,6 +36,9 @@ importers:
'@vue/eslint-config-typescript':
specifier: ^13.0.0
version: 13.0.0(eslint-plugin-vue@9.27.0(eslint@8.57.0))(eslint@8.57.0)(typescript@5.5.4)
+ '@vue/language-server':
+ specifier: ^2.1.4
+ version: 2.1.4(typescript@5.5.4)
eslint:
specifier: ^8.57.0
version: 8.57.0
@@ -57,6 +60,9 @@ importers:
eslint-plugin-vue:
specifier: ^9.27.0
version: 9.27.0(eslint@8.57.0)
+ prettier:
+ specifier: ^3.3.3
+ version: 3.3.3
sass:
specifier: 1.77.6
version: 1.77.6
@@ -107,6 +113,27 @@ packages:
resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==}
engines: {node: '>=6.9.0'}
+ '@emmetio/abbreviation@2.3.3':
+ resolution: {integrity: sha512-mgv58UrU3rh4YgbE/TzgLQwJ3pFsHHhCLqY20aJq+9comytTXUDNGG/SMtSeMJdkpxgXSXunBGLD8Boka3JyVA==}
+
+ '@emmetio/css-abbreviation@2.1.8':
+ resolution: {integrity: sha512-s9yjhJ6saOO/uk1V74eifykk2CBYi01STTK3WlXWGOepyKa23ymJ053+DNQjpFcy1ingpaO7AxCcwLvHFY9tuw==}
+
+ '@emmetio/css-parser@0.4.0':
+ resolution: {integrity: sha512-z7wkxRSZgrQHXVzObGkXG+Vmj3uRlpM11oCZ9pbaz0nFejvCDmAiNDpY75+wgXOcffKpj4rzGtwGaZxfJKsJxw==}
+
+ '@emmetio/html-matcher@1.3.0':
+ resolution: {integrity: sha512-NTbsvppE5eVyBMuyGfVu2CRrLvo7J4YHb6t9sBFLyY03WYhXET37qA4zOYUjBWFCRHO7pS1B9khERtY0f5JXPQ==}
+
+ '@emmetio/scanner@1.0.4':
+ resolution: {integrity: sha512-IqRuJtQff7YHHBk4G8YZ45uB9BaAGcwQeVzgj/zj8/UdOhtQpEIupUhSk8dys6spFIWVZVeK20CzGEnqR5SbqA==}
+
+ '@emmetio/stream-reader-utils@0.1.0':
+ resolution: {integrity: sha512-ZsZ2I9Vzso3Ho/pjZFsmmZ++FWeEd/txqybHTm4OgaZzdS8V9V/YYWQwg5TC38Z7uLWUV1vavpLLbjJtKubR1A==}
+
+ '@emmetio/stream-reader@2.2.0':
+ resolution: {integrity: sha512-fXVXEyFA5Yv3M3n8sUGT7+fvecGrZP4k6FnWWMSZVQf69kAq0LLpaBQLGcPR30m3zMmKYhECP4k/ZkzvhEW5kw==}
+
'@esbuild/aix-ppc64@0.21.5':
resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
engines: {node: '>=12'}
@@ -276,6 +303,9 @@ packages:
resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==}
deprecated: Use @eslint/object-schema instead
+ '@johnsoncodehk/pug-beautify@0.2.2':
+ resolution: {integrity: sha512-qqNS/YD0Nck5wtQLCPHAfGVgWbbGafxSPjNh0ekYPFSNNqnDH2kamnduzYly8IiADmeVx/MfAE1njMEjVeHTMA==}
+
'@jridgewell/sourcemap-codec@1.5.0':
resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
@@ -463,12 +493,27 @@ packages:
'@volar/language-core@2.4.1':
resolution: {integrity: sha512-9AKhC7Qn2mQYxj7Dz3bVxeOk7gGJladhWixUYKef/o0o7Bm4an+A3XvmcTHVqZ8stE6lBVH++g050tBtJ4TZPQ==}
+ '@volar/language-server@2.4.1':
+ resolution: {integrity: sha512-aVaUjuQEPFJZckNwziCqrmiirsVnV3LK9Kbl1Hq5C4G6RTyof2xSdYKwyL2Azv41DkgkW85lJ2F6zVX3cpQfzw==}
+
+ '@volar/language-service@2.4.1':
+ resolution: {integrity: sha512-Q3NVjZTAz0Vnco70Rgcryq2eDPWkFBdpzr84aYqOGvVC4SBjq1Wsx0d9NyA4seQHfHWwbZyzyviKRm+htyRlKg==}
+
'@volar/source-map@2.4.1':
resolution: {integrity: sha512-Xq6ep3OZg9xUqN90jEgB9ztX5SsTz1yiV8wiQbcYNjWkek+Ie3dc8l7AVt3EhDm9mSIR58oWczHkzM2H6HIsmQ==}
+ '@volar/test-utils@2.4.1':
+ resolution: {integrity: sha512-lKgNSIm62GITGlyh5aS6PLV8kDaJC3/l8/JxmQVJjUuPY060jckNftqPXwQQ7RwwVioDFa6KL+ffNOS2Pb76cw==}
+
'@volar/typescript@2.4.1':
resolution: {integrity: sha512-UoRzC0PXcwajFQTu8XxKSYNsWNBtVja6Y9gC8eLv7kYm+UEKJCcZ8g7dialsOYA0HKs3Vpg57MeCsawFLC6m9Q==}
+ '@vscode/emmet-helper@2.9.3':
+ resolution: {integrity: sha512-rB39LHWWPQYYlYfpv9qCoZOVioPCftKXXqrsyqN1mTWZM6dTnONT63Db+03vgrBbHzJN45IrgS/AGxw9iiqfEw==}
+
+ '@vscode/l10n@0.0.18':
+ resolution: {integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==}
+
'@vue-macros/common@1.12.2':
resolution: {integrity: sha512-+NGfhrPvPNOb3Wg9PNPEXPe0HTXmVe6XJawL1gi3cIjOSGIhpOdvmMT2cRuWb265IpA/PeL5Sqo0+DQnEDxLvw==}
engines: {node: '>=16.14.0'}
@@ -515,6 +560,13 @@ packages:
typescript:
optional: true
+ '@vue/language-server@2.1.4':
+ resolution: {integrity: sha512-4yUUDW4uMUahUQVBz86C2ui4a6vsICxEAmbjSPNNXod6yHGZoDlMHmbbOXCf1tqzr9zwyGVfijjY3KobemqjKw==}
+ hasBin: true
+
+ '@vue/language-service@2.1.4':
+ resolution: {integrity: sha512-j3+KAu9Ft3eQhagM4PEkVxFRZCjE3tJYmDZTyfkPMFQ/xIdCNK2dhhizUltx2g/MOFXQe11t5GrbvILqPM2Jiw==}
+
'@vue/reactivity@3.4.38':
resolution: {integrity: sha512-4vl4wMMVniLsSYYeldAKzbk72+D3hUnkw9z8lDeJacTxAkXeDAP1uE9xr2+aKIN0ipOL8EG2GPouVTH6yF7Gnw==}
@@ -532,6 +584,9 @@ packages:
'@vue/shared@3.4.38':
resolution: {integrity: sha512-q0xCiLkuWWQLzVrecPb0RMsNWyxICOjPrcrwxTUEHb1fsnvni4dcuyG7RT/Ie7VPTvnjzIaWzRMUBsrqNj/hhw==}
+ '@vue/typescript-plugin@2.1.4':
+ resolution: {integrity: sha512-80ih8CBcHD2lXHvry/5VD2u0MoVRqAV2gaFLGdyDC+kDCAxx8Kew95T/9+MiJcdmJEtLdC2SO0BLa91GkuOQRQ==}
+
'@vuetify/loader-shared@2.0.3':
resolution: {integrity: sha512-Ss3GC7eJYkp2SF6xVzsT7FAruEmdihmn4OCk2+UocREerlXKWgOKKzTN5PN3ZVN5q05jHHrsNhTuWbhN61Bpdg==}
peerDependencies:
@@ -543,6 +598,11 @@ packages:
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
+ acorn@7.4.1:
+ resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==}
+ engines: {node: '>=0.4.0'}
+ hasBin: true
+
acorn@8.12.1:
resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==}
engines: {node: '>=0.4.0'}
@@ -645,6 +705,9 @@ packages:
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
engines: {node: '>=10'}
+ character-parser@2.2.0:
+ resolution: {integrity: sha512-+UqJQjFEFaTAs3bNsF2j2kEN1baG/zghZbdqoYEDxGZtJo9LBzl1A+m0D4n3qKx8N2FNv8/Xp6yV9mQmBuptaw==}
+
chokidar@3.6.0:
resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
engines: {node: '>= 8.10.0'}
@@ -735,6 +798,9 @@ packages:
resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==}
engines: {node: '>=6.0.0'}
+ emmet@2.4.7:
+ resolution: {integrity: sha512-O5O5QNqtdlnQM2bmKHtJgyChcrFMgQuulI+WdiOw2NArzprUqqxUW6bgYtKvzKgrsYpuLWalOkdhNP+1jluhCA==}
+
entities@4.5.0:
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
engines: {node: '>=0.12'}
@@ -1092,6 +1158,9 @@ packages:
resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==}
engines: {node: '>= 0.4'}
+ is-expression@4.0.0:
+ resolution: {integrity: sha512-zMIXX63sxzG3XrkHkrAPvm/OVZVSCPNkwMHU8oTX7/U3AL78I0QXCEICXUM13BIa8TYGZ68PiTKfQz3yaTNr4A==}
+
is-extglob@2.1.1:
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
engines: {node: '>=0.10.0'}
@@ -1167,6 +1236,12 @@ packages:
engines: {node: '>=6'}
hasBin: true
+ jsonc-parser@2.3.1:
+ resolution: {integrity: sha512-H8jvkz1O50L3dMZCsLqiuB2tA7muqbSg1AtGEkN0leAqGjsUzDJir3Zwr02BhqdcITPg3ei3mZ+HjMocAknhhg==}
+
+ jsonc-parser@3.3.1:
+ resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==}
+
keyv@4.5.4:
resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
@@ -1240,6 +1315,10 @@ packages:
nth-check@2.1.1:
resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
+ object-assign@4.1.1:
+ resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
+ engines: {node: '>=0.10.0'}
+
object-inspect@1.13.2:
resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==}
engines: {node: '>= 0.4'}
@@ -1334,6 +1413,20 @@ packages:
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
engines: {node: '>= 0.8.0'}
+ prettier@3.3.3:
+ resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==}
+ engines: {node: '>=14'}
+ hasBin: true
+
+ pug-error@2.1.0:
+ resolution: {integrity: sha512-lv7sU9e5Jk8IeUheHata6/UThZ7RK2jnaaNztxfPYUY+VxZyk/ePVaNZ/vwmH8WqGvDz3LrNYt/+gA55NDg6Pg==}
+
+ pug-lexer@5.0.1:
+ resolution: {integrity: sha512-0I6C62+keXlZPZkOJeVam9aBLVP2EnbeDw3An+k0/QlqdwH6rv8284nko14Na7c0TtqtogfWXcRoFE4O4Ff20w==}
+
+ pug-parser@6.0.0:
+ resolution: {integrity: sha512-ukiYM/9cH6Cml+AOl5kETtM9NR3WulyVP2y4HOU45DyMim1IeP/OOiyEWRr6qk5I5klpsBnbuHpwKmTx6WURnw==}
+
punycode@2.3.1:
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
engines: {node: '>=6'}
@@ -1353,6 +1446,9 @@ packages:
resolution: {integrity: sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==}
engines: {node: '>=8'}
+ request-light@0.7.0:
+ resolution: {integrity: sha512-lMbBMrDoxgsyO+yB3sDcrDuX85yYt7sS8BfQd11jtbW/z5ZWgLZRcEGLsLoYw7I0WSUGQBs8CC8ScIxkTX1+6Q==}
+
resolve-from@4.0.0:
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
engines: {node: '>=4'}
@@ -1479,6 +1575,9 @@ packages:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
+ token-stream@1.0.0:
+ resolution: {integrity: sha512-VSsyNPPW74RpHwR8Fc21uubwHY7wMDeJLys2IX5zJNih+OnAnaifKHo+1LHT7DAdloQ7apeaaWg8l7qnf/TnEg==}
+
ts-api-utils@1.3.0:
resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==}
engines: {node: '>=16'}
@@ -1512,6 +1611,9 @@ packages:
resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==}
engines: {node: '>= 0.4'}
+ typescript-auto-import-cache@0.3.3:
+ resolution: {integrity: sha512-ojEC7+Ci1ij9eE6hp8Jl9VUNnsEKzztktP5gtYNRMrTmfXVwA1PITYYAkpxCvvupdSYa/Re51B6KMcv1CTZEUA==}
+
typescript@5.5.4:
resolution: {integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==}
engines: {node: '>=14.17'}
@@ -1609,6 +1711,97 @@ packages:
terser:
optional: true
+ volar-service-css@0.0.62:
+ resolution: {integrity: sha512-JwNyKsH3F8PuzZYuqPf+2e+4CTU8YoyUHEHVnoXNlrLe7wy9U3biomZ56llN69Ris7TTy/+DEX41yVxQpM4qvg==}
+ peerDependencies:
+ '@volar/language-service': ~2.4.0
+ peerDependenciesMeta:
+ '@volar/language-service':
+ optional: true
+
+ volar-service-emmet@0.0.62:
+ resolution: {integrity: sha512-U4dxWDBWz7Pi4plpbXf4J4Z/ss6kBO3TYrACxWNsE29abu75QzVS0paxDDhI6bhqpbDFXlpsDhZ9aXVFpnfGRQ==}
+ peerDependencies:
+ '@volar/language-service': ~2.4.0
+ peerDependenciesMeta:
+ '@volar/language-service':
+ optional: true
+
+ volar-service-html@0.0.62:
+ resolution: {integrity: sha512-Zw01aJsZRh4GTGUjveyfEzEqpULQUdQH79KNEiKVYHZyuGtdBRYCHlrus1sueSNMxwwkuF5WnOHfvBzafs8yyQ==}
+ peerDependencies:
+ '@volar/language-service': ~2.4.0
+ peerDependenciesMeta:
+ '@volar/language-service':
+ optional: true
+
+ volar-service-json@0.0.62:
+ resolution: {integrity: sha512-Ot+jP+/LzKcaGF7nzrn+gwpzAleb4ej5buO05M8KxfwfODte7o1blARKRoJ3Nv7ls0DBM38Dd5vjzvA9c/9Jtg==}
+ peerDependencies:
+ '@volar/language-service': ~2.4.0
+ peerDependenciesMeta:
+ '@volar/language-service':
+ optional: true
+
+ volar-service-pug-beautify@0.0.62:
+ resolution: {integrity: sha512-dAFNuNEwTnnVthYoNJhoStwhf/PojzglwCrdhOb2nBegTG3xXMWRFmQzb0JfIlt2wq2wfUq5j+JJswgSD3KluQ==}
+ peerDependencies:
+ '@volar/language-service': ~2.4.0
+ peerDependenciesMeta:
+ '@volar/language-service':
+ optional: true
+
+ volar-service-pug@0.0.62:
+ resolution: {integrity: sha512-C0/O8uGnRfijWKE0zFXxJ/o7BbLebzretsEaiMkvBDIxm5oe7HRDzQr6CgknV/WVgiohZ74v+0CwBPl2YmcPUQ==}
+
+ volar-service-typescript-twoslash-queries@0.0.62:
+ resolution: {integrity: sha512-KxFt4zydyJYYI0kFAcWPTh4u0Ha36TASPZkAnNY784GtgajerUqM80nX/W1d0wVhmcOFfAxkVsf/Ed+tiYU7ng==}
+ peerDependencies:
+ '@volar/language-service': ~2.4.0
+ peerDependenciesMeta:
+ '@volar/language-service':
+ optional: true
+
+ volar-service-typescript@0.0.62:
+ resolution: {integrity: sha512-p7MPi71q7KOsH0eAbZwPBiKPp9B2+qrdHAd6VY5oTo9BUXatsOAdakTm9Yf0DUj6uWBAaOT01BSeVOPwucMV1g==}
+ peerDependencies:
+ '@volar/language-service': ~2.4.0
+ peerDependenciesMeta:
+ '@volar/language-service':
+ optional: true
+
+ vscode-css-languageservice@6.3.1:
+ resolution: {integrity: sha512-1BzTBuJfwMc3A0uX4JBdJgoxp74cjj4q2mDJdp49yD/GuAq4X0k5WtK6fNcMYr+FfJ9nqgR6lpfCSZDkARJ5qQ==}
+
+ vscode-html-languageservice@5.3.1:
+ resolution: {integrity: sha512-ysUh4hFeW/WOWz/TO9gm08xigiSsV/FOAZ+DolgJfeLftna54YdmZ4A+lIn46RbdO3/Qv5QHTn1ZGqmrXQhZyA==}
+
+ vscode-json-languageservice@5.4.1:
+ resolution: {integrity: sha512-5czFGNyVPxz3ZJYl8R3a3SuIj5gjhmGF4Wv05MRPvD4DEnHK6b8km4VbNMJNHBlTCh7A0aHzUbPVzo+0C18mCA==}
+
+ vscode-jsonrpc@8.2.0:
+ resolution: {integrity: sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==}
+ engines: {node: '>=14.0.0'}
+
+ vscode-languageserver-protocol@3.17.5:
+ resolution: {integrity: sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==}
+
+ vscode-languageserver-textdocument@1.0.12:
+ resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==}
+
+ vscode-languageserver-types@3.17.5:
+ resolution: {integrity: sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==}
+
+ vscode-languageserver@9.0.1:
+ resolution: {integrity: sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==}
+ hasBin: true
+
+ vscode-nls@5.2.0:
+ resolution: {integrity: sha512-RAaHx7B14ZU04EU31pT+rKz2/zSl7xMsfIZuo8pd+KZO6PXtQmpevpq3vxvWNcrGbdmhM/rr5Uw5Mz+NBfhVng==}
+
+ vscode-uri@2.1.2:
+ resolution: {integrity: sha512-8TEXQxlldWAuIODdukIb+TR5s+9Ds40eSJrw+1iDDA9IFORPjMELarNQE3myz5XIkWWpdprmJjm1/SxMlWOC8A==}
+
vscode-uri@3.0.8:
resolution: {integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==}
@@ -1710,6 +1903,29 @@ snapshots:
'@babel/helper-validator-identifier': 7.24.7
to-fast-properties: 2.0.0
+ '@emmetio/abbreviation@2.3.3':
+ dependencies:
+ '@emmetio/scanner': 1.0.4
+
+ '@emmetio/css-abbreviation@2.1.8':
+ dependencies:
+ '@emmetio/scanner': 1.0.4
+
+ '@emmetio/css-parser@0.4.0':
+ dependencies:
+ '@emmetio/stream-reader': 2.2.0
+ '@emmetio/stream-reader-utils': 0.1.0
+
+ '@emmetio/html-matcher@1.3.0':
+ dependencies:
+ '@emmetio/scanner': 1.0.4
+
+ '@emmetio/scanner@1.0.4': {}
+
+ '@emmetio/stream-reader-utils@0.1.0': {}
+
+ '@emmetio/stream-reader@2.2.0': {}
+
'@esbuild/aix-ppc64@0.21.5':
optional: true
@@ -1814,6 +2030,8 @@ snapshots:
'@humanwhocodes/object-schema@2.0.3': {}
+ '@johnsoncodehk/pug-beautify@0.2.2': {}
+
'@jridgewell/sourcemap-codec@1.5.0': {}
'@mdi/font@7.4.47': {}
@@ -1986,14 +2204,50 @@ snapshots:
dependencies:
'@volar/source-map': 2.4.1
+ '@volar/language-server@2.4.1':
+ dependencies:
+ '@volar/language-core': 2.4.1
+ '@volar/language-service': 2.4.1
+ '@volar/typescript': 2.4.1
+ path-browserify: 1.0.1
+ request-light: 0.7.0
+ vscode-languageserver: 9.0.1
+ vscode-languageserver-protocol: 3.17.5
+ vscode-languageserver-textdocument: 1.0.12
+ vscode-uri: 3.0.8
+
+ '@volar/language-service@2.4.1':
+ dependencies:
+ '@volar/language-core': 2.4.1
+ vscode-languageserver-protocol: 3.17.5
+ vscode-languageserver-textdocument: 1.0.12
+ vscode-uri: 3.0.8
+
'@volar/source-map@2.4.1': {}
+ '@volar/test-utils@2.4.1':
+ dependencies:
+ '@volar/language-core': 2.4.1
+ '@volar/language-server': 2.4.1
+ vscode-languageserver-textdocument: 1.0.12
+ vscode-uri: 3.0.8
+
'@volar/typescript@2.4.1':
dependencies:
'@volar/language-core': 2.4.1
path-browserify: 1.0.1
vscode-uri: 3.0.8
+ '@vscode/emmet-helper@2.9.3':
+ dependencies:
+ emmet: 2.4.7
+ jsonc-parser: 2.3.1
+ vscode-languageserver-textdocument: 1.0.12
+ vscode-languageserver-types: 3.17.5
+ vscode-uri: 2.1.2
+
+ '@vscode/l10n@0.0.18': {}
+
'@vue-macros/common@1.12.2(rollup@4.21.2)(vue@3.4.38(typescript@5.5.4))':
dependencies:
'@babel/types': 7.25.6
@@ -2069,6 +2323,44 @@ snapshots:
optionalDependencies:
typescript: 5.5.4
+ '@vue/language-server@2.1.4(typescript@5.5.4)':
+ dependencies:
+ '@volar/language-core': 2.4.1
+ '@volar/language-server': 2.4.1
+ '@volar/test-utils': 2.4.1
+ '@vue/language-core': 2.1.4(typescript@5.5.4)
+ '@vue/language-service': 2.1.4(typescript@5.5.4)
+ '@vue/typescript-plugin': 2.1.4(typescript@5.5.4)
+ vscode-languageserver-protocol: 3.17.5
+ vscode-uri: 3.0.8
+ transitivePeerDependencies:
+ - typescript
+
+ '@vue/language-service@2.1.4(typescript@5.5.4)':
+ dependencies:
+ '@volar/language-core': 2.4.1
+ '@volar/language-service': 2.4.1
+ '@volar/typescript': 2.4.1
+ '@vue/compiler-dom': 3.4.38
+ '@vue/language-core': 2.1.4(typescript@5.5.4)
+ '@vue/shared': 3.4.38
+ '@vue/typescript-plugin': 2.1.4(typescript@5.5.4)
+ computeds: 0.0.1
+ path-browserify: 1.0.1
+ volar-service-css: 0.0.62(@volar/language-service@2.4.1)
+ volar-service-emmet: 0.0.62(@volar/language-service@2.4.1)
+ volar-service-html: 0.0.62(@volar/language-service@2.4.1)
+ volar-service-json: 0.0.62(@volar/language-service@2.4.1)
+ volar-service-pug: 0.0.62
+ volar-service-pug-beautify: 0.0.62(@volar/language-service@2.4.1)
+ volar-service-typescript: 0.0.62(@volar/language-service@2.4.1)
+ volar-service-typescript-twoslash-queries: 0.0.62(@volar/language-service@2.4.1)
+ vscode-html-languageservice: 5.3.1
+ vscode-languageserver-textdocument: 1.0.12
+ vscode-uri: 3.0.8
+ transitivePeerDependencies:
+ - typescript
+
'@vue/reactivity@3.4.38':
dependencies:
'@vue/shared': 3.4.38
@@ -2093,6 +2385,14 @@ snapshots:
'@vue/shared@3.4.38': {}
+ '@vue/typescript-plugin@2.1.4(typescript@5.5.4)':
+ dependencies:
+ '@volar/typescript': 2.4.1
+ '@vue/language-core': 2.1.4(typescript@5.5.4)
+ '@vue/shared': 3.4.38
+ transitivePeerDependencies:
+ - typescript
+
'@vuetify/loader-shared@2.0.3(vue@3.4.38(typescript@5.5.4))(vuetify@3.7.1(typescript@5.5.4)(vite-plugin-vuetify@2.0.4)(vue@3.4.38(typescript@5.5.4)))':
dependencies:
upath: 2.0.1
@@ -2103,6 +2403,8 @@ snapshots:
dependencies:
acorn: 8.12.1
+ acorn@7.4.1: {}
+
acorn@8.12.1: {}
ajv@6.12.6:
@@ -2229,6 +2531,10 @@ snapshots:
ansi-styles: 4.3.0
supports-color: 7.2.0
+ character-parser@2.2.0:
+ dependencies:
+ is-regex: 1.1.4
+
chokidar@3.6.0:
dependencies:
anymatch: 3.1.3
@@ -2319,6 +2625,11 @@ snapshots:
dependencies:
esutils: 2.0.3
+ emmet@2.4.7:
+ dependencies:
+ '@emmetio/abbreviation': 2.3.3
+ '@emmetio/css-abbreviation': 2.1.8
+
entities@4.5.0: {}
es-abstract@1.23.3:
@@ -2813,6 +3124,11 @@ snapshots:
dependencies:
has-tostringtag: 1.0.2
+ is-expression@4.0.0:
+ dependencies:
+ acorn: 7.4.1
+ object-assign: 4.1.1
+
is-extglob@2.1.1: {}
is-glob@4.0.3:
@@ -2874,6 +3190,10 @@ snapshots:
json5@2.2.3: {}
+ jsonc-parser@2.3.1: {}
+
+ jsonc-parser@3.3.1: {}
+
keyv@4.5.4:
dependencies:
json-buffer: 3.0.1
@@ -2944,6 +3264,8 @@ snapshots:
dependencies:
boolbase: 1.0.0
+ object-assign@4.1.1: {}
+
object-inspect@1.13.2: {}
object-keys@1.1.1: {}
@@ -3038,6 +3360,21 @@ snapshots:
prelude-ls@1.2.1: {}
+ prettier@3.3.3: {}
+
+ pug-error@2.1.0: {}
+
+ pug-lexer@5.0.1:
+ dependencies:
+ character-parser: 2.2.0
+ is-expression: 4.0.0
+ pug-error: 2.1.0
+
+ pug-parser@6.0.0:
+ dependencies:
+ pug-error: 2.1.0
+ token-stream: 1.0.0
+
punycode@2.3.1: {}
queue-microtask@1.2.3: {}
@@ -3055,6 +3392,8 @@ snapshots:
regexpp@3.2.0: {}
+ request-light@0.7.0: {}
+
resolve-from@4.0.0: {}
resolve-pkg-maps@1.0.0: {}
@@ -3198,6 +3537,8 @@ snapshots:
dependencies:
is-number: 7.0.0
+ token-stream@1.0.0: {}
+
ts-api-utils@1.3.0(typescript@5.5.4):
dependencies:
typescript: 5.5.4
@@ -3247,6 +3588,10 @@ snapshots:
is-typed-array: 1.1.13
possible-typed-array-names: 1.0.0
+ typescript-auto-import-cache@0.3.3:
+ dependencies:
+ semver: 7.6.3
+
typescript@5.5.4: {}
ufo@1.5.4: {}
@@ -3342,6 +3687,112 @@ snapshots:
fsevents: 2.3.3
sass: 1.77.6
+ volar-service-css@0.0.62(@volar/language-service@2.4.1):
+ dependencies:
+ vscode-css-languageservice: 6.3.1
+ vscode-languageserver-textdocument: 1.0.12
+ vscode-uri: 3.0.8
+ optionalDependencies:
+ '@volar/language-service': 2.4.1
+
+ volar-service-emmet@0.0.62(@volar/language-service@2.4.1):
+ dependencies:
+ '@emmetio/css-parser': 0.4.0
+ '@emmetio/html-matcher': 1.3.0
+ '@vscode/emmet-helper': 2.9.3
+ vscode-uri: 3.0.8
+ optionalDependencies:
+ '@volar/language-service': 2.4.1
+
+ volar-service-html@0.0.62(@volar/language-service@2.4.1):
+ dependencies:
+ vscode-html-languageservice: 5.3.1
+ vscode-languageserver-textdocument: 1.0.12
+ vscode-uri: 3.0.8
+ optionalDependencies:
+ '@volar/language-service': 2.4.1
+
+ volar-service-json@0.0.62(@volar/language-service@2.4.1):
+ dependencies:
+ vscode-json-languageservice: 5.4.1
+ vscode-uri: 3.0.8
+ optionalDependencies:
+ '@volar/language-service': 2.4.1
+
+ volar-service-pug-beautify@0.0.62(@volar/language-service@2.4.1):
+ dependencies:
+ '@johnsoncodehk/pug-beautify': 0.2.2
+ optionalDependencies:
+ '@volar/language-service': 2.4.1
+
+ volar-service-pug@0.0.62:
+ dependencies:
+ '@volar/language-service': 2.4.1
+ muggle-string: 0.4.1
+ pug-lexer: 5.0.1
+ pug-parser: 6.0.0
+ volar-service-html: 0.0.62(@volar/language-service@2.4.1)
+ vscode-html-languageservice: 5.3.1
+ vscode-languageserver-textdocument: 1.0.12
+
+ volar-service-typescript-twoslash-queries@0.0.62(@volar/language-service@2.4.1):
+ dependencies:
+ vscode-uri: 3.0.8
+ optionalDependencies:
+ '@volar/language-service': 2.4.1
+
+ volar-service-typescript@0.0.62(@volar/language-service@2.4.1):
+ dependencies:
+ path-browserify: 1.0.1
+ semver: 7.6.3
+ typescript-auto-import-cache: 0.3.3
+ vscode-languageserver-textdocument: 1.0.12
+ vscode-nls: 5.2.0
+ vscode-uri: 3.0.8
+ optionalDependencies:
+ '@volar/language-service': 2.4.1
+
+ vscode-css-languageservice@6.3.1:
+ dependencies:
+ '@vscode/l10n': 0.0.18
+ vscode-languageserver-textdocument: 1.0.12
+ vscode-languageserver-types: 3.17.5
+ vscode-uri: 3.0.8
+
+ vscode-html-languageservice@5.3.1:
+ dependencies:
+ '@vscode/l10n': 0.0.18
+ vscode-languageserver-textdocument: 1.0.12
+ vscode-languageserver-types: 3.17.5
+ vscode-uri: 3.0.8
+
+ vscode-json-languageservice@5.4.1:
+ dependencies:
+ '@vscode/l10n': 0.0.18
+ jsonc-parser: 3.3.1
+ vscode-languageserver-textdocument: 1.0.12
+ vscode-languageserver-types: 3.17.5
+ vscode-uri: 3.0.8
+
+ vscode-jsonrpc@8.2.0: {}
+
+ vscode-languageserver-protocol@3.17.5:
+ dependencies:
+ vscode-jsonrpc: 8.2.0
+ vscode-languageserver-types: 3.17.5
+
+ vscode-languageserver-textdocument@1.0.12: {}
+
+ vscode-languageserver-types@3.17.5: {}
+
+ vscode-languageserver@9.0.1:
+ dependencies:
+ vscode-languageserver-protocol: 3.17.5
+
+ vscode-nls@5.2.0: {}
+
+ vscode-uri@2.1.2: {}
+
vscode-uri@3.0.8: {}
vue-eslint-parser@9.4.3(eslint@8.57.0):
diff --git a/web/src/components/NavBar.vue b/web/src/components/NavBar.vue
new file mode 100644
index 0000000..a281f62
--- /dev/null
+++ b/web/src/components/NavBar.vue
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+ DocuSphere
+
+
+
+
+
diff --git a/web/src/pages/index.vue b/web/src/pages/index.vue
index dac59c7..2594977 100644
--- a/web/src/pages/index.vue
+++ b/web/src/pages/index.vue
@@ -1,7 +1,7 @@
-
+
diff --git a/web/src/plugins/vuetify.ts b/web/src/plugins/vuetify.ts
index 7652788..9850ab9 100644
--- a/web/src/plugins/vuetify.ts
+++ b/web/src/plugins/vuetify.ts
@@ -14,6 +14,6 @@ import { createVuetify } from 'vuetify'
// https://vuetifyjs.com/en/introduction/why-vuetify/#feature-guides
export default createVuetify({
theme: {
- defaultTheme: 'dark',
+ defaultTheme: 'light', // 'light' | 'dark'
},
})