Newer
Older
Steven Dale
committed
.page-wrapper {
height: 100%;
}
.body-wrapper {
Steven Dale
committed
height: calc(100% - $menu-bar-height);
Steven Dale
committed
}
Steven Dale
committed
.flex-wrapper {
display: flex;
/*
Make 2 columns:
a) for the blocks + workspace panes, and
b) for combined stage menu + stage + sprite/stage selectors
Steven Dale
committed
*/
Steven Dale
committed
height: 100%;
/*
Stop scrollbar popping in and out from scratch-blocks border issue
https://github.com/LLK/scratch-gui/issues/318
*/
overflow-y: hidden;
Steven Dale
committed
}
.editor-wrapper {
flex-basis: 600px;
flex-grow: 1;
flex-shrink: 0;
Steven Dale
committed
display: flex;
flex-direction: column;
}
.tab-list {
height: $stage-menu-height;
width: 250px; /* Match width of the toolbox */
display: flex;
align-items: flex-end;
flex-shrink: 0;
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-weight: 500;
font-size: 0.80rem;
flex-grow: 1;
height: 80%;
border-radius: 1rem 1rem 0 0;
padding: 0.125rem 1.25rem 0;
font-size: 0.75rem;
background-color: $ui-tertiary;
color: $text-primary-transparent;
display: flex;
justify-content: center;
align-items: center;
[dir="ltr"] .tab {
margin-left: -0.5rem;
}
[dir="rtl"] .tab {
margin-right: -0.5rem;
}
[dir="ltr"] .tab:nth-of-type(1) {
margin-left: 0;
}
[dir="rtl"] .tab:nth-of-type(1) {
margin-right: 0;
}
/* Use z-indices to force left-on-top for tabs */
.tab:nth-of-type(1) {
z-index: 3;
}
.tab:nth-of-type(2) {
z-index: 2;
}
.tab:nth-of-type(3) {
.tab:hover {
background-color: $ui-primary;
}
.tab.is-selected {
color: $motion-primary;
z-index: 4; /* Make sure selected is always above */
}
.tab img {
filter: grayscale(100%);
}
[dir="ltr"] .tab img {
margin-right: 0.125rem;
}
[dir="rtl"] .tab img {
margin-left: 0.125rem;
/* mirror blocks and sound tab icons */
[dir="rtl"] .tab:nth-of-type(1) img {
[dir="rtl"] .tab:nth-of-type(3) img {
transform: scaleX(-1);
}
.tab.is-selected img {
filter: none;
}
/* Tab style overrides from react-tabs */
.tab.is-selected:after {
display: none;
}
.tab.is-selected:focus {
outline: none;
box-shadow: none;
}
.tab.is-selected:focus:after {
display: none;
/* Body of the tabs */
Steven Dale
committed
flex-grow: 1;
display: flex;
flex-direction: column;
}
Steven Dale
committed
.tab-panel {
position: relative;
flex-grow: 1;
display: none;
}
.tab-panel.is-selected {
Steven Dale
committed
.blocks-wrapper {
flex-grow: 1;
position: relative;
Steven Dale
committed
}
.stage-and-target-wrapper {
Steven Dale
committed
Makes rows for children:
Steven Dale
committed
1) stage menu
2) stage
3) sprite/stage selectors
Only reason we need this, is so .targetWrapper, which holds the selectors,
Steven Dale
committed
goes to full vertical height of the window
*/
display: flex;
Ben Wheeler
committed
/* pad entire wrapper to the left and right; allow children to fill width */
padding-left: $space;
padding-right: $space;
.stage-and-target-wrapper.large {
/* Fix the max width to max large stage size (defined in layout_constants.js) + gutter size */
max-width: calc(480px + calc($space * 2));
Steven Dale
committed
.stage-and-target-wrapper.large-constrained {
/* Fix the max width to max largeConstrained stage size (defined in layout_constants.js) + gutter size */
max-width: calc(408px + calc($space * 2));
}
.stage-and-target-wrapper.small {
/* Fix the max width to max small stage size (defined in layout_constants.js) + gutter size */
max-width: calc(240px + calc($space * 2));
}
Steven Dale
committed
.target-wrapper {
Steven Dale
committed
flex-grow: 1;
flex-basis: 0;
Steven Dale
committed
For making the sprite-selector a scrollable pane
Steven Dale
committed
*/
/* TODO this also breaks the thermometer menu */
/* overflow: hidden; */
Steven Dale
committed
}
.extension-button-container {
background: $motion-primary;
border: 1px solid $motion-primary;
box-sizing: content-box; /* To match scratch-block vertical toolbox borders */
$fade-out-distance: 15px;
.extension-button-container:before {
content: "";
position: absolute;
top: calc(calc(-1 * $fade-out-distance) - 1px);
left: -1px;
background: linear-gradient(rgba(0, 0, 0, 0),rgba(0, 0, 0, 0.15));
height: $fade-out-distance;
width: calc(100% + 0.5px);
}
background: none;
border: none;
outline: none;
width: 100%;
height: 100%;
cursor: pointer;
.extension-button-icon {
width: 1.75rem;
height: 1.75rem;
}
[dir="rtl"] .extension-button-icon {
transform: scaleX(-1);
}
.extension-button > div {
margin-top: 0;
/* Sprite Selection Watermark */
.watermark {
position: absolute;
top: 1.25rem;
}
[dir="ltr"] .watermark {
right: 1.25rem;
}
[dir="rtl"] .watermark {
left: 1.25rem;
}
/* Menu */
.menu-bar-position {
position: relative;
z-index: $z-index-menu-bar;
}
/* Alerts */
.alerts-container {
width: 520px;
z-index: $z-index-alerts;
left: 0;
right: 0;
margin: auto;
position: absolute;
margin-top: 53px;
}
/*
Make the (background) page not scrollable when modals are open
This CSS class is automatically added to the body when react-modal is open
*/
:global(.ReactModal__Body--open) {
overflow: hidden;
}