Files
obsidian_ollama/styles.css
T
fegger e7b753014c Add chat session history with dropdown UI
Implement persistent chat history using a new ChatHistoryManager class.
Sessions are saved on view close, restored on open, and selectable via a
dropdown in the chat header. Includes delete and clear-all commands,
with automatic title generation from the first user message.
2026-05-21 10:36:55 +02:00

422 lines
9.6 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
:root {
--ollama-user-bg: var(--background-modifier-form-field);
--ollama-assistant-bg: var(--background-primary-alt);
--ollama-border: var(--background-modifier-border);
--ollama-radius: var(--radius-m);
--ollama-gap: var(--size-4-2);
--ollama-log-debug: var(--text-muted);
--ollama-log-info: var(--text-accent);
--ollama-log-warn: var(--text-warning);
--ollama-log-error: var(--text-error);
--ollama-log-bg: var(--background-primary-alt);
}
.ollama-chat-container {
display: flex;
flex-direction: column;
gap: var(--ollama-gap);
padding: var(--size-4-2);
overflow-y: auto;
flex: 1;
}
.ollama-message {
display: flex;
flex-direction: column;
gap: var(--size-4-1);
padding: var(--size-4-2);
border-radius: var(--ollama-radius);
border: 1px solid var(--ollama-border);
max-width: 90%;
}
.ollama-message-user {
align-self: flex-end;
background-color: var(--ollama-user-bg);
}
.ollama-message-assistant {
align-self: flex-start;
background-color: var(--ollama-assistant-bg);
}
.ollama-message-header {
display: flex;
align-items: center;
gap: var(--size-4-1);
font-size: var(--font-smallest);
font-weight: var(--font-semibold);
text-transform: uppercase;
letter-spacing: 0.05em;
color: var(--text-muted);
}
.ollama-message-role::before {
display: inline-block;
width: 1em;
height: 1em;
margin-right: var(--size-4-1);
vertical-align: middle;
}
.ollama-message-user .ollama-message-role::before {
content: '👤';
}
.ollama-message-assistant .ollama-message-role::before {
content: '🤖';
}
.ollama-message-content {
line-height: var(--line-height-normal);
white-space: pre-wrap;
word-break: break-word;
}
.ollama-new-chat-container {
display: flex;
justify-content: flex-end;
padding: var(--size-4-1) var(--size-4-2);
}
.ollama-new-chat-button {
display: inline-flex;
align-items: center;
gap: var(--size-4-1);
padding: var(--size-4-1) var(--size-4-2);
font-size: var(--font-smallest);
border-radius: var(--ollama-radius);
border: 1px solid var(--ollama-border);
background-color: var(--background-modifier-form-field);
color: var(--text-normal);
cursor: pointer;
transition: background-color 0.15s ease;
}
.ollama-new-chat-button:hover {
background-color: var(--background-modifier-hover);
}
.ollama-new-chat-button::before {
content: '';
}
.ollama-input-container {
display: flex;
gap: var(--size-4-1);
padding: var(--size-4-2);
border-top: 1px solid var(--ollama-border);
background-color: var(--background-primary);
align-items: flex-end;
}
.ollama-input {
flex: 1;
min-height: 2.5rem;
max-height: 8rem;
padding: var(--size-4-1) var(--size-4-2);
border-radius: var(--ollama-radius);
border: 1px solid var(--ollama-border);
background-color: var(--background-modifier-form-field);
color: var(--text-normal);
resize: vertical;
font-family: inherit;
font-size: var(--font-ui-small);
line-height: var(--line-height-normal);
}
.ollama-input:focus {
outline: none;
border-color: var(--interactive-accent);
box-shadow: 0 0 0 2px var(--interactive-accent-translucent);
}
.ollama-send-button {
display: inline-flex;
align-items: center;
justify-content: center;
padding: var(--size-4-1) var(--size-4-3);
border-radius: var(--ollama-radius);
border: none;
background-color: var(--interactive-accent);
color: var(--text-on-accent);
font-weight: var(--font-semibold);
font-size: var(--font-ui-small);
cursor: pointer;
transition: filter 0.15s ease;
white-space: nowrap;
}
.ollama-send-button:hover {
filter: brightness(1.1);
}
.ollama-send-button:active {
filter: brightness(0.95);
}
/* Thinking indicator */
.ollama-thinking-indicator {
display: inline-flex;
align-items: center;
gap: var(--size-4-1);
font-style: italic;
color: var(--text-muted);
}
.ollama-thinking-indicator::before {
content: '';
display: inline-block;
width: 0.9em;
height: 0.9em;
border: 2px solid var(--text-muted);
border-top-color: transparent;
border-radius: 50%;
animation: ollama-spin 1s linear infinite;
}
@keyframes ollama-spin {
to {
transform: rotate(360deg);
}
}
/* Proposed Actions Preview */
.ollama-proposed-actions {
margin-top: var(--size-4-2);
padding: var(--size-4-2);
border: 1px solid var(--ollama-border);
border-radius: var(--ollama-radius);
background-color: var(--background-primary);
}
.ollama-proposed-actions-header {
font-weight: var(--font-semibold);
font-size: var(--font-ui-small);
margin-bottom: var(--size-4-2);
color: var(--text-normal);
}
.ollama-proposed-action {
margin-bottom: var(--size-4-2);
padding: var(--size-4-1);
border: 1px solid var(--ollama-border);
border-radius: var(--ollama-radius);
background-color: var(--background-primary-alt);
}
.ollama-action-description {
font-weight: var(--font-medium);
font-size: var(--font-ui-small);
margin-bottom: var(--size-4-1);
color: var(--text-normal);
}
.ollama-action-diff {
display: flex;
flex-direction: column;
gap: var(--size-4-1);
}
.ollama-diff-before,
.ollama-diff-after {
margin: 0;
padding: var(--size-4-1);
border-radius: var(--ollama-radius);
font-size: var(--font-smallest);
font-family: var(--font-monospace);
white-space: pre-wrap;
word-break: break-word;
max-height: 8rem;
overflow-y: auto;
}
.ollama-diff-before {
background-color: var(--background-modifier-error);
color: var(--text-normal);
}
.ollama-diff-after {
background-color: var(--background-modifier-success);
color: var(--text-normal);
}
.ollama-action-buttons {
display: flex;
gap: var(--size-4-1);
margin-top: var(--size-4-2);
}
.ollama-apply-button {
padding: var(--size-4-1) var(--size-4-2);
border-radius: var(--ollama-radius);
border: none;
background-color: var(--interactive-accent);
color: var(--text-on-accent);
font-weight: var(--font-semibold);
font-size: var(--font-ui-small);
cursor: pointer;
transition: filter 0.15s ease;
}
.ollama-apply-button:hover {
filter: brightness(1.1);
}
.ollama-cancel-button {
padding: var(--size-4-1) var(--size-4-2);
border-radius: var(--ollama-radius);
border: 1px solid var(--ollama-border);
background-color: var(--background-modifier-form-field);
color: var(--text-normal);
font-weight: var(--font-semibold);
font-size: var(--font-ui-small);
cursor: pointer;
transition: background-color 0.15s ease;
}
.ollama-cancel-button:hover {
background-color: var(--background-modifier-hover);
}
/* Agent Mode Selector */
.ollama-new-chat-container {
display: flex;
justify-content: flex-end;
align-items: center;
gap: var(--size-4-1);
padding: var(--size-4-1) var(--size-4-2);
}
.ollama-mode-selector {
padding: var(--size-4-1) var(--size-4-2);
border-radius: var(--ollama-radius);
border: 1px solid var(--ollama-border);
background-color: var(--background-modifier-form-field);
color: var(--text-normal);
font-size: var(--font-ui-small);
cursor: pointer;
}
.ollama-mode-selector:focus {
outline: none;
border-color: var(--interactive-accent);
}
/* Chat History Selector */
.ollama-history-selector {
padding: var(--size-4-1) var(--size-4-2);
border-radius: var(--ollama-radius);
border: 1px solid var(--ollama-border);
background-color: var(--background-modifier-form-field);
color: var(--text-normal);
font-size: var(--font-ui-small);
cursor: pointer;
max-width: 12rem;
overflow: hidden;
text-overflow: ellipsis;
}
.ollama-history-selector:focus {
outline: none;
border-color: var(--interactive-accent);
}
.ollama-history-delete-button {
display: inline-flex;
align-items: center;
gap: var(--size-4-1);
padding: var(--size-4-1) var(--size-4-2);
font-size: var(--font-smallest);
border-radius: var(--ollama-radius);
border: 1px solid var(--ollama-border);
background-color: var(--background-modifier-form-field);
color: var(--text-normal);
cursor: pointer;
transition: background-color 0.15s ease;
}
.ollama-history-delete-button:hover {
background-color: var(--background-modifier-error-hover);
color: var(--text-error);
}
/* Show Logs Button */
.ollama-show-logs-button {
display: inline-flex;
align-items: center;
gap: var(--size-4-1);
padding: var(--size-4-1) var(--size-4-2);
font-size: var(--font-smallest);
border-radius: var(--ollama-radius);
border: 1px solid var(--ollama-border);
background-color: var(--background-modifier-form-field);
color: var(--text-normal);
cursor: pointer;
transition: background-color 0.15s ease;
}
.ollama-show-logs-button:hover {
background-color: var(--background-modifier-hover);
}
/* Logs Panel */
.ollama-logs-container {
display: flex;
flex-direction: column;
gap: 2px;
padding: var(--size-4-1) var(--size-4-2);
max-height: 12rem;
overflow-y: auto;
background-color: var(--ollama-log-bg);
border-top: 1px solid var(--ollama-border);
border-bottom: 1px solid var(--ollama-border);
font-family: var(--font-monospace);
font-size: var(--font-smallest);
}
.ollama-log-row {
display: flex;
gap: var(--size-4-1);
align-items: baseline;
line-height: var(--line-height-tight);
}
.ollama-log-time {
color: var(--text-faint);
flex-shrink: 0;
}
.ollama-log-level {
flex-shrink: 0;
font-weight: var(--font-semibold);
text-transform: uppercase;
min-width: 3em;
}
.ollama-log-level-debug {
color: var(--ollama-log-debug);
}
.ollama-log-level-info {
color: var(--ollama-log-info);
}
.ollama-log-level-warn {
color: var(--ollama-log-warn);
}
.ollama-log-level-error {
color: var(--ollama-log-error);
}
.ollama-log-category {
color: var(--text-muted);
flex-shrink: 0;
}
.ollama-log-message {
color: var(--text-normal);
word-break: break-word;
}