Massive style changes
This commit is contained in:
1 parent
bd34d119b5
commit
b07e776b7a
16 files changed
+235
-217
No files matched your search
+27
-14
@@ -1,3 +1,9 @@
|
||||
::-webkit-scrollbar { width: 8px; height: 8px; }
|
||||
::-webkit-scrollbar-track { background: transparent; }
|
||||
::-webkit-scrollbar-thumb { background: var(--f3-bg); }
|
||||
::-webkit-scrollbar-thumb:hover { background: var(--f3-border); }
|
||||
* { scrollbar-width: thin; scrollbar-color: var(--f3-bg) transparent; }
|
||||
|
||||
* {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
@@ -12,38 +18,41 @@ body {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
body, input, select, button, textarea {
|
||||
font-family: monospace;
|
||||
font-size: 1em;
|
||||
line-height: 1.5;
|
||||
body, button, input, select, textarea {
|
||||
font-family: var(--font);
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
input {
|
||||
min-width: 0;
|
||||
body {
|
||||
font-size: var(--font-size);
|
||||
}
|
||||
|
||||
input, textarea, select {
|
||||
padding: var(--s2);
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5 {
|
||||
button, input, select, textarea, h1, h2, h3, h4, h5 {
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
textarea, p {
|
||||
h1, h2, h3, h4, h5 {
|
||||
color: var(--text-accent);
|
||||
}
|
||||
|
||||
body, button, input, select, textarea, p {
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
button, select, input, textarea {
|
||||
button, input, select, textarea {
|
||||
border: var(--border-width) solid var(--f3-border);
|
||||
background: var(--f3-bg);
|
||||
outline: none;
|
||||
border-radius: var(--border-radius);
|
||||
}
|
||||
|
||||
input, select, textarea {
|
||||
padding: var(--input-padding);
|
||||
}
|
||||
|
||||
button {
|
||||
line-height: 1.25;
|
||||
padding: var(--s2) var(--s3);
|
||||
padding: var(--button-padding);
|
||||
}
|
||||
|
||||
button:not(:disabled) {
|
||||
@@ -58,6 +67,10 @@ button:disabled {
|
||||
opacity: var(--semi-transparent);
|
||||
}
|
||||
|
||||
input {
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
textarea {
|
||||
height: 12em;
|
||||
min-height: 12em;
|
||||
|
||||
+74
-71
@@ -1,9 +1,24 @@
|
||||
.chat-page .page-content {
|
||||
align-items: stretch;
|
||||
}
|
||||
|
||||
#chat {
|
||||
flex: 1;
|
||||
overflow-y: auto;
|
||||
padding: 2em 1em 3em;
|
||||
gap: calc(var(--box-spacing) / 2);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
background: var(--chat-bg);
|
||||
border-radius: var(--border-radius);
|
||||
}
|
||||
|
||||
/* Custom Command Buttons */
|
||||
|
||||
.custom-cmd-bar {
|
||||
display: flex;
|
||||
gap: var(--s2);
|
||||
margin-left: var(--s3);
|
||||
gap: var(--badge-spacing);
|
||||
margin-left: var(--badge-spacing);
|
||||
flex-wrap: wrap;
|
||||
align-items: center;
|
||||
}
|
||||
@@ -32,9 +47,10 @@
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
right: 0;
|
||||
margin-top: var(--s1);
|
||||
margin-top: .5em;
|
||||
background: var(--f3-bg);
|
||||
border: var(--border-width) solid var(--f3-border);
|
||||
border-radius: var(--border-radius);
|
||||
min-width: 10em;
|
||||
z-index: 100;
|
||||
display: flex;
|
||||
@@ -48,7 +64,7 @@
|
||||
.header-menu-item {
|
||||
border: none;
|
||||
text-align: left;
|
||||
padding: var(--s2) var(--s3);
|
||||
padding: var(--menu-item-padding);
|
||||
background: none;
|
||||
white-space: nowrap;
|
||||
}
|
||||
@@ -58,30 +74,25 @@
|
||||
border: none;
|
||||
}
|
||||
|
||||
.chat-page .page-content > * {
|
||||
width: 1000px;
|
||||
}
|
||||
|
||||
#chat {
|
||||
flex: 1;
|
||||
overflow-y: auto;
|
||||
padding: var(--s4);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: var(--s4);
|
||||
}
|
||||
|
||||
.meta-bar {
|
||||
padding: var(--s2);
|
||||
margin: var(--badge-spacing);
|
||||
padding: var(--box-padding);
|
||||
background: var(--f1-bg);
|
||||
border-bottom: var(--border-width) solid var(--f1-border);
|
||||
border-radius: var(--border-radius);
|
||||
flex-shrink: 0;
|
||||
min-height: 2.5em;
|
||||
opacity: var(--semi-transparent);
|
||||
height: 3em;
|
||||
line-height: 1.3;
|
||||
}
|
||||
|
||||
.msg, .tool-box {
|
||||
border-radius: var(--border-radius);
|
||||
padding: var(--box-padding);
|
||||
max-width: 80%;
|
||||
}
|
||||
|
||||
.msg {
|
||||
padding: var(--s3) var(--s4);
|
||||
white-space: pre-wrap;
|
||||
word-break: break-word;
|
||||
}
|
||||
@@ -100,9 +111,8 @@
|
||||
|
||||
.msg.system-info {
|
||||
align-self: center;
|
||||
border: var(--border-width) solid var(--f2-border);
|
||||
text-align: center;
|
||||
padding: var(--s2);
|
||||
border: var(--border-width) solid var(--f2-border);
|
||||
}
|
||||
|
||||
.msg .cursor {
|
||||
@@ -124,7 +134,10 @@
|
||||
align-self: flex-start;
|
||||
background: var(--f1-bg);
|
||||
border: var(--border-width) solid var(--f1-border);
|
||||
padding: var(--s3);
|
||||
}
|
||||
|
||||
.tool-box > * {
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
.tool-box:has(.tool-box-header) {
|
||||
@@ -138,21 +151,20 @@
|
||||
.tool-box-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: var(--s2);
|
||||
padding: var(--s3);
|
||||
gap: var(--box-spacing);
|
||||
padding: var(--box-padding);
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.tool-error-badge {
|
||||
color: #ff6b6b;
|
||||
border: var(--border-width) solid #ff6b6b;
|
||||
padding: 0 var(--s1);
|
||||
color: var(--dangerous);
|
||||
border: var(--border-width) solid var(--dangerous);
|
||||
padding: var(--box-padding);
|
||||
}
|
||||
|
||||
/* Diff View */
|
||||
|
||||
.tool-diff {
|
||||
font-family: monospace;
|
||||
max-height: 16.5em;
|
||||
overflow: auto;
|
||||
}
|
||||
@@ -179,28 +191,21 @@
|
||||
text-align: center;
|
||||
user-select: none;
|
||||
border-right: var(--border-width) solid var(--f2-border);
|
||||
margin-right: var(--s2);
|
||||
margin-right: .5em;
|
||||
}
|
||||
|
||||
.diff-content {
|
||||
flex: 1;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
padding-right: var(--s2);
|
||||
}
|
||||
|
||||
.diff-more {
|
||||
padding: var(--s1) var(--s2);
|
||||
opacity: var(--semi-transparent);
|
||||
font-family: monospace;
|
||||
padding-right: .5em;
|
||||
}
|
||||
|
||||
.tool-result {
|
||||
white-space: pre-wrap;
|
||||
word-break: break-word;
|
||||
font-family: monospace;
|
||||
padding: var(--s4);
|
||||
max-height: 16em;
|
||||
padding: var(--box-padding);
|
||||
max-height: 16.5em;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
@@ -210,11 +215,20 @@
|
||||
}
|
||||
|
||||
.input-area {
|
||||
border-top: var(--border-width) solid var(--f1-border);
|
||||
display: flex;
|
||||
flex-shrink: 0;
|
||||
gap: var(--s4);
|
||||
padding: var(--s4);
|
||||
align-items: center;
|
||||
margin-bottom: var(--page-spacing);
|
||||
margin-inline: var(--badge-spacing);
|
||||
gap: var(--badge-spacing);
|
||||
}
|
||||
|
||||
.input-area button {
|
||||
width: 2em;
|
||||
aspect-ratio: 1;
|
||||
padding: 0;
|
||||
line-height: 1;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.input-area textarea {
|
||||
@@ -224,18 +238,10 @@
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.input-area button {
|
||||
align-self: flex-end;
|
||||
}
|
||||
|
||||
.input-area button:disabled {
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
.archive-container {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: var(--s4);
|
||||
gap: var(--box-spacing);
|
||||
}
|
||||
|
||||
.archived {
|
||||
@@ -250,11 +256,11 @@
|
||||
/* Workspace Refs */
|
||||
|
||||
.ref-preview {
|
||||
padding: var(--s2) var(--s4);
|
||||
background: var(--f1-bg);
|
||||
border-top: var(--border-width) solid var(--f1-border);
|
||||
flex-wrap: wrap;
|
||||
gap: var(--s2);
|
||||
padding: var(--box-padding);
|
||||
gap: var(--badge-spacing);
|
||||
}
|
||||
|
||||
.ref-preview:not([hidden]) {
|
||||
@@ -264,8 +270,8 @@
|
||||
.ref-preview-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: var(--s2);
|
||||
padding: var(--s1) var(--s2);
|
||||
padding: var(--badge-padding);
|
||||
gap: var(--badge-spacing);
|
||||
background: var(--f2-bg);
|
||||
border: var(--border-width) solid var(--f2-border);
|
||||
}
|
||||
@@ -282,20 +288,22 @@
|
||||
|
||||
/* File Upload */
|
||||
|
||||
.file-btn {
|
||||
align-self: flex-end;
|
||||
}
|
||||
|
||||
.file-preview {
|
||||
padding: var(--s2) var(--s4);
|
||||
flex-direction: column;
|
||||
gap: var(--box-spacing);
|
||||
padding: var(--box-padding);
|
||||
background: var(--f1-bg);
|
||||
border-top: var(--border-width) solid var(--f1-border);
|
||||
}
|
||||
|
||||
.file-preview:not([hidden]) {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.file-preview-inner {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: var(--s3);
|
||||
gap: var(--box-spacing);
|
||||
}
|
||||
|
||||
.file-thumb {
|
||||
@@ -305,10 +313,6 @@
|
||||
border: var(--border-width) solid var(--f2-border);
|
||||
}
|
||||
|
||||
.file-icon {
|
||||
font-size: 2em;
|
||||
}
|
||||
|
||||
.file-name {
|
||||
flex: 1;
|
||||
overflow: hidden;
|
||||
@@ -320,7 +324,6 @@
|
||||
background: none;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
padding: var(--s1);
|
||||
color: var(--text);
|
||||
opacity: var(--semi-transparent);
|
||||
}
|
||||
@@ -332,7 +335,7 @@
|
||||
/* Attachments in History */
|
||||
|
||||
.attachment-indicator {
|
||||
margin-top: var(--s2);
|
||||
margin-top: var(--badge-spacing);
|
||||
opacity: var(--semi-transparent);
|
||||
}
|
||||
|
||||
@@ -341,10 +344,10 @@
|
||||
}
|
||||
|
||||
.attachment-container {
|
||||
margin-top: var(--s2);
|
||||
margin-top: var(--badge-spacing);
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: var(--s2);
|
||||
gap: var(--badge-spacing);
|
||||
}
|
||||
|
||||
.attachment-image {
|
||||
@@ -357,7 +360,7 @@
|
||||
|
||||
.attachment-file {
|
||||
display: inline-block;
|
||||
padding: var(--s2) var(--s3);
|
||||
padding: var(--badge-padding);
|
||||
background: var(--f2-bg);
|
||||
border: var(--border-width) solid var(--f2-border);
|
||||
text-decoration: none;
|
||||
|
||||
+18
-22
@@ -1,9 +1,9 @@
|
||||
.dashboard .page-content {
|
||||
padding: calc(var(--s4) * 2);
|
||||
padding: var(--page-padding);
|
||||
}
|
||||
|
||||
.dashboard section {
|
||||
margin-bottom: calc(var(--s4) * 2);
|
||||
margin-bottom: var(--page-spacing);
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
@@ -11,13 +11,13 @@
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
margin-bottom: var(--s4);
|
||||
margin-bottom: var(--box-spacing);
|
||||
}
|
||||
|
||||
.card-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
|
||||
gap: var(--s4);
|
||||
grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
|
||||
gap: var(--page-spacing);
|
||||
}
|
||||
|
||||
.card {
|
||||
@@ -26,6 +26,7 @@
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
overflow: hidden;
|
||||
border-radius: var(--border-radius);
|
||||
}
|
||||
|
||||
.card.clickable {
|
||||
@@ -49,20 +50,18 @@
|
||||
}
|
||||
|
||||
.card-body {
|
||||
padding: var(--s3);
|
||||
padding: var(--box-padding);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: var(--s1);
|
||||
}
|
||||
|
||||
.card-title-row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: var(--s2);
|
||||
gap: var(--badge-spacing);
|
||||
}
|
||||
|
||||
.card-title {
|
||||
font-weight: bold;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
@@ -74,16 +73,16 @@
|
||||
}
|
||||
|
||||
.badge {
|
||||
padding: var(--s1) var(--s2);
|
||||
padding: var(--badge-padding);
|
||||
background: var(--f1-bg);
|
||||
border: var(--border-width) solid var(--f2-border);
|
||||
border: var(--border-width) solid var(--f1-border);
|
||||
white-space: nowrap;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
#newAgentCard,
|
||||
#newSessionCard {
|
||||
margin-top: var(--s4);
|
||||
margin-top: var(--box-spacing);
|
||||
}
|
||||
|
||||
#newAgentCard .card,
|
||||
@@ -92,11 +91,16 @@
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
#newAgentCard .card-body,
|
||||
#newSessionCard .card-body {
|
||||
padding: var(--button-padding);
|
||||
}
|
||||
|
||||
.card-meta {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: var(--s1);
|
||||
margin-top: var(--s1);
|
||||
gap: var(--badge-spacing);
|
||||
margin-top: var(--badge-spacing);
|
||||
}
|
||||
|
||||
.card-meta:empty {
|
||||
@@ -109,11 +113,3 @@
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
|
||||
.card-workspace {
|
||||
font-family: monospace;
|
||||
}
|
||||
|
||||
.card-persona {
|
||||
font-style: italic;
|
||||
}
|
||||
@@ -13,6 +13,8 @@
|
||||
.fe-modal {
|
||||
background: var(--f2-bg);
|
||||
border: var(--border-width) solid var(--f2-border);
|
||||
border-radius: var(--border-radius);
|
||||
overflow: hidden;
|
||||
width: 90vw;
|
||||
max-width: 1100px;
|
||||
height: 80vh;
|
||||
@@ -24,7 +26,7 @@
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: var(--s2) var(--s3);
|
||||
padding: .5em;
|
||||
border-bottom: var(--border-width) solid var(--f1-border);
|
||||
background: var(--f1-bg);
|
||||
flex-shrink: 0;
|
||||
@@ -33,7 +35,7 @@
|
||||
.fe-nav {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: var(--s2);
|
||||
gap: .5em;
|
||||
flex: 1;
|
||||
overflow: hidden;
|
||||
}
|
||||
@@ -45,10 +47,6 @@
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.fe-btn {
|
||||
padding: var(--s1) var(--s2);
|
||||
}
|
||||
|
||||
.fe-body {
|
||||
display: flex;
|
||||
flex: 1;
|
||||
@@ -75,7 +73,7 @@
|
||||
}
|
||||
|
||||
.fe-item {
|
||||
padding: var(--s1) var(--s3);
|
||||
padding: .5em 1em;
|
||||
cursor: pointer;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
@@ -100,7 +98,7 @@
|
||||
}
|
||||
|
||||
.fe-loading, .fe-error, .fe-empty, .fe-placeholder {
|
||||
padding: var(--s4);
|
||||
padding: 1em;
|
||||
text-align: center;
|
||||
opacity: var(--semi-transparent);
|
||||
align-self: center;
|
||||
@@ -114,21 +112,16 @@
|
||||
display: flex;
|
||||
flex: 1;
|
||||
overflow: hidden;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
.fe-line-numbers {
|
||||
padding: var(--s2);
|
||||
padding-right: var(--s3);
|
||||
padding: .5em;
|
||||
background: var(--f1-bg);
|
||||
color: var(--text);
|
||||
opacity: var(--semi-transparent);
|
||||
text-align: right;
|
||||
overflow: hidden;
|
||||
user-select: none;
|
||||
line-height: 1.5;
|
||||
font-family: monospace;
|
||||
font-size: 1em;
|
||||
border-right: var(--border-width) solid var(--f1-border);
|
||||
flex-shrink: 0;
|
||||
min-width: 3em;
|
||||
@@ -143,16 +136,15 @@
|
||||
border: none;
|
||||
background: var(--f2-bg);
|
||||
color: var(--text);
|
||||
font-family: monospace;
|
||||
font-size: 1em;
|
||||
line-height: 1.5;
|
||||
padding: var(--s2);
|
||||
padding: .5em;
|
||||
outline: none;
|
||||
overflow-y: auto;
|
||||
white-space: pre;
|
||||
tab-size: 4;
|
||||
min-height: unset;
|
||||
height: auto;
|
||||
min-height: unset;
|
||||
max-height: unset;
|
||||
}
|
||||
|
||||
.fe-textarea:hover {
|
||||
@@ -169,11 +161,11 @@
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: var(--s2) var(--s3);
|
||||
padding: .5em .5em .5em 1em;
|
||||
border-top: var(--border-width) solid var(--f1-border);
|
||||
background: var(--f1-bg);
|
||||
flex-shrink: 0;
|
||||
gap: var(--s3);
|
||||
gap: .5em;
|
||||
}
|
||||
|
||||
.fe-info {
|
||||
|
||||
+22
-18
@@ -1,18 +1,23 @@
|
||||
.form {
|
||||
padding: calc(var(--s4) * 2);
|
||||
padding: var(--page-padding);
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: var(--s3);
|
||||
gap: var(--box-spacing);
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.form label {
|
||||
margin-top: var(--s4);
|
||||
margin-top: var(--box-spacing);
|
||||
}
|
||||
|
||||
#openChatBtn {
|
||||
margin-left: var(--badge-spacing);
|
||||
}
|
||||
|
||||
.avatar-section {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: var(--s4);
|
||||
gap: var(--box-spacing);
|
||||
}
|
||||
|
||||
.avatar-preview {
|
||||
@@ -23,9 +28,9 @@
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 2em;
|
||||
overflow: hidden;
|
||||
flex-shrink: 0;
|
||||
border-radius: var(--border-radius);
|
||||
}
|
||||
|
||||
.avatar-preview img {
|
||||
@@ -36,7 +41,7 @@
|
||||
|
||||
.input-with-btn {
|
||||
display: flex;
|
||||
gap: var(--s2);
|
||||
gap: var(--badge-spacing);
|
||||
}
|
||||
|
||||
.input-with-btn input {
|
||||
@@ -45,13 +50,12 @@
|
||||
|
||||
.input-addon-btn {
|
||||
flex-shrink: 0;
|
||||
font-size: 1.1em;
|
||||
}
|
||||
|
||||
.form-actions {
|
||||
display: flex;
|
||||
gap: var(--s4);
|
||||
margin-top: var(--s4);
|
||||
gap: var(--badge-spacing);
|
||||
margin-top: var(--box-spacing);
|
||||
}
|
||||
|
||||
/* ── Custom Commands ── */
|
||||
@@ -59,7 +63,7 @@
|
||||
.custom-commands {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: var(--s3);
|
||||
gap: var(--badge-spacing);
|
||||
}
|
||||
|
||||
.custom-command-item {
|
||||
@@ -69,7 +73,7 @@
|
||||
.custom-command-fields {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
gap: var(--s2);
|
||||
gap: var(--badge-spacing);
|
||||
}
|
||||
|
||||
.custom-command-fields .cmd-name {
|
||||
@@ -81,13 +85,13 @@
|
||||
}
|
||||
|
||||
.custom-command-item .remove-cmd-btn {
|
||||
margin-left: var(--s2);
|
||||
color: #ff6b6b;
|
||||
border-color: #ff6b6b;
|
||||
margin-left: var(--badge-spacing);
|
||||
color: var(--dangerous);
|
||||
border-color: var(--dangerous);
|
||||
}
|
||||
|
||||
.custom-command-item .remove-cmd-btn:hover {
|
||||
background: #ff6b6b;
|
||||
background: var(--dangerous);
|
||||
color: var(--f1-bg);
|
||||
}
|
||||
|
||||
@@ -96,11 +100,11 @@
|
||||
}
|
||||
|
||||
.danger-btn {
|
||||
color: #ff6b6b;
|
||||
border-color: #ff6b6b;
|
||||
color: var(--dangerous);
|
||||
border-color: var(--dangerous);
|
||||
}
|
||||
|
||||
.danger-btn:hover {
|
||||
background: #ff6b6b;
|
||||
background: var(--dangerous);
|
||||
color: var(--f1-bg);
|
||||
}
|
||||
+5
-14
@@ -1,9 +1,8 @@
|
||||
header {
|
||||
padding: var(--s4) calc(var(--s4) * 2);
|
||||
border-bottom: var(--border-width) solid var(--f1-border);
|
||||
padding: var(--box-padding);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: var(--s4);
|
||||
gap: var(--box-spacing);
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
@@ -11,6 +10,7 @@ header {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
@@ -19,6 +19,8 @@ header {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
overflow: hidden;
|
||||
width: var(--page-width);
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.page-content {
|
||||
@@ -28,14 +30,3 @@ header {
|
||||
overflow-y: auto;
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.page-content > * {
|
||||
width: 600px;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.back-btn {
|
||||
background: none;
|
||||
border: none;
|
||||
padding: var(--s1) var(--s2);
|
||||
}
|
||||
+12
-14
@@ -13,7 +13,7 @@
|
||||
}
|
||||
|
||||
.msg.markdown p {
|
||||
margin: 0 0 var(--s3) 0;
|
||||
margin: 0 0 .5em 0;
|
||||
}
|
||||
|
||||
.msg.markdown p:last-child {
|
||||
@@ -26,7 +26,7 @@
|
||||
.msg.markdown h4,
|
||||
.msg.markdown h5,
|
||||
.msg.markdown h6 {
|
||||
margin: var(--s4) 0 var(--s2) 0;
|
||||
margin: 1em 0 .5em 0;
|
||||
}
|
||||
|
||||
.msg.markdown h1:first-child,
|
||||
@@ -37,12 +37,12 @@
|
||||
|
||||
.msg.markdown ul,
|
||||
.msg.markdown ol {
|
||||
margin: 0 0 var(--s3) 0;
|
||||
margin: 0 0 .5em 0;
|
||||
padding-left: 1.5em;
|
||||
}
|
||||
|
||||
.msg.markdown li {
|
||||
margin-bottom: var(--s1);
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
.msg.markdown li:last-child {
|
||||
@@ -52,14 +52,13 @@
|
||||
.msg.markdown code {
|
||||
background: var(--f3-bg);
|
||||
padding: .1em .3em;
|
||||
font-size: .9em;
|
||||
}
|
||||
|
||||
.msg.markdown pre {
|
||||
background: var(--f3-bg);
|
||||
border: var(--border-width) solid var(--f3-border);
|
||||
padding: var(--s3);
|
||||
margin: 0 0 var(--s3) 0;
|
||||
padding: .5em;
|
||||
margin: 0 0 .5em 0;
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
||||
@@ -70,13 +69,12 @@
|
||||
.msg.markdown pre code {
|
||||
background: none;
|
||||
padding: 0;
|
||||
font-size: .9em;
|
||||
}
|
||||
|
||||
.msg.markdown blockquote {
|
||||
border-left: 3px solid var(--f3-border);
|
||||
margin: 0 0 var(--s3) 0;
|
||||
padding: var(--s2) var(--s3);
|
||||
margin: 0 0 .5em 0;
|
||||
padding: .5em;
|
||||
opacity: var(--semi-transparent);
|
||||
}
|
||||
|
||||
@@ -87,12 +85,12 @@
|
||||
.msg.markdown hr {
|
||||
border: none;
|
||||
border-top: var(--border-width) solid var(--f3-border);
|
||||
margin: var(--s3) 0;
|
||||
margin: .5em 0;
|
||||
}
|
||||
|
||||
.msg.markdown table {
|
||||
border-collapse: collapse;
|
||||
margin: 0 0 var(--s3) 0;
|
||||
margin: 0 0 .5em 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
@@ -103,7 +101,7 @@
|
||||
.msg.markdown th,
|
||||
.msg.markdown td {
|
||||
border: var(--border-width) solid var(--f3-border);
|
||||
padding: var(--s2) var(--s3);
|
||||
padding: .5em;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
@@ -121,5 +119,5 @@
|
||||
}
|
||||
|
||||
.msg.markdown input[type="checkbox"] {
|
||||
margin-right: var(--s2);
|
||||
margin-right: .5em;
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
/* === Mobile === */
|
||||
@media (max-width: 768px) {
|
||||
.msg, .tool-box {
|
||||
max-width: 100%;
|
||||
}
|
||||
}
|
||||
+21
-9
@@ -1,28 +1,40 @@
|
||||
#nav {
|
||||
padding: var(--s3) calc(var(--s4) * 1.5);
|
||||
border-bottom: var(--border-width) solid var(--f2-border);
|
||||
flex-shrink: 0;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.nav-content {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: calc(var(--s4) * 2);
|
||||
flex-shrink: 0;
|
||||
gap: var(--page-spacing);
|
||||
width: var(--page-width);
|
||||
max-width: 100%;
|
||||
padding: var(--box-padding);
|
||||
}
|
||||
|
||||
.nav-brand,
|
||||
.nav-link {
|
||||
padding: var(--badge-padding);
|
||||
color: var(--text);
|
||||
border-bottom: 2px solid transparent;
|
||||
}
|
||||
|
||||
.nav-links {
|
||||
display: flex;
|
||||
gap: var(--s4);
|
||||
gap: var(--box-spacing);
|
||||
}
|
||||
|
||||
.nav-link {
|
||||
text-decoration: none;
|
||||
padding: var(--s1) var(--s2);
|
||||
color: var(--text);
|
||||
}
|
||||
|
||||
.nav-link:hover {
|
||||
color: var(--text);
|
||||
color: var(--text-accent);
|
||||
}
|
||||
|
||||
.nav-link.active {
|
||||
color: var(--text);
|
||||
border-bottom: 2px solid var(--primary);
|
||||
color: var(--text-accent);
|
||||
border-bottom-color: var(--primary);
|
||||
}
|
||||
@@ -2,10 +2,6 @@
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: var(--s2);
|
||||
padding: calc(var(--s4) * 2);
|
||||
}
|
||||
|
||||
.settings-page .placeholder-icon {
|
||||
font-size: 4em;
|
||||
gap: var(--box-spacing);
|
||||
padding: var(--page-padding);
|
||||
}
|
||||
+18
-5
@@ -1,17 +1,30 @@
|
||||
:root {
|
||||
--text: #eee;
|
||||
--text: #ddd;
|
||||
--text-accent: #fff;
|
||||
--primary: #b41;
|
||||
--secondary: #4a1;
|
||||
--dangerous: #f66;
|
||||
--warning: #fa0;
|
||||
--f1-bg: #111;
|
||||
--f1-border: #333;
|
||||
--f2-bg: #222;
|
||||
--f2-border: #444;
|
||||
--f3-bg: #333;
|
||||
--f3-border: #555;
|
||||
--s1: .25em;
|
||||
--s2: .5em;
|
||||
--s3: .75em;
|
||||
--s4: 1em;
|
||||
--chat-bg: #1c1c1c;
|
||||
--border-width: 1px;
|
||||
--semi-transparent: 0.6;
|
||||
--font: sans-serif;
|
||||
--font-size: .85em;
|
||||
--border-radius: .5em;
|
||||
--page-padding: 2em;
|
||||
--page-spacing: 2em;
|
||||
--box-padding: .75em 1em;
|
||||
--box-spacing: 1em;
|
||||
--input-padding: .45em .7em;
|
||||
--button-padding: .45em .8em;
|
||||
--badge-padding: .2em .6em;
|
||||
--badge-spacing: .5em;
|
||||
--menu-item-padding: .5em .75em;
|
||||
--page-width: 900px;
|
||||
}
|
||||
+11
-9
@@ -15,14 +15,17 @@
|
||||
<link rel="stylesheet" href="css/placeholder.css">
|
||||
<link rel="stylesheet" href="css/file-explorer.css">
|
||||
<link rel="stylesheet" href="css/markdown.css">
|
||||
<link rel="stylesheet" href="css/mobile.css">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<nav id="nav">
|
||||
<div class="nav-brand">// gott</div>
|
||||
<div class="nav-links">
|
||||
<a href="#" data-page="dashboard" class="nav-link active">Dashboard</a>
|
||||
<a href="#" data-page="settings" class="nav-link">Einstellungen</a>
|
||||
<div class="nav-content">
|
||||
<div class="nav-brand">// gott</div>
|
||||
<div class="nav-links">
|
||||
<a href="#" data-page="dashboard" class="nav-link active">Dashboard</a>
|
||||
<a href="#" data-page="settings" class="nav-link">Einstellungen</a>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
@@ -149,10 +152,10 @@
|
||||
<div id="refPreview" class="ref-preview" hidden></div>
|
||||
<div class="input-area">
|
||||
<input type="file" id="fileInput" accept="image/jpeg,image/png,image/gif,image/webp,application/pdf" multiple hidden>
|
||||
<button id="explorerBtn" class="file-btn" title="Workspace durchsuchen">📂</button>
|
||||
<button id="fileBtn" class="file-btn" title="Datei anhängen">📎</button>
|
||||
<textarea id="input" placeholder="Nachricht eingeben... (Ctrl+Enter)" rows="1"></textarea>
|
||||
<button id="send">Senden</button>
|
||||
<button id="explorerBtn" class="file-btn" title="Workspace durchsuchen">📂</button>
|
||||
<textarea id="input" placeholder="Nachricht..." rows="1"></textarea>
|
||||
<button id="send">→</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -165,8 +168,7 @@
|
||||
<h1>Einstellungen</h1>
|
||||
</header>
|
||||
<div class="page-content placeholder">
|
||||
<div class="placeholder-icon">⚙️</div>
|
||||
<h2>Einstellungen</h2>
|
||||
<h2>⚙️ Einstellungen</h2>
|
||||
<p>Hier können diverse Einstellungen getroffen werden.</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
+2
-2
@@ -65,10 +65,10 @@ async function sendMessage() {
|
||||
addUserBubble(bubbleText, true);
|
||||
|
||||
input.value = '';
|
||||
input.style.height = 'auto';
|
||||
input.dispatchEvent(new Event('input'))
|
||||
btn.disabled = true;
|
||||
isStreaming = true;
|
||||
setMetaHtml('<span style="color:#7c83ff">⏳ Streaming...</span>');
|
||||
setMetaHtml('<span>⏳ Streaming...</span>');
|
||||
|
||||
let fullText = '';
|
||||
let currentToolBox = null;
|
||||
|
||||
@@ -148,7 +148,7 @@ async function loadLatestArchive() {
|
||||
}
|
||||
case 'error':
|
||||
div.className = 'msg system-info archived';
|
||||
div.style.color = '#ff6b6b';
|
||||
div.style.color = 'var(--dangerous)';
|
||||
div.textContent = (msg.content || '').trim();
|
||||
break;
|
||||
default:
|
||||
|
||||
@@ -70,6 +70,7 @@ registerPage('chat', {
|
||||
this.style.height = 'auto';
|
||||
this.style.height = Math.min(this.scrollHeight, 150) + 'px';
|
||||
});
|
||||
inputEl.dispatchEvent(new Event('input'))
|
||||
}
|
||||
|
||||
// Workspace Explorer
|
||||
|
||||
+3
-12
@@ -52,7 +52,7 @@ function addErrorBubble(text, streamed = false) {
|
||||
const div = document.createElement('div');
|
||||
div.className = 'msg system-info';
|
||||
if (streamed) div.classList.add('streamed');
|
||||
div.style.color = '#ff6b6b';
|
||||
div.style.color = 'var(--dangerous)';
|
||||
div.textContent = (text || '').trim();
|
||||
chatEl().appendChild(div);
|
||||
scrollDown();
|
||||
@@ -62,7 +62,7 @@ function addWarningBubble(text, streamed = false) {
|
||||
const div = document.createElement('div');
|
||||
div.className = 'msg system-info';
|
||||
if (streamed) div.classList.add('streamed');
|
||||
div.style.color = '#f0a500';
|
||||
div.style.color = 'var(--warning)';
|
||||
div.textContent = (text || '').trim();
|
||||
chatEl().appendChild(div);
|
||||
scrollDown();
|
||||
@@ -243,13 +243,11 @@ function buildEditDiff(oldText, newText) {
|
||||
|
||||
function buildWritePreview(content) {
|
||||
const lines = content.split('\n');
|
||||
const maxLines = 20;
|
||||
const shown = lines.slice(0, maxLines);
|
||||
|
||||
const container = document.createElement('div');
|
||||
container.className = 'tool-diff';
|
||||
|
||||
for (const line of shown) {
|
||||
for (const line of lines) {
|
||||
const row = document.createElement('div');
|
||||
row.className = 'diff-line diff-added';
|
||||
const marker = document.createElement('span');
|
||||
@@ -263,13 +261,6 @@ function buildWritePreview(content) {
|
||||
container.appendChild(row);
|
||||
}
|
||||
|
||||
if (lines.length > maxLines) {
|
||||
const more = document.createElement('div');
|
||||
more.className = 'diff-more';
|
||||
more.textContent = '… ' + (lines.length - maxLines) + ' weitere Zeilen';
|
||||
container.appendChild(more);
|
||||
}
|
||||
|
||||
return container;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user