From df84827300d2296f2536abf44ae0e2d4023c23e6 Mon Sep 17 00:00:00 2001
From: Paul Kaplan <pkaplan@media.mit.edu>
Date: Thu, 10 Aug 2017 14:43:43 -0400
Subject: [PATCH] Change stage selected state to match sprite

---
 src/components/close-button/close-button.css  |  8 ++--
 .../sprite-selector-item.css                  | 18 +++-----
 .../stage-selector/stage-selector.css         | 43 +++++++------------
 .../stage-selector/stage-selector.jsx         | 17 +++++---
 src/css/colors.css                            |  1 +
 5 files changed, 36 insertions(+), 51 deletions(-)

diff --git a/src/components/close-button/close-button.css b/src/components/close-button/close-button.css
index b679f8fb2..1864e7b2a 100644
--- a/src/components/close-button/close-button.css
+++ b/src/components/close-button/close-button.css
@@ -9,7 +9,6 @@
     overflow: hidden;  /* Mask the icon animation */
     background-color: rgba(0, 0, 0, 0.1);
     border-radius: 50%;
-    box-shadow: 0 0 0 2px rgba(0, 0, 0, 0.1);
     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
     user-select: none;
     cursor: pointer;
@@ -22,8 +21,8 @@
 }
 
 .small {
-    width: 1rem;
-    height: 1rem;
+    width: 0.825rem;
+    height: 0.825rem;
     color: #FFF;
     background-color: $motion-primary;
 }
@@ -31,6 +30,7 @@
 .large {
     width: 1.75rem;
     height: 1.75rem;
+    box-shadow: 0 0 0 2px rgba(0, 0, 0, 0.1);
 }
 
 .close-icon {
@@ -42,7 +42,7 @@
 }
 
 .small .close-icon {
-    width: 40%;
+    width: 50%;
 }
 
 .large .close-icon {
diff --git a/src/components/sprite-selector-item/sprite-selector-item.css b/src/components/sprite-selector-item/sprite-selector-item.css
index faf7c3612..5aae297c9 100644
--- a/src/components/sprite-selector-item/sprite-selector-item.css
+++ b/src/components/sprite-selector-item/sprite-selector-item.css
@@ -1,4 +1,5 @@
 @import "../../css/units.css";
+@import "../../css/colors.css";
 
 /* @todo: refactor this class name, and component: `sprite-selector` to `sprite` */
 .sprite-selector-item {
@@ -17,22 +18,13 @@
     border-radius: $space;
     text-align: center;
     cursor: pointer;
-}
-
-.sprite-selector-item:hover {
-    border-width: 2px;
-    border-color: #1dacf4;
     transition: 0.25s ease-out;
 }
 
-/* @todo: refactor out descendent selectors into regular classes */
-.sprite-selector-item.is-selected {
+.sprite-selector-item:hover, .sprite-selector-item.is-selected {
     border-width: 2px;
-    border-color: #1dacf4;
-    transition: 0.25s ease-out;
-}
-.sprite-selector-item.is-selected .info-button {
-    display: block;
+    border-color: $motion-primary;
+    box-shadow: 0px 0px 0px 3px $motion-transparent;
 }
 
 .sprite-image {
@@ -44,7 +36,7 @@
     font-size: 0.625rem;
     margin: 0.15rem;
     user-select: none;
-    
+
     /*
         For truncating overflowing text gracefully
         Min-width is for a bug: https://css-tricks.com/flexbox-truncated-text
diff --git a/src/components/stage-selector/stage-selector.css b/src/components/stage-selector/stage-selector.css
index f3f01a5eb..cfe255a4f 100644
--- a/src/components/stage-selector/stage-selector.css
+++ b/src/components/stage-selector/stage-selector.css
@@ -1,6 +1,7 @@
 @import "../../css/units.css";
+@import "../../css/colors.css";
 
-$header-height: 2.5rem; /* @todo: half the SpriteInfo area header? */
+$header-height: calc(2rem - 2px); /* @todo: half the SpriteInfo area header? */
 
 .stage-selector {
     position: relative; /* for the child element border */
@@ -14,6 +15,13 @@ $header-height: 2.5rem; /* @todo: half the SpriteInfo area header? */
     border-width: 1px;
     border-style: solid;
     border-bottom: 0;
+    cursor: pointer;
+    transition: border-color 0.25s ease-out, box-shadow 0.25s ease-out;
+}
+
+.stage-selector:hover, .stage-selector.is-selected {
+    border-color: $motion-primary;
+    box-shadow: 0px 0px 0px 3px $motion-transparent;
 }
 
 .header {
@@ -22,7 +30,6 @@ $header-height: 2.5rem; /* @todo: half the SpriteInfo area header? */
     align-items: center;
     justify-content: center;
     height: $header-height;
-    padding: 0.5rem 0.5rem 0.5rem 0.25rem;
     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
     background-color: white;
     color: #575e75;
@@ -39,65 +46,45 @@ $header-height: 2.5rem; /* @todo: half the SpriteInfo area header? */
 
     /* @todo: make this a mixin for all UI text labels */
     user-select: none;
-    cursor: default;
 }
 
 .body {
     justify-content: space-around;
-    padding: $space;
     height: calc(100% - $header-height);
     background-color: #f9f9f9;
 }
 
 .count {
-    margin: 0 0 0.3rem 0;
-    padding: 0.15rem 0.5rem;
+    padding: 0.3rem 0.75rem;
     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
     font-size: 0.625rem;
-    font-weight: bold;
     color: #575e75;
-    background: #ededed;
+    background: white;
+    border: 1px solid #eaeaea;
     border-radius: 0.25rem;
     user-select: none;
 }
 
 .label {
-    margin: 0.4rem 0 0.25rem;
+    margin: 0.75rem 0 0.25rem;
     font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
-    font-size: 0.5rem;
-    font-weight: bold;
+    font-size: 0.6rem;
     color: #575e75;
     user-select: none;
 }
 
-$border-width: 2px;
-
 .flex-wrapper {
     display: flex;
     flex-direction: column; /* makes rows */
     align-items: center;
     overflow: hidden;
-    background-color: white;
-    border-radius: calc($space / 2);
-    border-width: $border-width;
-    border-style: solid;
-    border-color: #e9eef2;
-    cursor: pointer;
-    transition: border-color 0.1s ease-out;
-}
-
-.flex-wrapper:hover {
-    border-color: #1dacf4;
-}
-
-.flex-wrapper.is-selected {
-    border-color: #1dacf4;
 }
 
 .costume-canvas {
     display: block;
     width: 100%;
     user-select: none;
+    border-bottom: 1px solid #eaeaea;
 }
 
 .add-button {
diff --git a/src/components/stage-selector/stage-selector.jsx b/src/components/stage-selector/stage-selector.jsx
index ec5fbb36d..5739899f8 100644
--- a/src/components/stage-selector/stage-selector.jsx
+++ b/src/components/stage-selector/stage-selector.jsx
@@ -28,7 +28,9 @@ const StageSelector = props => {
     } = props;
     return (
         <Box
-            className={styles.stageSelector}
+            className={classNames(styles.stageSelector, {
+                [styles.isSelected]: selected
+            })}
             onClick={onClick}
             {...componentProps}
         >
@@ -37,10 +39,7 @@ const StageSelector = props => {
             </div>
             <div className={styles.body}>
                 <div
-                    className={classNames({
-                        [styles.flexWrapper]: true,
-                        [styles.isSelected]: selected
-                    })}
+                    className={styles.flexWrapper}
                 >
                     {url ? (
                         <CostumeCanvas
@@ -50,7 +49,13 @@ const StageSelector = props => {
                             width={56}
                         />
                     ) : null}
-                    <div className={styles.label}>Backdrops</div>
+                    <div className={styles.label}>
+                        <FormattedMessage
+                            defaultMessage="Backdrops"
+                            description="Label for the backdrops in the stage selector"
+                            id="stageSelector.backdrops"
+                        />
+                    </div>
                     <div className={styles.count}>{backdropCount}</div>
                 </div>
                 <IconButton
diff --git a/src/css/colors.css b/src/css/colors.css
index 45258f13a..bde9f339f 100644
--- a/src/css/colors.css
+++ b/src/css/colors.css
@@ -4,6 +4,7 @@ $ui-background-blue: #e8edf1;
 
 $motion-primary: #4C97FF;
 $motion-tertiary: #3373CC;
+$motion-transparent: rgba(76, 151, 255, 0.25);
 
 $red-primary: #FF661A;
 $red-tertiary: #E64D00;
-- 
GitLab