357 lines
No EOL
6.5 KiB
CSS
357 lines
No EOL
6.5 KiB
CSS
:root {
|
|
--spacing: 1em;
|
|
--quarter-spacing: calc(0.25 * var(--spacing));
|
|
--half-spacing: calc(0.5 * var(--spacing));
|
|
--double-spacing: calc(2 * var(--spacing));
|
|
|
|
--radius: 0.2em;
|
|
|
|
--editor-size: 50%;
|
|
|
|
--background: hsl(70,100%,95%);
|
|
--default-background: white;
|
|
--color: black;
|
|
--button-bg: #ddd;
|
|
}
|
|
|
|
@media (prefers-color-scheme: dark) {
|
|
body {
|
|
--background: hsl(70,100%,8%);
|
|
--default-background: black;
|
|
--color: white;
|
|
--button-bg: #333;
|
|
}
|
|
}
|
|
|
|
* {
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
body {
|
|
color-scheme: light dark;
|
|
font-family: sans-serif;
|
|
|
|
display: grid;
|
|
grid-template-rows: auto 1fr;
|
|
min-height: 100vh;
|
|
margin: 0;
|
|
padding: var(--half-spacing);
|
|
|
|
background: var(--background);
|
|
color: var(--color);
|
|
|
|
& > header {
|
|
padding: var(--spacing);
|
|
& h1 {
|
|
margin: 0;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
|
|
header {
|
|
& #think-controls {
|
|
display: flex;
|
|
gap: var(--spacing);
|
|
margin: 0;
|
|
}
|
|
}
|
|
|
|
#editor-size-input + output {
|
|
width: 5em;
|
|
}
|
|
|
|
.file-path {
|
|
font-family: monospace;
|
|
}
|
|
|
|
|
|
button {
|
|
border: thin solid currentColor;
|
|
--button-background: var(--button-bg);
|
|
--highlight: white;
|
|
--highlight-amount: 0%;
|
|
--darken: black;
|
|
--darken-amount: 0%;
|
|
background-color:
|
|
color-mix(in oklab,
|
|
color-mix(in oklab,
|
|
var(--button-background),
|
|
var(--darken) var(--darken-amount)
|
|
),
|
|
var(--highlight) var(--highlight-amount)
|
|
);
|
|
|
|
&:focus {
|
|
--highlight-amount: 40%;
|
|
}
|
|
|
|
&:hover {
|
|
--highlight-amount: 60%;
|
|
}
|
|
|
|
&:active {
|
|
--highlight-amount: 0%;
|
|
--darken-amount: 10%;
|
|
}
|
|
}
|
|
|
|
button[value="cancel"] {
|
|
--button-background: color-mix(in oklab, var(--button-bg), var(--background) 50%);
|
|
}
|
|
|
|
input:not([type="hidden"]) ~ button {
|
|
border-radius: 0 var(--radius) var(--radius) 0;
|
|
border-left: none;
|
|
border-left: none;
|
|
}
|
|
|
|
input {
|
|
border: thin solid currentColor;
|
|
}
|
|
|
|
|
|
.field {
|
|
display: flex;
|
|
gap: var(--quarter-spacing);
|
|
}
|
|
|
|
.think-editor {
|
|
display: grid;
|
|
gap: var(--spacing);
|
|
height: 100%;
|
|
overflow: hidden;
|
|
--col-1-width: auto;
|
|
grid-template:
|
|
"nav editor preview" min-content
|
|
"log editor preview" 1fr
|
|
/ var(--col-1-width) var(--editor-size) var(--preview-size)
|
|
;
|
|
|
|
|
|
& > * {
|
|
border: thin solid currentColor;
|
|
padding: var(--quarter-spacing);
|
|
}
|
|
|
|
&:has(#main-nav[open], #log[open]) {
|
|
--col-1-width: 20em;
|
|
}
|
|
|
|
& > #main-nav {
|
|
grid-area: nav;
|
|
}
|
|
& > #log {
|
|
grid-area: log;
|
|
width: 100%;
|
|
overflow: auto;
|
|
}
|
|
|
|
& .dragging {
|
|
background: red;
|
|
}
|
|
|
|
& summary {
|
|
background: color-mix(in oklab, var(--background), var(--color) 10%);
|
|
}
|
|
|
|
& > #main-nav > nav {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: var(--spacing);
|
|
|
|
& #file-tree {
|
|
margin: 0;
|
|
overflow: auto;
|
|
flex-grow: 1;
|
|
|
|
& > li {
|
|
margin-top: var(--half-spacing);
|
|
|
|
& > a {
|
|
text-decoration: none;
|
|
}
|
|
}
|
|
|
|
& .dir {
|
|
font-weight: bold;
|
|
}
|
|
|
|
& .dir + .file {
|
|
margin-top: var(--spacing);
|
|
}
|
|
}
|
|
|
|
& form {
|
|
display: grid;
|
|
grid-template-columns: 1fr 6em;
|
|
align-content: start;
|
|
align-items: start;
|
|
}
|
|
|
|
& #jj-buttons {
|
|
display: flex;
|
|
justify-content: end;
|
|
gap: var(--spacing);
|
|
margin: 0;
|
|
|
|
& #start-commit-button {
|
|
width: 10em;
|
|
}
|
|
}
|
|
|
|
& #make-log {
|
|
& > pre {
|
|
max-width: 20em;
|
|
overflow: auto;
|
|
}
|
|
}
|
|
}
|
|
|
|
& #editor {
|
|
overflow-x: hidden;
|
|
flex-grow: 1;
|
|
flex-basis: var(--editor-size);
|
|
max-height: 85vh;
|
|
grid-area: editor;
|
|
|
|
& #editor-controls {
|
|
position: sticky;
|
|
top: 0;
|
|
display: flex;
|
|
gap: var(--spacing);
|
|
justify-content: space-between;
|
|
border-bottom: thin solid currentColor;
|
|
|
|
& > details {
|
|
text-align: right;
|
|
|
|
& > summary {
|
|
user-select: none;
|
|
}
|
|
|
|
& button {
|
|
margin: var(--half-spacing) 0;
|
|
}
|
|
}
|
|
background: var(--background);
|
|
z-index: 1;
|
|
}
|
|
|
|
& code-editor {
|
|
background: var(--default-background);
|
|
display: block;
|
|
}
|
|
}
|
|
|
|
& #preview {
|
|
display: flex;
|
|
flex-direction: column;
|
|
grid-area: preview;
|
|
|
|
background: white;
|
|
|
|
&[open] {
|
|
flex-grow: 1;
|
|
flex-shrink: 1;
|
|
flex-basis: calc(100% - var(--editor-size));
|
|
}
|
|
|
|
& > summary {
|
|
text-align: right;
|
|
}
|
|
|
|
& > iframe {
|
|
width: 100%;
|
|
height: calc(100% - 3em);
|
|
border: none;
|
|
}
|
|
|
|
&[closed] > iframe {
|
|
display: none;
|
|
}
|
|
}
|
|
}
|
|
|
|
#file-form {
|
|
overflow: auto;
|
|
max-width: 100%;
|
|
}
|
|
|
|
dialog h2:first-child {
|
|
margin-top: 0;
|
|
}
|
|
|
|
#jj-status {
|
|
max-height: 10em;
|
|
width: 100%;
|
|
overflow: auto;
|
|
}
|
|
|
|
dialog textarea {
|
|
width: 100%;
|
|
height: 6em;
|
|
resize-x: none;
|
|
}
|
|
|
|
dialog p:last-child {
|
|
display: flex;
|
|
justify-content: end;
|
|
gap: var(--spacing);
|
|
}
|
|
|
|
@media (max-width: 100ch) {
|
|
html {
|
|
font-size: min(3vw, 16px);
|
|
}
|
|
body {
|
|
grid-template-columns: calc(100svw - var(--spacing));
|
|
}
|
|
|
|
#editor-size {
|
|
display: none;
|
|
}
|
|
|
|
.think-editor {
|
|
overflow: visible;
|
|
grid-template:
|
|
"nav"
|
|
"log"
|
|
"editor"
|
|
"preview"
|
|
;
|
|
|
|
padding-left: var(--double-spacing);
|
|
|
|
& > * ~ * {
|
|
border-top: medium solid #888;
|
|
margin-top: var(--spacing);
|
|
}
|
|
|
|
& nav {
|
|
flex-direction: row;
|
|
flex-wrap: wrap;
|
|
|
|
& form {
|
|
flex-grow: 1;
|
|
}
|
|
|
|
& #file-tree {
|
|
max-height: 30svh;
|
|
}
|
|
}
|
|
|
|
& #editor {
|
|
overflow: auto;
|
|
max-height: revert;
|
|
& #code-editor {
|
|
max-width: none;
|
|
}
|
|
}
|
|
|
|
& #preview {
|
|
height: 100vh;
|
|
}
|
|
}
|
|
} |