- Comment display: replace <Markdown> with <RichTextEditor editable={false}>
- Link color: primary → brand (blue)
- Mention color: brand → primary + semibold
- Add MentionHoverCard component with HoverCardTrigger render={<span />}
- Markdown.tsx: sync mention style to text-primary font-semibold
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
158 lines
2.9 KiB
CSS
158 lines
2.9 KiB
CSS
/* Rich text editor: ProseMirror styles using shadcn design tokens */
|
|
|
|
.rich-text-editor.ProseMirror {
|
|
color: var(--foreground);
|
|
caret-color: var(--foreground);
|
|
}
|
|
|
|
.rich-text-editor.ProseMirror:focus {
|
|
outline: none;
|
|
}
|
|
|
|
/* Placeholder */
|
|
.rich-text-editor .is-editor-empty:first-child::before {
|
|
content: attr(data-placeholder);
|
|
float: left;
|
|
color: var(--muted-foreground);
|
|
pointer-events: none;
|
|
height: 0;
|
|
}
|
|
|
|
/* Headings */
|
|
.rich-text-editor h1 {
|
|
font-size: 1.125rem;
|
|
font-weight: 700;
|
|
margin-top: 1.25rem;
|
|
margin-bottom: 0.5rem;
|
|
line-height: 1.4;
|
|
}
|
|
|
|
.rich-text-editor h2 {
|
|
font-size: 1rem;
|
|
font-weight: 600;
|
|
margin-top: 1rem;
|
|
margin-bottom: 0.5rem;
|
|
line-height: 1.4;
|
|
}
|
|
|
|
.rich-text-editor h3 {
|
|
font-size: 0.875rem;
|
|
font-weight: 600;
|
|
margin-top: 0.75rem;
|
|
margin-bottom: 0.25rem;
|
|
line-height: 1.4;
|
|
}
|
|
|
|
/* Paragraphs */
|
|
.rich-text-editor p {
|
|
margin-top: 0.375rem;
|
|
margin-bottom: 0.375rem;
|
|
line-height: 1.625;
|
|
}
|
|
|
|
/* First child should not have top margin */
|
|
.rich-text-editor > *:first-child {
|
|
margin-top: 0;
|
|
}
|
|
|
|
/* Last child should not have bottom margin */
|
|
.rich-text-editor > *:last-child {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
/* Lists */
|
|
.rich-text-editor ul {
|
|
list-style-type: disc;
|
|
padding-inline-start: 1.25rem;
|
|
margin: 0.375rem 0;
|
|
}
|
|
|
|
.rich-text-editor ol {
|
|
list-style-type: decimal;
|
|
padding-inline-start: 1.25rem;
|
|
margin: 0.375rem 0;
|
|
}
|
|
|
|
.rich-text-editor li {
|
|
margin: 0.125rem 0;
|
|
line-height: 1.625;
|
|
}
|
|
|
|
.rich-text-editor li::marker {
|
|
color: var(--muted-foreground);
|
|
}
|
|
|
|
/* Inline code */
|
|
.rich-text-editor code {
|
|
font-family: var(--font-mono, ui-monospace, monospace);
|
|
font-size: 0.8em;
|
|
background: var(--muted);
|
|
color: var(--foreground);
|
|
padding: 0.15em 0.35em;
|
|
border-radius: calc(var(--radius) * 0.6);
|
|
}
|
|
|
|
/* Code blocks */
|
|
.rich-text-editor pre {
|
|
font-family: var(--font-mono, ui-monospace, monospace);
|
|
background: var(--muted);
|
|
border-radius: var(--radius);
|
|
padding: 0.75rem 1rem;
|
|
margin: 0.5rem 0;
|
|
overflow-x: auto;
|
|
}
|
|
|
|
.rich-text-editor pre code {
|
|
background: none;
|
|
padding: 0;
|
|
font-size: 0.8125rem;
|
|
line-height: 1.6;
|
|
}
|
|
|
|
/* Blockquotes */
|
|
.rich-text-editor blockquote {
|
|
border-left: 2px solid var(--border);
|
|
padding-left: 0.75rem;
|
|
margin: 0.5rem 0;
|
|
color: var(--muted-foreground);
|
|
}
|
|
|
|
/* Horizontal rules */
|
|
.rich-text-editor hr {
|
|
border: none;
|
|
border-top: 1px solid var(--border);
|
|
margin: 1rem 0;
|
|
}
|
|
|
|
/* Links */
|
|
.rich-text-editor a {
|
|
color: var(--brand);
|
|
text-decoration: none;
|
|
}
|
|
|
|
.rich-text-editor a:hover {
|
|
text-decoration: underline;
|
|
text-underline-offset: 2px;
|
|
}
|
|
|
|
/* Mentions */
|
|
.rich-text-editor .mention {
|
|
color: var(--primary);
|
|
font-weight: 600;
|
|
text-decoration: none;
|
|
margin: 0 0.125rem;
|
|
}
|
|
|
|
/* Strong / emphasis */
|
|
.rich-text-editor strong {
|
|
font-weight: 600;
|
|
}
|
|
|
|
.rich-text-editor em {
|
|
font-style: italic;
|
|
}
|
|
|
|
.rich-text-editor s {
|
|
text-decoration: line-through;
|
|
color: var(--muted-foreground);
|
|
}
|