From c6df451e7d783037f5d93e680daec4c2319ffcb9 Mon Sep 17 00:00:00 2001 From: Keyemail Date: Sat, 31 Aug 2024 00:22:08 -0700 Subject: [PATCH 1/4] Started on overview, 3 icons uploaded --- src/assets/globe.png | Bin 0 -> 42521 bytes src/assets/wifi.svg | 95 ++++++++++++++++++++++++++ src/pages/BasicDashboard.vue | 4 +- src/pages/basicDashboard/Overview.vue | 71 ++++++++++++++++++- src/styles/basicDashboard.css | 46 +++++++++++++ src/styles/main.css | 5 ++ 6 files changed, 219 insertions(+), 2 deletions(-) create mode 100644 src/assets/globe.png create mode 100644 src/assets/wifi.svg diff --git a/src/assets/globe.png b/src/assets/globe.png new file mode 100644 index 0000000000000000000000000000000000000000..052ba1e1c055610e307225a1c376903bf869b37e GIT binary patch literal 42521 zcmXtfWmwbi`!;NJcL^v%K^kP>=q_O(A}~6I(M&pJG*VxryA-6mYak^E(jB9bmR9PS zzyI;P*qhI>JFYsf>$>mrj(V-BLQ2F$goTAgs-~*=1`7)S`}ZTj!+hzqNn66g!Va}l zPV<2x*@=LrD`QmWr%nfuIi`U+^}BxoqVzs^1=0L3*BDSf4|57T4O z;J*vzAXSTwE<_u;o>H1O`DQAY84gQ4i`we3p`sqk%TR_%^SgvFE}g zdmphgOht5}n$x~lew3;rcoHK`V)@o4MTk>P%{#8j@A}%8e#>BG=brh_e$+BZ>uH?O zw{j{Mil2^pq@y>zYu&3WiTtX!gC2cbFGq1BaB~=6OqTepQ`EqA&A)^gj88=t zN3oX{>2&^wFxYDEGvJwp?dRNvb!TH8l)U3RaUE8#jr(BX3^9?$HW&9E#g4=Gr_%-7p5|&@r^)`pzz`7~Vhv zuqLK-Pw^lSoPOe@j-%g4vbHV{Id&IUK&1Hl^36f6Y>Zj(EY(#Mv2d{Pv7`qN=@Kws z2whbT+_13t+5i2py}!tKVm{)#t3j3UcL^A%sevA8L=TuxjP6P>cLf(Gr+3coSPJjo zS-8Kme&S{44u7Je27RrMB%{Z|dV-~gE znISj~)*qV4pD;=(3s+Nmv%m;>v9|$LSUf>ao+2MrqvKmQAS`n2#LNRi<5R<-+7D8d zflfF&i)G|vbtAeCGJctPOmoVL)7#||jhWYm4weozcY(zw5(f*N0}Tp_d;X$gaT|bP z#7BWFoL%hm7r!SR;>(Kf4#-KAJJg-3keK4` zAP&P0{fmRe#0G4b?W|#&X_G^Cu@k|ah zIXrel6k%t`7f>!cJ35~2U)1N=8{_cS=SBz7#jm~ppK{8+ek?)4|MTG*Yd_zg@HAUI zMBT&NlXP09##=jJ3!=PEJe7?O&`dKIkMS)Ce>HRQu4So!i^dNFD*cG@)@gn5U$fNY z5U⋘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 literal 0 HcmV?d00001 diff --git a/src/assets/wifi.svg b/src/assets/wifi.svg new file mode 100644 index 0000000..5d72b33 --- /dev/null +++ b/src/assets/wifi.svg @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + diff --git a/src/pages/BasicDashboard.vue b/src/pages/BasicDashboard.vue index 51d7b55..e4dc7ff 100644 --- a/src/pages/BasicDashboard.vue +++ b/src/pages/BasicDashboard.vue @@ -39,7 +39,9 @@ - +

+ +
diff --git a/src/pages/basicDashboard/Overview.vue b/src/pages/basicDashboard/Overview.vue index e3aa96c..40d650c 100644 --- a/src/pages/basicDashboard/Overview.vue +++ b/src/pages/basicDashboard/Overview.vue @@ -1,6 +1,75 @@ diff --git a/src/styles/basicDashboard.css b/src/styles/basicDashboard.css index 08f8f27..34959a9 100644 --- a/src/styles/basicDashboard.css +++ b/src/styles/basicDashboard.css @@ -14,6 +14,7 @@ min-height: 100%; padding: var(--alt-padding); border-radius: var(--border-radius); + flex-shrink: 0; h2 { text-align: center; @@ -53,4 +54,49 @@ padding: var(--alt-padding); border-radius: var(--border-radius); background-color: var(--dark-bg-alt-color); +} + +#overviewComponent { + ul { + margin: 20px auto; + display: flex; + flex-wrap: wrap; + gap: 20px; + list-style: none; + justify-content: center; + max-width: 730px; + + li { + display: inherit; + flex-direction: column; + align-items: center; + justify-content: center; + background-color: var(--dark-bg-alt-2-color); + height: 200px; + padding: var(--alt-padding); + width: 230px; + border-radius: 20px; + cursor: pointer; + transition: 0.3s background-color; + } + li:hover { + background-color: var(--dark-alt-highlight-color); + } + img { + width: 80px; + } + svg { + height: 100px; + padding: 5px; + box-sizing: content-box; + } + span { + width: 100%; + height: 30px; + background-color: var(--neutral-indicator); + border-radius: var(--alt-border-radius); + text-align: center; + line-height: 30px; + } + } } \ No newline at end of file diff --git a/src/styles/main.css b/src/styles/main.css index 6dc2034..64ddbf9 100644 --- a/src/styles/main.css +++ b/src/styles/main.css @@ -7,11 +7,16 @@ --padding: 20px; --alt-padding: 10px; --border-radius: 20px; + --alt-border-radius: 5px; --dark-bg-color: #161616; --dark-bg-alt-color: #0f0f0f; --dark-bg-alt-2-color: #000; --dark-highlight-color: #0084ff; --dark-alt-highlight-color: #006bcf; + --neutral-indicator: #808080; + --good-indicator: #44c71c; + --warning-indicator: #b6b614; + --bad-indicator: #ad1c1c; } * { From ce6e3c9b702c54f73aab8402adbf77d7f3465a4a Mon Sep 17 00:00:00 2001 From: Keyemail Date: Sat, 31 Aug 2024 03:20:27 -0700 Subject: [PATCH 2/4] FileShare icon added, links added, indicator classes added --- src/pages/basicDashboard/Overview.vue | 147 +++++++++++++++----------- src/styles/basicDashboard.css | 7 +- src/styles/main.css | 12 +++ 3 files changed, 98 insertions(+), 68 deletions(-) diff --git a/src/pages/basicDashboard/Overview.vue b/src/pages/basicDashboard/Overview.vue index 40d650c..2625b73 100644 --- a/src/pages/basicDashboard/Overview.vue +++ b/src/pages/basicDashboard/Overview.vue @@ -2,73 +2,94 @@

Overview

    -
  • - - - - - - - + +
  • + + + + + + + + + - - - -

    Internet

    - Online: LAN4 -
  • -
  • - - - - - - - + +

    Internet

    + Online: LAN4 +
  • + + +
  • + + + + + + + + - - -

    Wifi

    - - 5Ghz: On | 2.4Ghz: Off - -
  • -
  • - - - - - - - - + +

    Wifi

    + + 5Ghz: On | 2.4Ghz: Off + +
  • +
    + +
  • + + + + + + + + + + + +

    + Devices +

    + Online: 0 +
  • +
    + +
  • + + + + + + + - - -

    - Devices -

    - Online: 0 -
  • -
  • -

    - File Sharing -

    - Offline -
  • -
  • -

    - QoS -

    - Online -
  • -
  • -

    - Guest Network -

    - Offline -
  • + +

    + File Sharing +

    + Offline + +
    + +
  • +

    + QoS +

    + Online +
  • +
    + +
  • +

    + Guest Network +

    + Offline +
  • +
diff --git a/src/styles/basicDashboard.css b/src/styles/basicDashboard.css index 34959a9..f789bb8 100644 --- a/src/styles/basicDashboard.css +++ b/src/styles/basicDashboard.css @@ -67,7 +67,7 @@ max-width: 730px; li { - display: inherit; + display: flex; flex-direction: column; align-items: center; justify-content: center; @@ -77,10 +77,6 @@ width: 230px; border-radius: 20px; cursor: pointer; - transition: 0.3s background-color; - } - li:hover { - background-color: var(--dark-alt-highlight-color); } img { width: 80px; @@ -93,6 +89,7 @@ span { width: 100%; height: 30px; + margin-top: 5px; background-color: var(--neutral-indicator); border-radius: var(--alt-border-radius); text-align: center; diff --git a/src/styles/main.css b/src/styles/main.css index 64ddbf9..296e52c 100644 --- a/src/styles/main.css +++ b/src/styles/main.css @@ -108,4 +108,16 @@ a { align-items: center; justify-content: center; flex-grow: 1; +} + +.good-indicator { + background-color: var(--good-indicator) !important; +} + +.warning-indicator { + background-color: var(--warning-indicator) !important; +} + +.bad-indicator { + background-color: var(--bad-indicator) !important; } \ No newline at end of file From 9b4a3e00c779c4c3d5e0104fdc4df62312a8cc49 Mon Sep 17 00:00:00 2001 From: Keyemail Date: Sat, 31 Aug 2024 17:55:09 -0700 Subject: [PATCH 3/4] QoS icon added; Finished dashboard UI --- src/pages/basicDashboard/Overview.vue | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/pages/basicDashboard/Overview.vue b/src/pages/basicDashboard/Overview.vue index 2625b73..faaf134 100644 --- a/src/pages/basicDashboard/Overview.vue +++ b/src/pages/basicDashboard/Overview.vue @@ -76,6 +76,21 @@
  • + + + + + + + + + + + + + + +

    QoS

    @@ -84,6 +99,17 @@
  • + + + + + + + + + + +

    Guest Network

    From f54ff607e094bd2ccaf6956c2dbc20cd54707099 Mon Sep 17 00:00:00 2001 From: Keyemail Date: Sat, 31 Aug 2024 23:22:00 -0700 Subject: [PATCH 4/4] Optimized overview.vue, added root '@' --- package-lock.json | 264 ++++++++++++++++++++- package.json | 5 +- src/App.vue | 7 +- src/assets/globe.png | Bin 42521 -> 0 bytes src/assets/overviewSvgs/Devices.svg | 12 + src/assets/overviewSvgs/FileSharing.svg | 9 + src/assets/overviewSvgs/GuestNetwork.svg | 11 + src/assets/overviewSvgs/Internet.svg | 11 + src/assets/overviewSvgs/QoS.svg | 15 ++ src/assets/overviewSvgs/Wifi.svg | 10 + src/assets/wifi.svg | 95 -------- src/main.ts | 6 +- src/pages/AdvancedDashboard.vue | 10 +- src/pages/BasicDashboard.vue | 20 +- src/pages/LoginPage.vue | 2 +- src/pages/basicDashboard/DeviceList.vue | 2 +- src/pages/basicDashboard/FileShare.vue | 2 +- src/pages/basicDashboard/GuestNetwork.vue | 2 +- src/pages/basicDashboard/InternetSetup.vue | 2 +- src/pages/basicDashboard/Overview.vue | 191 ++++++--------- src/pages/basicDashboard/QoS.vue | 2 +- src/pages/basicDashboard/Wireless.vue | 2 +- src/routes/router.ts | 2 +- src/vite-env.d.ts | 2 +- tsconfig.app.json | 12 +- tsconfig.json | 2 +- tsconfig.node.json | 15 +- vite.config.ts | 9 +- 28 files changed, 462 insertions(+), 260 deletions(-) delete mode 100644 src/assets/globe.png create mode 100644 src/assets/overviewSvgs/Devices.svg create mode 100644 src/assets/overviewSvgs/FileSharing.svg create mode 100644 src/assets/overviewSvgs/GuestNetwork.svg create mode 100644 src/assets/overviewSvgs/Internet.svg create mode 100644 src/assets/overviewSvgs/QoS.svg create mode 100644 src/assets/overviewSvgs/Wifi.svg delete mode 100644 src/assets/wifi.svg diff --git a/package-lock.json b/package-lock.json index 2073bfb..57b5a23 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,13 +8,16 @@ "name": "router-ui-frontend", "version": "0.0.0", "dependencies": { + "path": "^0.12.7", "vue": "^3.4.37", "vue-router": "^4.4.3" }, "devDependencies": { - "@vitejs/plugin-vue": "^5.1.2", + "@types/node": "^22.5.1", + "@vitejs/plugin-vue": "^5.1.3", "typescript": "^5.5.3", "vite": "^5.4.1", + "vite-svg-loader": "^5.1.0", "vue-tsc": "^2.0.29" } }, @@ -642,16 +645,34 @@ "win32" ] }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/@types/estree": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", "dev": true }, + "node_modules/@types/node": { + "version": "22.5.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.1.tgz", + "integrity": "sha512-KkHsxej0j9IW1KKOOAA/XBA0z08UFSrRQHErzEfA3Vgq57eXIMYboIlHJuYIfd+lwCQjtKqUu3UnmKbtUc9yRw==", + "dev": true, + "dependencies": { + "undici-types": "~6.19.2" + } + }, "node_modules/@vitejs/plugin-vue": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.1.2.tgz", - "integrity": "sha512-nY9IwH12qeiJqumTCLJLE7IiNx7HZ39cbHaysEUd+Myvbz9KAqd2yq+U01Kab1R/H1BmiyM2ShTYlNH32Fzo3A==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.1.3.tgz", + "integrity": "sha512-3xbWsKEKXYlmX82aOHufFQVnkbMC/v8fLpWwh6hWOUrK5fbbtBh9Q/WWse27BFgSy2/e2c0fz5Scgya9h2GLhw==", "dev": true, "engines": { "node": "^18.0.0 || >=20.0.0" @@ -823,6 +844,12 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, "node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -832,12 +859,95 @@ "balanced-match": "^1.0.0" } }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, "node_modules/computeds": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz", "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==", "dev": true }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "dev": true, + "dependencies": { + "css-tree": "~2.2.0" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" + } + }, + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "dev": true + }, "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", @@ -849,6 +959,61 @@ "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", "dev": true }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dev": true, + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", @@ -926,6 +1091,11 @@ "he": "bin/he" } }, + "node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==" + }, "node_modules/magic-string": { "version": "0.30.11", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", @@ -934,6 +1104,12 @@ "@jridgewell/sourcemap-codec": "^1.5.0" } }, + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "dev": true + }, "node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -972,6 +1148,27 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/path": { + "version": "0.12.7", + "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", + "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==", + "dependencies": { + "process": "^0.11.1", + "util": "^0.10.3" + } + }, "node_modules/path-browserify": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", @@ -1010,6 +1207,14 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "engines": { + "node": ">= 0.6.0" + } + }, "node_modules/rollup": { "version": "4.21.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.0.tgz", @@ -1065,6 +1270,31 @@ "node": ">=0.10.0" } }, + "node_modules/svgo": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz", + "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==", + "dev": true, + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^5.1.0", + "css-tree": "^2.3.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" + } + }, "node_modules/to-fast-properties": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", @@ -1086,6 +1316,20 @@ "node": ">=14.17" } }, + "node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "dev": true + }, + "node_modules/util": { + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", + "dependencies": { + "inherits": "2.0.3" + } + }, "node_modules/vite": { "version": "5.4.1", "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.1.tgz", @@ -1145,6 +1389,18 @@ } } }, + "node_modules/vite-svg-loader": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/vite-svg-loader/-/vite-svg-loader-5.1.0.tgz", + "integrity": "sha512-M/wqwtOEjgb956/+m5ZrYT/Iq6Hax0OakWbokj8+9PXOnB7b/4AxESHieEtnNEy7ZpjsjYW1/5nK8fATQMmRxw==", + "dev": true, + "dependencies": { + "svgo": "^3.0.2" + }, + "peerDependencies": { + "vue": ">=3.2.13" + } + }, "node_modules/vscode-uri": { "version": "3.0.8", "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", diff --git a/package.json b/package.json index c680e12..e65d454 100644 --- a/package.json +++ b/package.json @@ -9,13 +9,16 @@ "preview": "vite preview" }, "dependencies": { + "path": "^0.12.7", "vue": "^3.4.37", "vue-router": "^4.4.3" }, "devDependencies": { - "@vitejs/plugin-vue": "^5.1.2", + "@types/node": "^22.5.1", + "@vitejs/plugin-vue": "^5.1.3", "typescript": "^5.5.3", "vite": "^5.4.1", + "vite-svg-loader": "^5.1.0", "vue-tsc": "^2.0.29" } } diff --git a/src/App.vue b/src/App.vue index 4bebe5e..1945b4f 100644 --- a/src/App.vue +++ b/src/App.vue @@ -1,9 +1,4 @@ - - \ No newline at end of file + \ No newline at end of file diff --git a/src/pages/basicDashboard/FileShare.vue b/src/pages/basicDashboard/FileShare.vue index e279944..5ff88e8 100644 --- a/src/pages/basicDashboard/FileShare.vue +++ b/src/pages/basicDashboard/FileShare.vue @@ -4,4 +4,4 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/src/pages/basicDashboard/GuestNetwork.vue b/src/pages/basicDashboard/GuestNetwork.vue index 41d4c45..dfb0ad1 100644 --- a/src/pages/basicDashboard/GuestNetwork.vue +++ b/src/pages/basicDashboard/GuestNetwork.vue @@ -4,4 +4,4 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/src/pages/basicDashboard/InternetSetup.vue b/src/pages/basicDashboard/InternetSetup.vue index 0e98bca..5f4e93c 100644 --- a/src/pages/basicDashboard/InternetSetup.vue +++ b/src/pages/basicDashboard/InternetSetup.vue @@ -4,4 +4,4 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/src/pages/basicDashboard/Overview.vue b/src/pages/basicDashboard/Overview.vue index faaf134..8db6d70 100644 --- a/src/pages/basicDashboard/Overview.vue +++ b/src/pages/basicDashboard/Overview.vue @@ -1,123 +1,90 @@ + + - \ No newline at end of file + \ No newline at end of file diff --git a/src/pages/basicDashboard/QoS.vue b/src/pages/basicDashboard/QoS.vue index 8ce8315..1b28292 100644 --- a/src/pages/basicDashboard/QoS.vue +++ b/src/pages/basicDashboard/QoS.vue @@ -4,4 +4,4 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/src/pages/basicDashboard/Wireless.vue b/src/pages/basicDashboard/Wireless.vue index e7f5b76..b762b0d 100644 --- a/src/pages/basicDashboard/Wireless.vue +++ b/src/pages/basicDashboard/Wireless.vue @@ -4,4 +4,4 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/src/routes/router.ts b/src/routes/router.ts index a6b2a35..9058870 100644 --- a/src/routes/router.ts +++ b/src/routes/router.ts @@ -42,7 +42,7 @@ const routes = [ component: BasicDevicesList, }, { - path: 'QoS', + path: 'qos', component: BasicQoS, }, { diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts index 11f02fe..151aa68 100644 --- a/src/vite-env.d.ts +++ b/src/vite-env.d.ts @@ -1 +1 @@ -/// +/// \ No newline at end of file diff --git a/tsconfig.app.json b/tsconfig.app.json index c54e602..68f7e32 100644 --- a/tsconfig.app.json +++ b/tsconfig.app.json @@ -18,7 +18,13 @@ "strict": true, "noUnusedLocals": true, "noUnusedParameters": true, - "noFallthroughCasesInSwitch": true - }, - "include": ["src/**/*.ts", "src/**/*.tsx", "src/**/*.vue"] + "noFallthroughCasesInSwitch": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "resolveJsonModule": true, + "baseUrl": "./", + "paths": { + "@/*": ["src/*"] + } + } } diff --git a/tsconfig.json b/tsconfig.json index 1ffef60..84c8a23 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,5 +3,5 @@ "references": [ { "path": "./tsconfig.app.json" }, { "path": "./tsconfig.node.json" } - ] + ], } diff --git a/tsconfig.node.json b/tsconfig.node.json index 0d3d714..f0e656c 100644 --- a/tsconfig.node.json +++ b/tsconfig.node.json @@ -16,7 +16,18 @@ "strict": true, "noUnusedLocals": true, "noUnusedParameters": true, - "noFallthroughCasesInSwitch": true + "noFallthroughCasesInSwitch": true, + "baseUrl": "./", + "paths": { + "@/*": [ + "src/*" + ] + }, }, - "include": ["vite.config.ts"] + "include": [ + "vite.config.ts", + "src/**/*.ts", + "src/**/*.tsx", + "src/**/*.vue", + ] } diff --git a/vite.config.ts b/vite.config.ts index 05c1740..1aab6f3 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -1,7 +1,14 @@ import { defineConfig } from 'vite' import vue from '@vitejs/plugin-vue' +import path from 'path'; +import svgLoader from 'vite-svg-loader'; // https://vitejs.dev/config/ export default defineConfig({ - plugins: [vue()], + plugins: [vue(), svgLoader()], + resolve : { + alias: { + '@': path.resolve(__dirname, './src'), + } + } })