mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-30 13:45:27 +00:00
522 lines
10 KiB
CSS
522 lines
10 KiB
CSS
/* TODO: May break up into component local CSS. Pending future discussions by
|
|
* React component group on how to best handle CSS. */
|
|
|
|
/**
|
|
* CSS Variables specific to the responsive design mode
|
|
*/
|
|
|
|
.theme-light {
|
|
--rdm-box-shadow: 0 4px 4px 0 rgba(155, 155, 155, 0.26);
|
|
--submit-button-active-background-color: rgba(0,0,0,0.12);
|
|
--submit-button-active-color: var(--theme-body-color);
|
|
--viewport-color: #999797;
|
|
--viewport-hover-color: var(--theme-body-color);
|
|
--viewport-active-color: #3b3b3b;
|
|
--viewport-selection-arrow: url("./images/select-arrow.svg#light");
|
|
--viewport-selection-arrow-hovered:
|
|
url("./images/select-arrow.svg#light-hovered");
|
|
--viewport-selection-arrow-selected:
|
|
url("./images/select-arrow.svg#light-selected");
|
|
}
|
|
|
|
.theme-dark {
|
|
--rdm-box-shadow: 0 4px 4px 0 rgba(105, 105, 105, 0.26);
|
|
--submit-button-active-background-color: var(--toolbar-tab-hover-active);
|
|
--submit-button-active-color: var(--theme-selection-color);
|
|
--viewport-color: #c6ccd0;
|
|
--viewport-hover-color: #dde1e4;
|
|
--viewport-active-color: #fcfcfc;
|
|
--viewport-selection-arrow: url("./images/select-arrow.svg#dark");
|
|
--viewport-selection-arrow-hovered:
|
|
url("./images/select-arrow.svg#dark-hovered");
|
|
--viewport-selection-arrow-selected:
|
|
url("./images/select-arrow.svg#dark-selected");
|
|
}
|
|
|
|
* {
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
#root,
|
|
html, body {
|
|
height: 100%;
|
|
margin: 0;
|
|
}
|
|
|
|
#app {
|
|
/* Center the viewports container */
|
|
display: flex;
|
|
align-items: center;
|
|
flex-direction: column;
|
|
padding-top: 15px;
|
|
padding-bottom: 1%;
|
|
position: relative;
|
|
height: 100%;
|
|
}
|
|
|
|
/**
|
|
* Common styles for shared components
|
|
*/
|
|
|
|
.container {
|
|
background-color: var(--theme-toolbar-background);
|
|
border: 1px solid var(--theme-splitter-color);
|
|
}
|
|
|
|
.toolbar-button {
|
|
margin: 1px 3px;
|
|
width: 16px;
|
|
height: 16px;
|
|
/* Reset styles from .devtools-button */
|
|
min-width: initial;
|
|
min-height: initial;
|
|
align-self: center;
|
|
}
|
|
|
|
.toolbar-button:active::before {
|
|
filter: url("chrome://devtools/skin/images/filters.svg#checked-icon-state");
|
|
}
|
|
|
|
select {
|
|
-moz-appearance: none;
|
|
background-color: var(--theme-toolbar-background);
|
|
background-image: var(--viewport-selection-arrow);
|
|
background-position: 100% 50%;
|
|
background-repeat: no-repeat;
|
|
background-size: 7px;
|
|
border: none;
|
|
color: var(--viewport-color);
|
|
height: 100%;
|
|
padding: 0 8px;
|
|
text-align: center;
|
|
text-overflow: ellipsis;
|
|
font-size: 11px;
|
|
}
|
|
|
|
select.selected {
|
|
background-image: var(--viewport-selection-arrow-selected);
|
|
color: var(--viewport-active-color);
|
|
}
|
|
|
|
select:not(:disabled):hover {
|
|
background-image: var(--viewport-selection-arrow-hovered);
|
|
color: var(--viewport-hover-color);
|
|
}
|
|
|
|
/* This is (believed to be?) separate from the identical select.selected rule
|
|
set so that it overrides select:hover because of file ordering once the
|
|
select is focused. It's unclear whether the visual effect that results here
|
|
is intentional and desired. */
|
|
select:focus {
|
|
background-image: var(--viewport-selection-arrow-selected);
|
|
color: var(--viewport-active-color);
|
|
}
|
|
|
|
select > option {
|
|
text-align: left;
|
|
padding: 5px 10px;
|
|
}
|
|
|
|
select > option,
|
|
select > option:hover {
|
|
color: var(--viewport-active-color);
|
|
}
|
|
|
|
select > option.divider {
|
|
border-top: 1px solid var(--theme-splitter-color);
|
|
height: 0px;
|
|
padding: 0;
|
|
font-size: 0px;
|
|
}
|
|
|
|
/**
|
|
* Global Toolbar
|
|
*/
|
|
|
|
#global-toolbar {
|
|
color: var(--theme-body-color-alt);
|
|
border-radius: 2px;
|
|
box-shadow: var(--rdm-box-shadow);
|
|
margin: 0 0 15px 0;
|
|
padding: 4px 5px;
|
|
display: inline-flex;
|
|
-moz-user-select: none;
|
|
}
|
|
|
|
#global-toolbar > .title {
|
|
border-right: 1px solid var(--theme-splitter-color);
|
|
padding: 1px 6px 0 2px;
|
|
}
|
|
|
|
#global-toolbar .toolbar-button {
|
|
margin: 0 0 0 5px;
|
|
padding: 0;
|
|
}
|
|
|
|
#global-toolbar .toolbar-button,
|
|
#global-toolbar .toolbar-button::before {
|
|
width: 12px;
|
|
height: 12px;
|
|
}
|
|
|
|
#global-touch-simulation-button::before {
|
|
background-image: url("./images/touch-events.svg");
|
|
margin: -6px 0 0 -6px;
|
|
}
|
|
|
|
#global-touch-simulation-button.active::before {
|
|
filter: url("chrome://devtools/skin/images/filters.svg#checked-icon-state");
|
|
}
|
|
|
|
#global-screenshot-button::before {
|
|
background-image: url("./images/screenshot.svg");
|
|
margin: -6px 0 0 -6px;
|
|
}
|
|
|
|
#global-exit-button::before {
|
|
background-image: url("./images/close.svg");
|
|
margin: -6px 0 0 -6px;
|
|
}
|
|
|
|
#global-screenshot-button:disabled {
|
|
filter: url("chrome://devtools/skin/images/filters.svg#checked-icon-state");
|
|
opacity: 1 !important;
|
|
}
|
|
|
|
#global-network-throttling-selector {
|
|
height: 15px;
|
|
padding-left: 0;
|
|
width: 103px;
|
|
}
|
|
|
|
#global-dpr-selector > select {
|
|
padding: 0 8px 0 0;
|
|
margin-left: 2px;
|
|
}
|
|
|
|
#global-dpr-selector {
|
|
margin: 0 8px;
|
|
-moz-user-select: none;
|
|
color: var(--viewport-color);
|
|
font-size: 11px;
|
|
height: 15px;
|
|
}
|
|
|
|
#global-dpr-selector.focused,
|
|
#global-dpr-selector:not(.disabled):hover {
|
|
color: var(--viewport-hover-color);
|
|
}
|
|
|
|
#global-dpr-selector:not(.disabled):hover > select {
|
|
background-image: var(--viewport-selection-arrow-hovered);
|
|
color: var(--viewport-hover-color);
|
|
}
|
|
|
|
#global-dpr-selector:focus > select {
|
|
background-image: var(--viewport-selection-arrow-selected);
|
|
color: var(--viewport-active-color);
|
|
}
|
|
|
|
#global-dpr-selector.selected,
|
|
#global-dpr-selector.selected > select {
|
|
color: var(--viewport-active-color);
|
|
}
|
|
|
|
#global-dpr-selector > select > option {
|
|
padding: 5px;
|
|
}
|
|
|
|
#viewports {
|
|
/* Make sure left-most viewport is visible when there's horizontal overflow.
|
|
That is, when the horizontal space become smaller than the viewports and a
|
|
scrollbar appears, then the first viewport will still be visible */
|
|
position: sticky;
|
|
left: 0;
|
|
/* Individual viewports are inline elements, make sure they stay on a single
|
|
line */
|
|
white-space: nowrap;
|
|
}
|
|
|
|
/**
|
|
* Viewport Container
|
|
*/
|
|
|
|
.viewport {
|
|
display: inline-block;
|
|
/* Align all viewports to the top */
|
|
vertical-align: top;
|
|
}
|
|
|
|
.resizable-viewport {
|
|
border: 1px solid var(--theme-splitter-color);
|
|
box-shadow: var(--rdm-box-shadow);
|
|
position: relative;
|
|
}
|
|
|
|
/**
|
|
* Viewport Toolbar
|
|
*/
|
|
|
|
.viewport-toolbar {
|
|
border-width: 0;
|
|
border-bottom-width: 1px;
|
|
display: flex;
|
|
flex-direction: row;
|
|
justify-content: center;
|
|
height: 18px;
|
|
}
|
|
|
|
.viewport-rotate-button {
|
|
position: absolute;
|
|
right: 0;
|
|
}
|
|
|
|
.viewport-rotate-button::before {
|
|
background-image: url("./images/rotate-viewport.svg");
|
|
}
|
|
|
|
/**
|
|
* Viewport Content
|
|
*/
|
|
|
|
.viewport-content.resizing {
|
|
pointer-events: none;
|
|
}
|
|
|
|
/**
|
|
* Viewport Browser
|
|
*/
|
|
|
|
.browser-container {
|
|
width: inherit;
|
|
height: inherit;
|
|
}
|
|
|
|
.browser {
|
|
display: block;
|
|
border: 0;
|
|
-moz-user-select: none;
|
|
}
|
|
|
|
.browser:-moz-focusring {
|
|
outline: none;
|
|
}
|
|
|
|
/**
|
|
* Viewport Resize Handles
|
|
*/
|
|
|
|
.viewport-resize-handle {
|
|
position: absolute;
|
|
width: 16px;
|
|
height: 16px;
|
|
bottom: 0;
|
|
right: 0;
|
|
background-image: url("./images/grippers.svg");
|
|
background-position: bottom right;
|
|
padding: 0 1px 1px 0;
|
|
background-repeat: no-repeat;
|
|
background-origin: content-box;
|
|
cursor: se-resize;
|
|
}
|
|
|
|
.viewport-resize-handle.hidden {
|
|
display: none;
|
|
}
|
|
|
|
.viewport-horizontal-resize-handle {
|
|
position: absolute;
|
|
width: 5px;
|
|
height: calc(100% - 16px);
|
|
right: -4px;
|
|
top: 0;
|
|
cursor: e-resize;
|
|
}
|
|
|
|
.viewport-vertical-resize-handle {
|
|
position: absolute;
|
|
width: calc(100% - 16px);
|
|
height: 5px;
|
|
left: 0;
|
|
bottom: -4px;
|
|
cursor: s-resize;
|
|
}
|
|
|
|
/**
|
|
* Viewport Dimension Label
|
|
*/
|
|
|
|
.viewport-dimension {
|
|
display: flex;
|
|
justify-content: center;
|
|
font: 10px sans-serif;
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
.viewport-dimension-editable {
|
|
border-bottom: 1px solid transparent;
|
|
}
|
|
|
|
.viewport-dimension-editable,
|
|
.viewport-dimension-input {
|
|
color: var(--theme-body-color-inactive);
|
|
transition: all 0.25s ease;
|
|
}
|
|
|
|
.viewport-dimension-editable.editing,
|
|
.viewport-dimension-input.editing {
|
|
color: var(--viewport-active-color);
|
|
}
|
|
|
|
.viewport-dimension-editable.editing {
|
|
border-bottom: 1px solid var(--theme-selection-background);
|
|
}
|
|
|
|
.viewport-dimension-editable.editing.invalid {
|
|
border-bottom: 1px solid #d92215;
|
|
}
|
|
|
|
.viewport-dimension-input {
|
|
background: transparent;
|
|
border: none;
|
|
text-align: center;
|
|
}
|
|
|
|
.viewport-dimension-separator {
|
|
-moz-user-select: none;
|
|
}
|
|
|
|
/**
|
|
* Device Modal
|
|
*/
|
|
|
|
@keyframes fade-in-and-up {
|
|
0% {
|
|
opacity: 0;
|
|
transform: translateY(5px);
|
|
}
|
|
100% {
|
|
opacity: 1;
|
|
transform: translateY(0px);
|
|
}
|
|
}
|
|
|
|
@keyframes fade-down-and-out {
|
|
0% {
|
|
opacity: 1;
|
|
transform: translateY(0px);
|
|
}
|
|
100% {
|
|
opacity: 0;
|
|
transform: translateY(5px);
|
|
visibility: hidden;
|
|
}
|
|
}
|
|
|
|
.device-modal {
|
|
border-radius: 2px;
|
|
box-shadow: var(--rdm-box-shadow);
|
|
display: none;
|
|
position: absolute;
|
|
margin: auto;
|
|
top: 0;
|
|
bottom: 0;
|
|
left: 0;
|
|
right: 0;
|
|
width: 642px;
|
|
height: 612px;
|
|
z-index: 1;
|
|
}
|
|
|
|
/* Handles the opening/closing of the modal */
|
|
#device-modal-wrapper.opened .device-modal {
|
|
animation: fade-in-and-up 0.3s ease;
|
|
animation-fill-mode: forwards;
|
|
display: block;
|
|
}
|
|
|
|
#device-modal-wrapper.closed .device-modal {
|
|
animation: fade-down-and-out 0.3s ease;
|
|
animation-fill-mode: forwards;
|
|
display: block;
|
|
}
|
|
|
|
#device-modal-wrapper.opened .modal-overlay {
|
|
background-color: var(--theme-splitter-color);
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
height: 100%;
|
|
width: 100%;
|
|
z-index: 0;
|
|
opacity: 0.5;
|
|
}
|
|
|
|
.device-modal-content {
|
|
display: flex;
|
|
flex-direction: column;
|
|
flex-wrap: wrap;
|
|
overflow: auto;
|
|
height: 550px;
|
|
width: 600px;
|
|
margin: 20px;
|
|
}
|
|
|
|
#device-close-button,
|
|
#device-close-button::before {
|
|
position: absolute;
|
|
top: 5px;
|
|
right: 2px;
|
|
width: 12px;
|
|
height: 12px;
|
|
}
|
|
|
|
#device-close-button::before {
|
|
background-image: url("./images/close.svg");
|
|
margin: -6px 0 0 -6px;
|
|
}
|
|
|
|
.device-type {
|
|
display: flex;
|
|
flex-direction: column;
|
|
padding: 10px;
|
|
}
|
|
|
|
.device-header {
|
|
font-size: 11px;
|
|
font-weight: bold;
|
|
text-transform: capitalize;
|
|
padding: 0 0 3px 23px;
|
|
}
|
|
|
|
.device-label {
|
|
font-size: 11px;
|
|
padding-bottom: 3px;
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
|
|
.device-input-checkbox {
|
|
margin-right: 5px;
|
|
}
|
|
|
|
#device-submit-button {
|
|
background-color: var(--theme-tab-toolbar-background);
|
|
border-width: 1px 0 0 0;
|
|
border-top-width: 1px;
|
|
border-top-style: solid;
|
|
border-top-color: var(--theme-splitter-color);
|
|
color: var(--theme-body-color);
|
|
width: 100%;
|
|
height: 20px;
|
|
}
|
|
|
|
#device-submit-button:hover {
|
|
background-color: var(--toolbar-tab-hover);
|
|
}
|
|
|
|
#device-submit-button:hover:active {
|
|
background-color: var(--submit-button-active-background-color);
|
|
color: var(--submit-button-active-color);
|
|
}
|