From 52669668c362a9a3a5a843c9c5e2683e2e25e66a Mon Sep 17 00:00:00 2001 From: distributive Date: Sat, 1 Jul 2023 09:42:58 +0100 Subject: [PATCH 01/33] Added Icon helper for faction/set icons --- app/components/icon.hbs | 1 + app/components/icon.js | 9 +++++++++ 2 files changed, 10 insertions(+) create mode 100644 app/components/icon.hbs create mode 100644 app/components/icon.js diff --git a/app/components/icon.hbs b/app/components/icon.hbs new file mode 100644 index 0000000..f633b32 --- /dev/null +++ b/app/components/icon.hbs @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/app/components/icon.js b/app/components/icon.js new file mode 100644 index 0000000..afc369d --- /dev/null +++ b/app/components/icon.js @@ -0,0 +1,9 @@ +import Component from '@glimmer/component'; + +export default class IconComponent extends Component { + get id() { + if (this.args.id) { + return this.args.id.toLowerCase().replace(/[ _]/g, '-'); + } + } +} From 38f400b6959fa13e9f2e743523b5acb785db477b Mon Sep 17 00:00:00 2001 From: distributive Date: Sat, 20 Jan 2024 16:17:40 +0000 Subject: [PATCH 02/33] First pass at new homepage design (lots of css and assets have been stripped out) --- app/components/icon.gjs | 2 +- app/index.html | 7 +- app/router.js | 14 +- app/routes/home/banlists.js | 3 - app/routes/home/community.js | 3 - app/routes/home/developer.js | 3 - app/routes/home/dotw.js | 3 - app/routes/home/formats.js | 3 - app/routes/home/login.js | 3 - app/routes/home/logout.js | 10 - app/routes/home/sets.js | 3 - app/routes/home/updates.js | 3 - app/styles/OLD.css | 811 +++++++++++ app/styles/app.css | 1207 ++--------------- app/styles/faction.css | 116 ++ app/styles/font-size.css | 59 + app/styles/netrunner-font.css | 245 ---- app/styles/themes/dark.css | 51 + app/templates/home.hbs | 153 ++- app/templates/home/banlists.hbs | 4 - app/templates/home/community.hbs | 4 - app/templates/home/developer.hbs | 4 - app/templates/home/dotw.hbs | 125 -- app/templates/home/formats.hbs | 4 - app/templates/home/sets.hbs | 4 - app/templates/home/updates.hbs | 4 - ember-cli-build.js | 1 - public/assets/fonts/netrunner.eot | Bin 37572 -> 0 bytes public/assets/fonts/netrunner.svg | 62 - public/assets/fonts/netrunner.ttf | Bin 37400 -> 0 bytes public/assets/fonts/netrunner.woff | Bin 37476 -> 0 bytes .../{images => image}/bg/hexagontile.png | Bin .../assets/{images => image}/faction/adam.png | Bin .../{images => image}/faction/anarch.png | Bin .../assets/{images => image}/faction/apex.png | Bin .../{images => image}/faction/criminal.png | Bin .../assets/{images => image}/faction/hb.png | Bin .../{images => image}/faction/jinteki.png | Bin .../assets/{images => image}/faction/nbn.png | Bin .../{images => image}/faction/shaper.png | Bin .../{images => image}/faction/sunny.png | Bin .../{images => image}/faction/weyland.png | Bin public/assets/{images => image}/logo.png | Bin public/assets/svgs/faction/adam.svg | 13 + public/assets/svgs/faction/anarch.svg | 13 + public/assets/svgs/faction/apex.svg | 13 + public/assets/svgs/faction/criminal.svg | 13 + public/assets/svgs/faction/haas-bioroid.svg | 13 + public/assets/svgs/faction/jinteki.svg | 13 + public/assets/svgs/faction/nbn.svg | 13 + public/assets/svgs/faction/neutral.svg | 13 + public/assets/svgs/faction/shaper.svg | 13 + public/assets/svgs/faction/sunny-lebeau.svg | 13 + .../svgs/faction/weyland-consortium.svg | 13 + public/assets/svgs/type/agenda.svg | 13 + public/assets/svgs/type/asset.svg | 13 + public/assets/svgs/type/hardware.svg | 13 + public/assets/svgs/type/ice.svg | 13 + public/assets/svgs/type/identity.svg | 13 + public/assets/svgs/type/operation.svg | 13 + public/assets/svgs/type/program.svg | 13 + public/assets/svgs/type/resource.svg | 13 + public/assets/svgs/type/upgrade.svg | 13 + tests/unit/routes/home/banlists-test.js | 11 - tests/unit/routes/home/community-test.js | 11 - tests/unit/routes/home/developer-test.js | 11 - tests/unit/routes/home/dotw-test.js | 11 - tests/unit/routes/home/formats-test.js | 11 - tests/unit/routes/home/sets-test.js | 11 - tests/unit/routes/home/updates-test.js | 11 - 70 files changed, 1557 insertions(+), 1691 deletions(-) delete mode 100644 app/routes/home/banlists.js delete mode 100644 app/routes/home/community.js delete mode 100644 app/routes/home/developer.js delete mode 100644 app/routes/home/dotw.js delete mode 100644 app/routes/home/formats.js delete mode 100644 app/routes/home/login.js delete mode 100644 app/routes/home/logout.js delete mode 100644 app/routes/home/sets.js delete mode 100644 app/routes/home/updates.js create mode 100644 app/styles/OLD.css create mode 100644 app/styles/faction.css create mode 100644 app/styles/font-size.css delete mode 100644 app/styles/netrunner-font.css create mode 100644 app/styles/themes/dark.css delete mode 100644 app/templates/home/banlists.hbs delete mode 100644 app/templates/home/community.hbs delete mode 100644 app/templates/home/developer.hbs delete mode 100644 app/templates/home/dotw.hbs delete mode 100644 app/templates/home/formats.hbs delete mode 100644 app/templates/home/sets.hbs delete mode 100644 app/templates/home/updates.hbs delete mode 100644 public/assets/fonts/netrunner.eot delete mode 100644 public/assets/fonts/netrunner.svg delete mode 100644 public/assets/fonts/netrunner.ttf delete mode 100644 public/assets/fonts/netrunner.woff rename public/assets/{images => image}/bg/hexagontile.png (100%) rename public/assets/{images => image}/faction/adam.png (100%) rename public/assets/{images => image}/faction/anarch.png (100%) rename public/assets/{images => image}/faction/apex.png (100%) rename public/assets/{images => image}/faction/criminal.png (100%) rename public/assets/{images => image}/faction/hb.png (100%) rename public/assets/{images => image}/faction/jinteki.png (100%) rename public/assets/{images => image}/faction/nbn.png (100%) rename public/assets/{images => image}/faction/shaper.png (100%) rename public/assets/{images => image}/faction/sunny.png (100%) rename public/assets/{images => image}/faction/weyland.png (100%) rename public/assets/{images => image}/logo.png (100%) create mode 100644 public/assets/svgs/faction/adam.svg create mode 100644 public/assets/svgs/faction/anarch.svg create mode 100644 public/assets/svgs/faction/apex.svg create mode 100644 public/assets/svgs/faction/criminal.svg create mode 100644 public/assets/svgs/faction/haas-bioroid.svg create mode 100644 public/assets/svgs/faction/jinteki.svg create mode 100644 public/assets/svgs/faction/nbn.svg create mode 100644 public/assets/svgs/faction/neutral.svg create mode 100644 public/assets/svgs/faction/shaper.svg create mode 100644 public/assets/svgs/faction/sunny-lebeau.svg create mode 100644 public/assets/svgs/faction/weyland-consortium.svg create mode 100644 public/assets/svgs/type/agenda.svg create mode 100644 public/assets/svgs/type/asset.svg create mode 100644 public/assets/svgs/type/hardware.svg create mode 100644 public/assets/svgs/type/ice.svg create mode 100644 public/assets/svgs/type/identity.svg create mode 100644 public/assets/svgs/type/operation.svg create mode 100644 public/assets/svgs/type/program.svg create mode 100644 public/assets/svgs/type/resource.svg create mode 100644 public/assets/svgs/type/upgrade.svg delete mode 100644 tests/unit/routes/home/banlists-test.js delete mode 100644 tests/unit/routes/home/community-test.js delete mode 100644 tests/unit/routes/home/developer-test.js delete mode 100644 tests/unit/routes/home/dotw-test.js delete mode 100644 tests/unit/routes/home/formats-test.js delete mode 100644 tests/unit/routes/home/sets-test.js delete mode 100644 tests/unit/routes/home/updates-test.js diff --git a/app/components/icon.gjs b/app/components/icon.gjs index 7951204..03a6ea7 100644 --- a/app/components/icon.gjs +++ b/app/components/icon.gjs @@ -1,5 +1,5 @@ import { format } from './quote'; diff --git a/app/index.html b/app/index.html index d9a8c79..07ad4d7 100644 --- a/app/index.html +++ b/app/index.html @@ -1,4 +1,4 @@ - + @@ -14,11 +14,6 @@ rel="stylesheet" href="{{rootURL}}assets/netrunnerdb.css" /> - diff --git a/app/router.js b/app/router.js index 5b1e198..9e6c2f8 100644 --- a/app/router.js +++ b/app/router.js @@ -7,19 +7,7 @@ export default class Router extends EmberRouter { } Router.map(function () { - this.route('home', { path: '/' }, function () { - this.route('banlists'); - this.route('community'); - this.route('decklists'); - this.route('developer'); - this.route('dotw'); - this.route('dotw', { path: '/' }); // Defaults to dotw - this.route('formats'); - this.route('login'); - this.route('logout'); - this.route('sets'); - this.route('updates'); - }); + this.route('home', { path: '/' }); this.route('page', function () { this.route('advanced-search'); this.route('banlists'); diff --git a/app/routes/home/banlists.js b/app/routes/home/banlists.js deleted file mode 100644 index 18a5fd7..0000000 --- a/app/routes/home/banlists.js +++ /dev/null @@ -1,3 +0,0 @@ -import Route from '@ember/routing/route'; - -export default class HomeBanlistsRoute extends Route {} diff --git a/app/routes/home/community.js b/app/routes/home/community.js deleted file mode 100644 index 072bb7c..0000000 --- a/app/routes/home/community.js +++ /dev/null @@ -1,3 +0,0 @@ -import Route from '@ember/routing/route'; - -export default class HomeCommunityRoute extends Route {} diff --git a/app/routes/home/developer.js b/app/routes/home/developer.js deleted file mode 100644 index fe5160c..0000000 --- a/app/routes/home/developer.js +++ /dev/null @@ -1,3 +0,0 @@ -import Route from '@ember/routing/route'; - -export default class HomeDeveloperRoute extends Route {} diff --git a/app/routes/home/dotw.js b/app/routes/home/dotw.js deleted file mode 100644 index e5eac76..0000000 --- a/app/routes/home/dotw.js +++ /dev/null @@ -1,3 +0,0 @@ -import Route from '@ember/routing/route'; - -export default class HomeDotwRoute extends Route {} diff --git a/app/routes/home/formats.js b/app/routes/home/formats.js deleted file mode 100644 index ad1540a..0000000 --- a/app/routes/home/formats.js +++ /dev/null @@ -1,3 +0,0 @@ -import Route from '@ember/routing/route'; - -export default class HomeFormatsRoute extends Route {} diff --git a/app/routes/home/login.js b/app/routes/home/login.js deleted file mode 100644 index 63c4672..0000000 --- a/app/routes/home/login.js +++ /dev/null @@ -1,3 +0,0 @@ -import OIDCAuthenticationRoute from 'ember-simple-auth-oidc/routes/oidc-authentication'; - -export default class LoginRoute extends OIDCAuthenticationRoute {} diff --git a/app/routes/home/logout.js b/app/routes/home/logout.js deleted file mode 100644 index 6830543..0000000 --- a/app/routes/home/logout.js +++ /dev/null @@ -1,10 +0,0 @@ -import { inject as service } from '@ember/service'; -import Route from '@ember/routing/route'; - -export default class ProfileRoute extends Route { - @service session; - - beforeModel() { - this.session.singleLogout(); - } -} diff --git a/app/routes/home/sets.js b/app/routes/home/sets.js deleted file mode 100644 index 9908618..0000000 --- a/app/routes/home/sets.js +++ /dev/null @@ -1,3 +0,0 @@ -import Route from '@ember/routing/route'; - -export default class HomeSetsRoute extends Route {} diff --git a/app/routes/home/updates.js b/app/routes/home/updates.js deleted file mode 100644 index 4deecde..0000000 --- a/app/routes/home/updates.js +++ /dev/null @@ -1,3 +0,0 @@ -import Route from '@ember/routing/route'; - -export default class HomeUpdatesRoute extends Route {} diff --git a/app/styles/OLD.css b/app/styles/OLD.css new file mode 100644 index 0000000..3ec6c73 --- /dev/null +++ b/app/styles/OLD.css @@ -0,0 +1,811 @@ +/* MISC */ + +.home-nav { + margin-top: 100px; +} + +.home-nav .nav-link { + height: 160px; + border-top-right-radius: 0; + border-top-left-radius: 0; + border-top: none; + border-bottom: none; + background: white; + background: linear-gradient( + 0deg, + rgb(240 240 240 / 100%) 0%, + rgb(255 255 255 / 100%) 100% + ); +} + +.home-nav .nav-link.active { + background: white; +} + +.button-array button { + font-size: inherit; + width: 100%; +} + +.navbar button, +.navbar .button { + padding: 16px 40px; + background: #f9f9f9; + border: none; + text-align: left; + text-decoration: none; +} + +.button-array button:not(:first-child) { + margin-top: 5px; +} + +@media only screen and (width > 768px) { + .button-array button { + padding: 0; + } + + .button-array button:not(:first-child) { + margin-top: 2px; + } +} + +.navbar button:hover, +.navbar .button:hover { + background: var(--nr-primary-light); + color: white; +} + +.navbar button.active, +.navbar .button.active { + background: var(--nr-primary); + color: white !important; +} + +.navbar a.button-link { + width: 100%; + background: #f9f9f9; + border: none; + text-align: left; +} + +.navbar a.button-link:hover { + background: var(--nr-primary); + color: white; + text-decoration: none; +} + +.navbar .form-control { + border: none; + border-radius: 0; + font-size: inherit; + color: #333; + background: #f9f9f9; +} + +/* Autocomplete */ +.ui-menu { + padding: 0; + border: none !important; + list-style: none; +} + +.ui-menu-item > div { + border-left-width: 3px !important; + border-left-style: solid !important; + padding: 1rem 0.75rem !important; + transition: border-left-width 0.1s; +} + +.ui-menu-item > div.ui-state-hover { + margin: 0; + border-width: 0 !important; + border-left-width: 3px !important; + color: black; + background-color: #f9f9f9; +} + +.ui-menu-item > div.ui-state-active { + margin: 0; + border-width: 0 !important; + border-left-width: 24px !important; + color: black; + background-color: #f0f0f0; +} + +/* Dropdown menus */ +.dropdown-menu { + margin-top: 0 !important; + padding: 0; + border: none; + border-radius: 0; +} + +.decklist { + user-select: none; +} + +.decklist-identity-image { + margin: auto; + position: absolute; + right: 15px; + top: 0; + bottom: 0; + width: 70px; + height: 70px; + border-radius: 50%; + background-repeat: no-repeat; + background-size: 90px; + background-position: 50% 25%; + transition: + transform 0.2s, + right 0.2s, + opacity 0.2s; +} + +.ui-state-active .decklist-identity-image { + /* transform: skewX(-10deg); */ + + /* right: -70px; */ + + /* opacity: 25%; */ +} + +tbody th { + font-weight: normal; +} + +/* Custom scrollbar */ +*::-webkit-scrollbar { + width: 9px; +} + +*::-webkit-scrollbar-track { + background: var(--nr-grey-light); +} + +*::-webkit-scrollbar-thumb { + background-color: var(--nr-secondary); + border: transparent; +} + +* { + scrollbar-width: thin; + scrollbar-color: var(--nr-secondary) var(--nr-grey-light); +} + +.search-results tbody tr { + border: 0 solid transparent; +} + +.search-results tbody tr:nth-child(2n + 1) { + background: linear-gradient( + 90deg, + rgb(255 255 255 / 0%) 0%, + #f0f0f0 10%, + #f0f0f0 90%, + rgb(255 255 255 / 0%) 100% + ); +} + +.search-results tbody tr > * { + padding-top: 6px; + padding-bottom: 6px; +} + +.search-results a { + text-decoration: none; + filter: brightness(0.8) opacity(0.8); /* TEMP */ +} + +.search-bar { + background-color: #eee; + border: none; +} + +/* Vertically align labels in the search options */ +@media only screen and (width >= 768px) { + .inline-search-label { + padding-top: 2px; + } +} + +@media only screen and (width <= 768px) { + .inline-search-label { + padding-bottom: 2px; + } +} + +img.card-art { + width: 100%; + border-radius: var(--card-border-radius); +} + +.card-art-container { + --mx: 50%; + --my: 50%; + --o: 0; + --scale: 0; + --rotate-x: "0deg"; + --rotate-y: "0deg"; + + perspective: 800px; +} + +.card-art-container:hover { + cursor: pointer; +} + +.card-art-container .card-art-frame { + position: relative; + border-radius: var(--card-border-radius); + overflow: hidden; + transition: filter 0.5s; + perspective: 10px; + transform: scale3d(var(--scale), var(--scale), var(--scale)) + rotateX(var(--rotate-x)) rotateY(var(--rotate-y)); +} + +.card-art-container .card-art-frame.active-card { + filter: drop-shadow(0 1px 4px var(--nr-secondary-light)); + transition: + transform 0s, + filter 0.5s; +} + +.card-art-container .card-art-frame img { + transition: filter 0.1s; +} + +.card-art-container .card-art-frame .glare { + inset: 0; + position: absolute; + background: radial-gradient( + farthest-corner circle at var(--mx) var(--my), + rgb(255 255 255 / 80%) 10%, + rgb(255 255 255 / 65%) 20%, + rgb(0 0 0 / 50%) 90% + ); + + /* background: linear-gradient(190deg, #00000000 var(--a) var(--b), #ffffffff var(--c) var(--d), #00000000 var(--e) var(--f)); */ + background-repeat: no-repeat; + mix-blend-mode: overlay; + opacity: var(--o); + transition: opacity 1s; + pointer-events: none; +} + +.select-simple { + /* border: 1px solid var(--nr-grey-light); */ + box-shadow: inset 0 1px 2px rgb(0 0 0 / 10%); + color: var(--nr-secondary); +} + +.select-simple::before { + border-radius: 0; +} + +.pagination-simple .page-link { + padding: 2px 10px; + box-shadow: inset 0 1px 2px rgb(0 0 0 / 10%); + color: var(--nr-secondary); + + /* border: 1px solid var(--nr-grey-light); + box-shadow: inset 0 1px 1px rgba(0,0,0,.075); + background-color: white; */ +} + +.pagination-simple .page-link:hover { + text-decoration: none; +} + +.pagination-simple .page-item.disabled .page-link { + box-shadow: none; + color: white; + border-color: var(--nr-secondary); + background-color: var(--nr-secondary); +} + +.form-select:focus { + box-shadow: 0 0 0 0; +} + +/* Bootstrap 5.2 does not support responsive borders */ +@media only screen and (width <= 768px) { + #card-content { + border-right: none !important; + } +} + +/* Turn Bootstrap cards into full-width containers on mobile */ +@media only screen and (width <= 768px) { + .card-responsive { + /* border-radius: 0; */ + overflow: hidden; /* TODO - move */ + } + + .card-responsive > .card-header, + .card-responsive > .card-body { + margin: 0; + padding: 0; + } +} + +@media only screen and (width <= 768px) { + table, + thead, + tbody, + th, + td, + tr { + display: block; + } + + table { + margin: 0; + } + + /* Hide table headers without hiding from screen readers */ + thead tr { + position: absolute; + top: -9999px; + left: -9999px; + } + + td { + border: none; + border-bottom: 1px solid #e0e0e0; + position: relative; + padding-left: 50%; + } + + th::before, + td::before { + display: inline-block; + padding-right: 10px; + width: 30%; + white-space: nowrap; + color: black; + font-weight: bold; + content: attr(data-th) ": "; + } + + tr:nth-child(2n + 1) { + background-color: #f0f0f0; + } + + tr:not(:first-child) { + border-top: 1px solid #d0d0d0; + } +} + +.full-card-text { + font-size: 12px; +} + +.full-card-text p { + margin: 0; +} + +.full-card-text .card-header { + font-size: 16px; +} + +.full-card-text .card-header a { + color: black; +} + +.card-text-box { + font-size: 12px; +} + +.card-text-box p { + margin: 0; +} + +.card-text-box .card-title { + font-size: 16px; +} + +.card-text-box .card-text { + padding-left: 8px; + border-left-width: 2px; + border-left-style: solid; +} + +.card-text-box .card-text::before, +.card-text-box .card-flavor::before, +.card-text-box .card-illustrator::before, +.card-text-box .card-producer::before { + border-top: 1px solid rgb(0 0 0 / 20%); + width: 95%; + content: ""; + margin: 5px auto; + display: block; +} + +.card-text-box .card-text::before { + width: 100%; +} + +.card-text-box .card-flavor { + font-size: 10px; + font-style: italic; +} + +.names-only-key { + border-right: 1px solid var(--nr-grey-light); + text-align: right; +} + +.names-only-value { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +.tippy-box { + border-radius: 10px; + padding: 0.8em 0.5em calc(0.8em + 4px) 0.5em; + min-width: 350px; +} + +.hex { + --path: polygon(25% 5%, 75% 5%, 100% 50%, 75% 95%, 25% 95%, 0% 50%); + --width: 80px; + --thickness: 2px; + + display: block; + margin: 0 auto; + padding-left: 20px; + float: right; + box-sizing: border-box; + background: white; +} + +.hex-border { + position: relative; + width: calc(var(--width)); + height: var(--width); + clip-path: var(--path); + box-sizing: border-box; + background: black; +} + +.hex-background { + position: absolute; + top: var(--thickness); + left: var(--thickness); + width: calc(100% - var(--thickness) * 2); + height: calc(100% - var(--thickness) * 2); + clip-path: var(--path); + background-color: white; +} + +.hex-image { + position: absolute; + width: 100%; + height: 100%; + object-fit: cover; + background-position: center top; +} + +.hex-image.thumbnail-corp-identity { + background-position: center -25px; +} + +.hex-image.thumbnail-corp-identity-ffg { + background-position: center -30px; +} + +.hex-image.thumbnail-runner-identity { + background-position: center -20px; +} + +.hex-image.thumbnail-runner-identity-ffg { + background-position: center -20px; +} + +.hex-image.thumbnail-agenda { + background-position: center -11px; +} + +.hex-image.thumbnail-agenda-ffg { + background-position: center -14px; +} + +.hex-image.thumbnail-asset { + background-position: center -11px; +} + +.hex-image.thumbnail-asset-ffg { + /* background-position: center top; */ +} + +.hex-image.thumbnail-ice { + transform: rotate(90deg); + background-position: center bottom; +} + +.hex-image.thumbnail-ice-ffg { + transform: rotate(90deg); + background-position: center bottom; +} + +.hex-image.thumbnail-operation { + transform: scale(1.05, 1.05); + background-position: center -11px; +} + +.hex-image.thumbnail-operation-ffg { + transform: scale(1.1, 1.1); + background-position: center -14px; +} + +.hex-image.thumbnail-upgrade { + background-position: center -13px; +} + +.hex-image.thumbnail-upgrade-ffg { + /* background-position: center top; */ +} + +.hex-image.thumbnail-event { + background-position: center -12px; +} + +.hex-image.thumbnail-event-ffg { + background-position: center -12px; +} + +.hex-image.thumbnail-hardware { + background-position: center -12px; +} + +.hex-image.thumbnail-hardware-ffg { + background-position: center -5px; +} + +.hex-image.thumbnail-program { + transform: scale(1.05); + background-position: center -15px; +} + +.hex-image.thumbnail-program-ffg { + transform: scale(1.2); + background-position: calc(50% - 20px) top; +} + +.hex-image.thumbnail-resource { + transform: scale(1.05); + background-position: center -11px; +} + +.hex-image.thumbnail-resource-ffg { + transform: scale(1.3); + background-position: calc(50% - 1px) -2px; +} + +.influence { + font-family: "Merriweather Sans", sans-serif; +} + +.influence-anarch { + color: orangered; + border-color: orangered; +} + +.influence-criminal { + border-color: royalblue; + color: royalblue; +} + +/* stylelint-disable-next-line */ +.influence-haas_bioroid { + border-color: blueviolet; + color: blueviolet; +} + +.influence-jinteki { + border-color: crimson; + color: crimson; +} + +.influence-nbn { + border-color: darkorange; + color: darkorange; +} + +/* stylelint-disable-next-line */ +.influence-neutral_corp { + border-color: gray; + color: gray; +} + +/* stylelint-disable-next-line */ +.influence-neutral_runner { + border-color: gray; + color: gray; +} + +.influence-shaper { + border-color: limegreen; + color: limegreen; +} + +/* stylelint-disable-next-line */ +.influence-weyland_consortium { + border-color: darkgreen; + color: darkgreen; +} + +.legality-available::before, +.legality-unavailable::before, +.legality-legal::before, +.legality-banned::before, +.legality-rotated::before, +.legality-added::before, +.legality-restricted::before, +.legality-verified::before, +.legality-unverified::before, +.legality-1-inf::before, +.legality-3-inf::before, +.legality-penalty::before, +.legality-points-3::before, +.legality-points-2::before, +.legality-points-1::before { + display: inline-block; + min-width: 7.5em; + border-radius: 100px; + padding: 2px 8px; + color: white; + font-family: LatoWeb, sans-serif; + font-size: 0.75em; + font-weight: bold; + text-align: center; +} + +.legality-verified::before { + content: "VERIFIED"; + background-color: #577a57; +} + +.legality-unverified::before { + content: "UNVERIFIED"; + background-color: #8f8f8f; +} + +.legality-available::before { + content: "LEGAL"; + background-color: #577a57; +} + +.legality-unavailable::before { + content: "NOT LEGAL"; + background-color: #8f8f8f; +} + +.legality-legal::before { + content: "LEGAL"; + background-color: #577a57; +} + +.legality-banned::before { + content: "BANNED"; + background-color: #b66; +} + +.legality-rotated::before { + content: "ROTATED"; + background-color: #558dec; +} + +.legality-added::before { + content: "ADDED"; + background-color: #577a57; +} + +.legality-restricted::before { + content: "RESTRICTED"; + background-color: #8e80ff; +} + +.legality-1-inf::before { + content: "1 INF."; + background-color: #558dec; +} + +.legality-3-inf::before { + content: "3 INF."; + background-color: #558dec; +} + +.legality-penalty::before { + content: "-1 INF."; + background-color: #558dec; +} + +.legality-points-3::before { + content: "3 PTS"; + background-color: #5a55ec; +} + +.legality-points-2::before { + content: "2 PTS"; + background-color: #5a55ec; +} + +.legality-points-1::before { + content: "1 PT"; + background-color: #5a55ec; +} + +.legality-interactive { + white-space: nowrap; +} + +.legality-interactive::before { + transition: min-width 0.5s; +} + +.legality-interactive.legality-restricted::before { + transition: none; /* "RESTRICTED" is too long and makes the animation weird */ +} + +.legality-interactive:not(:hover, :active)::before { + content: "!"; + min-width: 1em; +} + +.legality-legal.legality-interactive:not(:hover, :active)::before { + content: "/"; +} + +.legality-restricted.legality-interactive:not(:hover, :active)::before { + content: "?"; +} + +.legality-1-inf.legality-interactive:not(:hover, :active)::before { + content: "1"; +} + +.legality-3-inf.legality-interactive:not(:hover, :active)::before { + content: "3"; +} + +.legality-penalty.legality-interactive:not(:hover, :active)::before { + content: "*"; +} + +.legality-points-3.legality-interactive:not(:hover, :active)::before { + content: "3"; +} + +.legality-points-2.legality-interactive:not(:hover, :active)::before { + content: "2"; +} + +.legality-points-1.legality-interactive:not(:hover, :active)::before { + content: "1"; +} + +.table-fill { + width: 100%; +} + +.table-striped > tbody > tr:nth-child(odd) > td, +.table-striped > tbody > tr:nth-child(odd) > th { + background-color: rgba(0 0 0 / 5%); +} + +legend { + display: block; + width: 100%; + padding: 0; + margin-bottom: 20px; + font-size: 21px; + line-height: inherit; + color: #333; + border: 0; + border-bottom: 1px solid #e5e5e5; +} diff --git a/app/styles/app.css b/app/styles/app.css index e16f3ab..b1e1816 100644 --- a/app/styles/app.css +++ b/app/styles/app.css @@ -1,1147 +1,170 @@ -@import url("./quote.css"); -@import url("./components/full-display.css"); -@import url("./components/navbar.css"); +@import url("./themes/dark.css"); /* Must be imported first */ +@import url("./faction.css"); +@import url("./font-size.css"); -:root { - --nr-primary: #dc143b; - --nr-primary-dark: #88001b; - --nr-primary-light: #f16a85; - --nr-secondary: #23527c; - --nr-secondary-dark: #133e64; - --nr-secondary-light: #5e83a5; - --nr-grey: #636363; - --nr-grey-dark: #292929; - --nr-grey-light: #c2c0c0; - --nsg-blue: #15153c; - --anarch: #e26b35; - --criminal: #194c9b; - --shaper: #4cb148; - --haas-bioroid: #794d94; - --jinteki: #ba3339; - --nbn: #ffde00; - --weyland-consortium: #516751; - --adam: #a89c33; - --apex: #000; - --sunny-lebeau: #939598; - --neutral-corp: #5e5e5e; - --neutral-runner: #919191; - --card-border-radius: 5%; -} - -.nr-primary { - color: var(--nr-primary); -} - -.nr-secondary { - color: var(--nr-secondary); -} - -.bg-nr-primary { - background-color: var(--nr-primary); -} - -.bg-nr-secondary { - background-color: var(--nr-secondary); -} - -.nr-primary-dark { - color: var(--nr-primary-dark); -} - -.nr-secondary-dark { - color: var(--nr-secondary-dark); -} - -.bg-nr-primary-dark { - background-color: var(--nr-primary-dark); -} - -.bg-nr-secondary-dark { - background-color: var(--nr-secondary-dark); -} - -.nr-grey { - color: var(--nr-grey); -} - -.nr-grey-dark { - color: var(--nr-grey-dark); -} - -.bg-nr-grey { - background-color: var(--nr-grey); -} - -.bg-nr-grey-dark { - background-color: var(--nr-grey-dark); -} - -.bg-nr-grey-light { - background-color: var(--nr-grey-light); -} - -.nsg-blue { - color: var(--nsg-blue); -} - -.bg-nsg-blue { - background-color: var(--nsg-blue); -} - -.anarch { - color: var(--anarch) !important; -} - -.criminal { - color: var(--criminal) !important; -} - -.shaper { - color: var(--shaper) !important; -} - -.haas-bioroid { - color: var(--haas-bioroid) !important; -} - -.jinteki { - color: var(--jinteki) !important; -} - -.nbn { - color: var(--nbn) !important; -} - -.weyland-consortium { - color: var(--weyland-consortium) !important; -} - -.adam { - color: var(--adam) !important; -} - -.apex { - color: var(--apex) !important; -} - -.sunny-lebeau { - color: var(--sunny-lebeau) !important; -} - -.neutral-corp { - color: var(--neutral-corp) !important; -} - -.neutral-runner { - color: var(--neutral-runner) !important; -} - -.border-anarch { - border-color: var(--anarch) !important; -} - -.border-criminal { - border-color: var(--criminal) !important; -} - -.border-shaper { - border-color: var(--shaper) !important; -} - -.border-haas-bioroid { - border-color: var(--haas-bioroid) !important; -} - -.border-jinteki { - border-color: var(--jinteki) !important; -} +/* BASE */ -.border-nbn { - border-color: var(--nbn) !important; -} - -.border-weyland-consortium { - border-color: var(--weyland-consortium) !important; -} - -.border-adam { - border-color: var(--adam) !important; -} - -.border-apex { - border-color: var(--apex) !important; -} - -.border-sunny-lebeau { - border-color: var(--sunny-lebeau) !important; -} - -.border-neutral-corp { - border-color: var(--neutral-corp) !important; +body { + color: var(--color--default); + background-color: var(--color--default-bg); + border-color: var(--color--default-border); } -.border-neutral-runner { - border-color: var(--neutral-runner) !important; +nav { + background-color: var(--color--header-bg); } a { text-decoration: none; + cursor: pointer; } - a:hover { text-decoration: underline; text-decoration-thickness: 1px; } -html { - overflow-y: scroll; -} - -nav { - font-size: 18px; - font-family: LatoWeb, sans-serif; - color: white; -} - -body { - font-size: 16px; - font-family: LatoWeb, sans-serif; - - --a: 230; - - background: linear-gradient( - 90deg, - rgb(255 255 255 / 0%) 0%, - rgb(var(--a) var(--a) var(--a) / 100%) 20%, - rgb(var(--a) var(--a) var(--a) / 100%) 80%, - rgb(255 255 255 / 0%) 100% - ), - url("../assets/images/bg/hexagontile.png"), - linear-gradient(180deg, #fff 0%, #fff 20%, #f3f3f3 60%, #f3f3f3 100%); - background-size: auto, 200px, auto; - background-attachment: fixed; - min-height: 100vh; -} - -footer { - position: sticky; - top: 100vh; -} - -.home-nav { - margin-top: 100px; -} - -.home-nav .nav-link { - height: 160px; - border-top-right-radius: 0; - border-top-left-radius: 0; - border-top: none; - border-bottom: none; - background: white; - background: linear-gradient( - 0deg, - rgb(240 240 240 / 100%) 0%, - rgb(255 255 255 / 100%) 100% - ); -} - -.home-nav .nav-link.active { - background: white; -} - -.navbar-brand { - position: relative; - font-size: 24px; - font-family: "Merriweather Sans", sans-serif; -} - -.navbar-brand.large-brand { - font-size: 32px; -} +a.button { + color: var(--color--button); + background-color: var(--color--button-bg); + border: 1px solid var(--color--button-border); + border-radius: 3px; -.navbar-brand img { - width: 1em; - transform: translateY(-3px); -} - -.navbar-brand:hover { - filter: opacity(0.5); text-decoration: none; -} - -.button-array button { - font-size: inherit; - width: 100%; -} - -.navbar button, -.navbar .button { - padding: 16px 40px; - background: #f9f9f9; - border: none; - text-align: left; - text-decoration: none; -} - -.button-array button:not(:first-child) { - margin-top: 5px; -} - -@media only screen and (width > 768px) { - .button-array button { - padding: 0; - } - - .button-array button:not(:first-child) { - margin-top: 2px; - } -} - -.navbar button:hover, -.navbar .button:hover { - background: var(--nr-primary-light); - color: white; -} - -.navbar button.active, -.navbar .button.active { - background: var(--nr-primary); - color: white !important; -} + text-align: center; -.navbar a.button-link { - width: 100%; - background: #f9f9f9; - border: none; - text-align: left; + display: block; + margin-left: auto; + margin-right: auto; + padding: 3px 0 6px 0; } - -.navbar a.button-link:hover { - background: var(--nr-primary); - color: white; +a.button:hover { text-decoration: none; -} - -.navbar .form-control { - border: none; - border-radius: 0; - font-size: inherit; - color: #333; - background: #f9f9f9; -} - -/* Autocomplete */ -.ui-menu { - padding: 0; - border: none !important; - list-style: none; -} - -.ui-menu-item > div { - border-left-width: 3px !important; - border-left-style: solid !important; - padding: 1rem 0.75rem !important; - transition: border-left-width 0.1s; -} - -.ui-menu-item > div.ui-state-hover { - margin: 0; - border-width: 0 !important; - border-left-width: 3px !important; - color: black; - background-color: #f9f9f9; -} - -.ui-menu-item > div.ui-state-active { - margin: 0; - border-width: 0 !important; - border-left-width: 24px !important; - color: black; - background-color: #f0f0f0; -} - -/* Dropdown menus */ -.dropdown-menu { - margin-top: 0 !important; - padding: 0; - border: none; - border-radius: 0; -} - -.decklist { - user-select: none; -} - -.decklist-identity-image { - margin: auto; - position: absolute; - right: 15px; - top: 0; - bottom: 0; - width: 70px; - height: 70px; - border-radius: 50%; - background-repeat: no-repeat; - background-size: 90px; - background-position: 50% 25%; - transition: - transform 0.2s, - right 0.2s, - opacity 0.2s; -} - -.ui-state-active .decklist-identity-image { - /* transform: skewX(-10deg); */ - - /* right: -70px; */ - - /* opacity: 25%; */ -} - -tbody th { - font-weight: normal; -} - -/* Custom scrollbar */ -*::-webkit-scrollbar { - width: 9px; -} - -*::-webkit-scrollbar-track { - background: var(--nr-grey-light); -} - -*::-webkit-scrollbar-thumb { - background-color: var(--nr-secondary); - border: transparent; -} - -* { - scrollbar-width: thin; - scrollbar-color: var(--nr-secondary) var(--nr-grey-light); -} - -.search-results tbody tr { - border: 0 solid transparent; -} - -.search-results tbody tr:nth-child(2n + 1) { - background: linear-gradient( - 90deg, - rgb(255 255 255 / 0%) 0%, - #f0f0f0 10%, - #f0f0f0 90%, - rgb(255 255 255 / 0%) 100% + color: var(--color--button-hover); + background-color: var(--color--button-hover-bg); + border: 1px solid var(--color--button-hover-border); +} +a.button:active { + color: var(--color--button-active); + background-color: var(--color--button-active-bg); + border: 1px solid var(--color--button-active-border); +} + +a.button.round { + border-radius: 90px; +} +a.button.cyber { + border-radius: 1px; + -webkit-clip-path: polygon( + 0 0, + 100% 0, + 100% calc(100% - 5px), + calc(100% - 5px) 100%, + 0 100% ); -} - -.search-results tbody tr > * { - padding-top: 6px; - padding-bottom: 6px; -} - -.search-results a { - text-decoration: none; - filter: brightness(0.8) opacity(0.8); /* TEMP */ -} - -.search-bar { - background-color: #eee; - border: none; -} - -/* Vertically align labels in the search options */ -@media only screen and (width >= 768px) { - .inline-search-label { - padding-top: 2px; - } -} - -@media only screen and (width <= 768px) { - .inline-search-label { - padding-bottom: 2px; - } -} - -img.card-art { - width: 100%; - border-radius: var(--card-border-radius); -} - -.card-art-container { - --mx: 50%; - --my: 50%; - --o: 0; - --scale: 0; - --rotate-x: "0deg"; - --rotate-y: "0deg"; - - perspective: 800px; -} - -.card-art-container:hover { - cursor: pointer; -} - -.card-art-container .card-art-frame { - position: relative; - border-radius: var(--card-border-radius); - overflow: hidden; - transition: filter 0.5s; - perspective: 10px; - transform: scale3d(var(--scale), var(--scale), var(--scale)) - rotateX(var(--rotate-x)) rotateY(var(--rotate-y)); -} - -.card-art-container .card-art-frame.active-card { - filter: drop-shadow(0 1px 4px var(--nr-secondary-light)); - transition: - transform 0s, - filter 0.5s; -} - -.card-art-container .card-art-frame img { - transition: filter 0.1s; -} - -.card-art-container .card-art-frame .glare { - inset: 0; - position: absolute; - background: radial-gradient( - farthest-corner circle at var(--mx) var(--my), - rgb(255 255 255 / 80%) 10%, - rgb(255 255 255 / 65%) 20%, - rgb(0 0 0 / 50%) 90% + clip-path: polygon( + 0 0, + 100% 0, + 100% calc(100% - 5px), + calc(100% - 5px) 100%, + 0 100% ); - - /* background: linear-gradient(190deg, #00000000 var(--a) var(--b), #ffffffff var(--c) var(--d), #00000000 var(--e) var(--f)); */ - background-repeat: no-repeat; - mix-blend-mode: overlay; - opacity: var(--o); - transition: opacity 1s; - pointer-events: none; -} - -.select-simple { - /* border: 1px solid var(--nr-grey-light); */ - box-shadow: inset 0 1px 2px rgb(0 0 0 / 10%); - color: var(--nr-secondary); -} - -.select-simple::before { - border-radius: 0; -} - -.pagination-simple .page-link { - padding: 2px 10px; - box-shadow: inset 0 1px 2px rgb(0 0 0 / 10%); - color: var(--nr-secondary); - - /* border: 1px solid var(--nr-grey-light); - box-shadow: inset 0 1px 1px rgba(0,0,0,.075); - background-color: white; */ -} - -.pagination-simple .page-link:hover { - text-decoration: none; -} - -.pagination-simple .page-item.disabled .page-link { - box-shadow: none; - color: white; - border-color: var(--nr-secondary); - background-color: var(--nr-secondary); -} - -.form-select:focus { - box-shadow: 0 0 0 0; -} - -/* Bootstrap 5.2 does not support responsive borders */ -@media only screen and (width <= 768px) { - #card-content { - border-right: none !important; - } -} - -/* Turn Bootstrap cards into full-width containers on mobile */ -@media only screen and (width <= 768px) { - .card-responsive { - /* border-radius: 0; */ - overflow: hidden; /* TODO - move */ - } - - .card-responsive > .card-header, - .card-responsive > .card-body { - margin: 0; - padding: 0; - } -} - -@media only screen and (width <= 768px) { - table, - thead, - tbody, - th, - td, - tr { - display: block; - } - - table { - margin: 0; - } - - /* Hide table headers without hiding from screen readers */ - thead tr { - position: absolute; - top: -9999px; - left: -9999px; - } - - td { - border: none; - border-bottom: 1px solid #e0e0e0; - position: relative; - padding-left: 50%; - } - - th::before, - td::before { - display: inline-block; - padding-right: 10px; - width: 30%; - white-space: nowrap; - color: black; - font-weight: bold; - content: attr(data-th) ": "; - } - - tr:nth-child(2n + 1) { - background-color: #f0f0f0; - } - - tr:not(:first-child) { - border-top: 1px solid #d0d0d0; - } -} - -.full-card-text { - font-size: 12px; } -.full-card-text p { - margin: 0; +input { + color: var(--color--button); + background-color: var(--color--button-bg); + border: 1px solid var(--color--button-border); + border-radius: 3px; } - -.full-card-text .card-header { - font-size: 16px; +input[type="text"] { + padding-left: 10px; + transform: translateY(-2px); } -.full-card-text .card-header a { - color: black; +.button.blue { + color: var(--color--blue-text) !important; + background-color: var(--color--blue) !important; + border-color: var(--color--blue) !important; } - -.card-text-box { - font-size: 12px; -} - -.card-text-box p { - margin: 0; -} - -.card-text-box .card-title { - font-size: 16px; -} - -.card-text-box .card-text { - padding-left: 8px; - border-left-width: 2px; - border-left-style: solid; -} - -.card-text-box .card-text::before, -.card-text-box .card-flavor::before, -.card-text-box .card-illustrator::before, -.card-text-box .card-producer::before { - border-top: 1px solid rgb(0 0 0 / 20%); - width: 95%; - content: ""; - margin: 5px auto; - display: block; +.button.blue:hover { + color: var(--color--blue-hover-text) !important; + background-color: var(--color--blue-hover) !important; + border-color: var(--color--blue-hover) !important; } - -.card-text-box .card-text::before { - width: 100%; +.button.blue:active { + color: var(--color--blue-active-text) !important; + background-color: var(--color--blue-active) !important; + border-color: var(--color--blue-active) !important; } -.card-text-box .card-flavor { - font-size: 10px; - font-style: italic; +.button.grey { + color: var(--color--grey-text) !important; + background-color: var(--color--grey) !important; + border-color: var(--color--grey) !important; } - -.names-only-key { - border-right: 1px solid var(--nr-grey-light); - text-align: right; +.button.grey:hover { + color: var(--color--grey-hover-text) !important; + background-color: var(--color--grey-hover) !important; + border-color: var(--color--grey-hover) !important; } - -.names-only-value { - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; +.button.grey:active { + color: var(--color--grey-active-text) !important; + background-color: var(--color--grey-active) !important; + border-color: var(--color--grey-active) !important; } -.hex { - --path: polygon(25% 5%, 75% 5%, 100% 50%, 75% 95%, 25% 95%, 0% 50%); - --width: 80px; - --thickness: 2px; +/* BOXES */ - display: block; - margin: 0 auto; - padding-left: 20px; - float: right; - box-sizing: border-box; -} +.box { + background-color: var(--color--box-bg); -.hex-border { - position: relative; - width: calc(var(--width)); - height: var(--width); - clip-path: var(--path); - box-sizing: border-box; - background: black; -} - -.hex-background { - position: absolute; - top: var(--thickness); - left: var(--thickness); - width: calc(100% - var(--thickness) * 2); - height: calc(100% - var(--thickness) * 2); - clip-path: var(--path); - background-color: white; -} + border: solid 1px var(--color--box-border); + border-radius: 3px; -.hex-image { - position: absolute; width: 100%; - height: 100%; - object-fit: cover; - background-position: center top; -} - -.hex-image.thumbnail-corp-identity { - background-position: center -25px; -} - -.hex-image.thumbnail-corp-identity-ffg { - background-position: center -30px; -} - -.hex-image.thumbnail-runner-identity { - background-position: center -20px; -} - -.hex-image.thumbnail-runner-identity-ffg { - background-position: center -20px; -} - -.hex-image.thumbnail-agenda { - background-position: center -11px; -} - -.hex-image.thumbnail-agenda-ffg { - background-position: center -14px; -} - -.hex-image.thumbnail-asset { - background-position: center -11px; -} + height: 300px; /* TEMP */ + min-height: 100%; -.hex-image.thumbnail-asset-ffg { - /* background-position: center top; */ -} - -.hex-image.thumbnail-ice { - transform: rotate(90deg); - background-position: center bottom; -} - -.hex-image.thumbnail-ice-ffg { - transform: rotate(90deg); - background-position: center bottom; -} - -.hex-image.thumbnail-operation { - transform: scale(1.05, 1.05); - background-position: center -11px; -} - -.hex-image.thumbnail-operation-ffg { - transform: scale(1.1, 1.1); - background-position: center -14px; -} - -.hex-image.thumbnail-upgrade { - background-position: center -13px; -} - -.hex-image.thumbnail-upgrade-ffg { - /* background-position: center top; */ -} - -.hex-image.thumbnail-event { - background-position: center -12px; -} - -.hex-image.thumbnail-event-ffg { - background-position: center -12px; -} - -.hex-image.thumbnail-hardware { - background-position: center -12px; -} - -.hex-image.thumbnail-hardware-ffg { - background-position: center -5px; -} - -.hex-image.thumbnail-program { - transform: scale(1.05); - background-position: center -15px; -} - -.hex-image.thumbnail-program-ffg { - transform: scale(1.2); - background-position: calc(50% - 20px) top; -} - -.hex-image.thumbnail-resource { - transform: scale(1.05); - background-position: center -11px; -} - -.hex-image.thumbnail-resource-ffg { - transform: scale(1.3); - background-position: calc(50% - 1px) -2px; -} - -.influence { - font-family: "Merriweather Sans", sans-serif; -} - -.influence-anarch { - color: orangered; - border-color: orangered; -} - -.influence-criminal { - border-color: royalblue; - color: royalblue; -} - -/* stylelint-disable-next-line */ -.influence-haas_bioroid { - border-color: blueviolet; - color: blueviolet; -} - -.influence-jinteki { - border-color: crimson; - color: crimson; -} - -.influence-nbn { - border-color: darkorange; - color: darkorange; -} - -/* stylelint-disable-next-line */ -.influence-neutral_corp { - border-color: gray; - color: gray; -} - -/* stylelint-disable-next-line */ -.influence-neutral_runner { - border-color: gray; - color: gray; -} - -.influence-shaper { - border-color: limegreen; - color: limegreen; -} - -/* stylelint-disable-next-line */ -.influence-weyland_consortium { - border-color: darkgreen; - color: darkgreen; -} - -.legality-available::before, -.legality-unavailable::before, -.legality-legal::before, -.legality-banned::before, -.legality-rotated::before, -.legality-added::before, -.legality-restricted::before, -.legality-verified::before, -.legality-unverified::before, -.legality-1-inf::before, -.legality-3-inf::before, -.legality-penalty::before, -.legality-points-3::before, -.legality-points-2::before, -.legality-points-1::before { - display: inline-block; - min-width: 7.5em; - border-radius: 100px; - padding: 2px 8px; - color: white; - font-family: LatoWeb, sans-serif; - font-size: 0.75em; - font-weight: bold; text-align: center; } -.legality-verified::before { - content: "VERIFIED"; - background-color: #577a57; -} - -.legality-unverified::before { - content: "UNVERIFIED"; - background-color: #8f8f8f; -} - -.legality-available::before { - content: "LEGAL"; - background-color: #577a57; -} - -.legality-unavailable::before { - content: "NOT LEGAL"; - background-color: #8f8f8f; -} - -.legality-legal::before { - content: "LEGAL"; - background-color: #577a57; -} - -.legality-banned::before { - content: "BANNED"; - background-color: #b66; -} - -.legality-rotated::before { - content: "ROTATED"; - background-color: #558dec; -} - -.legality-added::before { - content: "ADDED"; - background-color: #577a57; -} - -.legality-restricted::before { - content: "RESTRICTED"; - background-color: #8e80ff; -} - -.legality-1-inf::before { - content: "1 INF."; - background-color: #558dec; -} - -.legality-3-inf::before { - content: "3 INF."; - background-color: #558dec; -} - -.legality-penalty::before { - content: "-1 INF."; - background-color: #558dec; -} - -.legality-points-3::before { - content: "3 PTS"; - background-color: #5a55ec; -} - -.legality-points-2::before { - content: "2 PTS"; - background-color: #5a55ec; -} - -.legality-points-1::before { - content: "1 PT"; - background-color: #5a55ec; -} - -.legality-interactive { - white-space: nowrap; -} - -.legality-interactive::before { - transition: min-width 0.5s; -} - -.legality-interactive.legality-restricted::before { - transition: none; /* "RESTRICTED" is too long and makes the animation weird */ -} - -.legality-interactive:not(:hover, :active)::before { - content: "!"; - min-width: 1em; -} - -.legality-legal.legality-interactive:not(:hover, :active)::before { - content: "/"; -} +/* NAVBAR */ -.legality-restricted.legality-interactive:not(:hover, :active)::before { - content: "?"; +#top-nav { + border-bottom: solid 1px var(--color--default-border); + background-color: var(--color--header-bg); } -.legality-1-inf.legality-interactive:not(:hover, :active)::before { - content: "1"; -} - -.legality-3-inf.legality-interactive:not(:hover, :active)::before { - content: "3"; -} - -.legality-penalty.legality-interactive:not(:hover, :active)::before { - content: "*"; -} - -.legality-points-3.legality-interactive:not(:hover, :active)::before { - content: "3"; -} - -.legality-points-2.legality-interactive:not(:hover, :active)::before { - content: "2"; -} - -.legality-points-1.legality-interactive:not(:hover, :active)::before { - content: "1"; -} - -/* Font sizes */ -.font-size-8 { - font-size: 9px !important; -} - -.font-size-9 { - font-size: 9px !important; -} - -.font-size-10 { - font-size: 10px !important; -} - -.font-size-11 { - font-size: 11px !important; -} - -.font-size-12 { - font-size: 12px !important; -} - -.font-size-13 { - font-size: 13px !important; -} - -.font-size-14 { - font-size: 14px !important; -} - -.font-size-15 { - font-size: 15px !important; -} - -.font-size-16 { - font-size: 16px !important; -} - -.font-size-17 { - font-size: 17px !important; -} - -.font-size-18 { - font-size: 18px !important; -} - -.font-size-19 { - font-size: 19px !important; -} - -.font-size-20 { - font-size: 20px !important; -} - -.font-size-21 { - font-size: 21px !important; -} - -.font-size-22 { - font-size: 22px !important; -} - -.font-size-23 { - font-size: 23px !important; -} - -.font-size-24 { - font-size: 24px !important; -} - -.font-size-32 { - font-size: 32px !important; +#bottom-nav { + border-bottom: solid 1px var(--color--default-border); + background-color: var(--color--header-bg); + text-align: center; } - -.font-size-72 { - font-size: 72px !important; +#bottom-nav a { + display: inline-block; + vertical-align: middle; + line-height: 100%; + transform: translateY(-2px); + color: var(--color--offwhite); } - -.table-fill { - width: 100%; +#bottom-nav a:hover { + text-decoration: underline !important; } -.table-striped > tbody > tr:nth-child(odd) > td, -.table-striped > tbody > tr:nth-child(odd) > th { - background-color: rgba(0 0 0 / 5%); -} +/* NAVBAR BRAND */ -legend { - display: block; - width: 100%; - padding: 0; - margin-bottom: 20px; - font-size: 21px; - line-height: inherit; - color: #333; - border: 0; - border-bottom: 1px solid #e5e5e5; -} - -.ember-tooltip { - max-width: 400px; +.navbar-brand { + position: relative; + font-size: 20px; + font-family: "Merriweather Sans", sans-serif; } -.tippy-box { - background-color: white; - border-radius: 10px; - border: 2px solid #999; - color: black; - min-width: 350px; - padding: 0.8em 0.8em calc(0.8em + 4px) 1em; - text-shadow: none; +.navbar-brand img { + width: 1.5em; + transform: translateY(-3px); } -.tooltip-inner { - text-align: left; +.navbar-brand:hover { + filter: opacity(0.5); + text-decoration: none; } diff --git a/app/styles/faction.css b/app/styles/faction.css new file mode 100644 index 0000000..8bf296d --- /dev/null +++ b/app/styles/faction.css @@ -0,0 +1,116 @@ +/* TEXT COLOR */ + +.anarch { + color: var(--color--anarch) !important; +} +.criminal { + color: var(--color--criminal) !important; +} +.shaper { + color: var(--color--shaper) !important; +} +.haas-bioroid { + color: var(--color--haas-bioroid) !important; +} +.jinteki { + color: var(--color--jinteki) !important; +} +.nbn { + color: var(--color--nbn) !important; +} +.weyland-consortium { + color: var(--color--weyland-consortium) !important; +} +.adam { + color: var(--color--adam) !important; +} +.apex { + color: var(--color--apex) !important; +} +.sunny-lebeau { + color: var(--color--sunny-lebeau) !important; +} +.neutral-corp { + color: var(--color--neutral-corp) !important; +} +.neutral-runner { + color: var(--color--neutral-runner) !important; +} + +/* BG COLOR */ + +.bg-anarch { + background-color: var(--color--anarch) !important; +} +.bg-criminal { + background-color: var(--color--criminal) !important; +} +.bg-shaper { + background-color: var(--color--shaper) !important; +} +.bg-haas-bioroid { + background-color: var(--color--haas-bioroid) !important; +} +.bg-jinteki { + background-color: var(--color--jinteki) !important; +} +.bg-nbn { + background-color: var(--color--nbn) !important; +} +.bg-weyland-consortium { + background-color: var(--color--weyland-consortium) !important; +} +.bg-adam { + background-color: var(--color--adam) !important; +} +.bg-apex { + background-color: var(--color--apex) !important; +} +.bg-sunny-lebeau { + background-color: var(--color--sunny-lebeau) !important; +} +.bg-neutral-corp { + background-color: var(--color--neutral-corp) !important; +} +.bg-neutral-runner { + background-color: var(--color--neutral-runner) !important; +} + +/* BORDER COLOR */ + +.border-anarch { + border-color: var(--color--anarch) !important; +} +.border-criminal { + border-color: var(--color--criminal) !important; +} +.border-shaper { + border-color: var(--color--shaper) !important; +} +.border-haas-bioroid { + border-color: var(--color--haas-bioroid) !important; +} +.border-jinteki { + border-color: var(--color--jinteki) !important; +} +.border-nbn { + border-color: var(--color--nbn) !important; +} +.border-weyland-consortium { + border-color: var(--color--weyland-consortium) !important; +} +.border-adam { + border-color: var(--color--adam) !important; +} +.border-apex { + border-color: var(--color--apex) !important; +} +.border-sunny-lebeau { + border-color: var(--color--sunny-lebeau) !important; +} +.border-neutral-corp { + border-color: var(--color--neutral-corp) !important; +} +.border-neutral-runner { + border-color: var(--color--neutral-runner) !important; +} diff --git a/app/styles/font-size.css b/app/styles/font-size.css new file mode 100644 index 0000000..45219bc --- /dev/null +++ b/app/styles/font-size.css @@ -0,0 +1,59 @@ +.font-size-8 { + font-size: 9px !important; +} +.font-size-9 { + font-size: 9px !important; +} +.font-size-10 { + font-size: 10px !important; +} +.font-size-11 { + font-size: 11px !important; +} +.font-size-12 { + font-size: 12px !important; +} +.font-size-13 { + font-size: 13px !important; +} +.font-size-14 { + font-size: 14px !important; +} +.font-size-15 { + font-size: 15px !important; +} +.font-size-16 { + font-size: 16px !important; +} +.font-size-17 { + font-size: 17px !important; +} +.font-size-18 { + font-size: 18px !important; +} +.font-size-19 { + font-size: 19px !important; +} +.font-size-20 { + font-size: 20px !important; +} +.font-size-21 { + font-size: 21px !important; +} +.font-size-22 { + font-size: 22px !important; +} +.font-size-23 { + font-size: 23px !important; +} +.font-size-24 { + font-size: 24px !important; +} +/* skip (add as needed) */ +.font-size-32 { + font-size: 32px !important; +} +/* skip (add as needed) */ +.font-size-72 { + font-size: 72px !important; +} diff --git a/app/styles/netrunner-font.css b/app/styles/netrunner-font.css deleted file mode 100644 index 3ea8d1b..0000000 --- a/app/styles/netrunner-font.css +++ /dev/null @@ -1,245 +0,0 @@ -@font-face { - font-family: netrunner; - src: url("../assets/fonts/netrunner.eot"); - src: - url("../assets/fonts/netrunner.eot") format("embedded-opentype"), - url("../assets/fonts/netrunner.ttf") format("truetype"), - url("../assets/fonts/netrunner.woff") format("woff"), - url("../assets/fonts/netrunner.svg") format("svg"); - font-weight: normal; - font-style: normal; -} - -[class^="icon"] { - font-family: netrunner, sans-serif !important; - speak: none; - font-style: normal; - font-weight: normal; - font-variant: normal; - text-transform: none; - line-height: 1; - display: inline-block; - position: relative; - top: 0.05em; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -/* Factions - Keep Sorted */ -.icon-adam::before { - content: "\e91d"; -} - -.icon-anarch::before { - content: "\e91a"; -} - -.icon-apex::before { - content: "\e91e"; -} - -.icon-criminal::before { - content: "\e919"; -} - -.icon-haas-bioroid::before { - content: "\e918"; -} - -.icon-jinteki::before { - content: "\e916"; -} - -.icon-nbn::before { - content: "\e915"; -} - -/* Neutral icon is the NSG Netrunner icon for both corp and runner */ -.icon-neutral-corp::before, -.icon-neutral-runner::before { - content: "\e92f"; -} - -.icon-shaper::before { - content: "\e91b"; -} - -.icon-sunny-lebeau::before { - content: "\e91c"; -} - -.icon-weyland-consortium::before { - content: "\e917"; -} - -/* Game symbols - Keep Sorted */ -.icon-agenda-points::before { - content: "\e930"; -} - -.icon-click::before { - content: "\e909"; -} - -.icon-credit::before { - content: "\e90b"; - margin-left: -0.1em; - margin-right: -0.1em; - font-size: 1.1em; -} - -.icon-interrupt::before { - content: "\e92b"; -} - -.icon-link::before { - content: "\e908"; -} - -.icon-mu::before { - content: "\e904"; -} - -.icon-mu1::before { - content: "\e903"; -} - -.icon-mu2::before { - content: "\e902"; -} - -.icon-mu3::before { - content: "\e901"; -} - -.icon-recurring-credit::before { - content: "\e90a"; -} - -.icon-rez-cost::before { - content: "\e913"; -} - -.icon-subroutine::before { - content: "\e900"; - margin-right: 0.2em; -} - -.icon-trash-ability::before, -.icon-trash-cost::before { - content: "\e905"; -} - -/* Server Icons - Keep sorted */ -.icon-archives::before { - content: "\e918"; -} - -.icon-hq::before { - content: "\e916"; -} - -.icon-rd::before { - content: "\e917"; -} - -/* Set Icons - Keep sorted by code */ -.icon-ashes::before { - content: "\e929"; -} - -.icon-borealis::before { - content: "\e931"; -} - -.icon-core-set::before { - content: "\e914"; -} - -.icon-creation-and-control::before { - content: "\e913"; -} - -.icon-data-and-destiny::before { - content: "\e912"; -} - -.icon-flashpoint::before { - content: "\e921"; -} - -.icon-genesis::before { - content: "\e911"; -} - -.icon-honor-and-profit::before { - content: "\e910"; -} - -.icon-kitara::before { - content: "\e925"; -} - -.icon-liberation::before { - content: "\e933"; -} - -.icon-lunar::before { - content: "\e90f"; -} - -.icon-magnum-opus::before { - content: "\e927"; -} - -.icon-magnum-opus-reprint::before { - content: "\e92a"; -} - -.icon-mumbad::before { - content: "\e91f"; -} - -.icon-order-and-chaos::before { - content: "\e90e"; -} - -.icon-red-sand::before { - content: "\e922"; -} - -.icon-reign-and-reverie::before { - content: "\e926"; -} - -.icon-revised-core-set::before { - content: "\e924"; -} - -.icon-salvaged-memories::before { - content: "\e92c"; -} - -.icon-sansan::before { - content: "\e90d"; -} - -.icon-spin::before { - content: "\e90c"; -} - -.icon-system-core-2019::before { - content: "\e928"; -} - -.icon-system-gateway::before { - content: "\e92d"; -} - -.icon-system-update-2021::before { - content: "\e92e"; -} - -.icon-terminal-directive::before { - content: "\e923"; -} diff --git a/app/styles/themes/dark.css b/app/styles/themes/dark.css new file mode 100644 index 0000000..ea93036 --- /dev/null +++ b/app/styles/themes/dark.css @@ -0,0 +1,51 @@ +:root { + /* CONST COLOURS */ + --color--offwhite: #f6f6f6; + + --color--grey: #262626; + --color--grey-hover: #202020; + --color--grey-active: #060606; + --color--grey-text: white; + --color--grey-hover-text: white; + --color--grey-active-text: white; + + --color--blue: #1a62ed; + --color--blue-hover: #083ba1; + --color--blue-active: #021844; + --color--blue-text: white; + --color--blue-hover-text: white; + --color--blue-active-text: white; + + /* DERIVED */ + --color--default: white; + --color--default-bg: #0e0e11; + --color--default-border: var(--color--grey); + + --color--header-bg: #14141a; + + --color--button: var(--color--offwhite); + --color--button-bg: #1b1b1e; + --color--button-border: var(--color--grey); + --color--button-hover: var(--color--offwhite); + --color--button-hover-bg: #0f0f10; + --color--button-hover-border: var(--color--grey); + --color--button-active: #0e0e11; + --color--button-active-bg: var(--color--offwhite); + --color--button-active-border: var(--color--offwhite); + + --color--box-bg: #14141a; + --color--box-border: var(--color--grey); + + --color--anarch: #e26b35; + --color--criminal: #194c9b; + --color--shaper: #4cb148; + --color--haas-bioroid: #794d94; + --color--jinteki: #ba3339; + --color--nbn: #ffde00; + --color--weyland-consortium: #516751; + --color--adam: #a89c33; + --color--apex: #000; + --color--sunny-lebeau: #939598; + --color--neutral-corp: #5e5e5e; + --color--neutral-runner: #919191; +} diff --git a/app/templates/home.hbs b/app/templates/home.hbs index 0ff9a62..c2dd6d8 100644 --- a/app/templates/home.hbs +++ b/app/templates/home.hbs @@ -2,23 +2,154 @@
-
-
- {{! Show regular horizontal navbar on mobile }} -
- {{! Show vertical navbar on mobile }} - + - +
+
+
+ Anarch +
+
+ Criminal +
+
+ Shaper +
+
+ Haas-Bioroid +
+
+ Jinteki +
+
+ NBN +
+
+ Weyland +
+
+ More +
+
-
-
-
- {{outlet}} +
+
+
Decklist of the Week
+
+
+
+
+
Latest Set
+
+
+
Top 10 Decks
+
+ +
+
+
Something Else
+
+
+
List of upcoming tournaments
+
+
+
+
+
Update Log
+
diff --git a/app/templates/home/banlists.hbs b/app/templates/home/banlists.hbs deleted file mode 100644 index c46845b..0000000 --- a/app/templates/home/banlists.hbs +++ /dev/null @@ -1,4 +0,0 @@ -
-

Banlists

-
-
\ No newline at end of file diff --git a/app/templates/home/community.hbs b/app/templates/home/community.hbs deleted file mode 100644 index 88bb49a..0000000 --- a/app/templates/home/community.hbs +++ /dev/null @@ -1,4 +0,0 @@ -
-

Community Feed

-
-
\ No newline at end of file diff --git a/app/templates/home/developer.hbs b/app/templates/home/developer.hbs deleted file mode 100644 index af3914e..0000000 --- a/app/templates/home/developer.hbs +++ /dev/null @@ -1,4 +0,0 @@ -
-

Developer Tools

-
-
\ No newline at end of file diff --git a/app/templates/home/dotw.hbs b/app/templates/home/dotw.hbs deleted file mode 100644 index 689ece4..0000000 --- a/app/templates/home/dotw.hbs +++ /dev/null @@ -1,125 +0,0 @@ -
-

Decklist of the Week

-

World Tree Wu

-
-
- Kabonesa Wu Netspace Thrillseeker -
-
-

Kabonesa Wu Netspace Thrillseeker

-
    -
  • 65 cards (min 45)
  • -
  • 15 influence (max 15)
  • -
  • Cards up to Parhelion
  • -
-
-
-
-
- Event (19) -
    -
  • 3x Creative Commission
  • -
  • 3x Diesel
  • -
  • 3x Dirty Laundry
  • -
  • 3x Overclock
  • -
  • 3x Pinhole Threading
  • -
  • 3x Sure Gamble
  • -
  • 1x The Maker's Eye
  • -
- Hardware (13) -
    -
  • 3x Cyberdelia
  • -
  • 2x Endurance
  • -
  • 3x Flame-out
  • -
  • 3x Simulchip
  • -
  • 2x T400 Memory Diamonds
  • -
- Resource (14) -
    -
  • 3x Aesop's Pawnshop
  • -
  • 1x Beth Kilrain-Chang
  • -
  • 1x Citadel Sanctuary
  • -
  • 3x Daily Casts
  • -
  • 3x Dr. Nuka Vrolyck
  • -
  • 3x Telework Contract
  • -
-
-
- Icebreaker (6) -
    -
  • 1x Buzzsaw
  • -
  • 1x Cleaver
  • -
  • 1x Echelon
  • -
  • 3x Mayfly
  • -
- Program (13) -
    -
  • 1x Clot
  • -
  • 1x Conduit
  • -
  • 3x Harbinger
  • -
  • 1x K2CP Turbine
  • -
  • 1x Misdirection
  • -
  • 1x Paricia
  • -
  • 1x Reaver
  • -
  • 3x Self-modifying Code
  • -
  • 1x World Tree
  • -
-
-
-
-
-

Description by the author

-
-

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras placerat - sapien et dolor semper, ut vehicula metus cursus. Etiam elementum eros - molestie varius elementum. Vestibulum ac iaculis erat. Curabitur sit - amet luctus dolor. Quisque vitae congue risus. Sed tincidunt nisi - lectus, vel finibus ipsum ultricies vitae. Nullam libero dui, imperdiet - ut nunc in, scelerisque commodo augue. Aliquam nunc mi, finibus eu justo - tincidunt, bibendum ornare purus. Pellentesque finibus finibus augue - eget facilisis. Class aptent taciti sociosqu ad litora torquent per - conubia nostra, per inceptos himenaeos. Nulla ornare nec lorem finibus - dictum. Nunc dolor felis, commodo vel varius sed, rutrum eget eros. - Mauris eget ligula sed ex rhoncus auctor eu sit amet quam. Fusce ut - mattis leo. Fusce in justo vitae ante accumsan blandit. Vestibulum vitae - mauris quis nulla ultricies venenatis.

-

Sed ultrices aliquet iaculis. Nullam ut pharetra erat. Donec molestie - feugiat placerat. In tempor tempor dolor, ut lacinia odio auctor in. - Maecenas egestas fermentum pretium. Phasellus bibendum, nisl quis - condimentum sagittis, lorem erat tempor diam, sed efficitur odio purus - ut lorem. Cras vel turpis bibendum, dapibus neque id, facilisis nunc. - Integer vel sagittis leo. Donec ac sem dui. Nam interdum metus vehicula - leo rhoncus, id euismod est dapibus. Mauris fringilla diam sed luctus - efficitur. In sagittis ullamcorper sodales.

-

Aenean venenatis tellus elit, nec rhoncus tortor feugiat eget. Praesent - odio turpis, interdum in lacus vitae, pharetra commodo nulla. Integer - suscipit lacus eu purus lobortis pretium. Vestibulum sollicitudin a nisi - non malesuada. Aliquam non ipsum vel augue iaculis tincidunt. In - dignissim malesuada eros, eu ullamcorper odio ultricies sit amet. Morbi - non feugiat sapien. Integer purus diam, ultricies ut iaculis vitae, - feugiat ac sapien. Quisque non tempor felis, eget vestibulum lacus. - Nullam suscipit turpis tortor. Mauris commodo, risus id accumsan - convallis, dui tortor rutrum felis, eget iaculis magna mauris vitae - velit. Donec porta, mi at fringilla gravida, mauris arcu pretium dui, et - finibus ipsum diam eu ipsum. Nullam et accumsan neque, ac aliquet odio. - Suspendisse non efficitur tortor, nec pretium ex. Phasellus ut luctus - justo, mollis dictum ante. Donec blandit velit vitae finibus - ullamcorper.

-

Sed convallis dictum neque. Pellentesque in magna sit amet felis - pulvinar ultrices. Vivamus sollicitudin commodo velit eu bibendum. - Mauris vel dolor in erat fermentum volutpat. Maecenas et luctus arcu. - Etiam vel mattis turpis. Mauris convallis lorem vel arcu convallis, ut - hendrerit turpis vestibulum. Aenean tempus pretium velit at molestie.

-

Vestibulum et augue pulvinar, semper urna sed, semper neque. Vivamus - volutpat tempus nisi, eleifend suscipit purus dapibus quis. Praesent - vitae sapien non arcu sagittis rhoncus id eu mauris. Lorem ipsum dolor - sit amet, consectetur adipiscing elit. Ut felis ligula, dapibus ac enim - ut, vehicula convallis ligula. Cras quis nisi purus. Cras vehicula et - ante vitae scelerisque.

-
-
-
\ No newline at end of file diff --git a/app/templates/home/formats.hbs b/app/templates/home/formats.hbs deleted file mode 100644 index 4aafb87..0000000 --- a/app/templates/home/formats.hbs +++ /dev/null @@ -1,4 +0,0 @@ -
-

Play Formats

-
-
\ No newline at end of file diff --git a/app/templates/home/sets.hbs b/app/templates/home/sets.hbs deleted file mode 100644 index c265034..0000000 --- a/app/templates/home/sets.hbs +++ /dev/null @@ -1,4 +0,0 @@ -
-

Card Sets

-
-
\ No newline at end of file diff --git a/app/templates/home/updates.hbs b/app/templates/home/updates.hbs deleted file mode 100644 index a3480d7..0000000 --- a/app/templates/home/updates.hbs +++ /dev/null @@ -1,4 +0,0 @@ -
-

Updates

-
-
\ No newline at end of file diff --git a/ember-cli-build.js b/ember-cli-build.js index 1fbcb5f..e9c9541 100644 --- a/ember-cli-build.js +++ b/ember-cli-build.js @@ -17,7 +17,6 @@ module.exports = function (defaults) { outputPaths: { app: { css: { - 'netrunner-font': '/assets/netrunner-font.css', color: '/assets/color.css', panel: '/assets/panel.css', }, diff --git a/public/assets/fonts/netrunner.eot b/public/assets/fonts/netrunner.eot deleted file mode 100644 index c24a786323fcdc5172e885a83d2043580abc688d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37572 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 diff --git a/public/assets/fonts/netrunner.svg b/public/assets/fonts/netrunner.svg deleted file mode 100644 index 53bdb4e..0000000 --- a/public/assets/fonts/netrunner.svg +++ /dev/null @@ -1,62 +0,0 @@ - - - -Generated by IcoMoon - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/public/assets/fonts/netrunner.ttf b/public/assets/fonts/netrunner.ttf deleted file mode 100644 index 2e75c0fd1c196bc482ef9c9a55edb4de46bd97b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37400 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 B*^~eP diff --git a/public/assets/fonts/netrunner.woff b/public/assets/fonts/netrunner.woff deleted file mode 100644 index 78d89ebb6bba2483447ac4c0528bcb3e2d2c37df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37476 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 b^3KyTRkSM?*y*~`y}AVd-`D>D@I2lD diff --git a/public/assets/images/bg/hexagontile.png b/public/assets/image/bg/hexagontile.png similarity index 100% rename from public/assets/images/bg/hexagontile.png rename to public/assets/image/bg/hexagontile.png diff --git a/public/assets/images/faction/adam.png b/public/assets/image/faction/adam.png similarity index 100% rename from public/assets/images/faction/adam.png rename to public/assets/image/faction/adam.png diff --git a/public/assets/images/faction/anarch.png b/public/assets/image/faction/anarch.png similarity index 100% rename from public/assets/images/faction/anarch.png rename to public/assets/image/faction/anarch.png diff --git a/public/assets/images/faction/apex.png b/public/assets/image/faction/apex.png similarity index 100% rename from public/assets/images/faction/apex.png rename to public/assets/image/faction/apex.png diff --git a/public/assets/images/faction/criminal.png b/public/assets/image/faction/criminal.png similarity index 100% rename from public/assets/images/faction/criminal.png rename to public/assets/image/faction/criminal.png diff --git a/public/assets/images/faction/hb.png b/public/assets/image/faction/hb.png similarity index 100% rename from public/assets/images/faction/hb.png rename to public/assets/image/faction/hb.png diff --git a/public/assets/images/faction/jinteki.png b/public/assets/image/faction/jinteki.png similarity index 100% rename from public/assets/images/faction/jinteki.png rename to public/assets/image/faction/jinteki.png diff --git a/public/assets/images/faction/nbn.png b/public/assets/image/faction/nbn.png similarity index 100% rename from public/assets/images/faction/nbn.png rename to public/assets/image/faction/nbn.png diff --git a/public/assets/images/faction/shaper.png b/public/assets/image/faction/shaper.png similarity index 100% rename from public/assets/images/faction/shaper.png rename to public/assets/image/faction/shaper.png diff --git a/public/assets/images/faction/sunny.png b/public/assets/image/faction/sunny.png similarity index 100% rename from public/assets/images/faction/sunny.png rename to public/assets/image/faction/sunny.png diff --git a/public/assets/images/faction/weyland.png b/public/assets/image/faction/weyland.png similarity index 100% rename from public/assets/images/faction/weyland.png rename to public/assets/image/faction/weyland.png diff --git a/public/assets/images/logo.png b/public/assets/image/logo.png similarity index 100% rename from public/assets/images/logo.png rename to public/assets/image/logo.png diff --git a/public/assets/svgs/faction/adam.svg b/public/assets/svgs/faction/adam.svg new file mode 100644 index 0000000..9b5a5ae --- /dev/null +++ b/public/assets/svgs/faction/adam.svg @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/public/assets/svgs/faction/anarch.svg b/public/assets/svgs/faction/anarch.svg new file mode 100644 index 0000000..6716a9c --- /dev/null +++ b/public/assets/svgs/faction/anarch.svg @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/public/assets/svgs/faction/apex.svg b/public/assets/svgs/faction/apex.svg new file mode 100644 index 0000000..4a7e65a --- /dev/null +++ b/public/assets/svgs/faction/apex.svg @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/public/assets/svgs/faction/criminal.svg b/public/assets/svgs/faction/criminal.svg new file mode 100644 index 0000000..69dbf49 --- /dev/null +++ b/public/assets/svgs/faction/criminal.svg @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/public/assets/svgs/faction/haas-bioroid.svg b/public/assets/svgs/faction/haas-bioroid.svg new file mode 100644 index 0000000..7b65c57 --- /dev/null +++ b/public/assets/svgs/faction/haas-bioroid.svg @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/public/assets/svgs/faction/jinteki.svg b/public/assets/svgs/faction/jinteki.svg new file mode 100644 index 0000000..a3d5eb5 --- /dev/null +++ b/public/assets/svgs/faction/jinteki.svg @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/public/assets/svgs/faction/nbn.svg b/public/assets/svgs/faction/nbn.svg new file mode 100644 index 0000000..e6151c6 --- /dev/null +++ b/public/assets/svgs/faction/nbn.svg @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/public/assets/svgs/faction/neutral.svg b/public/assets/svgs/faction/neutral.svg new file mode 100644 index 0000000..8214050 --- /dev/null +++ b/public/assets/svgs/faction/neutral.svg @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/public/assets/svgs/faction/shaper.svg b/public/assets/svgs/faction/shaper.svg new file mode 100644 index 0000000..495d18c --- /dev/null +++ b/public/assets/svgs/faction/shaper.svg @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/public/assets/svgs/faction/sunny-lebeau.svg b/public/assets/svgs/faction/sunny-lebeau.svg new file mode 100644 index 0000000..7ddc520 --- /dev/null +++ b/public/assets/svgs/faction/sunny-lebeau.svg @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/public/assets/svgs/faction/weyland-consortium.svg b/public/assets/svgs/faction/weyland-consortium.svg new file mode 100644 index 0000000..8036010 --- /dev/null +++ b/public/assets/svgs/faction/weyland-consortium.svg @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/public/assets/svgs/type/agenda.svg b/public/assets/svgs/type/agenda.svg new file mode 100644 index 0000000..07d838e --- /dev/null +++ b/public/assets/svgs/type/agenda.svg @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/public/assets/svgs/type/asset.svg b/public/assets/svgs/type/asset.svg new file mode 100644 index 0000000..3e752f4 --- /dev/null +++ b/public/assets/svgs/type/asset.svg @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/public/assets/svgs/type/hardware.svg b/public/assets/svgs/type/hardware.svg new file mode 100644 index 0000000..e961753 --- /dev/null +++ b/public/assets/svgs/type/hardware.svg @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/public/assets/svgs/type/ice.svg b/public/assets/svgs/type/ice.svg new file mode 100644 index 0000000..caec5e7 --- /dev/null +++ b/public/assets/svgs/type/ice.svg @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/public/assets/svgs/type/identity.svg b/public/assets/svgs/type/identity.svg new file mode 100644 index 0000000..f7baa4e --- /dev/null +++ b/public/assets/svgs/type/identity.svg @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/public/assets/svgs/type/operation.svg b/public/assets/svgs/type/operation.svg new file mode 100644 index 0000000..4be2707 --- /dev/null +++ b/public/assets/svgs/type/operation.svg @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/public/assets/svgs/type/program.svg b/public/assets/svgs/type/program.svg new file mode 100644 index 0000000..a47018f --- /dev/null +++ b/public/assets/svgs/type/program.svg @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/public/assets/svgs/type/resource.svg b/public/assets/svgs/type/resource.svg new file mode 100644 index 0000000..bb803e5 --- /dev/null +++ b/public/assets/svgs/type/resource.svg @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/public/assets/svgs/type/upgrade.svg b/public/assets/svgs/type/upgrade.svg new file mode 100644 index 0000000..cd670b4 --- /dev/null +++ b/public/assets/svgs/type/upgrade.svg @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/tests/unit/routes/home/banlists-test.js b/tests/unit/routes/home/banlists-test.js deleted file mode 100644 index 514b982..0000000 --- a/tests/unit/routes/home/banlists-test.js +++ /dev/null @@ -1,11 +0,0 @@ -import { module, test } from 'qunit'; -import { setupTest } from 'netrunnerdb/tests/helpers'; - -module('Unit | Route | home/banlists', function (hooks) { - setupTest(hooks); - - test('it exists', function (assert) { - let route = this.owner.lookup('route:home/banlists'); - assert.ok(route); - }); -}); diff --git a/tests/unit/routes/home/community-test.js b/tests/unit/routes/home/community-test.js deleted file mode 100644 index 55897a0..0000000 --- a/tests/unit/routes/home/community-test.js +++ /dev/null @@ -1,11 +0,0 @@ -import { module, test } from 'qunit'; -import { setupTest } from 'netrunnerdb/tests/helpers'; - -module('Unit | Route | home/community', function (hooks) { - setupTest(hooks); - - test('it exists', function (assert) { - let route = this.owner.lookup('route:home/community'); - assert.ok(route); - }); -}); diff --git a/tests/unit/routes/home/developer-test.js b/tests/unit/routes/home/developer-test.js deleted file mode 100644 index fbefae6..0000000 --- a/tests/unit/routes/home/developer-test.js +++ /dev/null @@ -1,11 +0,0 @@ -import { module, test } from 'qunit'; -import { setupTest } from 'netrunnerdb/tests/helpers'; - -module('Unit | Route | home/developer', function (hooks) { - setupTest(hooks); - - test('it exists', function (assert) { - let route = this.owner.lookup('route:home/developer'); - assert.ok(route); - }); -}); diff --git a/tests/unit/routes/home/dotw-test.js b/tests/unit/routes/home/dotw-test.js deleted file mode 100644 index eb28422..0000000 --- a/tests/unit/routes/home/dotw-test.js +++ /dev/null @@ -1,11 +0,0 @@ -import { module, test } from 'qunit'; -import { setupTest } from 'netrunnerdb/tests/helpers'; - -module('Unit | Route | home/dotw', function (hooks) { - setupTest(hooks); - - test('it exists', function (assert) { - let route = this.owner.lookup('route:home/dotw'); - assert.ok(route); - }); -}); diff --git a/tests/unit/routes/home/formats-test.js b/tests/unit/routes/home/formats-test.js deleted file mode 100644 index 1066d36..0000000 --- a/tests/unit/routes/home/formats-test.js +++ /dev/null @@ -1,11 +0,0 @@ -import { module, test } from 'qunit'; -import { setupTest } from 'netrunnerdb/tests/helpers'; - -module('Unit | Route | home/formats', function (hooks) { - setupTest(hooks); - - test('it exists', function (assert) { - let route = this.owner.lookup('route:home/formats'); - assert.ok(route); - }); -}); diff --git a/tests/unit/routes/home/sets-test.js b/tests/unit/routes/home/sets-test.js deleted file mode 100644 index 53f2bc2..0000000 --- a/tests/unit/routes/home/sets-test.js +++ /dev/null @@ -1,11 +0,0 @@ -import { module, test } from 'qunit'; -import { setupTest } from 'netrunnerdb/tests/helpers'; - -module('Unit | Route | home/sets', function (hooks) { - setupTest(hooks); - - test('it exists', function (assert) { - let route = this.owner.lookup('route:home/sets'); - assert.ok(route); - }); -}); diff --git a/tests/unit/routes/home/updates-test.js b/tests/unit/routes/home/updates-test.js deleted file mode 100644 index ead0167..0000000 --- a/tests/unit/routes/home/updates-test.js +++ /dev/null @@ -1,11 +0,0 @@ -import { module, test } from 'qunit'; -import { setupTest } from 'netrunnerdb/tests/helpers'; - -module('Unit | Route | home/updates', function (hooks) { - setupTest(hooks); - - test('it exists', function (assert) { - let route = this.owner.lookup('route:home/updates'); - assert.ok(route); - }); -}); From 4a292c75a44f79d09146487d1ab3354c99eda1fb Mon Sep 17 00:00:00 2001 From: distributive Date: Fri, 8 Mar 2024 20:49:17 +0000 Subject: [PATCH 03/33] Updated svgs --- public/assets/svgs/faction/adam.svg | 5 +++-- public/assets/svgs/faction/anarch.svg | 5 +++-- public/assets/svgs/faction/apex.svg | 5 +++-- public/assets/svgs/faction/criminal.svg | 5 +++-- public/assets/svgs/faction/haas-bioroid.svg | 5 +++-- public/assets/svgs/faction/jinteki.svg | 5 +++-- public/assets/svgs/faction/nbn.svg | 22 +++++++++++++++++-- public/assets/svgs/faction/neutral.svg | 13 ----------- public/assets/svgs/faction/shaper.svg | 5 +++-- public/assets/svgs/faction/sunny-lebeau.svg | 5 +++-- .../svgs/faction/weyland-consortium.svg | 5 +++-- public/assets/svgs/game/subroutine.svg | 7 ++++++ 12 files changed, 54 insertions(+), 33 deletions(-) delete mode 100644 public/assets/svgs/faction/neutral.svg create mode 100644 public/assets/svgs/game/subroutine.svg diff --git a/public/assets/svgs/faction/adam.svg b/public/assets/svgs/faction/adam.svg index 9b5a5ae..074256b 100644 --- a/public/assets/svgs/faction/adam.svg +++ b/public/assets/svgs/faction/adam.svg @@ -1,13 +1,14 @@ - + - + \ No newline at end of file diff --git a/public/assets/svgs/faction/anarch.svg b/public/assets/svgs/faction/anarch.svg index 6716a9c..1b783ce 100644 --- a/public/assets/svgs/faction/anarch.svg +++ b/public/assets/svgs/faction/anarch.svg @@ -1,13 +1,14 @@ - + - + \ No newline at end of file diff --git a/public/assets/svgs/faction/apex.svg b/public/assets/svgs/faction/apex.svg index 4a7e65a..678cc74 100644 --- a/public/assets/svgs/faction/apex.svg +++ b/public/assets/svgs/faction/apex.svg @@ -1,13 +1,14 @@ - + - + \ No newline at end of file diff --git a/public/assets/svgs/faction/criminal.svg b/public/assets/svgs/faction/criminal.svg index 69dbf49..f2852b9 100644 --- a/public/assets/svgs/faction/criminal.svg +++ b/public/assets/svgs/faction/criminal.svg @@ -1,13 +1,14 @@ - + - + \ No newline at end of file diff --git a/public/assets/svgs/faction/haas-bioroid.svg b/public/assets/svgs/faction/haas-bioroid.svg index 7b65c57..617ad4e 100644 --- a/public/assets/svgs/faction/haas-bioroid.svg +++ b/public/assets/svgs/faction/haas-bioroid.svg @@ -1,13 +1,14 @@ - + - + \ No newline at end of file diff --git a/public/assets/svgs/faction/jinteki.svg b/public/assets/svgs/faction/jinteki.svg index a3d5eb5..b98f00f 100644 --- a/public/assets/svgs/faction/jinteki.svg +++ b/public/assets/svgs/faction/jinteki.svg @@ -1,13 +1,14 @@ - + - + \ No newline at end of file diff --git a/public/assets/svgs/faction/nbn.svg b/public/assets/svgs/faction/nbn.svg index e6151c6..cbdc379 100644 --- a/public/assets/svgs/faction/nbn.svg +++ b/public/assets/svgs/faction/nbn.svg @@ -1,13 +1,31 @@ - + - + + + + + + + \ No newline at end of file diff --git a/public/assets/svgs/faction/neutral.svg b/public/assets/svgs/faction/neutral.svg deleted file mode 100644 index 8214050..0000000 --- a/public/assets/svgs/faction/neutral.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/public/assets/svgs/faction/shaper.svg b/public/assets/svgs/faction/shaper.svg index 495d18c..8fb7bf4 100644 --- a/public/assets/svgs/faction/shaper.svg +++ b/public/assets/svgs/faction/shaper.svg @@ -1,13 +1,14 @@ - + - + \ No newline at end of file diff --git a/public/assets/svgs/faction/sunny-lebeau.svg b/public/assets/svgs/faction/sunny-lebeau.svg index 7ddc520..1317685 100644 --- a/public/assets/svgs/faction/sunny-lebeau.svg +++ b/public/assets/svgs/faction/sunny-lebeau.svg @@ -1,13 +1,14 @@ - + - + \ No newline at end of file diff --git a/public/assets/svgs/faction/weyland-consortium.svg b/public/assets/svgs/faction/weyland-consortium.svg index 8036010..d76b241 100644 --- a/public/assets/svgs/faction/weyland-consortium.svg +++ b/public/assets/svgs/faction/weyland-consortium.svg @@ -1,13 +1,14 @@ - + - + \ No newline at end of file diff --git a/public/assets/svgs/game/subroutine.svg b/public/assets/svgs/game/subroutine.svg new file mode 100644 index 0000000..2f68ac2 --- /dev/null +++ b/public/assets/svgs/game/subroutine.svg @@ -0,0 +1,7 @@ + + + + + + \ No newline at end of file From cba22e20b36bd08904452a0a96d3a0336e684450 Mon Sep 17 00:00:00 2001 From: distributive Date: Fri, 8 Mar 2024 20:49:55 +0000 Subject: [PATCH 04/33] Fine tuned homepage --- app/components/box-link.gjs | 30 +++ app/components/decklist-box-link.gjs | 27 +++ app/components/home/navbar.gjs | 71 ------- app/components/home/sidebar.gjs | 110 ----------- app/components/icon.gjs | 8 +- app/components/icon.hbs | 1 - app/components/icon.js | 9 - app/components/navbar.gjs | 182 ++++++++++++++++++ app/styles/app.css | 120 +++++++++++- app/styles/bootstrap-ext.css | 65 +++++++ app/styles/components/navbar.css | 3 - app/styles/font-size.css | 4 + app/styles/themes/dark.css | 9 +- app/styles/themes/light.css | 56 ++++++ app/templates/home.hbs | 267 ++++++++++++++------------- 15 files changed, 630 insertions(+), 332 deletions(-) create mode 100644 app/components/box-link.gjs create mode 100644 app/components/decklist-box-link.gjs delete mode 100644 app/components/home/navbar.gjs delete mode 100644 app/components/home/sidebar.gjs delete mode 100644 app/components/icon.hbs delete mode 100644 app/components/icon.js create mode 100644 app/components/navbar.gjs create mode 100644 app/styles/bootstrap-ext.css delete mode 100644 app/styles/components/navbar.css create mode 100644 app/styles/themes/light.css diff --git a/app/components/box-link.gjs b/app/components/box-link.gjs new file mode 100644 index 0000000..7d54443 --- /dev/null +++ b/app/components/box-link.gjs @@ -0,0 +1,30 @@ +import Component from '@glimmer/component'; +import { LinkTo } from '@ember/routing'; +import Icon from './icon'; + +
+
+ Liberation cycle icon +
+
+
+
+ Latest set +
+
+ The Automata Initiative +
+
+
+
+ + diff --git a/app/components/decklist-box-link.gjs b/app/components/decklist-box-link.gjs new file mode 100644 index 0000000..9d2848e --- /dev/null +++ b/app/components/decklist-box-link.gjs @@ -0,0 +1,27 @@ +import Component from '@glimmer/component'; +import { LinkTo } from '@ember/routing'; +import Icon from './icon'; + + diff --git a/app/components/home/navbar.gjs b/app/components/home/navbar.gjs deleted file mode 100644 index f8e7fe3..0000000 --- a/app/components/home/navbar.gjs +++ /dev/null @@ -1,71 +0,0 @@ -import { LinkTo } from '@ember/routing'; -import FaIcon from '@fortawesome/ember-fontawesome/components/fa-icon'; - - diff --git a/app/components/home/sidebar.gjs b/app/components/home/sidebar.gjs deleted file mode 100644 index 7e19409..0000000 --- a/app/components/home/sidebar.gjs +++ /dev/null @@ -1,110 +0,0 @@ -import Component from '@glimmer/component'; -import { LinkTo } from '@ember/routing'; -import { action } from '@ember/object'; -import { on } from '@ember/modifier'; -import { service } from '@ember/service'; - -export default class SidebarComponent extends Component { - @service router; - - @action doSearch(e) { - e.preventDefault(); - - const query = e.target.query.value; - - // Reset the search bar. - e.target.query.value = ''; - - this.router.transitionTo('page.basic-search', { - queryParams: { query: query }, - }); - } - - -} diff --git a/app/components/icon.gjs b/app/components/icon.gjs index 03a6ea7..adcd7fe 100644 --- a/app/components/icon.gjs +++ b/app/components/icon.gjs @@ -1,5 +1,11 @@ +import Component from '@glimmer/component'; import { format } from './quote'; +import { svgJar } from 'ember-svg-jar/helpers/svg-jar'; diff --git a/app/components/icon.hbs b/app/components/icon.hbs deleted file mode 100644 index f633b32..0000000 --- a/app/components/icon.hbs +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/app/components/icon.js b/app/components/icon.js deleted file mode 100644 index afc369d..0000000 --- a/app/components/icon.js +++ /dev/null @@ -1,9 +0,0 @@ -import Component from '@glimmer/component'; - -export default class IconComponent extends Component { - get id() { - if (this.args.id) { - return this.args.id.toLowerCase().replace(/[ _]/g, '-'); - } - } -} diff --git a/app/components/navbar.gjs b/app/components/navbar.gjs new file mode 100644 index 0000000..72eb061 --- /dev/null +++ b/app/components/navbar.gjs @@ -0,0 +1,182 @@ +import Component from '@glimmer/component'; +import { tracked } from '@glimmer/tracking'; +import { action } from '@ember/object'; +import { LinkTo } from '@ember/routing'; +import { on } from '@ember/modifier'; +import FaIcon from '@fortawesome/ember-fontawesome/components/fa-icon'; +import Collapse from 'ember-bootstrap/components/bs-collapse'; +import Dropdown from 'ember-bootstrap/components/bs-dropdown'; + +class Navbar extends Component { + @tracked showDropdown = false; + + get isCollapsed() { + return !this.showDropdown; + } + + @action toggleDropdown() { + this.showDropdown = !this.showDropdown; + } + + @action closeDropdown() { + this.showDropdown = false; + } + + +} + +export default Navbar; diff --git a/app/styles/app.css b/app/styles/app.css index b1e1816..63c9b4e 100644 --- a/app/styles/app.css +++ b/app/styles/app.css @@ -1,6 +1,9 @@ -@import url("./themes/dark.css"); /* Must be imported first */ +@import url("./themes/dark.css"); +@import url("./themes/light.css"); +/* Themes must be imported first */ @import url("./faction.css"); @import url("./font-size.css"); +@import url("./bootstrap-ext.css"); /* BASE */ @@ -14,6 +17,10 @@ nav { background-color: var(--color--header-bg); } +p { + margin: 0; +} + a { text-decoration: none; cursor: pointer; @@ -23,6 +30,12 @@ a:hover { text-decoration-thickness: 1px; } +.button { + text-overflow: ellipsis; + overflow: hidden; + white-space: nowrap; +} + a.button { color: var(--color--button); background-color: var(--color--button-bg); @@ -32,10 +45,14 @@ a.button { text-decoration: none; text-align: center; - display: block; + display: inline-block; margin-left: auto; margin-right: auto; - padding: 3px 0 6px 0; + padding: 3px 12px 6px 12px; +} +a.button.d-block { + padding-left: 0; + padding-right: 0; } a.button:hover { text-decoration: none; @@ -113,29 +130,107 @@ input[type="text"] { border-color: var(--color--grey-active) !important; } +.nav-item:not(:first-of-type) { + border-top: solid 1px var(--color--button-border); +} +.nav-item:hover, +.nav-item:active { + text-decoration: none; + color: var(--color--button-hover); + background-color: var(--color--button-hover-bg); +} + /* BOXES */ -.box { - background-color: var(--color--box-bg); +.box, +.box-link, +.decklist-box-link, +.decklist-box { + display: block; + position: relative; +} + +.box-link, +.decklist-box-link { + color: var(--color--default); +} + +.box, +.box-link { + padding: 10px 20px; + background-color: var(--color--box-bg); border: solid 1px var(--color--box-border); border-radius: 3px; +} + +.box-link:hover { + background-color: var(--color--default-bg); + border: solid 1px var(--color--default-border); +} - width: 100%; - height: 300px; /* TEMP */ - min-height: 100%; +.decklist-box { + margin-top: 30px; - text-align: center; + background-color: var(--color--secondary-bg); + border-radius: 3px; +} +.decklist-box .decklist-identity { + transform: translateY(-20px); + max-width: 100%; + border-radius: 10px; /* TODO: Move to .card */ +} +.decklist-box .decklist-stats { + margin-bottom: 70px; +} +.decklist-box p:first-of-type { + margin-top: 20px; +} +.decklist-box .decklist-identity-name { +} +.decklist-box .decklist-identity-title { +} +.decklist-box .decklist-identity-subtitle { + color: var(--color--secondary); +} +.decklist-box .decklist-influence { +} +.decklist-box .decklist-cards { +} +.decklist-box .decklist-author { + color: var(--color--secondary); +} +.decklist-box .decklist-set { +} +.decklist-box .button { + position: absolute; + bottom: 20px; +} + +.decklist-box-link { + background-color: var(--color--box-secondary-bg); + border: solid 1px var(--color--box-secondary-border); + border-radius: 3px; +} +.decklist-box-link:hover { + background-color: var(--color--box-bg); + border: solid 1px var(--color--box-border); } /* NAVBAR */ +nav { + z-index: 100; +} + #top-nav { border-bottom: solid 1px var(--color--default-border); background-color: var(--color--header-bg); } #bottom-nav { + top: 0; + position: sticky; border-bottom: solid 1px var(--color--default-border); background-color: var(--color--header-bg); text-align: center; @@ -151,6 +246,13 @@ input[type="text"] { text-decoration: underline !important; } +@media (min-device-width: 1200px) { + #bottom-nav .row { + padding-left: 100px; + padding-right: 100px; + } +} + /* NAVBAR BRAND */ .navbar-brand { diff --git a/app/styles/bootstrap-ext.css b/app/styles/bootstrap-ext.css new file mode 100644 index 0000000..5296e3b --- /dev/null +++ b/app/styles/bootstrap-ext.css @@ -0,0 +1,65 @@ +/* xs */ +@media (max-device-width: 575px) { + .hidden-xs { + display: none !important; + } + .visible-sm { + display: none !important; + } +} + +/* sm */ +@media (min-device-width: 576px) { +} +@media (max-device-width: 767px) { + .visible-md { + display: none !important; + } + .hidden-sm { + display: none !important; + } +} + +/* md */ +@media (min-device-width: 768px) { +} +@media (max-device-width: 991px) { + .visible-lg { + display: none !important; + } + .hidden-md { + display: none !important; + } +} + +/* lg */ +@media (min-device-width: 992px) { +} +@media (max-device-width: 1199px) { + .visible-xl { + display: none !important; + } + .hidden-lg { + display: none !important; + } +} + +/* xl */ +@media (min-device-width: 1200px) { +} +@media (max-device-width: 1399px) { + .visible-xxl { + display: none !important; + } + .hidden-xl { + display: none !important; + } +} + +/* xxl */ +@media (min-device-width: 1400px) { +} + +.hidden-xxl { + display: none !important; +} diff --git a/app/styles/components/navbar.css b/app/styles/components/navbar.css deleted file mode 100644 index b531f8a..0000000 --- a/app/styles/components/navbar.css +++ /dev/null @@ -1,3 +0,0 @@ -.nav-item-menu { - min-width: 100%; -} diff --git a/app/styles/font-size.css b/app/styles/font-size.css index 45219bc..5f9aa7f 100644 --- a/app/styles/font-size.css +++ b/app/styles/font-size.css @@ -50,6 +50,10 @@ font-size: 24px !important; } /* skip (add as needed) */ +.font-size-28 { + font-size: 24px !important; +} +/* skip (add as needed) */ .font-size-32 { font-size: 32px !important; } diff --git a/app/styles/themes/dark.css b/app/styles/themes/dark.css index ea93036..c7fbbe3 100644 --- a/app/styles/themes/dark.css +++ b/app/styles/themes/dark.css @@ -1,6 +1,6 @@ :root { /* CONST COLOURS */ - --color--offwhite: #f6f6f6; + --color--offwhite: #909090; --color--grey: #262626; --color--grey-hover: #202020; @@ -20,11 +20,14 @@ --color--default: white; --color--default-bg: #0e0e11; --color--default-border: var(--color--grey); + --color--secondary: var(--color--offwhite); + --color--secondary-bg: #1b1b1e; + --color--secondary-border: var(--color--grey); --color--header-bg: #14141a; --color--button: var(--color--offwhite); - --color--button-bg: #1b1b1e; + --color--button-bg: #14141a; --color--button-border: var(--color--grey); --color--button-hover: var(--color--offwhite); --color--button-hover-bg: #0f0f10; @@ -35,6 +38,8 @@ --color--box-bg: #14141a; --color--box-border: var(--color--grey); + --color--box-secondary-bg: var(--color--grey); + --color--box-secondary-border: var(--color--grey); --color--anarch: #e26b35; --color--criminal: #194c9b; diff --git a/app/styles/themes/light.css b/app/styles/themes/light.css new file mode 100644 index 0000000..c7fbbe3 --- /dev/null +++ b/app/styles/themes/light.css @@ -0,0 +1,56 @@ +:root { + /* CONST COLOURS */ + --color--offwhite: #909090; + + --color--grey: #262626; + --color--grey-hover: #202020; + --color--grey-active: #060606; + --color--grey-text: white; + --color--grey-hover-text: white; + --color--grey-active-text: white; + + --color--blue: #1a62ed; + --color--blue-hover: #083ba1; + --color--blue-active: #021844; + --color--blue-text: white; + --color--blue-hover-text: white; + --color--blue-active-text: white; + + /* DERIVED */ + --color--default: white; + --color--default-bg: #0e0e11; + --color--default-border: var(--color--grey); + --color--secondary: var(--color--offwhite); + --color--secondary-bg: #1b1b1e; + --color--secondary-border: var(--color--grey); + + --color--header-bg: #14141a; + + --color--button: var(--color--offwhite); + --color--button-bg: #14141a; + --color--button-border: var(--color--grey); + --color--button-hover: var(--color--offwhite); + --color--button-hover-bg: #0f0f10; + --color--button-hover-border: var(--color--grey); + --color--button-active: #0e0e11; + --color--button-active-bg: var(--color--offwhite); + --color--button-active-border: var(--color--offwhite); + + --color--box-bg: #14141a; + --color--box-border: var(--color--grey); + --color--box-secondary-bg: var(--color--grey); + --color--box-secondary-border: var(--color--grey); + + --color--anarch: #e26b35; + --color--criminal: #194c9b; + --color--shaper: #4cb148; + --color--haas-bioroid: #794d94; + --color--jinteki: #ba3339; + --color--nbn: #ffde00; + --color--weyland-consortium: #516751; + --color--adam: #a89c33; + --color--apex: #000; + --color--sunny-lebeau: #939598; + --color--neutral-corp: #5e5e5e; + --color--neutral-runner: #919191; +} diff --git a/app/templates/home.hbs b/app/templates/home.hbs index c2dd6d8..e59010d 100644 --- a/app/templates/home.hbs +++ b/app/templates/home.hbs @@ -1,154 +1,169 @@ {{page-title "Home"}} -
+
- +
-
-
- Anarch -
-
- Criminal -
-
- Shaper -
-
-