moved to deno to bundle website

This commit is contained in:
Parker TenBroeck 2026-01-06 23:22:50 -05:00
parent c35d7a9192
commit 7629bdab6d
28 changed files with 1534 additions and 41961 deletions

127
web/root/style/editor.scss Normal file
View file

@ -0,0 +1,127 @@
@import url("tooltip.scss");
/* CodeMirror mount point */
#editor {
height: 100%;
width: 100%;
}
/* VERY IMPORTANT: force CodeMirror to respect container height */
.cm-editor {
height: 100%;
}
/* CodeMirrors internal scroller (this is where the scrollbar lives) */
.cm-scroller {
overflow-y: auto !important;
}
.diag {
margin: 0;
padding-left: 18px;
}
.diag li {
margin: 6px 0;
}
/* --- Syntax colors via CSS classes applied by decorations --- */
.tok-comment {
color: #1a7b24;
}
.tok-keyword {
color: #b99400;
font-weight: 600;
}
.tok-error {
color: #ff0505;
font-weight: 1000;
}
.tok-ident {
color: #90d4e0;
}
.tok-brace {
color: #d73a49;
font-weight: 600;
}
.tok-punc {
color: #ffffff;
}
.tok-string {
color: #03621e;
}
/* Rainbow bracket depth classes */
.rb-0 {
color: #a35;
font-weight: 700;
}
.rb-1 {
color: #ed0;
font-weight: 700;
}
.rb-2 {
color: #9d5;
font-weight: 700;
}
.rb-3 {
color: #2cb;
font-weight: 700;
}
.rb-4 {
color: #36b;
font-weight: 700;
}
.rb-5 {
color: #639;
font-weight: 700;
}
/* Optional: diagnostics panel coloring */
.diag li.error {
color: #d73a49;
}
.diag li.warning {
color: #b08800;
}
.diag li.info {
color: #0366d6;
}
/* Severity underline styles */
.cm-diag-error {
text-decoration: underline wavy #d73a49;
/* red */
text-underline-offset: 2px;
}
.cm-diag-warning {
text-decoration: underline wavy #ffd33d;
/* yellow */
text-underline-offset: 2px;
}
.cm-diag-info {
text-decoration: underline wavy #79c0ff;
/* cyan-ish */
text-underline-offset: 2px;
}

140
web/root/style/style.scss Normal file
View file

@ -0,0 +1,140 @@
@import url("./editor.scss");;
@import url("./terminal.scss");
html,
body {
height: 100%;
width: 100%;
margin: 0;
font-family: system-ui, sans-serif;
background: #909090;
}
.wrap {
height: 100vh;
width: 100vw;
display: grid;
grid-template-rows: var(--topH, 50vh) 8px 1fr;
/* top pane, splitter, editor */
overflow: hidden;
}
/* Top pane: terminal area */
.topPane {
display: grid;
grid-template-columns: var(--termW, 50vw) 8px 1fr;
/* terminal, splitter, filler */
min-height: 80px;
overflow: hidden;
}
/* Bottom pane: editor */
.bottomPane {
min-height: 120px;
overflow: hidden;
}
/* App layout */
.app {
height: 100vh;
width: 100vw;
display: grid;
grid-template-rows: var(--canvasH, 35vh) 8px 1fr;
overflow: hidden;
}
/* ---------- Canvas ---------- */
.canvasPane {
position: relative;
overflow: hidden;
background: #111;
}
.graph {
width: 100%;
height: 100%;
}
/* ---------- Bottom area (terminal + editor) ---------- */
/* Bottom area (terminal + editor) */
.bottomPane {
height: 100%;
display: grid;
grid-template-columns: 1fr 8px var(--termW, 40vw);
overflow: hidden;
/* IMPORTANT */
}
/* Terminal side */
.terminalPane {
height: 100%;
overflow: hidden;
}
/* Editor side */
.editorPane {
height: 100%;
overflow: hidden;
/* let CodeMirror scroll */
}
/* ---------- Splitters ---------- */
.hSplit {
cursor: row-resize;
background: rgba(255, 255, 255, 0.06);
}
.vSplit {
cursor: col-resize;
background: rgba(255, 255, 255, 0.06);
}
.hSplit:hover,
.vSplit:hover {
background: rgba(121, 192, 255, 0.25);
}
/* Loading screen */
.centered {
margin-right: auto;
margin-left: auto;
display: block;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
color: #f0f0f0;
font-size: 24px;
font-family: Ubuntu-Light, Helvetica, sans-serif;
text-align: center;
}
.lds-dual-ring {
display: inline-block;
width: 24px;
height: 24px;
}
.lds-dual-ring:after {
content: " ";
display: block;
width: 24px;
height: 24px;
margin: 0px;
border-radius: 50%;
border: 3px solid #fff;
border-color: #fff transparent #fff transparent;
animation: lds-dual-ring 1.2s linear infinite;
}
@keyframes lds-dual-ring {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}

View file

@ -0,0 +1,48 @@
.terminal {
background: #0b0f14;
color: #c9d1d9;
padding: 1em;
margin: 0px;
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
font-size: 12.5px;
line-height: 1.35;
white-space: pre-wrap;
word-break: break-word;
height: 100%;
width: 100%;
overflow-y: auto;
overflow-x: auto;
}
/* ANSI text styles */
.ansi-bold { font-weight: 700; }
.ansi-dim { opacity: 0.7; }
/* Foreground colors (standard + bright) */
.ansi-fg-30 { color: #0b0f14; } /* black */
.ansi-fg-31 { color: #ff7b72; } /* red */
.ansi-fg-32 { color: #7ee787; } /* green */
.ansi-fg-33 { color: #f2cc60; } /* yellow */
.ansi-fg-34 { color: #79c0ff; } /* blue */
.ansi-fg-35 { color: #d2a8ff; } /* magenta */
.ansi-fg-36 { color: #a5d6ff; } /* cyan */
.ansi-fg-37 { color: #c9d1d9; } /* white */
.ansi-fg-90 { color: #6e7681; } /* bright black / gray */
.ansi-fg-91 { color: #ffa198; }
.ansi-fg-92 { color: #a6f3a6; }
.ansi-fg-93 { color: #ffe082; }
.ansi-fg-94 { color: #a5d6ff; }
.ansi-fg-95 { color: #e3b8ff; }
.ansi-fg-96 { color: #c7f0ff; }
.ansi-fg-97 { color: #ffffff; }
/* Background colors (optional) */
.ansi-bg-40 { background: #0b0f14; }
.ansi-bg-41 { background: rgba(255, 123, 114, 0.22); }
.ansi-bg-42 { background: rgba(126, 231, 135, 0.18); }
.ansi-bg-43 { background: rgba(242, 204, 96, 0.18); }
.ansi-bg-44 { background: rgba(121, 192, 255, 0.18); }
.ansi-bg-45 { background: rgba(210, 168, 255, 0.18); }
.ansi-bg-46 { background: rgba(165, 214, 255, 0.18); }
.ansi-bg-47 { background: rgba(201, 209, 217, 0.10); }

View file

@ -0,0 +1,32 @@
.tipTitle.error {
color: #d73a49;
}
.tipTitle.warning {
color: #ffd33d;
}
.tipTitle.info {
color: #79c0ff;
}
.cm-tooltip.cm-tooltip-hover {
border: 1px solid #ddd;
background: black;
box-shadow: 0 8px 30px rgba(0, 0, 0, 0.12);
border-radius: 10px;
padding: 8px 10px;
max-width: 420px;
font-size: 13px;
line-height: 1.35;
}
.tipTitle {
font-weight: 700;
margin-bottom: 4px;
}
.tipBody {
white-space: pre-wrap;
}