graphiql
Version:
An graphical interactive in-browser GraphQL IDE.
341 lines (292 loc) • 8.53 kB
CSS
/* Everything */
.graphiql-container {
background-color: hsl(var(--color-base));
display: flex;
height: 100%;
margin: 0;
overflow: hidden;
width: 100%;
}
/* The sidebar */
.graphiql-container .graphiql-sidebar {
display: flex;
flex-direction: column;
justify-content: space-between;
padding: var(--px-8);
width: var(--sidebar-width);
}
.graphiql-container .graphiql-sidebar .graphiql-sidebar-section {
display: flex;
flex-direction: column;
gap: var(--px-8);
}
.graphiql-container .graphiql-sidebar button {
display: flex;
align-items: center;
justify-content: center;
color: hsla(var(--color-neutral), var(--alpha-secondary));
height: calc(var(--sidebar-width) - (2 * var(--px-8)));
width: calc(var(--sidebar-width) - (2 * var(--px-8)));
}
.graphiql-container .graphiql-sidebar button.active {
color: hsl(var(--color-neutral));
}
.graphiql-container .graphiql-sidebar button:not(:first-child) {
margin-top: var(--px-4);
}
.graphiql-container .graphiql-sidebar button > svg {
height: var(--px-20);
width: var(--px-20);
}
/* The main content, i.e. everything except the sidebar */
.graphiql-container .graphiql-main {
display: flex;
flex: 1;
min-width: 0;
}
/* The current session and tabs */
.graphiql-container .graphiql-sessions {
background-color: hsla(var(--color-neutral), var(--alpha-background-light));
/* Adding the 8px of padding to the inner border radius of the query editor */
border-radius: calc(var(--border-radius-12) + var(--px-8));
display: flex;
flex-direction: column;
flex: 1;
max-height: 100%;
margin: var(--px-16);
margin-left: 0;
min-width: 0;
}
/* The session header containing tabs and the logo */
.graphiql-container .graphiql-session-header {
align-items: center;
display: flex;
justify-content: space-between;
height: var(--session-header-height);
}
/* The button to add a new tab */
button.graphiql-tab-add {
height: 100%;
padding: var(--px-4);
}
button.graphiql-tab-add > svg {
color: hsla(var(--color-neutral), var(--alpha-secondary));
display: block;
height: var(--px-16);
width: var(--px-16);
}
/* The right-hand-side of the session header */
.graphiql-container .graphiql-session-header-right {
align-items: center;
display: flex;
}
/* The GraphiQL logo */
.graphiql-container .graphiql-logo {
color: hsla(var(--color-neutral), var(--alpha-secondary));
font-size: var(--font-size-h4);
font-weight: var(--font-weight-medium);
padding: var(--px-12) var(--px-16);
}
/* Undo default link styling for the default GraphiQL logo link */
.graphiql-container .graphiql-logo .graphiql-logo-link {
color: hsla(var(--color-neutral), var(--alpha-secondary));
text-decoration: none;
}
/* The editor of the session */
.graphiql-container .graphiql-session {
display: flex;
flex: 1;
padding: 0 var(--px-8) var(--px-8);
}
/* All editors (query, variable, headers) */
.graphiql-container .graphiql-editors {
background-color: hsl(var(--color-base));
border-radius: calc(var(--border-radius-12));
box-shadow: var(--popover-box-shadow);
display: flex;
flex: 1;
flex-direction: column;
}
.graphiql-container .graphiql-editors.full-height {
margin-top: calc(var(--px-8) - var(--session-header-height));
}
/* The query editor and the toolbar */
.graphiql-container .graphiql-query-editor {
border-bottom: 1px solid
hsla(var(--color-neutral), var(--alpha-background-heavy));
padding: var(--px-16);
column-gap: var(--px-16);
display: flex;
width: 100%;
}
/* The vertical toolbar next to the query editor */
.graphiql-container .graphiql-toolbar {
width: var(--toolbar-width);
}
.graphiql-container .graphiql-toolbar > * + * {
margin-top: var(--px-8);
}
/* The toolbar icons */
.graphiql-toolbar-icon {
color: hsla(var(--color-neutral), var(--alpha-tertiary));
display: block;
height: calc(var(--toolbar-width) - (var(--px-8) * 2));
width: calc(var(--toolbar-width) - (var(--px-8) * 2));
}
/* The tab bar for editor tools */
.graphiql-container .graphiql-editor-tools {
cursor: row-resize;
display: flex;
width: 100%;
column-gap: var(--px-8);
padding: var(--px-8);
}
.graphiql-container .graphiql-editor-tools button {
color: hsla(var(--color-neutral), var(--alpha-secondary));
}
.graphiql-container .graphiql-editor-tools button.active {
color: hsl(var(--color-neutral));
}
/* The tab buttons to switch between editor tools */
.graphiql-container
.graphiql-editor-tools
> button:not(.graphiql-toggle-editor-tools) {
padding: var(--px-8) var(--px-12);
}
.graphiql-container .graphiql-editor-tools .graphiql-toggle-editor-tools {
margin-left: auto;
}
/* An editor tool, e.g. variable or header editor */
.graphiql-container .graphiql-editor-tool {
flex: 1;
padding: var(--px-16);
}
/**
* The way CodeMirror editors are styled they overflow their containing
* element. For some OS-browser-combinations this might cause overlap issues,
* setting the position of this to `relative` makes sure this element will
* always be on top of any editors.
*/
.graphiql-container .graphiql-toolbar,
.graphiql-container .graphiql-editor-tools,
.graphiql-container .graphiql-editor-tool {
position: relative;
}
/* The response view */
.graphiql-container .graphiql-response {
--editor-background: transparent;
display: flex;
width: 100%;
flex-direction: column;
}
/* The results editor wrapping container */
.graphiql-container .graphiql-response .result-window {
position: relative;
flex: 1;
}
/* The footer below the response view */
.graphiql-container .graphiql-footer {
border-top: 1px solid
hsla(var(--color-neutral), var(--alpha-background-heavy));
}
/* The plugin container */
.graphiql-container .graphiql-plugin {
border-left: 1px solid
hsla(var(--color-neutral), var(--alpha-background-heavy));
flex: 1;
overflow-y: auto;
padding: var(--px-16);
}
/* Generic drag bar for horizontal resizing */
.graphiql-horizontal-drag-bar {
width: var(--px-12);
cursor: col-resize;
}
.graphiql-horizontal-drag-bar:hover::after {
border: var(--px-2) solid
hsla(var(--color-neutral), var(--alpha-background-heavy));
border-radius: var(--border-radius-2);
content: '';
display: block;
height: 25%;
margin: 0 auto;
position: relative;
/* (100% - 25%) / 2 = 37.5% */
top: 37.5%;
width: 0;
}
.graphiql-container .graphiql-chevron-icon {
color: hsla(var(--color-neutral), var(--alpha-tertiary));
display: block;
height: var(--px-12);
margin: var(--px-12);
width: var(--px-12);
}
/* Generic spin animation */
.graphiql-spin {
animation: spin 0.8s linear 0s infinite;
}
@keyframes spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
/* The header of the settings dialog */
.graphiql-dialog .graphiql-dialog-header {
align-items: center;
display: flex;
justify-content: space-between;
padding: var(--px-24);
}
/* The title of the settings dialog */
.graphiql-dialog .graphiql-dialog-title {
font-size: var(--font-size-h3);
font-weight: var(--font-weight-medium);
margin: 0;
}
/* A section inside the settings dialog */
.graphiql-dialog .graphiql-dialog-section {
align-items: center;
border-top: 1px solid
hsla(var(--color-neutral), var(--alpha-background-heavy));
display: flex;
justify-content: space-between;
padding: var(--px-24);
}
.graphiql-dialog .graphiql-dialog-section > :not(:first-child) {
margin-left: var(--px-24);
}
/* The section title in the settings dialog */
.graphiql-dialog .graphiql-dialog-section-title {
font-size: var(--font-size-h4);
font-weight: var(--font-weight-medium);
}
/* The section caption in the settings dialog */
.graphiql-dialog .graphiql-dialog-section-caption {
color: hsla(var(--color-neutral), var(--alpha-secondary));
}
.graphiql-dialog .graphiql-warning-text {
color: hsl(var(--color-warning));
font-weight: var(--font-weight-medium);
}
.graphiql-dialog .graphiql-table {
border-collapse: collapse;
width: 100%;
}
.graphiql-dialog .graphiql-table :is(th, td) {
border: 1px solid hsla(var(--color-neutral), var(--alpha-background-heavy));
padding: var(--px-8) var(--px-12);
}
/* A single key the short-key dialog */
.graphiql-dialog .graphiql-key {
background-color: hsla(var(--color-neutral), var(--alpha-background-medium));
border-radius: var(--border-radius-4);
padding: var(--px-4);
}
/* Avoid showing native tooltips for icons with titles */
.graphiql-container svg {
pointer-events: none;
}