diff --git a/assets/css/_board.scss b/assets/css/_board.scss
deleted file mode 100644
index e5474cc..0000000
--- a/assets/css/_board.scss
+++ /dev/null
@@ -1,222 +0,0 @@
-@mixin move-indicator {
- border-radius: 50%;
- content: "";
- display: block;
- height: 2%;
- position: absolute;
- right: 2%;
- width: 2%;
-}
-
-.board {
- background: lighten($black-square-color, 7%);
- border-collapse: unset;
- border-radius: 2.8%;
- border-spacing: 1px;
- box-shadow: 0 calc(var(--board-size) / 200) calc(var(--board-size) / 40) $board-shadow-color;
- color: $white-square-color;
- grid-area: board;
- height: var(--board-size);
- padding: calc(var(--board-size) / 20);
- position: relative;
- width: var(--board-size);
-
- &.white-to-move::before {
- @include move-indicator;
- background: $white;
- }
-
- &.black-to-move::before {
- @include move-indicator;
- background: $black;
- }
-
- &.player-is-white.white-to-move::before,
- &.player-is-black.black-to-move::before {
- bottom: 2%;
- }
-
- &.player-is-white.black-to-move::before,
- &.player-is-black.white-to-move::before {
- top: 2%;
- }
-
- .board-rank-labels,
- .board-file-labels {
- display: none;
- }
-
- &.player-is-white {
- .board-rank-labels {
- display: flex;
- flex-direction: column-reverse;
- }
-
- .board-file-labels {
- display: flex;
- flex-direction: row;
- }
- }
-
- &.player-is-black {
- .board-rank-labels {
- display: flex;
- flex-direction: column;
- }
-
- .board-file-labels {
- display: flex;
- flex-direction: row-reverse;
- }
- }
-}
-
-.board-rank-labels {
- display: flex;
- height: 90%;
- left: 0;
- position: absolute;
- width: 5%;
-}
-
-.board-file-labels {
- display: flex;
- height: 5%;
- position: absolute;
- top: 0;
- width: 90%;
-}
-
-.board-game-state {
- align-items: center;
- background-color: $game-state-background-color;
- border-radius: calc(var(--board-size) / 75);
- bottom: -2.5%;
- box-shadow: 0 calc(var(--board-size) / 200) calc(var(--board-size) / 40) $board-shadow-color, inset 0 0 0 calc(var(--board-size) / 300) $white-square-color;
- color: $foreground-color;
- display: none;
- font-size: calc(var(--board-size) / 40);
- height: 6%;
- justify-content: center;
- position: absolute;
- right: 5%;
- width: 15%;
-
- &.check,
- &.checkmate,
- &.stalemate {
- display: block; // So PhantomJS will display it.
- display: flex;
- }
-
- &.checkmate,
- &.stalemate {
- font-size: calc(var(--board-size) / 30);
- height: 7.5%;
- left: calc(50% - 15%);
- top: calc(50% - 3.5%);
- width: 30%;
- }
-}
-
-.board-label {
- align-items: center;
- display: flex;
- flex-grow: 1;
- justify-content: center;
-}
-
-.board-body {
- display: grid;
- grid-template-columns: repeat(8, 1fr);
- grid-template-rows: repeat(8, 1fr);
-
- height: 100%;
- width: 100%;
-}
-
-%black-square {
- background-color: $black-square-color;
-
- &.selected {
- background-color: mix($black-square-color, $selected-square-color, 60%);
- box-shadow: inset 0 0 0 calc(var(--board-size) / 400) $selected-outline-color;
- }
-
- &.available {
- background-color: mix($black-square-color, $available-square-color, 80%);
- box-shadow: inset 0 0 0 calc(var(--board-size) / 400) $available-outline-color;
- }
-}
-
-%white-square {
- background-color: $white-square-color;
-
- &.selected {
- background-color: mix($white-square-color, $selected-square-color, 60%);
- box-shadow: inset 0 0 0 calc(var(--board-size) / 400) $selected-outline-color;
- }
-
- &.available {
- background-color: mix($white-square-color, $available-square-color, 80%);
- box-shadow: inset 0 0 0 calc(var(--board-size) / 400) $available-outline-color;
- }
-}
-
-.board-square {
- background-position: center;
- background-repeat: no-repeat;
- background-size: 100%;
- border-radius: 2%;
- margin: 0.5px;
-
- // This is to ensure the squares can be clicked on in PhantomJS
- // TODO: Figure out why we need this
-
- min-height: 20px;
- min-width: 20px;
-
- @include odd-between(1, 8) { @extend %white-square; }
- @include even-between(1, 8) { @extend %black-square; }
-
- @include odd-between(9, 16) { @extend %black-square; }
- @include even-between(9, 16) { @extend %white-square; }
-
- @include odd-between(17, 24) { @extend %white-square; }
- @include even-between(17, 24) { @extend %black-square; }
-
- @include odd-between(25, 32) { @extend %black-square; }
- @include even-between(25, 32) { @extend %white-square; }
-
- @include odd-between(33, 40) { @extend %white-square; }
- @include even-between(33, 40) { @extend %black-square; }
-
- @include odd-between(41, 48) { @extend %black-square; }
- @include even-between(41, 48) { @extend %white-square; }
-
- @include odd-between(49, 56) { @extend %white-square; }
- @include even-between(49, 56) { @extend %black-square; }
-
- @include odd-between(57, 64) { @extend %black-square; }
- @include even-between(57, 64) { @extend %white-square; }
-
- @each $colour in $colours {
- @each $piece in $pieces {
- &.#{$colour}.#{$piece} {
- background-image: url(/images/#{$piece}_#{$colour}.svg);
- }
- }
- }
-}
-
-@media (min-width: 480px) {
- .board-body {
- grid-gap: 1px;
- }
-}
-
-@media (min-width: 768px) {
- .board-body {
- grid-gap: 2px;
- }
-}
diff --git a/assets/css/_forms.scss b/assets/css/_forms.scss
deleted file mode 100644
index 74b4bfe..0000000
--- a/assets/css/_forms.scss
+++ /dev/null
@@ -1,8 +0,0 @@
-.form {
- background-color: $form-background-color;
- border-radius: $base-border-radius;
- border: 1px solid rgba(255, 255, 255, 0.2);
- margin: 0 auto;
- max-width: 40rem;
- padding: $base-spacing;
-}
diff --git a/assets/css/_game_info.scss b/assets/css/_game_info.scss
deleted file mode 100644
index 2996350..0000000
--- a/assets/css/_game_info.scss
+++ /dev/null
@@ -1,29 +0,0 @@
-.game-info {
- grid-area: game-info;
-
- .offline,
- .viewing {
- &::before {
- border-radius: 50%;
- content: "";
- display: inline-block;
- height: 0.75rem;
- margin-right: 0.25rem;
- width: 0.75rem;
- }
- }
-
- .offline {
- opacity: 0.4;
-
- &::before {
- background-color: $offline-opponent-color;
- }
- }
-
- .viewing {
- &::before {
- background-color: $viewing-opponent-color;
- }
- }
-}
diff --git a/assets/css/_game_list.scss b/assets/css/_game_list.scss
deleted file mode 100644
index cae4e98..0000000
--- a/assets/css/_game_list.scss
+++ /dev/null
@@ -1,11 +0,0 @@
-.player-indicator {
- img {
- height: 1.5em;
- vertical-align: middle;
- }
-}
-
-.your-turn {
- background-color: $your-turn-background-color;
- font-weight: bold;
-}
diff --git a/assets/css/_headings.scss b/assets/css/_headings.scss
deleted file mode 100644
index 2c9a424..0000000
--- a/assets/css/_headings.scss
+++ /dev/null
@@ -1,18 +0,0 @@
-h1,
-h2,
-h3,
-h4 {
- font-weight: 300;
-}
-
-h1 {
- font-size: 1.6em;
- margin: 0;
-}
-
-.heading {
- font-family: $heading-font-family;
- font-size: modular-scale(1);
- line-height: $heading-line-height;
- margin: 0 0 $small-spacing;
-}
diff --git a/assets/css/_layout.scss b/assets/css/_layout.scss
deleted file mode 100644
index d0356fc..0000000
--- a/assets/css/_layout.scss
+++ /dev/null
@@ -1,22 +0,0 @@
-html {
- background: $background-color;
- color: mix($background-color, $foreground-color, 20%);
- font-weight: 300;
-}
-
-a {
- color: mix($background-color, $link-color, 30%);
-}
-
-main {
- margin-top: 5vmin;
-}
-
-.container {
- margin: 0 auto;
- width: 90%;
-}
-
-.form-group {
- margin-top: 2em;
-}
diff --git a/assets/css/_nav.scss b/assets/css/_nav.scss
deleted file mode 100644
index 5bd1b1e..0000000
--- a/assets/css/_nav.scss
+++ /dev/null
@@ -1,27 +0,0 @@
-[role='banner'] {
- background: $black;
- margin-bottom: 1em;
- padding: 0.5em 0;
-
- .container {
- display: flex;
- }
-
- h1 {
- flex: 0;
- }
-
- a {
- color: $white;
- text-decoration: none;
-
- &:hover {
- color: $link-color;
- }
- }
-
- .user-nav {
- flex: 1;
- text-align: right;
- }
-}
diff --git a/assets/css/_variables.scss b/assets/css/_variables.scss
deleted file mode 100644
index d03eabb..0000000
--- a/assets/css/_variables.scss
+++ /dev/null
@@ -1,51 +0,0 @@
-$black: #000;
-$white: #fff;
-
-$background-color: #1e3f51;
-$foreground-color: $white;
-
-$link-color: #fd0;
-
-$form-background-color: darken($background-color, 4%);
-
-$board-border-color: #000;
-$board-shadow-color: rgba(0, 0, 0, 0.4);
-
-$board-square-size: 9vmin;
-$base-font-size: 16px;
-
-$black-square-color: #777;
-$white-square-color: #bbb;
-
-$selected-square-color: #0cf;
-$available-square-color: #6f0;
-
-$your-turn-background-color: rgba($white, 0.1);
-
-$game-state-background-color: rgba(darken($black-square-color, 10%), 0.9);
-
-$offline-opponent-color: #c33;
-$viewing-opponent-color: #6c3;
-
-$square-outline-color: darken($black-square-color, 20%);
-$selected-outline-color: lighten($selected-square-color, 20%);
-$available-outline-color: rgba(lighten($available-square-color, 20%), 0.5);
-
-$colours: "black" "white";
-$pieces: king queen bishop knight rook pawn;
-
-:root {
- --board-size: 64vw;
-}
-
-@media (min-aspect-ratio: 14/11) {
- :root {
- --board-size: 80vmin;
- }
-}
-
-@media (max-aspect-ratio: 9/11) {
- :root {
- --board-size: 90vmin;
- }
-}
diff --git a/assets/css/app.scss b/assets/css/app.scss
index f081355..31dd18d 100644
--- a/assets/css/app.scss
+++ b/assets/css/app.scss
@@ -1,20 +1,56 @@
-@import "bourbon/bourbon";
+// 0. Vendor - Imported from other source
+@import "vendor/bourbon/bourbon";
@import "vendor/family";
-@import "base/base";
-@import "variables";
+// 1. Settings – used with preprocessors and contain font,
+// colors definitions, etc.
+@import "settings/colors";
+@import "settings/typography";
+@import "settings/forms";
+@import "settings/global";
+@import "settings/chess";
+@import "settings/board";
-@import "utilities";
+// 2. Tools – globally used mixins and functions.
+// It’s important not to output any CSS in the first 2 layers.
-@import "tables";
-@import "headings";
-@import "forms";
+// 3. Generic – reset and/or normalize styles, box-sizing definition, etc.
+// This is the first layer which generates actual CSS.
+@import "generic/typography";
+@import "generic/layout";
-@import "layout";
-@import "nav";
+// 4. Elements – styling for bare HTML elements (like H1, A, etc.).
+// These come with default styling from the browser so we can redefine
+// them here.
+@import "elements/main";
+@import "elements/headings";
+@import "elements/paragraphs";
+@import "elements/links";
+@import "elements/lists";
+@import "elements/tables";
+@import "elements/forms";
+@import "elements/buttons";
-@import "game_list";
-@import "board";
-@import "move_list";
-@import "game_info";
-@import "game_grid";
+// 5. Objects – class-based selectors which define undecorated design patterns,
+// for example media object known from OOCSS
+@import "objects/container";
+@import "objects/form";
+@import "objects/form-group";
+@import "objects/tables";
+
+// 6. Components – specific UI components.
+// This is where majority of our work takes place and our UI components
+// are often composed of Objects and Components
+@import "components/nav";
+@import "components/board";
+@import "components/square";
+@import "components/game-list";
+@import "components/game-grid";
+@import "components/game-info";
+@import "components/move-list";
+@import "components/game-state";
+
+// 7. Utilities – utilities and helper classes with ability to override
+// anything which goes before in the triangle, eg. hide helper class
+@import "utilities/visually-hidden";
+@import "utilities/text-right";
diff --git a/assets/css/base/_base.scss b/assets/css/base/_base.scss
deleted file mode 100644
index e20da52..0000000
--- a/assets/css/base/_base.scss
+++ /dev/null
@@ -1,14 +0,0 @@
-// Bitters 1.8.0
-// http://bitters.bourbon.io
-// Copyright 2013-2017 thoughtbot, inc.
-// MIT License
-
-@import "variables";
-
-@import "buttons";
-@import "forms";
-@import "layout";
-@import "lists";
-@import "media";
-@import "tables";
-@import "typography";
diff --git a/assets/css/base/_media.scss b/assets/css/base/_media.scss
deleted file mode 100644
index dfa22ea..0000000
--- a/assets/css/base/_media.scss
+++ /dev/null
@@ -1,9 +0,0 @@
-figure {
- margin: 0;
-}
-
-img,
-picture {
- margin: 0;
- max-width: 100%;
-}
diff --git a/assets/css/base/_typography.scss b/assets/css/base/_typography.scss
deleted file mode 100644
index 6521f8f..0000000
--- a/assets/css/base/_typography.scss
+++ /dev/null
@@ -1,45 +0,0 @@
-html {
- color: $base-font-color;
- font-family: $base-font-family;
- font-size: 100%;
- line-height: $base-line-height;
-}
-
-h1,
-h2,
-h3,
-h4,
-h5,
-h6 {
- font-family: $heading-font-family;
- font-size: modular-scale(1);
- line-height: $heading-line-height;
- margin: 0 0 $small-spacing;
-}
-
-p {
- margin: $small-spacing 0 $small-spacing;
-}
-
-a {
- color: $action-color;
- text-decoration-skip: ink;
- transition: color $base-duration $base-timing;
-
- &:hover {
- color: shade($action-color, 25%);
- }
-
- &:focus {
- outline: $focus-outline;
- outline-offset: $focus-outline-offset;
- }
-}
-
-hr {
- border-bottom: $base-border;
- border-left: 0;
- border-right: 0;
- border-top: 0;
- margin: $base-spacing 0;
-}
diff --git a/assets/css/base/_variables.scss b/assets/css/base/_variables.scss
deleted file mode 100644
index e19b906..0000000
--- a/assets/css/base/_variables.scss
+++ /dev/null
@@ -1,41 +0,0 @@
-// Typography
-$base-font-family: $font-stack-system;
-$heading-font-family: $base-font-family;
-
-// Line height
-$base-line-height: 1.5;
-$heading-line-height: 1.2;
-
-// Other Sizes
-$base-border-radius: 0.5rem;
-$base-spacing: 2em;
-$small-spacing: $base-spacing / 2;
-$x-small-spacing: $small-spacing / 2;
-$base-z-index: 0;
-
-// Colors
-$blue: #1565c0;
-$dark-gray: #333;
-$medium-gray: #999;
-$light-gray: #ddd;
-
-// Font Colors
-$base-font-color: $light-gray;
-$action-color: $light-gray;
-
-// Border
-$base-border-color: $light-gray;
-$base-border: 1px solid $base-border-color;
-
-// Background Colors
-$viewport-background-color: #fff;
-
-// Focus
-$focus-outline-color: transparentize($action-color, 0.4);
-$focus-outline-width: 3px;
-$focus-outline: $focus-outline-width solid $focus-outline-color;
-$focus-outline-offset: 2px;
-
-// Animations
-$base-duration: 150ms;
-$base-timing: ease;
diff --git a/assets/css/components/_board.scss b/assets/css/components/_board.scss
new file mode 100644
index 0000000..b1469c0
--- /dev/null
+++ b/assets/css/components/_board.scss
@@ -0,0 +1,139 @@
+@mixin move-indicator {
+ border-radius: 50%;
+ content: "";
+ display: block;
+ height: 1.5%;
+ position: absolute;
+ right: 3%;
+ width: 1.5%;
+}
+
+.board {
+ background: $background-color;
+ border-collapse: unset;
+ border-radius: 2.8%;
+ border-spacing: 1px;
+ color: $foreground-color;
+ grid-area: board;
+ height: var(--board-size);
+ padding: calc(var(--board-size) / 20);
+ position: relative;
+ width: var(--board-size);
+}
+
+.board--white-to-move,
+.board--black-to-move {
+ &::before {
+ @include move-indicator;
+ background: $foreground-color;
+ }
+}
+
+.board--player-is-white.board--white-to-move,
+.board--player-is-black.board--black-to-move {
+ &::before {
+ bottom: 3%;
+ }
+}
+
+.board--player-is-white.board--black-to-move,
+.board--player-is-black.board--white-to-move {
+ &::before {
+ top: 3%;
+ }
+}
+
+.board__rank-labels,
+.board__file-labels {
+ display: none;
+}
+
+.board--player-is-white {
+ .board__rank-labels {
+ display: flex;
+ flex-direction: column-reverse;
+ }
+
+ .board__file-labels {
+ display: flex;
+ flex-direction: row;
+ }
+}
+
+.board--player-is-black {
+ .board__rank-labels {
+ display: flex;
+ flex-direction: column;
+ }
+
+ .board__file-labels {
+ display: flex;
+ flex-direction: row-reverse;
+ }
+}
+
+.board__body {
+ background: $background-color;
+ border: 0.25rem solid $foreground-color;
+ border-radius: calc(var(--board-size) / 100);
+ display: grid;
+ grid-template-columns: repeat(8, 1fr);
+ grid-template-rows: repeat(8, 1fr);
+ height: 100%;
+ padding: 1%;
+ width: 100%;
+}
+
+.board__rank-labels {
+ display: flex;
+ height: 90%;
+ left: 0;
+ position: absolute;
+ width: 5%;
+}
+
+.board__file-labels {
+ display: flex;
+ height: 5%;
+ position: absolute;
+ top: 0;
+ width: 90%;
+}
+
+.board__label {
+ align-items: center;
+ display: flex;
+ flex-grow: 1;
+ font-size: calc(0.25rem + (var(--board-size) / 50));
+ justify-content: center;
+}
+
+@media (max-aspect-ratio: 9/11) and (max-width: 640px),
+ (max-aspect-ratio: 9/11) and (max-height: 640px),
+ (min-aspect-ratio: 9/11) and (max-width: 720px),
+ (min-aspect-ratio: 9/11) and (max-height: 720px) {
+ .board__body {
+ border-width: 0.1875rem;
+ }
+}
+
+@media (max-aspect-ratio: 9/11) and (max-width: 480px),
+ (max-aspect-ratio: 9/11) and (max-height: 480px),
+ (min-aspect-ratio: 9/11) and (max-width: 560px),
+ (min-aspect-ratio: 9/11) and (max-height: 560px) {
+ .board__body {
+ border-width: 0.125rem;
+ }
+}
+
+@media (min-width: 480px) {
+ .board__body {
+ grid-gap: 1px;
+ }
+}
+
+@media (min-width: 768px) {
+ .board__body {
+ grid-gap: 2px;
+ }
+}
diff --git a/assets/css/_game_grid.scss b/assets/css/components/_game-grid.scss
similarity index 74%
rename from assets/css/_game_grid.scss
rename to assets/css/components/_game-grid.scss
index 13e65ef..2440c07 100644
--- a/assets/css/_game_grid.scss
+++ b/assets/css/components/_game-grid.scss
@@ -26,15 +26,3 @@
grid-template-rows: min-content min-content min-content;
}
}
-
-@media (max-height: 960px), (max-width: 768px) {
- html {
- font-size: 0.9em;
- }
-}
-
-@media (max-height: 480px), (max-width: 400px) {
- html {
- font-size: 0.8em;
- }
-}
diff --git a/assets/css/components/_game-info.scss b/assets/css/components/_game-info.scss
new file mode 100644
index 0000000..c9a2bce
--- /dev/null
+++ b/assets/css/components/_game-info.scss
@@ -0,0 +1,8 @@
+.game-info {
+ grid-area: game-info;
+}
+
+.game-info__opponent-status {
+ height: 1rem;
+ vertical-align: middle;
+}
diff --git a/assets/css/components/_game-list.scss b/assets/css/components/_game-list.scss
new file mode 100644
index 0000000..4e0f36c
--- /dev/null
+++ b/assets/css/components/_game-list.scss
@@ -0,0 +1,11 @@
+.games-list__player-indicator {
+ img {
+ height: 1.5em;
+ vertical-align: middle;
+ }
+}
+
+.games-list__your-turn {
+ background-color: $background-color;
+ font-weight: $heavy-font-weight;
+}
diff --git a/assets/css/components/_game-state.scss b/assets/css/components/_game-state.scss
new file mode 100644
index 0000000..6725b22
--- /dev/null
+++ b/assets/css/components/_game-state.scss
@@ -0,0 +1,31 @@
+.game-state {
+ align-items: center;
+ background-color: $foreground-color;
+ border-radius: calc(var(--board-size) / 100);
+ bottom: -2.5%;
+ box-shadow: 0 0 0 0.2rem $background-color;
+ color: $background-color;
+ display: none;
+ font-size: calc(var(--board-size) / 40);
+ height: 6%;
+ justify-content: center;
+ left: 5%;
+ position: absolute;
+ width: 15%;
+}
+
+&.game-state--check,
+&.game-state--checkmate,
+&.game-state--stalemate {
+ display: block; // So PhantomJS will display it.
+ display: flex;
+}
+
+&.game-state--checkmate,
+&.game-state--stalemate {
+ font-size: calc(var(--board-size) / 30);
+ height: 7.5%;
+ left: calc(50% - 15%);
+ top: calc(50% - 3.5%);
+ width: 30%;
+}
diff --git a/assets/css/_move_list.scss b/assets/css/components/_move-list.scss
similarity index 83%
rename from assets/css/_move_list.scss
rename to assets/css/components/_move-list.scss
index a1ccc1c..97830f7 100644
--- a/assets/css/_move_list.scss
+++ b/assets/css/components/_move-list.scss
@@ -4,7 +4,7 @@
}
.move-list__line-number {
- color: mix($background-color, $foreground-color);
+ color: $foreground-color;
font-feature-settings: "tnum";
font-variant-numeric: tabular-nums;
}
diff --git a/assets/css/components/_nav.scss b/assets/css/components/_nav.scss
new file mode 100644
index 0000000..c070185
--- /dev/null
+++ b/assets/css/components/_nav.scss
@@ -0,0 +1,38 @@
+.header {
+ background: $nav-background-color;
+ color: $nav-foreground-color;
+ margin-bottom: $small-spacing;
+ padding: $x-small-spacing 0;
+
+ .container {
+ align-items: flex-end;
+ display: flex;
+ }
+
+ a {
+ color: $nav-foreground-color;
+ text-decoration: underline dashed;
+
+ &:hover {
+ color: $nav-foreground-color;
+ text-decoration: underline;
+ }
+ }
+}
+
+.header__title {
+ flex: 0;
+
+ a {
+ text-decoration: none;
+
+ &:hover {
+ text-decoration: underline dashed;
+ }
+ }
+}
+
+.header__user-nav {
+ flex: 1;
+ text-align: right;
+}
diff --git a/assets/css/components/_square.scss b/assets/css/components/_square.scss
new file mode 100644
index 0000000..95b734a
--- /dev/null
+++ b/assets/css/components/_square.scss
@@ -0,0 +1,178 @@
+%square--black {
+ background: repeating-linear-gradient(
+ 45deg,
+ $background-color,
+ $background-color ($diagonal-pixel * 5),
+ $foreground-color ($diagonal-pixel * 5),
+ $foreground-color ($diagonal-pixel * 8)
+ );
+
+ &.square--selected {
+ box-shadow: inset 0 0 0 0.2rem $foreground-color,
+ inset 0 0 0 0.4rem $background-color;
+ }
+
+ &.square--available {
+ &::after {
+ border-radius: 50%;
+ bottom: 20%;
+ box-shadow: 0 0 0 0.2rem $foreground-color,
+ 0 0 0 0.4rem $background-color,
+ inset 0 0 0 0.2rem $background-color;
+ content: "";
+ display: block;
+ left: 20%;
+ position: absolute;
+ right: 20%;
+ top: 20%;
+ }
+ }
+}
+
+%square--white {
+ background-color: $background-color;
+
+ &.square--selected {
+ box-shadow: inset 0 0 0 0.2rem $foreground-color;
+ }
+
+ &.square--available {
+ &::after {
+ border-radius: 50%;
+ bottom: 20%;
+ box-shadow: 0 0 0 0.2rem $foreground-color,
+ 0 0 0 0.4rem $background-color,
+ inset 0 0 0 0.2rem $background-color;
+ content: "";
+ display: block;
+ left: 20%;
+ position: absolute;
+ right: 20%;
+ top: 20%;
+ }
+ }
+}
+
+.square {
+ border-radius: 4%;
+ margin: 0.5px;
+ position: relative;
+
+ // This is to ensure the squares can be clicked on in PhantomJS
+ // TODO: Figure out why we need this
+ min-height: 20px;
+ min-width: 20px;
+
+ @include odd-between(1, 8) { @extend %square--white; }
+ @include even-between(1, 8) { @extend %square--black; }
+
+ @include odd-between(9, 16) { @extend %square--black; }
+ @include even-between(9, 16) { @extend %square--white; }
+
+ @include odd-between(17, 24) { @extend %square--white; }
+ @include even-between(17, 24) { @extend %square--black; }
+
+ @include odd-between(25, 32) { @extend %square--black; }
+ @include even-between(25, 32) { @extend %square--white; }
+
+ @include odd-between(33, 40) { @extend %square--white; }
+ @include even-between(33, 40) { @extend %square--black; }
+
+ @include odd-between(41, 48) { @extend %square--black; }
+ @include even-between(41, 48) { @extend %square--white; }
+
+ @include odd-between(49, 56) { @extend %square--white; }
+ @include even-between(49, 56) { @extend %square--black; }
+
+ @include odd-between(57, 64) { @extend %square--black; }
+ @include even-between(57, 64) { @extend %square--white; }
+
+ &::before {
+ background-position: center;
+ background-repeat: no-repeat;
+ background-size: 100%;
+ bottom: 0;
+ content: "";
+ display: block;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ }
+
+ @each $colour in $colours {
+ @each $piece in $pieces {
+ &.square--#{$colour}.square--#{$piece}::before {
+ background-image: url("/images/#{$piece}_#{$colour}.svg");
+ }
+ }
+ }
+}
+
+@media (max-aspect-ratio: 9/11) and (max-width: 640px),
+ (max-aspect-ratio: 9/11) and (max-height: 640px),
+ (min-aspect-ratio: 9/11) and (max-width: 720px),
+ (min-aspect-ratio: 9/11) and (max-height: 720px) {
+ %square--black {
+ background: repeating-linear-gradient(
+ 45deg,
+ $background-color,
+ $background-color ($diagonal-pixel * 3),
+ $foreground-color ($diagonal-pixel * 3),
+ $foreground-color ($diagonal-pixel * 5)
+ );
+
+ &.square--selected {
+ box-shadow: inset 0 0 0 0.15rem $foreground-color,
+ inset 0 0 0 0.3rem $background-color;
+ }
+
+ &.square--available::after {
+ box-shadow: 0 0 0 0.15rem $foreground-color,
+ 0 0 0 0.3rem $background-color,
+ inset 0 0 0 0.15rem $background-color;
+ }
+ }
+
+ %square--white {
+ &.square--selected {
+ box-shadow: inset 0 0 0 0.15rem $foreground-color;
+ }
+
+ &.square--available::after {
+ box-shadow: 0 0 0 0.15rem $foreground-color,
+ 0 0 0 0.3rem $background-color,
+ inset 0 0 0 0.15rem $background-color;
+ }
+ }
+}
+
+@media (max-aspect-ratio: 9/11) and (max-width: 480px),
+ (max-aspect-ratio: 9/11) and (max-height: 480px),
+ (min-aspect-ratio: 9/11) and (max-width: 560px),
+ (min-aspect-ratio: 9/11) and (max-height: 560px) {
+ %square--black {
+ &.square--selected {
+ box-shadow: inset 0 0 0 0.1rem $foreground-color,
+ inset 0 0 0 0.2rem $background-color;
+ }
+
+ &.square--available::after {
+ box-shadow: 0 0 0 0.1rem $foreground-color,
+ 0 0 0 0.2rem $background-color,
+ inset 0 0 0 0.1rem $background-color;
+ }
+ }
+
+ %square--white {
+ &.square--selected {
+ box-shadow: inset 0 0 0 0.1rem $foreground-color;
+ }
+
+ &.available::after {
+ box-shadow: 0 0 0 0.1rem $foreground-color,
+ 0 0 0 0.2rem $background-color,
+ inset 0 0 0 0.1rem $background-color;
+ }
+ }
+}
diff --git a/assets/css/base/_buttons.scss b/assets/css/elements/_buttons.scss
similarity index 72%
rename from assets/css/base/_buttons.scss
rename to assets/css/elements/_buttons.scss
index d576aa6..ee23988 100644
--- a/assets/css/base/_buttons.scss
+++ b/assets/css/elements/_buttons.scss
@@ -1,6 +1,6 @@
-$_button-border-color: $action-color;
-$_button-background-color: rgba(0, 0, 0, 0);
-$_button-background-color-hover: $action-color;
+$_button-border-color: $foreground-color;
+$_button-background-color: $foreground-color;
+$_button-background-color-hover: $background-color;
#{$all-buttons} {
appearance: none;
@@ -11,9 +11,8 @@ $_button-background-color-hover: $action-color;
cursor: pointer;
display: inline-block;
font-family: $base-font-family;
- font-size: 16px;
- -webkit-font-smoothing: antialiased;
- font-weight: 600;
+ font-size: inherit;
+ font-weight: $base-font-weight;
line-height: 1;
padding: $small-spacing $base-spacing;
text-align: center;
@@ -29,8 +28,8 @@ $_button-background-color-hover: $action-color;
}
&:focus {
- outline: $focus-outline;
- outline-offset: $focus-outline-offset;
+ background-color: $_button-background-color-hover;
+ color: contrast-switch($_button-background-color-hover);
}
&:disabled {
diff --git a/assets/css/base/_forms.scss b/assets/css/elements/_forms.scss
similarity index 57%
rename from assets/css/base/_forms.scss
rename to assets/css/elements/_forms.scss
index 36c7731..71fdaa6 100644
--- a/assets/css/base/_forms.scss
+++ b/assets/css/elements/_forms.scss
@@ -1,6 +1,4 @@
-$_form-background-color: #fff;
-$_form-box-shadow: inset 0 1px 3px rgba(#000, 0.06);
-$_form-box-shadow-focus: $_form-box-shadow, 0 0 5px rgba($action-color, 0.7);
+$_form-background-color: $background-color;
fieldset {
background-color: transparent;
@@ -10,14 +8,14 @@ fieldset {
}
legend {
- font-weight: 600;
+ font-weight: $heavy-font-weight;
margin-bottom: $small-spacing / 2;
padding: 0;
}
label {
display: block;
- font-weight: 600;
+ font-weight: $heavy-font-weight;
margin-bottom: $small-spacing / 2;
}
@@ -26,7 +24,7 @@ select,
textarea {
display: block;
font-family: $base-font-family;
- font-size: 16px;
+ font-size: inherit;
}
#{$all-text-inputs} {
@@ -34,35 +32,25 @@ textarea {
background-color: $_form-background-color;
border: $base-border;
border-radius: $base-border-radius;
- box-shadow: $_form-box-shadow;
box-sizing: border-box;
+ color: $foreground-color;
margin-bottom: $small-spacing;
padding: $base-spacing / 3;
transition: border-color $base-duration $base-timing;
width: 100%;
- &:hover {
- border-color: shade($base-border-color, 20%);
- }
-
&:focus {
- border-color: $action-color;
- box-shadow: $_form-box-shadow-focus;
+ border: 1px solid $base-border-color;
outline: none;
}
&:disabled {
- background-color: shade($_form-background-color, 5%);
cursor: not-allowed;
&:hover {
border: $base-border;
}
}
-
- &::placeholder {
- color: tint($base-font-color, 40%);
- }
}
textarea {
@@ -72,7 +60,7 @@ textarea {
[type="checkbox"],
[type="radio"] {
display: inline;
- margin-right: $small-spacing / 2;
+ margin-right: $x-small-spacing;
}
[type="file"] {
@@ -84,13 +72,3 @@ select {
margin-bottom: $small-spacing;
width: 100%;
}
-
-[type="checkbox"],
-[type="radio"],
-[type="file"],
-select {
- &:focus {
- outline: $focus-outline;
- outline-offset: $focus-outline-offset;
- }
-}
diff --git a/assets/css/elements/_headings.scss b/assets/css/elements/_headings.scss
new file mode 100644
index 0000000..6a59ac3
--- /dev/null
+++ b/assets/css/elements/_headings.scss
@@ -0,0 +1,24 @@
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ font-family: $heading-font-family;
+ font-size: modular-scale(1);
+ line-height: $heading-line-height;
+ margin: 0 0 $small-spacing;
+}
+
+h1 {
+ font-size: modular-scale(2);
+ font-weight: $base-font-weight;
+ margin: 0;
+}
+
+.heading {
+ font-family: $heading-font-family;
+ font-size: modular-scale(1);
+ line-height: $heading-line-height;
+ margin: 0 0 $small-spacing;
+}
diff --git a/assets/css/elements/_links.scss b/assets/css/elements/_links.scss
new file mode 100644
index 0000000..399eeae
--- /dev/null
+++ b/assets/css/elements/_links.scss
@@ -0,0 +1,3 @@
+a {
+ color: $foreground-color;
+}
diff --git a/assets/css/base/_lists.scss b/assets/css/elements/_lists.scss
similarity index 78%
rename from assets/css/base/_lists.scss
rename to assets/css/elements/_lists.scss
index 06a7c0a..d63e399 100644
--- a/assets/css/base/_lists.scss
+++ b/assets/css/elements/_lists.scss
@@ -10,7 +10,7 @@ dl {
}
dt {
- font-weight: 600;
+ font-weight: $heavy-font-weight;
margin: 0;
}
diff --git a/assets/css/elements/_main.scss b/assets/css/elements/_main.scss
new file mode 100644
index 0000000..98533d9
--- /dev/null
+++ b/assets/css/elements/_main.scss
@@ -0,0 +1,3 @@
+main {
+ margin-top: 5vmin;
+}
diff --git a/assets/css/elements/_paragraphs.scss b/assets/css/elements/_paragraphs.scss
new file mode 100644
index 0000000..0edd2ce
--- /dev/null
+++ b/assets/css/elements/_paragraphs.scss
@@ -0,0 +1,3 @@
+p {
+ margin: $small-spacing 0;
+}
diff --git a/assets/css/base/_tables.scss b/assets/css/elements/_tables.scss
similarity index 89%
rename from assets/css/base/_tables.scss
rename to assets/css/elements/_tables.scss
index cdec0e9..7d725ef 100644
--- a/assets/css/base/_tables.scss
+++ b/assets/css/elements/_tables.scss
@@ -19,10 +19,11 @@ tr {
}
th {
- font-weight: 600;
+ font-weight: $heavy-font-weight;
}
th,
td {
padding: $x-small-spacing;
}
+
diff --git a/assets/css/base/_layout.scss b/assets/css/generic/_layout.scss
similarity index 59%
rename from assets/css/base/_layout.scss
rename to assets/css/generic/_layout.scss
index 4f4001e..dd127cb 100644
--- a/assets/css/base/_layout.scss
+++ b/assets/css/generic/_layout.scss
@@ -1,6 +1,8 @@
html {
- background-color: $viewport-background-color;
+ background: $background-color;
box-sizing: border-box;
+ color: $foreground-color;
+ font-weight: $base-font-weight;
}
*,
@@ -9,11 +11,11 @@ html {
box-sizing: inherit;
}
+body {
+ margin: 0;
+}
+
html,
body {
height: 100%;
}
-
-body {
- margin: 0;
-}
diff --git a/assets/css/generic/_typography.scss b/assets/css/generic/_typography.scss
new file mode 100644
index 0000000..e733641
--- /dev/null
+++ b/assets/css/generic/_typography.scss
@@ -0,0 +1,18 @@
+html {
+ color: $base-font-color;
+ font-family: $base-font-family;
+ font-size: $large-font-size;
+ line-height: $base-line-height;
+}
+
+@media (max-height: 960px), (max-width: 1024px) {
+ html {
+ font-size: $base-font-size;
+ }
+}
+
+@media (max-height: 480px), (max-width: 768px) {
+ html {
+ font-size: $small-font-size;
+ }
+}
diff --git a/assets/css/objects/_container.scss b/assets/css/objects/_container.scss
new file mode 100644
index 0000000..9f4499c
--- /dev/null
+++ b/assets/css/objects/_container.scss
@@ -0,0 +1,4 @@
+.container {
+ margin: 0 auto;
+ width: $container-width;
+}
diff --git a/assets/css/objects/_form-group.scss b/assets/css/objects/_form-group.scss
new file mode 100644
index 0000000..3b8db91
--- /dev/null
+++ b/assets/css/objects/_form-group.scss
@@ -0,0 +1,3 @@
+.form-group {
+ margin-top: $base-spacing;
+}
diff --git a/assets/css/objects/_form.scss b/assets/css/objects/_form.scss
new file mode 100644
index 0000000..97b3554
--- /dev/null
+++ b/assets/css/objects/_form.scss
@@ -0,0 +1,15 @@
+.form {
+ h2 {
+ margin: 0 auto;
+ max-width: $base-form-width;
+ padding: $base-spacing;
+ }
+
+ form {
+ border: $base-solid-border;
+ border-radius: $base-border-radius;
+ margin: 0 auto;
+ max-width: $base-form-width;
+ padding: 0 $base-spacing $base-spacing;
+ }
+}
diff --git a/assets/css/_tables.scss b/assets/css/objects/_tables.scss
similarity index 77%
rename from assets/css/_tables.scss
rename to assets/css/objects/_tables.scss
index d561a29..834b48a 100644
--- a/assets/css/_tables.scss
+++ b/assets/css/objects/_tables.scss
@@ -11,6 +11,6 @@
th,
td {
- padding: 0 $base-spacing 0 0;
+ padding: 0 $small-spacing 0 0;
}
}
diff --git a/assets/css/settings/_board.scss b/assets/css/settings/_board.scss
new file mode 100644
index 0000000..4564216
--- /dev/null
+++ b/assets/css/settings/_board.scss
@@ -0,0 +1,17 @@
+:root {
+ --board-size: 64vw;
+}
+
+@media (min-aspect-ratio: 14/11) {
+ :root {
+ --board-size: 80vmin;
+ }
+}
+
+@media (max-aspect-ratio: 9/11) {
+ :root {
+ --board-size: 90vmin;
+ }
+}
+
+$diagonal-pixel: 0.7071067812px;
diff --git a/assets/css/settings/_chess.scss b/assets/css/settings/_chess.scss
new file mode 100644
index 0000000..1e44d4b
--- /dev/null
+++ b/assets/css/settings/_chess.scss
@@ -0,0 +1,2 @@
+$colours: "black" "white";
+$pieces: king queen bishop knight rook pawn;
diff --git a/assets/css/settings/_colors.scss b/assets/css/settings/_colors.scss
new file mode 100644
index 0000000..8126268
--- /dev/null
+++ b/assets/css/settings/_colors.scss
@@ -0,0 +1,18 @@
+$black: #000;
+$white: #fff;
+
+// Background Colors
+$background-color: $white;
+$foreground-color: $black;
+
+$nav-background-color: $black;
+$nav-foreground-color: $white;
+
+$link-color: $black;
+
+// Font Colors
+$base-font-color: $black;
+$action-color: $black;
+
+// Border
+$base-border-color: $black;
diff --git a/assets/css/settings/_forms.scss b/assets/css/settings/_forms.scss
new file mode 100644
index 0000000..66cb573
--- /dev/null
+++ b/assets/css/settings/_forms.scss
@@ -0,0 +1 @@
+$base-form-width: 40rem;
diff --git a/assets/css/settings/_global.scss b/assets/css/settings/_global.scss
new file mode 100644
index 0000000..fe53f63
--- /dev/null
+++ b/assets/css/settings/_global.scss
@@ -0,0 +1,16 @@
+$base-border-radius: 0.5rem;
+$base-spacing: 2rem;
+$small-spacing: $base-spacing / 2;
+$x-small-spacing: $small-spacing / 2;
+$base-z-index: 0;
+
+$container-width: 90%;
+
+// Border
+$base-border-color: $black;
+$base-border: 1px dashed $base-border-color;
+$base-solid-border: 0.25rem solid $base-border-color;
+
+// Animations
+$base-duration: 150ms;
+$base-timing: ease;
diff --git a/assets/css/settings/_typography.scss b/assets/css/settings/_typography.scss
new file mode 100644
index 0000000..feba04d
--- /dev/null
+++ b/assets/css/settings/_typography.scss
@@ -0,0 +1,19 @@
+$base-font-family: "Enriqueta", serif;
+$base-font-size: 1em;
+$heading-font-family: $base-font-family;
+
+$small-font-size: 0.8em;
+$large-font-size: 1.2em;
+
+// Line height
+$base-line-height: 1.5;
+$heading-line-height: 1.2;
+
+// Font weights
+$base-font-weight: 400;
+$heavy-font-weight: 700;
+
+// Modular scale
+$bourbon: (
+ "modular-scale-ratio": $major-third,
+);
diff --git a/assets/css/utilities/_text-right.scss b/assets/css/utilities/_text-right.scss
new file mode 100644
index 0000000..c230b75
--- /dev/null
+++ b/assets/css/utilities/_text-right.scss
@@ -0,0 +1,3 @@
+.text-right {
+ text-align: right;
+}
diff --git a/assets/css/_utilities.scss b/assets/css/utilities/_visually-hidden.scss
similarity index 100%
rename from assets/css/_utilities.scss
rename to assets/css/utilities/_visually-hidden.scss
diff --git a/assets/css/bourbon/_bourbon.scss b/assets/css/vendor/bourbon/_bourbon.scss
similarity index 100%
rename from assets/css/bourbon/_bourbon.scss
rename to assets/css/vendor/bourbon/_bourbon.scss
diff --git a/assets/css/bourbon/bourbon/helpers/_buttons-list.scss b/assets/css/vendor/bourbon/bourbon/helpers/_buttons-list.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/helpers/_buttons-list.scss
rename to assets/css/vendor/bourbon/bourbon/helpers/_buttons-list.scss
diff --git a/assets/css/bourbon/bourbon/helpers/_scales.scss b/assets/css/vendor/bourbon/bourbon/helpers/_scales.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/helpers/_scales.scss
rename to assets/css/vendor/bourbon/bourbon/helpers/_scales.scss
diff --git a/assets/css/bourbon/bourbon/helpers/_text-inputs-list.scss b/assets/css/vendor/bourbon/bourbon/helpers/_text-inputs-list.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/helpers/_text-inputs-list.scss
rename to assets/css/vendor/bourbon/bourbon/helpers/_text-inputs-list.scss
diff --git a/assets/css/bourbon/bourbon/library/_border-color.scss b/assets/css/vendor/bourbon/bourbon/library/_border-color.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/library/_border-color.scss
rename to assets/css/vendor/bourbon/bourbon/library/_border-color.scss
diff --git a/assets/css/bourbon/bourbon/library/_border-radius.scss b/assets/css/vendor/bourbon/bourbon/library/_border-radius.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/library/_border-radius.scss
rename to assets/css/vendor/bourbon/bourbon/library/_border-radius.scss
diff --git a/assets/css/bourbon/bourbon/library/_border-style.scss b/assets/css/vendor/bourbon/bourbon/library/_border-style.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/library/_border-style.scss
rename to assets/css/vendor/bourbon/bourbon/library/_border-style.scss
diff --git a/assets/css/bourbon/bourbon/library/_border-width.scss b/assets/css/vendor/bourbon/bourbon/library/_border-width.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/library/_border-width.scss
rename to assets/css/vendor/bourbon/bourbon/library/_border-width.scss
diff --git a/assets/css/bourbon/bourbon/library/_buttons.scss b/assets/css/vendor/bourbon/bourbon/library/_buttons.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/library/_buttons.scss
rename to assets/css/vendor/bourbon/bourbon/library/_buttons.scss
diff --git a/assets/css/bourbon/bourbon/library/_clearfix.scss b/assets/css/vendor/bourbon/bourbon/library/_clearfix.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/library/_clearfix.scss
rename to assets/css/vendor/bourbon/bourbon/library/_clearfix.scss
diff --git a/assets/css/bourbon/bourbon/library/_contrast-switch.scss b/assets/css/vendor/bourbon/bourbon/library/_contrast-switch.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/library/_contrast-switch.scss
rename to assets/css/vendor/bourbon/bourbon/library/_contrast-switch.scss
diff --git a/assets/css/bourbon/bourbon/library/_ellipsis.scss b/assets/css/vendor/bourbon/bourbon/library/_ellipsis.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/library/_ellipsis.scss
rename to assets/css/vendor/bourbon/bourbon/library/_ellipsis.scss
diff --git a/assets/css/bourbon/bourbon/library/_font-face.scss b/assets/css/vendor/bourbon/bourbon/library/_font-face.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/library/_font-face.scss
rename to assets/css/vendor/bourbon/bourbon/library/_font-face.scss
diff --git a/assets/css/bourbon/bourbon/library/_font-stacks.scss b/assets/css/vendor/bourbon/bourbon/library/_font-stacks.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/library/_font-stacks.scss
rename to assets/css/vendor/bourbon/bourbon/library/_font-stacks.scss
diff --git a/assets/css/bourbon/bourbon/library/_hide-text.scss b/assets/css/vendor/bourbon/bourbon/library/_hide-text.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/library/_hide-text.scss
rename to assets/css/vendor/bourbon/bourbon/library/_hide-text.scss
diff --git a/assets/css/bourbon/bourbon/library/_hide-visually.scss b/assets/css/vendor/bourbon/bourbon/library/_hide-visually.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/library/_hide-visually.scss
rename to assets/css/vendor/bourbon/bourbon/library/_hide-visually.scss
diff --git a/assets/css/bourbon/bourbon/library/_margin.scss b/assets/css/vendor/bourbon/bourbon/library/_margin.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/library/_margin.scss
rename to assets/css/vendor/bourbon/bourbon/library/_margin.scss
diff --git a/assets/css/bourbon/bourbon/library/_modular-scale.scss b/assets/css/vendor/bourbon/bourbon/library/_modular-scale.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/library/_modular-scale.scss
rename to assets/css/vendor/bourbon/bourbon/library/_modular-scale.scss
diff --git a/assets/css/bourbon/bourbon/library/_overflow-wrap.scss b/assets/css/vendor/bourbon/bourbon/library/_overflow-wrap.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/library/_overflow-wrap.scss
rename to assets/css/vendor/bourbon/bourbon/library/_overflow-wrap.scss
diff --git a/assets/css/bourbon/bourbon/library/_padding.scss b/assets/css/vendor/bourbon/bourbon/library/_padding.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/library/_padding.scss
rename to assets/css/vendor/bourbon/bourbon/library/_padding.scss
diff --git a/assets/css/bourbon/bourbon/library/_position.scss b/assets/css/vendor/bourbon/bourbon/library/_position.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/library/_position.scss
rename to assets/css/vendor/bourbon/bourbon/library/_position.scss
diff --git a/assets/css/bourbon/bourbon/library/_prefixer.scss b/assets/css/vendor/bourbon/bourbon/library/_prefixer.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/library/_prefixer.scss
rename to assets/css/vendor/bourbon/bourbon/library/_prefixer.scss
diff --git a/assets/css/bourbon/bourbon/library/_shade.scss b/assets/css/vendor/bourbon/bourbon/library/_shade.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/library/_shade.scss
rename to assets/css/vendor/bourbon/bourbon/library/_shade.scss
diff --git a/assets/css/bourbon/bourbon/library/_size.scss b/assets/css/vendor/bourbon/bourbon/library/_size.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/library/_size.scss
rename to assets/css/vendor/bourbon/bourbon/library/_size.scss
diff --git a/assets/css/bourbon/bourbon/library/_strip-unit.scss b/assets/css/vendor/bourbon/bourbon/library/_strip-unit.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/library/_strip-unit.scss
rename to assets/css/vendor/bourbon/bourbon/library/_strip-unit.scss
diff --git a/assets/css/bourbon/bourbon/library/_text-inputs.scss b/assets/css/vendor/bourbon/bourbon/library/_text-inputs.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/library/_text-inputs.scss
rename to assets/css/vendor/bourbon/bourbon/library/_text-inputs.scss
diff --git a/assets/css/bourbon/bourbon/library/_timing-functions.scss b/assets/css/vendor/bourbon/bourbon/library/_timing-functions.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/library/_timing-functions.scss
rename to assets/css/vendor/bourbon/bourbon/library/_timing-functions.scss
diff --git a/assets/css/bourbon/bourbon/library/_tint.scss b/assets/css/vendor/bourbon/bourbon/library/_tint.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/library/_tint.scss
rename to assets/css/vendor/bourbon/bourbon/library/_tint.scss
diff --git a/assets/css/bourbon/bourbon/library/_triangle.scss b/assets/css/vendor/bourbon/bourbon/library/_triangle.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/library/_triangle.scss
rename to assets/css/vendor/bourbon/bourbon/library/_triangle.scss
diff --git a/assets/css/bourbon/bourbon/library/_value-prefixer.scss b/assets/css/vendor/bourbon/bourbon/library/_value-prefixer.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/library/_value-prefixer.scss
rename to assets/css/vendor/bourbon/bourbon/library/_value-prefixer.scss
diff --git a/assets/css/bourbon/bourbon/settings/_settings.scss b/assets/css/vendor/bourbon/bourbon/settings/_settings.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/settings/_settings.scss
rename to assets/css/vendor/bourbon/bourbon/settings/_settings.scss
diff --git a/assets/css/bourbon/bourbon/utilities/_assign-inputs.scss b/assets/css/vendor/bourbon/bourbon/utilities/_assign-inputs.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/utilities/_assign-inputs.scss
rename to assets/css/vendor/bourbon/bourbon/utilities/_assign-inputs.scss
diff --git a/assets/css/bourbon/bourbon/utilities/_compact-shorthand.scss b/assets/css/vendor/bourbon/bourbon/utilities/_compact-shorthand.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/utilities/_compact-shorthand.scss
rename to assets/css/vendor/bourbon/bourbon/utilities/_compact-shorthand.scss
diff --git a/assets/css/bourbon/bourbon/utilities/_contrast-ratio.scss b/assets/css/vendor/bourbon/bourbon/utilities/_contrast-ratio.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/utilities/_contrast-ratio.scss
rename to assets/css/vendor/bourbon/bourbon/utilities/_contrast-ratio.scss
diff --git a/assets/css/bourbon/bourbon/utilities/_directional-property.scss b/assets/css/vendor/bourbon/bourbon/utilities/_directional-property.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/utilities/_directional-property.scss
rename to assets/css/vendor/bourbon/bourbon/utilities/_directional-property.scss
diff --git a/assets/css/bourbon/bourbon/utilities/_fetch-bourbon-setting.scss b/assets/css/vendor/bourbon/bourbon/utilities/_fetch-bourbon-setting.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/utilities/_fetch-bourbon-setting.scss
rename to assets/css/vendor/bourbon/bourbon/utilities/_fetch-bourbon-setting.scss
diff --git a/assets/css/bourbon/bourbon/utilities/_font-source-declaration.scss b/assets/css/vendor/bourbon/bourbon/utilities/_font-source-declaration.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/utilities/_font-source-declaration.scss
rename to assets/css/vendor/bourbon/bourbon/utilities/_font-source-declaration.scss
diff --git a/assets/css/bourbon/bourbon/utilities/_gamma.scss b/assets/css/vendor/bourbon/bourbon/utilities/_gamma.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/utilities/_gamma.scss
rename to assets/css/vendor/bourbon/bourbon/utilities/_gamma.scss
diff --git a/assets/css/bourbon/bourbon/utilities/_lightness.scss b/assets/css/vendor/bourbon/bourbon/utilities/_lightness.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/utilities/_lightness.scss
rename to assets/css/vendor/bourbon/bourbon/utilities/_lightness.scss
diff --git a/assets/css/bourbon/bourbon/utilities/_unpack-shorthand.scss b/assets/css/vendor/bourbon/bourbon/utilities/_unpack-shorthand.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/utilities/_unpack-shorthand.scss
rename to assets/css/vendor/bourbon/bourbon/utilities/_unpack-shorthand.scss
diff --git a/assets/css/bourbon/bourbon/validators/_contains-falsy.scss b/assets/css/vendor/bourbon/bourbon/validators/_contains-falsy.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/validators/_contains-falsy.scss
rename to assets/css/vendor/bourbon/bourbon/validators/_contains-falsy.scss
diff --git a/assets/css/bourbon/bourbon/validators/_contains.scss b/assets/css/vendor/bourbon/bourbon/validators/_contains.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/validators/_contains.scss
rename to assets/css/vendor/bourbon/bourbon/validators/_contains.scss
diff --git a/assets/css/bourbon/bourbon/validators/_is-color.scss b/assets/css/vendor/bourbon/bourbon/validators/_is-color.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/validators/_is-color.scss
rename to assets/css/vendor/bourbon/bourbon/validators/_is-color.scss
diff --git a/assets/css/bourbon/bourbon/validators/_is-length.scss b/assets/css/vendor/bourbon/bourbon/validators/_is-length.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/validators/_is-length.scss
rename to assets/css/vendor/bourbon/bourbon/validators/_is-length.scss
diff --git a/assets/css/bourbon/bourbon/validators/_is-number.scss b/assets/css/vendor/bourbon/bourbon/validators/_is-number.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/validators/_is-number.scss
rename to assets/css/vendor/bourbon/bourbon/validators/_is-number.scss
diff --git a/assets/css/bourbon/bourbon/validators/_is-size.scss b/assets/css/vendor/bourbon/bourbon/validators/_is-size.scss
similarity index 100%
rename from assets/css/bourbon/bourbon/validators/_is-size.scss
rename to assets/css/vendor/bourbon/bourbon/validators/_is-size.scss
diff --git a/assets/js/components/chess-board-square.js b/assets/js/components/chess-board-square.js
index 57ad6a5..661f056 100644
--- a/assets/js/components/chess-board-square.js
+++ b/assets/js/components/chess-board-square.js
@@ -22,16 +22,16 @@ class ChessBoardSquare extends React.Component {
get squareClass() {
if (this.props.piece == undefined) {
return classNames(
- "board-square",
- { "available": this.isAvailableSquare() }
+ "square",
+ { "square--available": this.isAvailableSquare() }
);
} else {
return classNames(
- "board-square",
- this.props.piece.type,
- this.props.piece.colour,
- { "selected": this.isSelectedSquare() },
- { "available": this.isAvailableSquare() }
+ "square",
+ `square--${this.props.piece.type}`,
+ `square--${this.props.piece.colour}`,
+ { "square--selected": this.isSelectedSquare() },
+ { "square--available": this.isAvailableSquare() }
);
}
}
diff --git a/assets/js/components/chess-board.js b/assets/js/components/chess-board.js
index 9dfb603..b5b1d8c 100644
--- a/assets/js/components/chess-board.js
+++ b/assets/js/components/chess-board.js
@@ -81,7 +81,11 @@ class ChessBoard extends React.Component {
const turn = this.turn;
const player = this.player;
- return classNames("board", turn + "-to-move", "player-is-" + player);
+ return classNames(
+ "board",
+ `board--${turn}-to-move`,
+ `board--player-is-${player}`
+ );
}
render() {
@@ -90,7 +94,7 @@ class ChessBoard extends React.Component {
- Playing {props.opponent} - - {props.opponentStatus} - + Playing {props.opponent} {renderStatus(props.opponentStatus)}
|
diff --git a/assets/js/components/rank-labels.js b/assets/js/components/rank-labels.js
index 3ef4919..c8abc97 100644
--- a/assets/js/components/rank-labels.js
+++ b/assets/js/components/rank-labels.js
@@ -6,14 +6,14 @@ const RANK_LABELS = [1, 2, 3, 4, 5, 6, 7, 8];
const renderRankLabels = () => {
return _.map(RANK_LABELS, (rankLabel) => {
return (
- {rankLabel}
+ {rankLabel}
);
});
};
const RankLabels = () => {
return (
-
+
{renderRankLabels()}
);
diff --git a/assets/static/images/eye-closed.svg b/assets/static/images/eye-closed.svg
new file mode 100644
index 0000000..29168de
--- /dev/null
+++ b/assets/static/images/eye-closed.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/assets/static/images/eye-open.svg b/assets/static/images/eye-open.svg
new file mode 100644
index 0000000..6a7a0d3
--- /dev/null
+++ b/assets/static/images/eye-open.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/lib/chess_web/templates/game/index.html.eex b/lib/chess_web/templates/game/index.html.eex
index be86140..fe3c7cb 100644
--- a/lib/chess_web/templates/game/index.html.eex
+++ b/lib/chess_web/templates/game/index.html.eex
@@ -1,11 +1,11 @@
<%= gettext "Listing games" %>-
|
|---|