From f9cb716463a493d9c2168a166c5ba570888b7ea2 Mon Sep 17 00:00:00 2001 From: Jana Vlachova Date: Sat, 18 Nov 2023 19:28:32 +0100 Subject: [PATCH] login screen styling --- agdb_studio/package-lock.json | 176 ++++++++++++++++++ agdb_studio/package.json | 1 + agdb_studio/src/App.vue | 4 + agdb_studio/src/assets/base.css | 6 +- agdb_studio/src/assets/button.less | 38 ++++ agdb_studio/src/assets/form.less | 15 ++ agdb_studio/src/assets/main.css | 15 +- agdb_studio/src/components/auth/LoginForm.vue | 16 +- agdb_studio/src/views/LoginView.vue | 23 ++- 9 files changed, 272 insertions(+), 22 deletions(-) create mode 100644 agdb_studio/src/assets/button.less create mode 100644 agdb_studio/src/assets/form.less diff --git a/agdb_studio/package-lock.json b/agdb_studio/package-lock.json index 312577172..1c84eddf5 100644 --- a/agdb_studio/package-lock.json +++ b/agdb_studio/package-lock.json @@ -27,6 +27,7 @@ "eslint": "^8.49.0", "eslint-plugin-vue": "^9.17.0", "jsdom": "^22.1.0", + "less": "^4.2.0", "npm-run-all2": "^6.1.1", "prettier": "^3.0.3", "typescript": "~5.2.0", @@ -1828,6 +1829,18 @@ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true }, + "node_modules/copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "dependencies": { + "is-what": "^3.14.1" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -2086,6 +2099,19 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "optional": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, "node_modules/error-ex": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", @@ -2648,6 +2674,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true, + "optional": true + }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", @@ -2771,6 +2804,19 @@ "node": ">= 4" } }, + "node_modules/image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "optional": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -2926,6 +2972,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true + }, "node_modules/is-wsl": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", @@ -3131,6 +3183,56 @@ "json-buffer": "3.0.1" } }, + "node_modules/less": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/less/-/less-4.2.0.tgz", + "integrity": "sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==", + "dev": true, + "dependencies": { + "copy-anything": "^2.0.1", + "parse-node-version": "^1.0.1", + "tslib": "^2.3.0" + }, + "bin": { + "lessc": "bin/lessc" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "source-map": "~0.6.0" + } + }, + "node_modules/less/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "optional": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/less/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -3276,6 +3378,19 @@ "node": ">=8.6" } }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "optional": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -3368,6 +3483,34 @@ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true }, + "node_modules/needle": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.2.0.tgz", + "integrity": "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==", + "dev": true, + "optional": true, + "dependencies": { + "debug": "^3.2.6", + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/needle/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "optional": true, + "dependencies": { + "ms": "^2.1.1" + } + }, "node_modules/nopt": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", @@ -3636,6 +3779,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/parse5": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", @@ -3734,6 +3886,16 @@ "node": ">=0.10" } }, + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=6" + } + }, "node_modules/pinia": { "version": "2.1.7", "resolved": "https://registry.npmjs.org/pinia/-/pinia-2.1.7.tgz", @@ -3933,6 +4095,13 @@ "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", "dev": true }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true, + "optional": true + }, "node_modules/psl": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", @@ -4225,6 +4394,13 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, + "node_modules/sax": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==", + "dev": true, + "optional": true + }, "node_modules/saxes": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", diff --git a/agdb_studio/package.json b/agdb_studio/package.json index 802650443..e13390b82 100644 --- a/agdb_studio/package.json +++ b/agdb_studio/package.json @@ -35,6 +35,7 @@ "eslint": "^8.49.0", "eslint-plugin-vue": "^9.17.0", "jsdom": "^22.1.0", + "less": "^4.2.0", "npm-run-all2": "^6.1.1", "prettier": "^3.0.3", "typescript": "~5.2.0", diff --git a/agdb_studio/src/App.vue b/agdb_studio/src/App.vue index 5a9585427..d743b65fb 100644 --- a/agdb_studio/src/App.vue +++ b/agdb_studio/src/App.vue @@ -6,4 +6,8 @@ import { RouterView } from "vue-router"; + diff --git a/agdb_studio/src/assets/base.css b/agdb_studio/src/assets/base.css index 8f4a13462..cea9419ab 100644 --- a/agdb_studio/src/assets/base.css +++ b/agdb_studio/src/assets/base.css @@ -1,4 +1,5 @@ -/* color palette from */ +@import url("https://fonts.googleapis.com/css2?family=Red+Hat+Display:wght@400;600;700&display=swap"); + :root { --white: #ffffff; --white-soft: #f8f8f8; @@ -19,9 +20,10 @@ --text-light-2: rgba(60, 60, 60, 0.66); --text-dark-1: var(--white); --text-dark-2: rgba(235, 235, 235, 0.64); + + --base-font: "Red Hat Display", sans-serif; } -/* semantic color variables for this project */ :root { --color-background: var(--white); --color-background-soft: var(--white-soft); diff --git a/agdb_studio/src/assets/button.less b/agdb_studio/src/assets/button.less new file mode 100644 index 000000000..9d5ac0ea8 --- /dev/null +++ b/agdb_studio/src/assets/button.less @@ -0,0 +1,38 @@ +.button { + display: inline-block; + padding: 10px 20px; + border: none; + border-radius: 4px; + text-align: center; + text-decoration: none; + cursor: pointer; + transition: opacity 0.4s ease; +} + +.button-default { + background-color: #007bff; + color: #fff; +} + +.button-success { + background-color: #28a745; + color: #fff; +} + +.button-warning { + background-color: #ffc107; + color: #212529; +} + +.button-danger { + background-color: #dc3545; + color: #fff; +} + +.button:hover { + opacity: 0.8; +} + +.button:active { + opacity: 0.6; +} diff --git a/agdb_studio/src/assets/form.less b/agdb_studio/src/assets/form.less new file mode 100644 index 000000000..328ffb90b --- /dev/null +++ b/agdb_studio/src/assets/form.less @@ -0,0 +1,15 @@ +.base-form { + input[type="text"], + input[type="password"] { + width: 100%; + padding: 0.5rem; + border: 1px solid var(--color-text); + margin-bottom: 10px; + font-size: 1rem; + } + + label { + display: block; + margin-bottom: 0.2rem; + } +} diff --git a/agdb_studio/src/assets/main.css b/agdb_studio/src/assets/main.css index 3c214c231..a29312f2f 100644 --- a/agdb_studio/src/assets/main.css +++ b/agdb_studio/src/assets/main.css @@ -1,10 +1,7 @@ @import "./base.css"; #app { - max-width: 1280px; - margin: 0 auto; - padding: 2rem; - + font-family: var(--base-font); font-weight: normal; } @@ -21,14 +18,4 @@ a { } @media (min-width: 1024px) { - body { - display: flex; - place-items: center; - } - - #app { - display: grid; - grid-template-columns: 1fr 1fr; - padding: 0 2rem; - } } diff --git a/agdb_studio/src/components/auth/LoginForm.vue b/agdb_studio/src/components/auth/LoginForm.vue index 634a5eb7b..82716bad0 100644 --- a/agdb_studio/src/components/auth/LoginForm.vue +++ b/agdb_studio/src/components/auth/LoginForm.vue @@ -10,8 +10,7 @@ const login = async () => { - + diff --git a/agdb_studio/src/views/LoginView.vue b/agdb_studio/src/views/LoginView.vue index b2b04be87..b2b8d7074 100644 --- a/agdb_studio/src/views/LoginView.vue +++ b/agdb_studio/src/views/LoginView.vue @@ -4,8 +4,27 @@ import LoginForm from "../components/auth/LoginForm.vue"; - +