diff --git a/frontend/jscss/custom-view.css b/frontend/jscss/custom-view.css
new file mode 100644
index 0000000..e08e099
--- /dev/null
+++ b/frontend/jscss/custom-view.css
@@ -0,0 +1,18 @@
+.output {
+ height: 80vh;
+}
+.left-sidebar {
+ padding: 15px;
+}
+.pdf-frame {
+ width: 100%;
+ height: 100%;
+ border: none;
+}
+.command-out {
+ height: 20vh;
+ padding: 20px;
+ background-color: #eaeaea;
+ overflow-y: auto;
+}
+
diff --git a/frontend/jscss/htmx-ext-sse.js b/frontend/jscss/htmx-ext-sse.js
new file mode 100644
index 0000000..4528733
--- /dev/null
+++ b/frontend/jscss/htmx-ext-sse.js
@@ -0,0 +1 @@
+(function(){var g;htmx.defineExtension("sse",{init:function(e){g=e;if(htmx.createEventSource==undefined){htmx.createEventSource=t}},getSelectors:function(){return["[sse-connect]","[data-sse-connect]","[sse-swap]","[data-sse-swap]"]},onEvent:function(e,t){var r=t.target||t.detail.elt;switch(e){case"htmx:beforeCleanupElement":var n=g.getInternalData(r);var s=n.sseEventSource;if(s){g.triggerEvent(r,"htmx:sseClose",{source:s,type:"nodeReplaced"});n.sseEventSource.close()}return;case"htmx:afterProcessNode":i(r)}}});function t(e){return new EventSource(e,{withCredentials:true})}function a(n){if(g.getAttributeValue(n,"sse-swap")){var s=g.getClosestMatch(n,v);if(s==null){return null}var e=g.getInternalData(s);var a=e.sseEventSource;var t=g.getAttributeValue(n,"sse-swap");var r=t.split(",");for(var i=0;i
+{{ end }} diff --git a/frontend/templates/head.html b/frontend/templates/head.html index 07bb173..0e5358e 100644 --- a/frontend/templates/head.html +++ b/frontend/templates/head.html @@ -2,10 +2,11 @@
-
+
+ diff --git a/frontend/templates/main.html b/frontend/templates/main.html new file mode 100644 index 0000000..af7c923 --- /dev/null +++ b/frontend/templates/main.html @@ -0,0 +1 @@ +{{ template "header" . }} diff --git a/frontend/templates/sse-pdf.html b/frontend/templates/sse-pdf.html new file mode 100644 index 0000000..17cd0b5 --- /dev/null +++ b/frontend/templates/sse-pdf.html @@ -0,0 +1 @@ +