diff --git a/esbuild.config.mjs b/esbuild.config.mjs index e1a8bff..ba3359e 100644 --- a/esbuild.config.mjs +++ b/esbuild.config.mjs @@ -1,6 +1,7 @@ import esbuild from "esbuild"; import sveltePlugin from "esbuild-svelte"; import sveltePreprocess from "svelte-preprocess"; +import { copyFileSync, existsSync } from "fs"; const prod = process.argv[2] === "production"; const ctx = await esbuild.context({ @@ -13,4 +14,18 @@ const ctx = await esbuild.context({ outfile: "main.js", plugins: [sveltePlugin({ preprocess: sveltePreprocess() })], }); -if (prod) { await ctx.rebuild(); process.exit(0); } else { await ctx.watch(); } + +function copyStyles() { + if (existsSync("main.css")) copyFileSync("main.css", "styles.css"); +} + +if (prod) { + await ctx.rebuild(); + copyStyles(); + process.exit(0); +} else { + // In watch mode, copy styles after each rebuild + await ctx.watch(); + // Perform initial copy + copyStyles(); +} diff --git a/styles.css b/styles.css new file mode 100644 index 0000000..577cb68 --- /dev/null +++ b/styles.css @@ -0,0 +1,872 @@ +/* fakecss:D:/workspace/obsidian-agent/src/ui/DiffReviewBlock.esbuild-svelte-fake-css */ +.db-root.svelte-1l0qhb1.svelte-1l0qhb1 { + background: var(--background-primary); + border-bottom: 1px solid var(--background-modifier-border); +} +.db-header.svelte-1l0qhb1.svelte-1l0qhb1 { + display: flex; + align-items: center; + justify-content: space-between; + padding: 8px 10px; + gap: 8px; + flex-wrap: wrap; + background: var(--background-secondary); +} +.db-header-left.svelte-1l0qhb1.svelte-1l0qhb1 { + display: flex; + align-items: center; + gap: 6px; + min-width: 0; + font-size: 12px; +} +.db-tool-icon.svelte-1l0qhb1.svelte-1l0qhb1 { + display: flex; + align-items: center; + justify-content: center; + color: var(--text-muted); +} +.db-tool-name.svelte-1l0qhb1.svelte-1l0qhb1 { + font-weight: 600; + color: var(--text-normal); + text-transform: capitalize; +} +.db-sep.svelte-1l0qhb1.svelte-1l0qhb1 { + color: var(--text-faint); +} +.db-filepath-chip.svelte-1l0qhb1.svelte-1l0qhb1 { + display: inline-flex; + align-items: center; + gap: 4px; + font-family: var(--font-monospace); + font-size: 11px; + color: var(--text-accent); + background: color-mix(in srgb, var(--interactive-accent) 10%, transparent); + border: 1px solid color-mix(in srgb, var(--interactive-accent) 25%, transparent); + padding: 1px 7px; + border-radius: 10px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + max-width: 180px; +} +.db-actions.svelte-1l0qhb1.svelte-1l0qhb1 { + display: flex; + gap: 6px; + flex-shrink: 0; +} +.db-btn.svelte-1l0qhb1.svelte-1l0qhb1 { + display: inline-flex; + align-items: center; + gap: 4px; + padding: 4px 10px; + border-radius: 6px; + font-size: 11px; + font-weight: 500; + cursor: pointer; + transition: background 150ms, transform 100ms; + white-space: nowrap; +} +.db-btn.svelte-1l0qhb1.svelte-1l0qhb1:active { + transform: scale(0.96); +} +.db-btn.svelte-1l0qhb1.svelte-1l0qhb1:focus-visible { + outline: 2px solid var(--interactive-accent); + outline-offset: 1px; +} +.db-approve.svelte-1l0qhb1.svelte-1l0qhb1 { + background: color-mix(in srgb, var(--color-green, #48bb78) 18%, transparent); + border: 1px solid var(--color-green, #48bb78); + color: var(--color-green, #48bb78); +} +.db-approve.svelte-1l0qhb1.svelte-1l0qhb1:hover { + background: color-mix(in srgb, var(--color-green, #48bb78) 28%, transparent); +} +.db-reject.svelte-1l0qhb1.svelte-1l0qhb1 { + background: transparent; + border: 1px solid var(--color-red, #e53e3e); + color: var(--color-red, #e53e3e); +} +.db-reject.svelte-1l0qhb1.svelte-1l0qhb1:hover { + background: color-mix(in srgb, var(--color-red, #e53e3e) 15%, transparent); +} +.db-diff.svelte-1l0qhb1.svelte-1l0qhb1 { + border-top: 1px solid var(--background-modifier-border); + overflow-y: auto; + max-height: 300px; +} +.db-diff-inner.svelte-1l0qhb1.svelte-1l0qhb1 { + font-family: var(--font-monospace); + font-size: 11.5px; + line-height: 1.55; + overflow-x: auto; +} +.db-line.svelte-1l0qhb1.svelte-1l0qhb1 { + display: flex; + align-items: stretch; + min-width: 0; + white-space: pre; + border-left: 3px solid transparent; +} +.db-add.svelte-1l0qhb1.svelte-1l0qhb1 { + background: color-mix(in srgb, var(--color-green, #48bb78) 10%, transparent); + border-left-color: var(--color-green, #48bb78); +} +.db-del.svelte-1l0qhb1.svelte-1l0qhb1 { + background: color-mix(in srgb, var(--color-red, #e53e3e) 10%, transparent); + border-left-color: var(--color-red, #e53e3e); +} +.db-ctx.svelte-1l0qhb1.svelte-1l0qhb1 { + color: var(--text-muted); +} +.db-add.svelte-1l0qhb1 .db-text.svelte-1l0qhb1 { + color: var(--color-green, #48bb78); +} +.db-del.svelte-1l0qhb1 .db-text.svelte-1l0qhb1 { + color: var(--color-red, #e53e3e); +} +.db-gutter.svelte-1l0qhb1.svelte-1l0qhb1 { + display: flex; + gap: 0; + user-select: none; + flex-shrink: 0; + background: color-mix(in srgb, var(--background-secondary) 60%, transparent); + border-right: 1px solid var(--background-modifier-border); +} +.db-gutter-old.svelte-1l0qhb1.svelte-1l0qhb1, +.db-gutter-new.svelte-1l0qhb1.svelte-1l0qhb1 { + width: 32px; + text-align: right; + padding: 0 6px; + font-size: 10px; + color: var(--text-faint); + line-height: inherit; +} +.db-gutter-old.svelte-1l0qhb1.svelte-1l0qhb1 { + border-right: 1px solid var(--background-modifier-border); +} +.db-sigil.svelte-1l0qhb1.svelte-1l0qhb1 { + width: 16px; + text-align: center; + flex-shrink: 0; + padding: 0 2px; + opacity: 0.8; +} +.db-add.svelte-1l0qhb1 .db-sigil.svelte-1l0qhb1 { + color: var(--color-green, #48bb78); +} +.db-del.svelte-1l0qhb1 .db-sigil.svelte-1l0qhb1 { + color: var(--color-red, #e53e3e); +} +.db-text.svelte-1l0qhb1.svelte-1l0qhb1 { + flex: 1; + min-width: 0; + padding: 0 10px 0 4px; + overflow: hidden; + text-overflow: ellipsis; +} +.db-no-diff.svelte-1l0qhb1.svelte-1l0qhb1 { + padding: 10px 14px; + font-size: 12px; + color: var(--text-faint); + border-top: 1px solid var(--background-modifier-border); + font-style: italic; +} + +/* fakecss:D:/workspace/obsidian-agent/src/ui/ChangeSummary.esbuild-svelte-fake-css */ +.cs-root.svelte-1k9acmb { + display: flex; + align-items: center; + gap: 6px; + flex-wrap: wrap; + padding: 6px 12px; + font-size: 11px; + color: var(--text-muted); + border-top: 1px solid var(--background-modifier-border); + background: var(--background-secondary); + margin-top: auto; + box-shadow: 0 -1px 4px rgba(0, 0, 0, 0.04); +} +.cs-label.svelte-1k9acmb { + font-weight: 500; + color: var(--text-normal); +} +.cs-badge.svelte-1k9acmb { + display: inline-flex; + align-items: center; + padding: 2px 7px; + border-radius: 10px; + font-size: 10px; + font-weight: 600; + font-family: var(--font-monospace); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); +} +.cs-create.svelte-1k9acmb { + background: color-mix(in srgb, var(--color-green, #48bb78) 18%, transparent); + color: var(--color-green, #48bb78); + border: 1px solid color-mix(in srgb, var(--color-green, #48bb78) 35%, transparent); +} +.cs-edit.svelte-1k9acmb { + background: color-mix(in srgb, var(--interactive-accent) 18%, transparent); + color: var(--text-accent); + border: 1px solid color-mix(in srgb, var(--interactive-accent) 35%, transparent); +} +.cs-delete.svelte-1k9acmb { + background: color-mix(in srgb, var(--color-red, #e53e3e) 18%, transparent); + color: var(--color-red, #e53e3e); + border: 1px solid color-mix(in srgb, var(--color-red, #e53e3e) 35%, transparent); +} + +/* fakecss:D:/workspace/obsidian-agent/src/ui/MessageList.esbuild-svelte-fake-css */ +.ml-root.svelte-1elwqoj.svelte-1elwqoj { + flex: 1; + overflow-y: auto; + display: flex; + flex-direction: column; + scroll-behavior: smooth; +} +.ml-empty.svelte-1elwqoj.svelte-1elwqoj { + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + gap: 10px; + flex: 1; + padding: 40px 28px; + text-align: center; +} +.ml-empty-icon.svelte-1elwqoj.svelte-1elwqoj { + width: 56px; + height: 56px; + border-radius: 16px; + background: color-mix(in srgb, var(--interactive-accent) 12%, transparent); + color: var(--interactive-accent); + display: flex; + align-items: center; + justify-content: center; +} +.ml-empty-title.svelte-1elwqoj.svelte-1elwqoj { + margin: 0; + font-size: 14px; + font-weight: 600; + color: var(--text-normal); +} +.ml-empty-hint.svelte-1elwqoj.svelte-1elwqoj { + margin: 0; + font-size: 12px; + color: var(--text-faint); + max-width: 220px; + line-height: 1.6; +} +.ml-turn.svelte-1elwqoj.svelte-1elwqoj { + padding: 10px 13px; + border-bottom: 1px solid var(--background-modifier-border); +} +.ml-turn-user.svelte-1elwqoj.svelte-1elwqoj { + background: color-mix(in srgb, var(--interactive-accent) 6%, var(--background-primary)); +} +.ml-turn-agent.svelte-1elwqoj.svelte-1elwqoj { + background: var(--background-primary); +} +.ml-error.ml-turn-agent.svelte-1elwqoj.svelte-1elwqoj { + background: color-mix(in srgb, var(--color-red, #e53e3e) 5%, var(--background-primary)); +} +.ml-name.svelte-1elwqoj.svelte-1elwqoj { + font-size: 10px; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.06em; + margin-bottom: 5px; +} +.ml-name-user.svelte-1elwqoj.svelte-1elwqoj { + color: var(--text-muted); +} +.ml-name-agent.svelte-1elwqoj.svelte-1elwqoj { + color: var(--interactive-accent); +} +.ml-content.svelte-1elwqoj.svelte-1elwqoj { + font-size: var(--font-ui-small, 13px); + line-height: 1.65; + color: var(--text-normal); + word-break: break-word; +} +.ml-turn-user.svelte-1elwqoj .ml-content.svelte-1elwqoj { + white-space: pre-wrap; +} +.ml-content-error.svelte-1elwqoj.svelte-1elwqoj { + color: var(--color-red, #e53e3e) !important; + white-space: pre-wrap; +} +.ml-streaming.svelte-1elwqoj.svelte-1elwqoj { + white-space: pre-wrap; +} +.ml-cursor.svelte-1elwqoj.svelte-1elwqoj { + display: inline-block; + width: 2px; + height: 1em; + background: var(--interactive-accent); + margin-left: 2px; + vertical-align: text-bottom; + border-radius: 1px; + animation: svelte-1elwqoj-ml-blink 1s step-end infinite; +} +@keyframes svelte-1elwqoj-ml-blink { + 50% { + opacity: 0; + } +} +.ml-tool-result.svelte-1elwqoj.svelte-1elwqoj { + display: flex; + align-items: center; + gap: 5px; + padding: 3px 13px; + background: var(--background-primary); + border-bottom: 1px solid var(--background-modifier-border); + color: var(--text-faint); + font-size: 11px; +} +.ml-tool-label.svelte-1elwqoj.svelte-1elwqoj { + font-style: italic; +} +.ml-pending-group.svelte-1elwqoj.svelte-1elwqoj { + margin: 8px 12px; + border: 1px solid var(--background-modifier-border); + border-radius: 10px; + overflow: hidden; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08); +} +.ml-bulk-actions.svelte-1elwqoj.svelte-1elwqoj { + display: flex; + gap: 8px; + padding: 8px 10px; + background: var(--background-secondary); + border-top: 1px solid var(--background-modifier-border); +} +.ml-bulk-btn.svelte-1elwqoj.svelte-1elwqoj { + flex: 1; + padding: 5px 10px; + border-radius: 6px; + cursor: pointer; + font-size: 12px; + font-weight: 500; + transition: + background 150ms, + color 150ms, + transform 100ms; +} +.ml-bulk-btn.svelte-1elwqoj.svelte-1elwqoj:active { + transform: scale(0.97); +} +.ml-bulk-approve.svelte-1elwqoj.svelte-1elwqoj { + background: color-mix(in srgb, var(--color-green, #48bb78) 15%, transparent); + border: 1px solid var(--color-green, #48bb78); + color: var(--color-green, #48bb78); +} +.ml-bulk-approve.svelte-1elwqoj.svelte-1elwqoj:hover { + background: color-mix(in srgb, var(--color-green, #48bb78) 25%, transparent); +} +.ml-bulk-reject.svelte-1elwqoj.svelte-1elwqoj { + background: transparent; + border: 1px solid var(--color-red, #e53e3e); + color: var(--color-red, #e53e3e); +} +.ml-bulk-reject.svelte-1elwqoj.svelte-1elwqoj:hover { + background: color-mix(in srgb, var(--color-red, #e53e3e) 15%, transparent); +} +.ml-turn-agent.svelte-1elwqoj .ml-content.svelte-1elwqoj p { + margin: 0 0 8px; +} +.ml-turn-agent.svelte-1elwqoj .ml-content.svelte-1elwqoj p:last-child { + margin-bottom: 0; +} +.ml-turn-agent.svelte-1elwqoj .ml-content.svelte-1elwqoj h1 { + margin: 14px 0 5px; + font-weight: 600; + color: var(--text-normal); + line-height: 1.3; + font-size: 1.2em; +} +.ml-turn-agent.svelte-1elwqoj .ml-content.svelte-1elwqoj h2 { + margin: 14px 0 5px; + font-weight: 600; + color: var(--text-normal); + line-height: 1.3; + font-size: 1.1em; +} +.ml-turn-agent.svelte-1elwqoj .ml-content.svelte-1elwqoj h3 { + margin: 14px 0 5px; + font-weight: 600; + color: var(--text-normal); + line-height: 1.3; + font-size: 1em; +} +.ml-turn-agent.svelte-1elwqoj .ml-content.svelte-1elwqoj h4 { + margin: 14px 0 5px; + font-weight: 600; + color: var(--text-normal); + line-height: 1.3; + font-size: 1em; +} +.ml-turn-agent.svelte-1elwqoj .ml-content.svelte-1elwqoj h5 { + margin: 14px 0 5px; + font-weight: 600; + color: var(--text-normal); + line-height: 1.3; + font-size: 1em; +} +.ml-turn-agent.svelte-1elwqoj .ml-content.svelte-1elwqoj h6 { + margin: 14px 0 5px; + font-weight: 600; + color: var(--text-normal); + line-height: 1.3; + font-size: 1em; +} +.ml-turn-agent.svelte-1elwqoj .ml-content.svelte-1elwqoj ul { + padding-left: 20px; + margin: 4px 0 8px; +} +.ml-turn-agent.svelte-1elwqoj .ml-content.svelte-1elwqoj ol { + padding-left: 20px; + margin: 4px 0 8px; +} +.ml-turn-agent.svelte-1elwqoj .ml-content.svelte-1elwqoj li { + margin: 3px 0; +} +.ml-turn-agent.svelte-1elwqoj .ml-content.svelte-1elwqoj li:last-child { + margin-bottom: 0; +} +.ml-turn-agent.svelte-1elwqoj .ml-content.svelte-1elwqoj blockquote { + border-left: 3px solid var(--interactive-accent); + margin: 8px 0; + padding: 5px 12px; + color: var(--text-muted); + background: color-mix(in srgb, var(--interactive-accent) 6%, transparent); + border-radius: 0 6px 6px 0; +} +.ml-turn-agent.svelte-1elwqoj .ml-content.svelte-1elwqoj code:not(pre code) { + font-family: var(--font-monospace); + font-size: 0.88em; + background: color-mix(in srgb, var(--interactive-accent) 10%, var(--background-secondary)); + color: var(--text-accent); + padding: 1px 5px; + border-radius: 4px; +} +.ml-turn-agent.svelte-1elwqoj .ml-content.svelte-1elwqoj pre { + margin: 8px 0; + border-radius: 7px; + overflow: hidden; + border: 1px solid color-mix(in srgb, var(--interactive-accent) 20%, var(--background-modifier-border)); +} +.ml-turn-agent.svelte-1elwqoj .ml-content.svelte-1elwqoj .ob-code-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: 4px 10px; + background: color-mix(in srgb, var(--interactive-accent) 8%, var(--background-secondary)); + border-bottom: 1px solid color-mix(in srgb, var(--interactive-accent) 15%, var(--background-modifier-border)); +} +.ml-turn-agent.svelte-1elwqoj .ml-content.svelte-1elwqoj .ob-code-lang { + font-family: var(--font-monospace); + font-size: 10px; + color: var(--interactive-accent); + letter-spacing: 0.02em; +} +.ml-turn-agent.svelte-1elwqoj .ml-content.svelte-1elwqoj .ob-copy-btn { + font-size: 10px; + font-weight: 500; + font-family: var(--font-interface); + background: transparent; + border: 1px solid var(--background-modifier-border); + border-radius: 4px; + padding: 1px 7px; + color: var(--text-muted); + cursor: pointer; + transition: background 120ms, color 120ms; +} +.ml-turn-agent.svelte-1elwqoj .ml-content.svelte-1elwqoj .ob-copy-btn:hover { + background: var(--background-primary); + color: var(--text-normal); +} +.ml-turn-agent.svelte-1elwqoj .ml-content.svelte-1elwqoj pre code { + font-family: var(--font-monospace); + font-size: 12px; + line-height: 1.6; + display: block; + padding: 10px 12px; + overflow-x: auto; + background: color-mix(in srgb, var(--interactive-accent) 4%, var(--background-secondary)) !important; +} +.ml-turn-agent.svelte-1elwqoj .ml-content.svelte-1elwqoj table { + border-collapse: collapse; + width: 100%; + margin: 8px 0; + font-size: 12px; +} +.ml-turn-agent.svelte-1elwqoj .ml-content.svelte-1elwqoj th { + border: 1px solid var(--background-modifier-border); + padding: 5px 10px; + text-align: left; + background: var(--background-secondary); + font-weight: 600; +} +.ml-turn-agent.svelte-1elwqoj .ml-content.svelte-1elwqoj td { + border: 1px solid var(--background-modifier-border); + padding: 5px 10px; + text-align: left; +} +.ml-turn-agent.svelte-1elwqoj .ml-content.svelte-1elwqoj a { + color: var(--text-accent); + text-decoration: none; +} +.ml-turn-agent.svelte-1elwqoj .ml-content.svelte-1elwqoj a:hover { + text-decoration: underline; +} +.ml-turn-agent.svelte-1elwqoj .ml-content.svelte-1elwqoj hr { + border: none; + border-top: 1px solid var(--background-modifier-border); + margin: 10px 0; +} +.ml-turn-agent.svelte-1elwqoj .ml-content.svelte-1elwqoj strong { + font-weight: 600; +} +.ml-turn-agent.svelte-1elwqoj .ml-content.svelte-1elwqoj em { + font-style: italic; + color: var(--text-muted); +} + +/* fakecss:D:/workspace/obsidian-agent/src/ui/ModeToggle.esbuild-svelte-fake-css */ +.mt-root.svelte-14w3f6r { + display: flex; + background: var(--background-secondary); + border: 1px solid var(--background-modifier-border); + border-radius: 7px; + padding: 2px; + gap: 1px; +} +.mt-option.svelte-14w3f6r { + display: inline-flex; + align-items: center; + gap: 4px; + padding: 3px 10px; + font-size: 11px; + font-weight: 500; + border: none; + border-radius: 5px; + cursor: pointer; + background: transparent; + color: var(--text-muted); + transition: + background 150ms ease, + color 150ms ease, + transform 120ms ease; + white-space: nowrap; +} +.mt-option.svelte-14w3f6r:hover { + color: var(--text-normal); + background: var(--background-modifier-hover); +} +.mt-option.svelte-14w3f6r:focus-visible { + outline: 2px solid var(--interactive-accent); + outline-offset: 1px; +} +.mt-option.svelte-14w3f6r:active { + transform: scale(0.97); +} +.mt-active.svelte-14w3f6r { + background: + linear-gradient( + 135deg, + var(--interactive-accent), + color-mix(in srgb, var(--interactive-accent) 72%, #000)) !important; + color: var(--text-on-accent, #fff) !important; + box-shadow: 0 1px 4px color-mix(in srgb, var(--interactive-accent) 40%, transparent); +} + +/* fakecss:D:/workspace/obsidian-agent/src/ui/ConversationList.esbuild-svelte-fake-css */ +.cl-root.svelte-19fxzhc { + display: flex; + flex-direction: column; + padding: 4px 0 0; + background: var(--background-primary); + min-height: 100%; +} +.cl-empty.svelte-19fxzhc { + padding: 10px 14px; + font-size: 12px; + color: var(--text-faint); + font-style: italic; +} +.cl-section-label.svelte-19fxzhc { + font-size: 9px; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.08em; + color: var(--text-faint); + padding: 8px 13px 3px; +} +.cl-item.svelte-19fxzhc { + display: flex; + align-items: center; + gap: 7px; + width: 100%; + padding: 7px 13px; + border: none; + background: transparent; + color: var(--text-muted); + font-size: 12px; + text-align: left; + cursor: pointer; + border-left: 3px solid transparent; + border-bottom: 1px solid var(--background-modifier-border); + transition: background 120ms ease, color 120ms ease; + white-space: nowrap; + overflow: hidden; +} +.cl-item.svelte-19fxzhc:hover { + background: var(--background-modifier-hover); + color: var(--text-normal); +} +.cl-item.svelte-19fxzhc:focus-visible { + outline: 2px solid var(--interactive-accent); + outline-offset: -2px; +} +.cl-active.svelte-19fxzhc { + border-left-color: var(--interactive-accent); + background: color-mix(in srgb, var(--interactive-accent) 8%, transparent) !important; + color: var(--text-accent) !important; +} +.cl-icon.svelte-19fxzhc { + flex-shrink: 0; + opacity: 0.5; +} +.cl-label.svelte-19fxzhc { + flex: 1; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.cl-date.svelte-19fxzhc { + font-size: 10px; + color: var(--text-faint); + font-family: var(--font-monospace); + flex-shrink: 0; +} +.cl-new-btn.svelte-19fxzhc { + display: flex; + align-items: center; + gap: 7px; + padding: 8px 13px; + border: none; + border-top: 1px solid var(--background-modifier-border); + background: var(--background-primary); + color: var(--interactive-accent); + font-size: 11px; + font-weight: 600; + cursor: pointer; + width: 100%; + text-align: left; + transition: background 120ms; + position: sticky; + bottom: 0; +} +.cl-new-btn.svelte-19fxzhc:hover { + background: color-mix(in srgb, var(--interactive-accent) 8%, transparent); +} + +/* fakecss:D:/workspace/obsidian-agent/src/ui/ChatView.esbuild-svelte-fake-css */ +.ac-shell.svelte-9ylsa4.svelte-9ylsa4 { + display: flex; + flex-direction: column; + height: 100%; + overflow: hidden; + font-size: var(--font-ui-small, 13px); + background: var(--background-primary); + color: var(--text-normal); +} +.ac-header.svelte-9ylsa4.svelte-9ylsa4 { + display: flex; + align-items: center; + gap: 6px; + padding: 6px 10px; + background: color-mix(in srgb, var(--background-primary) 88%, transparent); + backdrop-filter: blur(8px) saturate(1.2); + -webkit-backdrop-filter: blur(8px) saturate(1.2); + border-bottom: 1px solid color-mix(in srgb, var(--background-modifier-border) 70%, transparent); + box-shadow: 0 1px 6px rgba(0, 0, 0, 0.06); + flex-shrink: 0; + min-height: 38px; + position: relative; + z-index: 10; +} +.ac-header-right.svelte-9ylsa4.svelte-9ylsa4 { + display: flex; + align-items: center; + gap: 4px; + margin-left: auto; +} +.ac-provider-chip.svelte-9ylsa4.svelte-9ylsa4 { + display: inline-flex; + align-items: center; + gap: 5px; + font-size: 11px; + color: var(--text-muted); + background: var(--background-secondary); + border: 1px solid var(--background-modifier-border); + border-radius: 10px; + padding: 2px 8px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + max-width: 150px; + cursor: default; +} +.ac-provider-dot.svelte-9ylsa4.svelte-9ylsa4 { + width: 6px; + height: 6px; + border-radius: 50%; + background: var(--color-green, #48bb78); + flex-shrink: 0; + box-shadow: 0 0 4px color-mix(in srgb, var(--color-green, #48bb78) 60%, transparent); +} +.ac-history-toggle.svelte-9ylsa4.svelte-9ylsa4 { + color: var(--text-muted); +} +.ac-history-active.svelte-9ylsa4.svelte-9ylsa4 { + color: var(--interactive-accent) !important; + background: color-mix(in srgb, var(--interactive-accent) 12%, transparent) !important; +} +.ac-history-drawer.svelte-9ylsa4.svelte-9ylsa4 { + border-bottom: 1px solid var(--background-modifier-border); + max-height: 220px; + overflow-y: auto; + flex-shrink: 0; + background: var(--background-secondary); +} +.ac-btn.svelte-9ylsa4.svelte-9ylsa4 { + display: inline-flex; + align-items: center; + justify-content: center; + border: none; + border-radius: 6px; + cursor: pointer; + padding: 5px; + background: transparent; + color: var(--text-normal); + transition: + background 150ms ease, + color 150ms ease, + transform 120ms ease; + flex-shrink: 0; + line-height: 1; +} +.ac-btn.svelte-9ylsa4.svelte-9ylsa4:hover { + background: var(--background-modifier-hover); +} +.ac-btn.svelte-9ylsa4.svelte-9ylsa4:focus-visible { + outline: 2px solid var(--interactive-accent); + outline-offset: 1px; +} +.ac-btn-ghost.svelte-9ylsa4.svelte-9ylsa4 { + color: var(--text-muted); +} +.ac-btn-ghost.svelte-9ylsa4.svelte-9ylsa4:hover { + color: var(--text-normal); +} +.ac-btn-send.svelte-9ylsa4.svelte-9ylsa4 { + background: + linear-gradient( + 135deg, + var(--interactive-accent), + color-mix(in srgb, var(--interactive-accent) 72%, #000)); + color: var(--text-on-accent, #fff); + border-radius: 7px; + padding: 5px 6px; + width: 28px; + height: 28px; + box-shadow: 0 2px 8px color-mix(in srgb, var(--interactive-accent) 35%, transparent); + transition: + transform 120ms ease, + box-shadow 120ms ease, + opacity 150ms; +} +.ac-btn-send.svelte-9ylsa4.svelte-9ylsa4:not(:disabled):hover { + transform: scale(1.06); + box-shadow: 0 4px 12px color-mix(in srgb, var(--interactive-accent) 45%, transparent); +} +.ac-btn-send.svelte-9ylsa4.svelte-9ylsa4:disabled { + background: var(--background-modifier-border); + color: var(--text-muted); + cursor: not-allowed; + box-shadow: none; +} +.ac-btn-stop.svelte-9ylsa4.svelte-9ylsa4 { + background: color-mix(in srgb, var(--color-red, #e53e3e) 15%, transparent); + color: var(--color-red, #e53e3e); + border-radius: 7px; + width: 28px; + height: 28px; + border: 1px solid color-mix(in srgb, var(--color-red, #e53e3e) 40%, transparent); +} +.ac-btn-stop.svelte-9ylsa4.svelte-9ylsa4:hover { + background: color-mix(in srgb, var(--color-red, #e53e3e) 25%, transparent); +} +.ac-input-wrap.svelte-9ylsa4.svelte-9ylsa4 { + padding: 8px 10px 10px; + flex-shrink: 0; +} +.ac-input-box.svelte-9ylsa4.svelte-9ylsa4 { + display: flex; + flex-direction: column; + gap: 4px; + border: 1px solid var(--background-modifier-border); + border-radius: 10px; + background: var(--background-primary-alt); + padding: 8px 8px 6px 12px; + transition: border-color 200ms ease, box-shadow 200ms ease; + box-shadow: 0 1px 6px rgba(0, 0, 0, 0.07); +} +.ac-input-box.svelte-9ylsa4.svelte-9ylsa4:focus-within { + border-color: var(--interactive-accent); + box-shadow: 0 0 0 2px color-mix(in srgb, var(--interactive-accent) 20%, transparent), 0 2px 10px rgba(0, 0, 0, 0.08); +} +.ac-input-box.busy.svelte-9ylsa4.svelte-9ylsa4 { + opacity: 0.65; + border-color: var(--background-modifier-border); + box-shadow: none; +} +.ac-input-box.svelte-9ylsa4 textarea.svelte-9ylsa4 { + flex: 1; + border: none; + background: transparent; + color: var(--text-normal); + font-size: var(--font-ui-small, 13px); + font-family: var(--font-interface); + line-height: 1.5; + resize: none; + outline: none; + min-height: 22px; + max-height: 200px; + padding: 0; + box-shadow: none; +} +.ac-input-box.svelte-9ylsa4 textarea.svelte-9ylsa4::placeholder { + color: var(--text-faint); +} +.ac-input-footer.svelte-9ylsa4.svelte-9ylsa4 { + display: flex; + align-items: center; + justify-content: space-between; +} +.ac-input-actions.svelte-9ylsa4.svelte-9ylsa4 { + display: flex; + align-items: center; +} +.ac-char-count.svelte-9ylsa4.svelte-9ylsa4 { + font-size: 10px; + color: var(--text-faint); + font-family: var(--font-monospace); + line-height: 1; + padding-bottom: 2px; +} +.ac-char-warn.svelte-9ylsa4.svelte-9ylsa4 { + color: var(--color-orange, #ed8936); +}