diff --git a/package-lock.json b/package-lock.json
index 5a6627281..9c84ca3dc 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -101,9 +101,9 @@
"optional": true
},
"glob": {
- "version": "7.1.6",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
- "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+ "version": "7.1.7",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
+ "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
"dev": true,
"requires": {
"fs.realpath": "^1.0.0",
@@ -503,9 +503,9 @@
}
},
"electron-to-chromium": {
- "version": "1.3.726",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.726.tgz",
- "integrity": "sha512-dw7WmrSu/JwtACiBzth8cuKf62NKL1xVJuNvyOg0jvruN/n4NLtGYoTzciQquCPNaS2eR+BT5GrxHbslfc/w1w==",
+ "version": "1.3.727",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.727.tgz",
+ "integrity": "sha512-Mfz4FIB4FSvEwBpDfdipRIrwd6uo8gUDoRDF4QEYb4h4tSuI3ov594OrjU6on042UlFHouIJpClDODGkPcBSbg==",
"dev": true
},
"semver": {
@@ -1368,27 +1368,10 @@
}
}
},
- "@formatjs/ecma402-abstract": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.7.0.tgz",
- "integrity": "sha512-0IQF4oDZdO8ruyrNJZuRle3F/YiGgRwTNrZyMI1N1X8GERZusOrXU9Stw+j/lyyfDWaJK44b+Qnri/qfLPCtGQ==",
- "dev": true,
- "requires": {
- "tslib": "^2.1.0"
- },
- "dependencies": {
- "tslib": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz",
- "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==",
- "dev": true
- }
- }
- },
"@formatjs/intl-getcanonicallocales": {
- "version": "1.5.9",
- "resolved": "https://registry.npmjs.org/@formatjs/intl-getcanonicallocales/-/intl-getcanonicallocales-1.5.9.tgz",
- "integrity": "sha512-bO0J3IaamFM3rU7noXo1bWSmPA8xuAL8NPk+k5Dy08ehiu/STT3sN+6DGLEvRCpb465CpjUWGCNknDFIcdu9hA==",
+ "version": "1.5.10",
+ "resolved": "https://registry.npmjs.org/@formatjs/intl-getcanonicallocales/-/intl-getcanonicallocales-1.5.10.tgz",
+ "integrity": "sha512-tFqGxZ9HkAzphupybyCKdWHzL1ge/sY8TtzEK57Hs3RCxrv/y+VxIPrE+Izw2oCFowQBz76cyi0zT6PjHuWArA==",
"dev": true,
"requires": {
"cldr-core": "38",
@@ -1404,21 +1387,21 @@
}
},
"@formatjs/intl-locale": {
- "version": "2.4.23",
- "resolved": "https://registry.npmjs.org/@formatjs/intl-locale/-/intl-locale-2.4.23.tgz",
- "integrity": "sha512-5G0SjOsVxmX79dPaYk6KWxtdQ18UNK+E2JtAXvGxP8rSMqbJ/7cpDg95CU+YBXVKn6pRWefwqBsbjT5l+kK3yQ==",
+ "version": "2.4.24",
+ "resolved": "https://registry.npmjs.org/@formatjs/intl-locale/-/intl-locale-2.4.24.tgz",
+ "integrity": "sha512-+JOwvBRFS/GFuJlWiWbfAzBng0A+ANoGV1LRseXK+4uzp4Sn35GD8M/dfgU1lp2R2dTWpYie2yyoHe4k4aHF6w==",
"dev": true,
"requires": {
- "@formatjs/ecma402-abstract": "1.7.0",
- "@formatjs/intl-getcanonicallocales": "1.5.9",
+ "@formatjs/ecma402-abstract": "1.7.1",
+ "@formatjs/intl-getcanonicallocales": "1.5.10",
"cldr-core": "38",
"tslib": "^2.1.0"
},
"dependencies": {
"@formatjs/ecma402-abstract": {
- "version": "1.7.0",
- "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.7.0.tgz",
- "integrity": "sha512-0IQF4oDZdO8ruyrNJZuRle3F/YiGgRwTNrZyMI1N1X8GERZusOrXU9Stw+j/lyyfDWaJK44b+Qnri/qfLPCtGQ==",
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.7.1.tgz",
+ "integrity": "sha512-FjewVLB2DVEVCvvC7IMffzXVhysvi442i6ed0H7qcrT6xtUpO4vr0oZgpOmsv6D9I4Io0GVebIuySwteS/k3gg==",
"dev": true,
"requires": {
"tslib": "^2.1.0"
@@ -1433,15 +1416,24 @@
}
},
"@formatjs/intl-pluralrules": {
- "version": "4.0.17",
- "resolved": "https://registry.npmjs.org/@formatjs/intl-pluralrules/-/intl-pluralrules-4.0.17.tgz",
- "integrity": "sha512-SOX7lRrM1DQXZSzqoCztT+Gc6lnnoqGAVrX/YivQ7J8miPfxN8vgZhZN0MiEGPSLV0HJdO+AA+Xu0hUNJPlpnQ==",
+ "version": "4.0.18",
+ "resolved": "https://registry.npmjs.org/@formatjs/intl-pluralrules/-/intl-pluralrules-4.0.18.tgz",
+ "integrity": "sha512-qRFITPsNoeXfsiGc97pp8mVgqcC7aQNuXsiJjY9LpXVTkYNfjUP4ZpbYXflM4xoWCXMJNz3ilsrQhZWXy9td5g==",
"dev": true,
"requires": {
- "@formatjs/ecma402-abstract": "1.7.0",
+ "@formatjs/ecma402-abstract": "1.7.1",
"tslib": "^2.1.0"
},
"dependencies": {
+ "@formatjs/ecma402-abstract": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.7.1.tgz",
+ "integrity": "sha512-FjewVLB2DVEVCvvC7IMffzXVhysvi442i6ed0H7qcrT6xtUpO4vr0oZgpOmsv6D9I4Io0GVebIuySwteS/k3gg==",
+ "dev": true,
+ "requires": {
+ "tslib": "^2.1.0"
+ }
+ },
"tslib": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz",
@@ -1451,15 +1443,24 @@
}
},
"@formatjs/intl-relativetimeformat": {
- "version": "8.1.7",
- "resolved": "https://registry.npmjs.org/@formatjs/intl-relativetimeformat/-/intl-relativetimeformat-8.1.7.tgz",
- "integrity": "sha512-S8OoqOwiSqU/T0umkjB2lZcyWS4Dh8sWd4m8V+MsSnraeijNho/wSXQhJAuHx0b2Xvnlddt7a5RwyUnLADUepA==",
+ "version": "8.1.8",
+ "resolved": "https://registry.npmjs.org/@formatjs/intl-relativetimeformat/-/intl-relativetimeformat-8.1.8.tgz",
+ "integrity": "sha512-MIVrsgG7hvYrnes6TxJLflXhhTuxIaWCIdf6p5Iv6HguTtDJqqAFOCNRCqUnYQeYcNbgIQBgLb0Kh7djS0GU+w==",
"dev": true,
"requires": {
- "@formatjs/ecma402-abstract": "1.7.0",
+ "@formatjs/ecma402-abstract": "1.7.1",
"tslib": "^2.1.0"
},
"dependencies": {
+ "@formatjs/ecma402-abstract": {
+ "version": "1.7.1",
+ "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-1.7.1.tgz",
+ "integrity": "sha512-FjewVLB2DVEVCvvC7IMffzXVhysvi442i6ed0H7qcrT6xtUpO4vr0oZgpOmsv6D9I4Io0GVebIuySwteS/k3gg==",
+ "dev": true,
+ "requires": {
+ "tslib": "^2.1.0"
+ }
+ },
"tslib": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz",
@@ -10518,9 +10519,9 @@
}
},
"handlebars": {
- "version": "4.7.6",
- "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz",
- "integrity": "sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==",
+ "version": "4.7.7",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz",
+ "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==",
"dev": true,
"requires": {
"minimist": "^1.2.5",
@@ -10543,9 +10544,9 @@
"dev": true
},
"uglify-js": {
- "version": "3.11.2",
- "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.11.2.tgz",
- "integrity": "sha512-G440NU6fewtnQftSgqRV1r2A5ChKbU1gqFCJ7I8S7MPpY/eZZfLGefaY6gUZYiWebMaO+txgiQ1ZyLDuNWJulg==",
+ "version": "3.13.5",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.13.5.tgz",
+ "integrity": "sha512-xtB8yEqIkn7zmOyS2zUNBsYCBRhDkvlNxMMY2smuJ/qA8NCHeQvKCF3i9Z4k8FJH4+PJvZRtMrPynfZ75+CSZw==",
"dev": true,
"optional": true
}
@@ -10814,9 +10815,9 @@
}
},
"hosted-git-info": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz",
- "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==",
+ "version": "2.8.9",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
"dev": true
},
"hsluv": {
@@ -18918,9 +18919,9 @@
},
"dependencies": {
"glob": {
- "version": "7.1.6",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
- "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
+ "version": "7.1.7",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz",
+ "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==",
"dev": true,
"requires": {
"fs.realpath": "^1.0.0",
@@ -20855,9 +20856,9 @@
}
},
"scratch-blocks": {
- "version": "0.1.0-prerelease.20210505033858",
- "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.1.0-prerelease.20210505033858.tgz",
- "integrity": "sha512-qsHsxVsXvB7cZnoLirkl+HRjj+X7VcJh9Rh7UX8JoMEJsfUfTRJfo3wSt7zv4iKx6EK/QIStQNs9AACSPVaA7Q==",
+ "version": "0.1.0-prerelease.20210509032512",
+ "resolved": "https://registry.npmjs.org/scratch-blocks/-/scratch-blocks-0.1.0-prerelease.20210509032512.tgz",
+ "integrity": "sha512-rgQrbtSXxCzuuiMdyX/HGhiP8eOX8yDG9ncML9ykgnaDF8ZnfflLD201GwfyvOv3D51Nu6w2Ktg0PcF3ZqnH2Q==",
"dev": true,
"requires": {
"exports-loader": "0.6.3",
@@ -20865,9 +20866,9 @@
}
},
"scratch-gui": {
- "version": "0.1.0-prerelease.20210505040706",
- "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-0.1.0-prerelease.20210505040706.tgz",
- "integrity": "sha512-KyHm41UAlIKomysMzXqKMkibs6WsibC2jCX/AbsYR47UNtFJLhjvUyJKv05EbGo9GAr/b1uRglTRtiXA8SWsvw==",
+ "version": "0.1.0-prerelease.20210509040505",
+ "resolved": "https://registry.npmjs.org/scratch-gui/-/scratch-gui-0.1.0-prerelease.20210509040505.tgz",
+ "integrity": "sha512-mXyQxytn3tnes2wiuNG9vnSFQ4anoDxkTHMLS2Xro91M5xP+KVgaR+60yWQegsBnz/8LAA+HTlKadHhr/t+PLQ==",
"dev": true,
"requires": {
"arraybuffer-loader": "^1.0.6",
@@ -20918,8 +20919,8 @@
"redux": "3.7.2",
"redux-throttle": "0.1.1",
"scratch-audio": "0.1.0-prerelease.20200528195344",
- "scratch-blocks": "0.1.0-prerelease.20210505033858",
- "scratch-l10n": "3.11.20210504031549",
+ "scratch-blocks": "0.1.0-prerelease.20210509032512",
+ "scratch-l10n": "3.11.20210509031637",
"scratch-paint": "0.2.0-prerelease.20210407203313",
"scratch-render": "0.1.0-prerelease.20210325231800",
"scratch-render-fonts": "1.0.0-prerelease.20210401210003",
@@ -21311,9 +21312,9 @@
"dev": true
},
"scratch-l10n": {
- "version": "3.11.20210504031549",
- "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.11.20210504031549.tgz",
- "integrity": "sha512-R6CfX0p8LegrsqKm5s+8cSlvzg8Ijma4zGOet22yVtJbtSEcmFmi3LbwV5cKKPjoDWobZMYUhrazmlBLswKPQw==",
+ "version": "3.11.20210509031637",
+ "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.11.20210509031637.tgz",
+ "integrity": "sha512-MtO6InGeR6WCtJRlPSnnphWQGwv1bLZ8m7tWczF3kQeZopESq7iy36TkHdPioQ9NnptCtQw1xgeyVakuKbNGxg==",
"dev": true,
"requires": {
"@babel/cli": "^7.1.2",
@@ -21400,9 +21401,9 @@
}
},
"scratch-l10n": {
- "version": "3.11.20210505031459",
- "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.11.20210505031459.tgz",
- "integrity": "sha512-1geGseNJ95UIyKaOWYIkdE0V2mSUxcrGR/wUE86727FqwYdo19nJyaXvzcv2mWWGdvDu3eV7ei3raD1ZXAniSA==",
+ "version": "3.11.20210510031549",
+ "resolved": "https://registry.npmjs.org/scratch-l10n/-/scratch-l10n-3.11.20210510031549.tgz",
+ "integrity": "sha512-WeoSa4zxtOcAGeaASqVcJcZu/QWoWtHohsP71ICbNcBpcAqnpPV1AhdGNrOQyiwuj0Vy/6CBuH9QYpS0IF+AkA==",
"dev": true,
"requires": {
"@babel/cli": "^7.1.2",
@@ -25851,9 +25852,9 @@
"dev": true
},
"ua-parser-js": {
- "version": "0.7.20",
- "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.20.tgz",
- "integrity": "sha512-8OaIKfzL5cpx8eCMAhhvTlft8GYF8b2eQr6JkCyVdrgjcytyOmPCXrqXFcUnhonRpLlh5yxEZVohm6mzaowUOw==",
+ "version": "0.7.28",
+ "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.28.tgz",
+ "integrity": "sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g==",
"dev": true
},
"uglify-js": {
diff --git a/package.json b/package.json
index 1b954f597..01ffec3d7 100644
--- a/package.json
+++ b/package.json
@@ -126,7 +126,7 @@
"redux-mock-store": "^1.2.3",
"redux-thunk": "2.0.1",
"sass-loader": "6.0.6",
- "scratch-gui": "0.1.0-prerelease.20210505040706",
+ "scratch-gui": "0.1.0-prerelease.20210509040505",
"scratch-l10n": "latest",
"selenium-webdriver": "3.6.0",
"slick-carousel": "1.6.0",
diff --git a/src/_colors.scss b/src/_colors.scss
index 5401a6541..495c84469 100644
--- a/src/_colors.scss
+++ b/src/_colors.scss
@@ -26,6 +26,7 @@ $background-color: hsla(0, 0, 99, 1); //#FDFDFD
/* 3.0 colors */
/* Using www naming convention for now, should be consistent with gui */
$ui-aqua: hsla(163, 85, 40, 1); // #0FBD8C Extension Primary
+$ui-aqua-dark: hsla(163, 85, 30, 1); // #0B8E69 Extension Aqua 3
$ui-purple: hsla(260, 100, 70, 1); // #9966FF Looks Primary
$ui-purple-dark: hsla(260, 60, 60, 1); // #774DCB Looks Secondary
$ui-magenta: hsla(300, 53%, 60%, 1); /* #CF63CF Sounds Primary */
diff --git a/src/components/forms/button.jsx b/src/components/forms/button.jsx
index b5b97e39a..39bab920a 100644
--- a/src/components/forms/button.jsx
+++ b/src/components/forms/button.jsx
@@ -6,21 +6,38 @@ const React = require('react');
require('./button.scss');
const Button = props => {
- const classes = classNames('button', props.className);
+ const classes = classNames('button', props.className, {'close-button': props.isCloseType});
return (
);
};
Button.propTypes = {
children: PropTypes.node,
- className: PropTypes.string
+ className: PropTypes.string,
+ isCloseType: PropTypes.bool
+};
+
+Button.defaultProps = {
+ className: '',
+ isCloseType: false
};
module.exports = Button;
diff --git a/src/components/forms/button.scss b/src/components/forms/button.scss
index 3a88a61f4..a09931f5b 100644
--- a/src/components/forms/button.scss
+++ b/src/components/forms/button.scss
@@ -53,3 +53,22 @@ $pass-bg: $ui-aqua;
margin-right: -.25rem;
}
}
+
+.close-button {
+ padding: 0;
+
+ position: absolute;
+ top: 0.5rem;
+ right: 0.5rem;
+ border-radius: 1rem;
+ background-color: $active-gray;
+ cursor: pointer;
+ width: 2rem;
+ height: 2rem;
+ text-align: center;
+ line-height: 2rem;
+}
+
+.close-button img {
+ padding-top: 0.5rem;
+}
diff --git a/src/l10n.json b/src/l10n.json
index 48859e7b4..35ebb79e6 100644
--- a/src/l10n.json
+++ b/src/l10n.json
@@ -248,6 +248,7 @@
"thumbnail.by": "by",
"report.error": "Something went wrong when trying to send your message. Please try again.",
"report.project": "Report Project",
+ "report.studio": "Report Studio",
"report.projectInstructions": "When you send a report, it lets the Scratch Team know about projects that break the {CommunityGuidelinesLink}. Does something in this project break the {CommunityGuidelinesLink}? If you think it does, please tell us more.",
"report.CommunityGuidelinesLinkText": "Scratch Community Guidelines",
"report.reasonPlaceHolder": "Select a reason",
diff --git a/src/redux/session.js b/src/redux/session.js
index 8f3ac6bc8..a9886ebfe 100644
--- a/src/redux/session.js
+++ b/src/redux/session.js
@@ -12,7 +12,7 @@ const Types = keyMirror({
SET_STATUS: null
});
-const banWhitelistPaths = [
+const banGoodListPaths = [
'/accounts/banned-response',
'/community_guidelines',
'/privacy_policy',
@@ -68,7 +68,7 @@ const handleSessionResponse = (dispatch, body) => {
if (
body.user &&
body.user.banned &&
- banWhitelistPaths.indexOf(window.location.pathname) === -1
+ banGoodListPaths.every(goodPath => window.location.pathname.indexOf(goodPath) === -1)
) {
window.location = '/accounts/banned-response/';
return;
diff --git a/src/redux/studio.js b/src/redux/studio.js
index bfe677399..29cfb39b1 100644
--- a/src/redux/studio.js
+++ b/src/redux/studio.js
@@ -91,6 +91,7 @@ const selectStudioDescription = state => state.studio.description;
const selectStudioImage = state => state.studio.image;
const selectStudioOpenToAll = state => state.studio.openToAll;
const selectStudioCommentsAllowed = state => state.studio.commentsAllowed;
+const selectStudioLoadFailed = state => state.studio.infoStatus === Status.ERROR;
const selectIsFetchingInfo = state => state.studio.infoStatus === Status.FETCHING;
const selectIsFollowing = state => state.studio.following;
const selectIsFetchingRoles = state => state.studio.rolesStatus === Status.FETCHING;
@@ -157,6 +158,7 @@ module.exports = {
selectStudioImage,
selectStudioOpenToAll,
selectStudioCommentsAllowed,
+ selectStudioLoadFailed,
selectIsFetchingInfo,
selectIsFetchingRoles,
selectIsFollowing
diff --git a/src/views/developers/developers.jsx b/src/views/developers/developers.jsx
index 858fde3cb..bf99abf1c 100644
--- a/src/views/developers/developers.jsx
+++ b/src/views/developers/developers.jsx
@@ -363,9 +363,9 @@ const Developers = () => (
githubLink: (
GitHub
),
- emailLink: (
-
- help@scratch.mit.edu
+ contactUsLink: (
+
+
+