atuin
Version:
An RDF and SPARQL editor with graph visualization
280 lines (226 loc) • 4.86 kB
CSS
#editor-container {
display: flex;
flex-direction: column;
height: 100%; /* Assumes parent (.split-pane) provides a constrained height */
overflow: hidden; /* Child panes should manage their own overflow */
}
#input-contents {
width: 100%;
/* height: 100%; Removed, flex-grow in the rule above now manages height */
font-family: 'Fira Code', 'Courier New', Courier, monospace;
font-size: 14px;
padding: 10px;
border: none;
resize: none;
}
.cm-editor {
height: 100%;
font-family: 'Fira Code', 'Courier New', Courier, monospace;
}
.cm-line {
padding: 0 4px;
}
.cm-gutters {
border-right: 1px solid var(--border-color);
background-color: #f7f7f7;
}
.cm-error-line {
background-color: var(--error-color);
}
.cm-error-gutter {
color: var(--error-text);
font-weight: bold;
}
.cm-keyword {
color: #708;
}
.cm-atom {
color: #219;
}
.cm-number {
color: #164;
}
.cm-def {
color: #00f;
}
.cm-variable {
color: #05a;
}
.cm-operator {
color: #aa22ff;
font-weight: bold;
}
.cm-comment {
color: #a50;
font-style: italic;
}
.cm-string {
color: #a11;
}
.cm-iri {
color: #FFA500;
font-weight: bold;
}
.cm-meta {
color: #555;
}
.cm-qualifier {
color: #555;
}
.cm-builtin {
color: #30a;
}
.cm-bracket {
color: #997;
}
.cm-tag {
color: #170;
}
.cm-attribute {
color: #00c;
}
.cm-tooltip-autocomplete {
border: 1px solid var(--border-color);
background-color: white;
border-radius: 4px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
max-height: 300px;
overflow-y: auto;
}
.cm-tooltip-autocomplete ul {
list-style: none;
padding: 0;
margin: 0;
}
.cm-tooltip-autocomplete li {
padding: 4px 8px;
cursor: pointer;
}
.cm-tooltip-autocomplete li:hover,
.cm-tooltip-autocomplete li.selected {
background-color: #eee;
}
.cm-highlight {
background-color: var(--highlight-color);
border-radius: 2px;
transition: background-color 0.2s ease;
text-decoration: underline;
text-decoration-style: wavy;
text-decoration-color: darkgreen;
}
.cm-highlight:hover {
background-color: rgba(144, 238, 144, 0.7);
}
.cm-highlight-scrollbar {
background-color: darkgreen;
width: 8px ;
}
.cm-predicate {
color: #0077aa;
font-weight: bold;
}
.cm-a {
color: #aa6600;
font-weight: bold;
}
.cm-prefixName {
color: #0055aa;
}
.cm-iri {
color: #FFA500;
font-weight: bold;
}
.cm-literal {
color: #a31515;
}
.cm-lang {
color: #9900cc;
}
.cm-datatype {
color: #669900;
}
.cm-boolean {
color: #0000ff;
}
/* Editor Pane Styles (Turtle and SPARQL) */
#turtle-editor-pane,
#sparql-editor-pane {
flex-grow: 1; /* Panes take remaining vertical space in #editor-container */
min-height: 0; /* Allows panes to shrink correctly in a flex container */
display: flex;
flex-direction: column;
overflow: hidden; /* Panes manage their own internal scrolling */
position: relative; /* Retained from original #sparql-editor-pane styles */
}
/* Ensure CodeMirror instance or textarea takes up available space within its pane */
#turtle-editor-pane .cm-editor,
#input-contents, /* This is the textarea for Turtle */
#sparql-editor-pane .cm-editor,
#sparql-contents /* This is the textarea for SPARQL */ {
flex-grow: 1; /* Takes up all available vertical space */
height: auto; /* Override fixed height if any */
overflow-y: auto; /* Allow scrolling within the editor */
box-sizing: border-box;
}
#sparql-toolbar {
height: 40px;
background-color: #f0f0f0;
border-top: 1px solid #ccc;
display: flex;
align-items: center;
padding: 0 10px;
box-sizing: border-box;
flex-shrink: 0; /* Prevent toolbar from shrinking */
gap: 8px; /* Add spacing between buttons */
}
/* SPARQL Endpoint Selector */
.endpoint-selector {
display: flex;
align-items: center;
padding: 8px 10px;
background-color: #f8f8f8;
border-bottom: 1px solid #ddd;
gap: 8px;
flex-shrink: 0;
}
.endpoint-selector label {
font-size: 13px;
font-weight: 500;
color: #555;
white-space: nowrap;
}
.endpoint-select {
flex-grow: 1;
padding: 4px 8px;
border: 1px solid #ccc;
border-radius: 3px;
background-color: white;
font-size: 13px;
max-width: 300px;
}
.endpoint-select:focus {
outline: none;
border-color: var(--primary-color);
box-shadow: 0 0 0 2px rgba(76, 175, 80, 0.2);
}
.endpoint-selector .btn {
padding: 4px 8px;
font-size: 12px;
min-width: 28px;
height: 28px;
display: flex;
align-items: center;
justify-content: center;
}
.endpoint-selector .btn:hover {
transform: translateY(-1px);
transition: transform 0.1s ease;
}
@keyframes highlight-pulse {
0% { background-color: rgba(144, 238, 144, 0.3); }
50% { background-color: rgba(144, 238, 144, 0.8); }
100% { background-color: rgba(144, 238, 144, 0.3); }
}
.cm-highlight.pulse {
animation: highlight-pulse 1s ease;
}