From 25203934e6b2d5f4970dca63bf3f688d80949110 Mon Sep 17 00:00:00 2001 From: Mikhail Oleynikov Date: Tue, 14 Jul 2020 16:42:46 +0300 Subject: [PATCH] Switch to Nuxt --- .editorconfig | 13 + .eslintrc.js | 20 + .gitignore | 94 +- .prettierrc | 4 + README.md | 15 - {src/assets => assets}/images/aof-mini.png | Bin {src/assets => assets}/images/avatar.jpg | Bin {src/assets => assets}/images/logo.png | Bin assets/styles/components.scss | 46 + assets/styles/global.scss | 92 + assets/styles/layout.scss | 9 + assets/styles/utils.scss | 3 + gridsome.config.js | 4 - jsconfig.json | 12 + .../Default.vue => layouts/default.vue | 189 +- nuxt.config.js | 67 + package-lock.json | 10766 +++++++++------- package.json | 26 +- .../dashboard/projects.vue | 106 +- pages/modpacks.vue | 44 + src/assets/styles/global.scss | 0 src/favicon.png | Bin 21038 -> 0 bytes src/main.js | 6 - src/pages/Index.vue | 5 - src/pages/dashboard/Analytics.vue | 5 - static/favicon.ico | Bin 0 -> 1393 bytes 26 files changed, 6393 insertions(+), 5133 deletions(-) create mode 100644 .editorconfig create mode 100644 .eslintrc.js create mode 100644 .prettierrc delete mode 100644 README.md rename {src/assets => assets}/images/aof-mini.png (100%) rename {src/assets => assets}/images/avatar.jpg (100%) rename {src/assets => assets}/images/logo.png (100%) create mode 100644 assets/styles/components.scss create mode 100644 assets/styles/global.scss create mode 100644 assets/styles/layout.scss create mode 100644 assets/styles/utils.scss delete mode 100644 gridsome.config.js create mode 100644 jsconfig.json rename src/layouts/Default.vue => layouts/default.vue (64%) create mode 100644 nuxt.config.js rename src/pages/dashboard/Projects.vue => pages/dashboard/projects.vue (54%) create mode 100644 pages/modpacks.vue delete mode 100644 src/assets/styles/global.scss delete mode 100644 src/favicon.png delete mode 100644 src/main.js delete mode 100644 src/pages/Index.vue delete mode 100644 src/pages/dashboard/Analytics.vue create mode 100644 static/favicon.ico diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 000000000..5d1263484 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,13 @@ +# editorconfig.org +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +trim_trailing_whitespace = false diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 000000000..95c13c79d --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,20 @@ +module.exports = { + root: true, + env: { + browser: true, + node: true, + }, + parserOptions: { + parser: 'babel-eslint', + }, + extends: [ + '@nuxtjs', + 'prettier', + 'prettier/vue', + 'plugin:prettier/recommended', + 'plugin:nuxt/recommended', + ], + plugins: ['prettier'], + // add your custom rules here + rules: {}, +} diff --git a/.gitignore b/.gitignore index c56949016..e8f682baf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,90 @@ +# Created by .ignore support plugin (hsz.mobi) +### Node template +# Logs +/logs *.log -.cache -.DS_Store -src/.temp -node_modules -dist +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file .env -.env.* + +# parcel-bundler cache (https://parceljs.org/) +.cache + +# next.js build output +.next + +# nuxt.js build output +.nuxt + +# Nuxt generate +dist + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless + +# IDE / Editor +.idea + +# Service worker +sw.* + +# macOS +.DS_Store + +# Vim swap files +*.swp diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 000000000..b2095be81 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,4 @@ +{ + "semi": false, + "singleQuote": true +} diff --git a/README.md b/README.md deleted file mode 100644 index d51fa73be..000000000 --- a/README.md +++ /dev/null @@ -1,15 +0,0 @@ -### DISCLAIMER -- I use Gridsome for sketching -- It won't be Gridsome after I finish the sketch -- It will be Nuxt -- No, it likely won't be not Nuxt -- Vue has 2 major concepts you need to grasp: components and reactivity. -Catch up on that, and you'll be understanding the code easily -- Node is performant enough, we will apply aggressive Nginx caching to it -to ensure that even more -- SSR is rendering as much HTML on the server as possible and sending -ready to display HTML to the client instead of JS creating it client-side -- Hydration is constructing vDOM from ready-to-display server- -or statically rendered HTML -- vDOM is a representation of DOM created by Vue to batch DOM changes for -performance reason diff --git a/src/assets/images/aof-mini.png b/assets/images/aof-mini.png similarity index 100% rename from src/assets/images/aof-mini.png rename to assets/images/aof-mini.png diff --git a/src/assets/images/avatar.jpg b/assets/images/avatar.jpg similarity index 100% rename from src/assets/images/avatar.jpg rename to assets/images/avatar.jpg diff --git a/src/assets/images/logo.png b/assets/images/logo.png similarity index 100% rename from src/assets/images/logo.png rename to assets/images/logo.png diff --git a/assets/styles/components.scss b/assets/styles/components.scss new file mode 100644 index 000000000..51b45cc94 --- /dev/null +++ b/assets/styles/components.scss @@ -0,0 +1,46 @@ +// Here lies π–„π–Š π•Έπ–†π–—π–Œπ–Žπ–“ π•Έπ–†π–Œπ–Žπ–ˆ +// which allows to have just one wrapper div +.iconified-input { + align-items: center; + display: inline-flex; + flex-direction: row-reverse; + + input { + padding-left: 2.5rem; + + &:hover { + &+svg { + color: var(--color-grey-6); + } + } + + &:focus { + &+svg { + color: var(--color-text); + } + } + } + + svg { + color: var(--color-grey-5); + margin-right: -2rem; + } +} + +.badge { + border-radius: 1rem; + font-size: 0.8rem; + font-weight: bold; + letter-spacing: 0.02rem; + padding: 0.25rem 0.5rem; + + &.red { + background-color: #fed7d7; + color: #9b2c2c; + } + + &.green { + background-color: #c6f6d5; + color: #276749; + } +} diff --git a/assets/styles/global.scss b/assets/styles/global.scss new file mode 100644 index 000000000..321b25533 --- /dev/null +++ b/assets/styles/global.scss @@ -0,0 +1,92 @@ +@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap'); + +:root { + /** + * Colors + */ + --color-text: #1a202c; + --color-bg: #ffffff; + + --color-text-inverted: var(--color-bg); + --color-bg-inverted: var(--color-text); + + --color-brand: #4d9227; + + --color-grey-0: #f7fafc; + --color-grey-1: #edf2f7; + --color-grey-2: #e2e8f0; + --color-grey-3: #cbd5e0; + --color-grey-4: #a0aec0; + --color-grey-5: #718096; + --color-grey-6: #4a5568; + --color-grey-7: #2d3748; + + /** + * Sizes + */ + --size-rounded-sm: 0.25rem; + --size-rounded-md: 0.5rem; + --size-rounded-lg: 1rem; + + /** + * Defaults + */ + font-size: 18px; +} + +body { + background-color: var(--color-bg); + color: var(--color-text); + font-family: Inter, -apple-system, BlinkMacSystemFont, Segoe UI, Oxygen, + Ubuntu, Roboto, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; + margin: 0; + padding: 0; +} + +svg { + height: 24px; + width: 24px; +} + +a { + color: inherit; + text-decoration: none; +} + +h2 { + margin-top: 0; + margin-bottom: 1.5rem; +} + +h3 { + margin-top: 1rem; + margin-bottom: 0.5rem; +} + +input { + background: var(--color-bg); + border: 2px solid var(--color-grey-3); + border-radius: var(--size-rounded-sm); + color: var(--color-grey-9); + font-size: 1rem; + padding: 0.5rem 1rem; + width: 100%; + + &:focus, + &:hover { + border-color: var(--color-grey-4); + color: var(--color-text); + + &::placeholder { + color: var(--color-grey-7); + } + } + + &::placeholder { + color: var(--color-grey-6); + } +} + +@import "~assets/styles/layout.scss"; +@import "~assets/styles/utils.scss"; +@import "~assets/styles/components.scss"; diff --git a/assets/styles/layout.scss b/assets/styles/layout.scss new file mode 100644 index 000000000..397d154e7 --- /dev/null +++ b/assets/styles/layout.scss @@ -0,0 +1,9 @@ +.columns { + display: flex; + + @for $i from 1 through 4 { + .column-grow-#{$i} { + flex-grow: $i; + } + } +} diff --git a/assets/styles/utils.scss b/assets/styles/utils.scss new file mode 100644 index 000000000..059ad65ee --- /dev/null +++ b/assets/styles/utils.scss @@ -0,0 +1,3 @@ +.rounded-md { + border-radius: 0.5rem; +} diff --git a/gridsome.config.js b/gridsome.config.js deleted file mode 100644 index 9a199ae03..000000000 --- a/gridsome.config.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - siteName: 'Staging', - plugins: [] -} diff --git a/jsconfig.json b/jsconfig.json new file mode 100644 index 000000000..29037a628 --- /dev/null +++ b/jsconfig.json @@ -0,0 +1,12 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "paths": { + "~/*": ["./*"], + "@/*": ["./*"], + "~~/*": ["./*"], + "@@/*": ["./*"] + } + }, + "exclude": ["node_modules", ".nuxt", "dist"] +} diff --git a/src/layouts/Default.vue b/layouts/default.vue similarity index 64% rename from src/layouts/Default.vue rename to layouts/default.vue index 95d36b24d..c2577e0b0 100644 --- a/src/layouts/Default.vue +++ b/layouts/default.vue @@ -2,135 +2,120 @@
--> -
- -
+ diff --git a/src/assets/styles/global.scss b/src/assets/styles/global.scss deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/favicon.png b/src/favicon.png deleted file mode 100644 index 1f371e256472ea7792e87e9551b43ff8fc269466..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21038 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 - - The actual dashbo - - diff --git a/src/pages/dashboard/Analytics.vue b/src/pages/dashboard/Analytics.vue deleted file mode 100644 index f90205a95..000000000 --- a/src/pages/dashboard/Analytics.vue +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/static/favicon.ico b/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..3632d0c89129045dc4103e84e59e426c57b8f51a GIT binary patch literal 1393 zcmV-%1&;cOP)Px)D@jB_R9Fe^ReNldMG&9eyIx;VxmMIdgjhwCKeVN$X=xNR5F_{iAD9pW6t#*F zgsb$5TDXc(+R_KbHns{HwTUSSMxqkbMAXm+Qmqd}qLq*w23kw2)Y7}&?)uyB`r&ui zgSLtP7@6d5XJ%(+e>;!;h%VEAG6Suz+(=E0vHu2kKIR~YDr+g=KThO5N?%t`9J7Cz z!`J{cS7sBbmBg4LMc2`Q*c=vb%;M+)D8)#rilGypCSqLx@dPzj-aO`0Ee@jx&{DMo z2WG&xg=Vd*Cq_lch7F)fE%7L^BtJ8$xL~eTcPV~!0CdAiRcr*Z+1D9sR%#uxa2%lS zMHc30U1D*;LsF_{LE;nVHg~>ZH^SfO0I1*c5a(Lr^e$ztX)$85I|Ia7@DN4Y6RSN5 zisVjYMleQy5y_2LmgG+w;e3P~i4NCXgH*d=HbBx*5MrLSb{`J>9A!vneqSRxGno<9 zE23>mQG7tr%OUm=gpmORdJXM@drwr%R(lc%Hl26;kf|LIe!i@Uup z*Llp$^8n6C$?f4TR{7EZgs8wRV8aUOrpM1&9Zf!U!LkK0XZn-1d__lJO8SGj2H%rk z@(%pkpq}e2T|eKn4__}1pt<5c)b=i<{s+pMyer&M%jvnfQA(ANZUt|F4GdoFEX4rC-M{KbO^D{(o%D)QCbo>s)CXAnlwG$1v zG;RKh+q6M%LCF^=-+R!_`1Hh)C$%n|A_Hh?Ux_qOl*A&ww!d(JcrU;Vzm zBG@?@XRm(q{u@8){e>ARy8+@`9F{%vo}5Rut}DOnXHL8pwpR&B8???!!vXa93sL(d z7}ev^F#=m1G@tfB&J5T*g`4%n#MuEhNFI+z66b5RB$+6gvwV4s=Hnc(FX2KxVAtV= zoT7Cmg#u`*xdEwPjlh3UtnETz)7V_4UsRy3cBH?kdC#u1re3e@AG~=G{(JEdP3`SM z|A4$M&soglW;|3e0KQf0ObP`+zET)O5%DcFb4{0NWL@>xLB1RP@zaEilp5=v$vc>R zJ#Os7gltH=e}(ZJCtn{ATlR}$Y6*J5Xi{ze4}hlX*{IVZpg%zqd9@kLx?0B$wa+`~ z@dT{8k1qE3ZMq>boI;T?y4pSnK!58AkB&jyP1Dx+f_&(| z@D4l!jWKpe^+%z*p;ELnVGFW!2Bo?%mfh~sy^PqGXwo~9O7a(Kk05}S%B4vCOgJ2( zS!?%%h6+l?*b!|q$1akMRcDMPsTZLO8B1irg)A#%p)|d&4pVxhE)Ffb6^8??E%{@J9`p7P#__uNTS#9TpzPzVuwC5DwQPdixgxK z$6~Dd^w&+2dJAv+m`Oz2ol=McA&%%hWCL`l@?rdE;fE27OwMDy=O^#?a$EmkbYzQ* zYh|omoW8~B2*hv;bbiiZi+cUyUYB?NFB$k7NQU1u0aJ3K00000NkvXXu0mjfj6#%2 literal 0 HcmV?d00001