feat(web): integrate Claude LLM streaming with markdown rendering
- Add Anthropic SDK with DeepSeek-compatible API config - Streaming tool-use loop in WebSocket chat handler - GitHub-style markdown rendering with markdown-it - Tool status indicators and thinking states in chat UI - Fix Tailwind content path and CSS border utility Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -4,9 +4,86 @@
|
||||
|
||||
@layer base {
|
||||
* {
|
||||
@apply border-border;
|
||||
@apply border-zinc-800;
|
||||
}
|
||||
body {
|
||||
@apply bg-zinc-950 text-zinc-50;
|
||||
}
|
||||
}
|
||||
|
||||
/* GitHub-style Markdown */
|
||||
@layer components {
|
||||
.markdown-body {
|
||||
color-scheme: dark;
|
||||
}
|
||||
.markdown-body h1 { font-size: 1.5em; font-weight: 600; margin: 0.67em 0; padding-bottom: 0.3em; border-bottom: 1px solid #30363d; }
|
||||
.markdown-body h2 { font-size: 1.25em; font-weight: 600; margin: 0.83em 0; padding-bottom: 0.3em; border-bottom: 1px solid #30363d; }
|
||||
.markdown-body h3 { font-size: 1.1em; font-weight: 600; margin: 1em 0 0.25em; }
|
||||
.markdown-body h4 { font-size: 1em; font-weight: 600; margin: 1em 0 0.25em; }
|
||||
.markdown-body p { margin: 0 0 0.75em; }
|
||||
.markdown-body p:last-child { margin-bottom: 0; }
|
||||
.markdown-body ul, .markdown-body ol { padding-left: 1.5em; margin: 0 0 0.75em; }
|
||||
.markdown-body li { margin: 0.15em 0; }
|
||||
.markdown-body li > p { margin: 0; }
|
||||
.markdown-body ul { list-style-type: disc; }
|
||||
.markdown-body ol { list-style-type: decimal; }
|
||||
.markdown-body ul ul { list-style-type: circle; }
|
||||
.markdown-body ul ul ul { list-style-type: square; }
|
||||
.markdown-body blockquote {
|
||||
margin: 0 0 0.75em;
|
||||
padding: 0 1em;
|
||||
color: #8b949e;
|
||||
border-left: 3px solid #30363d;
|
||||
}
|
||||
.markdown-body code {
|
||||
background: rgba(110,118,129,0.2);
|
||||
padding: 0.15em 0.4em;
|
||||
border-radius: 4px;
|
||||
font-size: 0.875em;
|
||||
font-family: ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace;
|
||||
}
|
||||
.markdown-body pre {
|
||||
background: #161b22;
|
||||
border: 1px solid #30363d;
|
||||
border-radius: 6px;
|
||||
padding: 12px;
|
||||
margin: 0 0 0.75em;
|
||||
overflow-x: auto;
|
||||
}
|
||||
.markdown-body pre code {
|
||||
background: none;
|
||||
padding: 0;
|
||||
font-size: 0.8125em;
|
||||
line-height: 1.5;
|
||||
color: #e6edf3;
|
||||
}
|
||||
.markdown-body hr {
|
||||
border: 0;
|
||||
height: 1px;
|
||||
background: #30363d;
|
||||
margin: 1em 0;
|
||||
}
|
||||
.markdown-body a {
|
||||
color: #58a6ff;
|
||||
text-decoration: none;
|
||||
}
|
||||
.markdown-body a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
.markdown-body strong { font-weight: 600; }
|
||||
.markdown-body table {
|
||||
border-collapse: collapse;
|
||||
margin: 0 0 0.75em;
|
||||
width: 100%;
|
||||
}
|
||||
.markdown-body th, .markdown-body td {
|
||||
border: 1px solid #30363d;
|
||||
padding: 6px 13px;
|
||||
text-align: left;
|
||||
}
|
||||
.markdown-body th {
|
||||
font-weight: 600;
|
||||
background: rgba(110,118,129,0.1);
|
||||
}
|
||||
.markdown-body img { max-width: 100%; border-radius: 6px; }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user