diff --git a/client/images/information.svg b/client/images/information.svg
new file mode 100644
index 00000000..e3642f56
--- /dev/null
+++ b/client/images/information.svg
@@ -0,0 +1,11 @@
+
+
+
+
diff --git a/client/modules/IDE/components/Preferences.jsx b/client/modules/IDE/components/Preferences.jsx
index a15a6832..eaafe147 100644
--- a/client/modules/IDE/components/Preferences.jsx
+++ b/client/modules/IDE/components/Preferences.jsx
@@ -8,6 +8,7 @@ import { Tab, Tabs, TabList, TabPanel } from 'react-tabs';
const plusUrl = require('../../../images/plus.svg');
const minusUrl = require('../../../images/minus.svg');
const beepUrl = require('../../../sounds/audioAlert.mp3');
+const infoUrl = require('../../../images/information.svg');
class Preferences extends React.Component {
constructor(props) {
@@ -88,6 +89,17 @@ class Preferences extends React.Component {
checked={this.props.theme === 'dark'}
/>
+ this.props.setTheme('contrast')}
+ aria-label="high contrast theme on"
+ name="high contrast theme"
+ id="high-contrast-theme-on"
+ className="preference__radio-button"
+ value="contrast"
+ checked={this.props.theme === 'contrast'}
+ />
+
@@ -205,26 +217,31 @@ class Preferences extends React.Component {
-
-
+ {/*
Add a p5.js or an external library
- Add a script library resource field
+ */}
+
@@ -321,14 +338,8 @@ Preferences.propTypes = {
setLintWarning: PropTypes.func.isRequired,
// openTab: PropTypes.func.isRequired,
theme: PropTypes.string.isRequired,
+ serveSecure: PropTypes.bool.isRequired,
setServeSecure: PropTypes.func.isRequired,
- currentUser: PropTypes.string,
- project: PropTypes.shape({
- name: PropTypes.string.isRequired,
- isEditingName: PropTypes.bool,
- id: PropTypes.string,
- serveSecure: PropTypes.bool,
- }).isRequired,
setTheme: PropTypes.func.isRequired
};
diff --git a/client/modules/IDE/pages/IDEView.jsx b/client/modules/IDE/pages/IDEView.jsx
index 0794765d..a9dac23c 100644
--- a/client/modules/IDE/pages/IDEView.jsx
+++ b/client/modules/IDE/pages/IDEView.jsx
@@ -272,6 +272,8 @@ class IDEView extends React.Component {
setSoundOutput={this.props.setSoundOutput}
theme={this.props.preferences.theme}
setTheme={this.props.setTheme}
+ serveSecure={this.props.project.serveSecure}
+ setServeSecure={this.props.setServeSecure}
/>
}
diff --git a/client/styles/components/_copyable-input.scss b/client/styles/components/_copyable-input.scss
index f19bfe61..35b36db7 100644
--- a/client/styles/components/_copyable-input.scss
+++ b/client/styles/components/_copyable-input.scss
@@ -40,7 +40,7 @@
color: getThemifyVariable('button-hover-color');
}
font-family: Montserrat, sans-serif;
- font-size: #{14 / $base-font-size}rem;
+ font-size: #{12 / $base-font-size}rem;
}
.tooltipped-n::before,
diff --git a/client/styles/components/_overlay.scss b/client/styles/components/_overlay.scss
index de02a35f..6932b4ae 100644
--- a/client/styles/components/_overlay.scss
+++ b/client/styles/components/_overlay.scss
@@ -29,7 +29,7 @@
.overlay__header {
display: flex;
justify-content: space-between;
- padding: #{30 / $base-font-size}rem #{20 / $base-font-size}rem #{30 / $base-font-size}rem #{20 / $base-font-size}rem;
+ padding: #{20 / $base-font-size}rem;
flex: 1 0 auto;
}
diff --git a/client/styles/components/_preferences.scss b/client/styles/components/_preferences.scss
index 96b9340c..15daab85 100644
--- a/client/styles/components/_preferences.scss
+++ b/client/styles/components/_preferences.scss
@@ -1,59 +1,59 @@
.preferences {
- width: 100%;
- max-width: #{640 / $base-font-size}rem;
- z-index: 9999;
- padding: #{14 / $base-font-size}rem #{20 / $base-font-size}rem #{2 / $base-font-size}rem #{20 / $base-font-size}rem ;
- display: flex;
- flex-direction: column;
- @include themify() {
- background-color: getThemifyVariable('editor-gutter-color');
- }
- outline: none;
+ width: 100%;
+ min-width: #{640 / $base-font-size}rem;
+ max-width: 100%;
+ min-height: #{460 / $base-font-size}rem;
+ max-height: 100%;
+ z-index: 9999;
+ padding: 0 #{20 / $base-font-size}rem #{2 / $base-font-size}rem #{20 / $base-font-size}rem ;
+ display: flex;
+ flex-direction: column;
+ outline: none;
}
.preferences__exit-button {
- @include icon();
- padding-top: #{5 / $base-font-size}rem;
- margin-right: #{-6 / $base-font-size}rem;
+ @include icon();
+ padding-top: #{5 / $base-font-size}rem;
+ margin-right: #{-6 / $base-font-size}rem;
}
.preference__minus-button,
.preference__plus-button {
- @include themify() {
- @extend %preferences-button;
- width: #{32 / $base-font-size}rem;
- height: #{32 / $base-font-size}rem;
- margin-left: #{6 / $base-font-size}rem;
- margin-right: #{10 / $base-font-size}rem;
- line-height: #{40 / $base-font-size}rem;
- & svg {
- width: #{10 / $base-font-size}rem;
- }
- }
+ @include themify() {
+ @extend %preferences-button;
+ width: #{32 / $base-font-size}rem;
+ height: #{32 / $base-font-size}rem;
+ margin-left: #{6 / $base-font-size}rem;
+ margin-right: #{10 / $base-font-size}rem;
+ line-height: #{40 / $base-font-size}rem;
+ & svg {
+ width: #{10 / $base-font-size}rem;
+ }
+ }
}
.serve__over__https {
- text-align: center;
- margin-left: #{9 / $base-font-size}rem;
- font-width: #{108 / $base-font-size}rem;
- font-height: #{15 / $base-font-size}rem;
- font-family: Montserrat;
- font-size: #{12 / $base-font-size}rem;
- margin-top: #{2 / $base-font-size}rem;
+ text-align: center;
+ margin-left: #{9 / $base-font-size}rem;
+ font-width: #{108 / $base-font-size}rem;
+ font-height: #{15 / $base-font-size}rem;
+ font-family: Montserrat;
+ font-size: #{12 / $base-font-size}rem;
+ margin-top: #{2 / $base-font-size}rem;
}
.preferences__heading {
- display: flex;
- flex-direction: row;
- justify-content: space-between;
- @include themify() {
- color: getThemifyVariable('heading-text-color');
- }
+ display: flex;
+ flex-direction: row;
+ justify-content: space-between;
+ @include themify() {
+ color: getThemifyVariable('heading-text-color');
+ }
}
.preferences__title{
- width: #{90 / $base-font-size}rem;
- height: #{25 / $base-font-size}rem;
+ width: #{90 / $base-font-size}rem;
+ height: #{25 / $base-font-size}rem;
font-family: Montserrat;
font-size: #{21 / $base-font-size}rem;
font-weight: bold;
@@ -61,188 +61,204 @@
}
.preference__subheadings {
- display: flex;
- flex-wrap: wrap;
- padding-bottom: #{0.1 / $base-font-size}rem;
- @include themify() {
- border-bottom: 1px solid getThemifyVariable('button-border-color');
- }
+ display: flex;
+ flex-wrap: wrap;
+ padding-bottom: #{0.1 / $base-font-size}rem;
+ @include themify() {
+ border-bottom: 1px solid getThemifyVariable('button-border-color');
+ }
}
.preference {
- display: flex;
- flex-wrap: wrap;
- padding-bottom: #{12 / $base-font-size}rem;
- & + & {
- @include themify() {
- border-top: 1px dashed getThemifyVariable('button-border-color');
- }
- }
+ display: flex;
+ flex-wrap: wrap;
+ padding-bottom: #{12 / $base-font-size}rem;
+ & + & {
+ @include themify() {
+ border-top: 1px dashed getThemifyVariable('button-border-color');
+ }
+ }
}
.preference__title {
- width: 100%;
- font-size: #{16 / $base-font-size}rem;
- margin-top: #{13 / $base-font-size}rem;
- margin-bottom: #{7 / $base-font-size}rem;
- @include themify() {
- color: getThemifyVariable('heading-text-color');
- }
+ width: 100%;
+ font-size: #{16 / $base-font-size}rem;
+ margin-top: #{13 / $base-font-size}rem;
+ margin-bottom: #{7 / $base-font-size}rem;
+ @include themify() {
+ color: getThemifyVariable('heading-text-color');
+ }
}
.preference__subtitle {
- @include themify() {
- color: getThemifyVariable('inactive-text-color');
- }
- width: 100%;
- margin-bottom: #{10 / $base-font-size}rem;
- margin-top: 0;
+ @include themify() {
+ color: getThemifyVariable('inactive-text-color');
+ }
+ width: 100%;
+ margin-bottom: #{10 / $base-font-size}rem;
+ margin-top: 0;
}
.preference__value {
- @include themify() {
- border: #{1 / $base-font-size}rem solid getThemifyVariable('button-border-color');
- background-color: getThemifyVariable('button-background-color');
- color: getThemifyVariable('input-text-color');
- }
- text-align: center;
- border-radius: 0%;
- outline: none;
- width: #{44 / $base-font-size}rem;
- height: #{40 / $base-font-size}rem;
- margin: 0 #{26 / $base-font-size}rem;
- padding: 0;
- font-size: #{16 / $base-font-size}rem;
- font-family: Inconsolata;
+ @include themify() {
+ border: #{1 / $base-font-size}rem solid getThemifyVariable('button-border-color');
+ background-color: getThemifyVariable('button-background-color');
+ color: getThemifyVariable('input-text-color');
+ }
+ text-align: center;
+ border-radius: 0%;
+ outline: none;
+ width: #{44 / $base-font-size}rem;
+ height: #{40 / $base-font-size}rem;
+ margin: 0 #{26 / $base-font-size}rem;
+ padding: 0;
+ font-size: #{16 / $base-font-size}rem;
+ font-family: Inconsolata;
}
.preference__label {
- @include themify() {
- color: getThemifyVariable('inactive-text-color');
- &:hover {
- color: getThemifyVariable('primary-text-color');
- }
+ @include themify() {
+ color: getThemifyVariable('inactive-text-color');
+ &:hover {
+ color: getThemifyVariable('primary-text-color');
+ }
- }
- margin: #{-15 / $base-font-size}rem 0 0 #{-5 / $base-font-size}rem;
- font-size: #{9 / $base-font-size}rem;
- width: #{44 / $base-font-size}rem;
+ }
+ margin: #{-15 / $base-font-size}rem 0 0 #{-5 / $base-font-size}rem;
+ font-size: #{9 / $base-font-size}rem;
+ width: #{44 / $base-font-size}rem;
}
.react-tabs__tab--selected {
- @include themify() {
- /*color: getThemifyVariable('primary-text-color');*/
- border-bottom: #{4 / $base-font-size}rem solid getThemifyVariable('button-background-hover-color');
- color: pink;
- }
+ @include themify() {
+ border-bottom: #{4 / $base-font-size}rem solid getThemifyVariable('button-background-hover-color');
+ }
}
.react-tabs__tab--selected .preference__subheading {
- @include themify() {
- color: black !important;
- }
+ @include themify() {
+ color: getThemifyVariable('primary-text-color');
+ }
}
.react-tabs__tab {
- width: #{110 / $base-font-size}rem;
- text-align: center;
- color: black;
+ text-align: center;
+ color: black;
+ display: flex;
+ align-items: center;
+ border-bottom: #{4 / $base-font-size}rem solid transparent;
+ & + & {
+ margin-left: #{45 / $base-font-size}rem;
+ }
}
.preference__subheading {
- @include themify() {
- color: getThemifyVariable('inactive-text-color');
- &:hover, &:focus{
- color: getThemifyVariable('primary-text-color');
- cursor: pointer;
- }
- &:focus {
- color: getThemifyVariable('primary-text-color');
- cursor: pointer;
- }
- }
- font-size: #{12 / $base-font-size}rem;
- height: #{25 / $base-font-size}rem;
- margin-left: #{5 / $base-font-size}rem;
- margin-bottom: #{0.1 / $base-font-size}rem;
- margin-right: #{60 / $base-font-size}rem;
- padding-right: #{10 / $base-font-size}rem;
- font-family: Montserrat;
- width: 100%;
+ @include themify() {
+ color: getThemifyVariable('inactive-text-color');
+ &:hover, &:focus{
+ color: getThemifyVariable('primary-text-color');
+ cursor: pointer;
+ }
+ &:focus {
+ color: getThemifyVariable('primary-text-color');
+ cursor: pointer;
+ }
+ }
+ font-size: #{12 / $base-font-size}rem;
+ height: #{20 / $base-font-size}rem;
+ font-family: Montserrat;
+ width: 100%;
+ margin: 0;
+ padding: 0 #{5 /$base-font-size}rem;
}
.preference__vertical-list {
- display: flex;
- flex-direction: column;
- width: #{44 / $base-font-size}rem;
- padding-left: #{25 / $base-font-size}rem;
+ display: flex;
+ flex-direction: column;
+ width: #{44 / $base-font-size}rem;
+ padding-left: #{25 / $base-font-size}rem;
}
.preference__add__resource {
- width: #{601 / $base-font-size}rem;
- height: #{100 / $base-font-size}rem;
- font-family: Montserrat;
- font-size: #{14 / $base-font-size}rem;
- line-height: 1.43;
- text-align: left;
- margin-left: #{5 / $base-font-size}rem;
- margin-top: #{40 / $base-font-size}rem;
- margin-bottom: #{10 / $base-font-size}rem;
- @include themify() {
- color: getThemifyVariable('inactive-text-color');
- border-bottom: 1px dashed getThemifyVariable('button-border-color');
- }
+ font-family: Montserrat;
+ font-size: #{14 / $base-font-size}rem;
+ line-height: 1.43;
+ text-align: left;
+ margin-left: #{5 / $base-font-size}rem;
+ margin-top: #{40 / $base-font-size}rem;
+ margin-bottom: #{10 / $base-font-size}rem;
+ @include themify() {
+ color: getThemifyVariable('inactive-text-color');
+ border-bottom: 1px dashed getThemifyVariable('button-border-color');
+ }
}
.preference__radio-button {
- @extend %hidden-element;
+ @extend %hidden-element;
}
.preference__option {
- @include themify() {
- @extend %preference-option;
- padding-right: #{44 / $base-font-size}rem;
- }
- display: flex;
- flex-wrap: wrap;
- flex-direction: row;
- margin-top: #{10 / $base-font-size}rem;
- width: #{50 / $base-font-size}rem;
- margin-left: #{5 / $base-font-size}rem;
+ @include themify() {
+ @extend %preference-option;
+ padding-right: #{25 / $base-font-size}rem;
+ }
+ display: flex;
+ flex-wrap: wrap;
+ flex-direction: row;
+ margin-top: #{10 / $base-font-size}rem;
+ margin-left: #{5 / $base-font-size}rem;
}
.preference__option:last-child {
- padding-right: 0;
+ padding-right: 0;
}
.preference__preview-button {
- @include themify() {
- @extend %preference-option;
- &:hover {
- color: getThemifyVariable('button-background-hover-color');
- }
- }
- margin-top: #{7 / $base-font-size}rem;
- margin-left: #{30 / $base-font-size}rem;
+ @include themify() {
+ @extend %preference-option;
+ &:hover {
+ color: getThemifyVariable('button-background-hover-color');
+ }
+ }
+ margin-top: #{7 / $base-font-size}rem;
+ margin-left: #{30 / $base-font-size}rem;
}
.preference__options {
- display: flex;
+ display: flex;
}
.preference__radio-button:checked + .preference__option {
- @include themify() {
- //for some reason this won't work for getThemifyVariable
- color: map-get($theme-map, 'primary-text-color');
- }
+ @include themify() {
+ //for some reason this won't work for getThemifyVariable
+ color: map-get($theme-map, 'primary-text-color');
+ }
}
.preference--hidden {
- @extend %hidden-element;
+ @extend %hidden-element;
}
.preference__option.preference__canvas:not(:last-child) {
- padding-right: #{14 / $base-font-size}rem;
+ padding-right: #{14 / $base-font-size}rem;
+}
+
+.preference__serve-secure {
+ display: flex;
+ align-items: center;
+}
+
+.serve-secure__icon {
+ @include icon();
+ & svg {
+ height: #{24 / $base-font-size}rem;
+ width: #{24 / $base-font-size}rem;
+ }
+}
+
+.serve-secture__tooltip:after {
+ text-align: left;
+ font-size: #{12 / $base-font-size}rem;
}