- 排名算法权重可配置,排行榜显示点击量/付款数/热度 - 富文本编辑器升级(TipTap),支持@提及/#链接标签/图片/表格 - 「主人公」Tab → 「链接AI」Tab,AI列表+链接标签管理 - 链接标签新增存客宝(ckb)类型,存客宝绑定配置面板 - 人物ID改为可选,名称必填 - 排行榜操作改为「编辑文章」,付款记录移入编辑弹窗 - 章节ID修改支持(originalId/newId机制) - 付款记录用户ID/订单ID可点击跳转 - 项目推进表补充14-15节(03-07~09改动记录+存客宝技术方案) Made-with: Cursor
197 lines
4.7 KiB
CSS
197 lines
4.7 KiB
CSS
.rich-editor-wrapper {
|
|
border: 1px solid #374151;
|
|
border-radius: 0.5rem;
|
|
background: #0a1628;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.rich-editor-toolbar {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 2px;
|
|
padding: 6px 8px;
|
|
border-bottom: 1px solid #374151;
|
|
background: #0f1d32;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.toolbar-group {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 1px;
|
|
}
|
|
|
|
.toolbar-divider {
|
|
width: 1px;
|
|
height: 20px;
|
|
background: #374151;
|
|
margin: 0 4px;
|
|
}
|
|
|
|
.rich-editor-toolbar button {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 28px;
|
|
height: 28px;
|
|
border-radius: 4px;
|
|
border: none;
|
|
background: transparent;
|
|
color: #9ca3af;
|
|
cursor: pointer;
|
|
transition: all 0.15s;
|
|
}
|
|
.rich-editor-toolbar button:hover { background: #1f2937; color: #d1d5db; }
|
|
.rich-editor-toolbar button.is-active { background: rgba(56, 189, 172, 0.2); color: #38bdac; }
|
|
.rich-editor-toolbar button:disabled { opacity: 0.3; cursor: not-allowed; }
|
|
|
|
.link-tag-select {
|
|
background: #0a1628;
|
|
border: 1px solid #374151;
|
|
color: #d1d5db;
|
|
font-size: 12px;
|
|
padding: 2px 6px;
|
|
border-radius: 4px;
|
|
cursor: pointer;
|
|
max-width: 160px;
|
|
}
|
|
|
|
.link-input-bar {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 4px;
|
|
padding: 4px 8px;
|
|
border-bottom: 1px solid #374151;
|
|
background: #0f1d32;
|
|
}
|
|
.link-input {
|
|
flex: 1;
|
|
background: #0a1628;
|
|
border: 1px solid #374151;
|
|
color: white;
|
|
padding: 4px 8px;
|
|
border-radius: 4px;
|
|
font-size: 13px;
|
|
}
|
|
.link-confirm, .link-remove {
|
|
padding: 4px 10px;
|
|
border-radius: 4px;
|
|
border: none;
|
|
font-size: 12px;
|
|
cursor: pointer;
|
|
}
|
|
.link-confirm { background: #38bdac; color: white; }
|
|
.link-remove { background: #374151; color: #9ca3af; }
|
|
|
|
.rich-editor-content {
|
|
min-height: 300px;
|
|
max-height: 500px;
|
|
overflow-y: auto;
|
|
padding: 12px 16px;
|
|
color: #e5e7eb;
|
|
font-size: 14px;
|
|
line-height: 1.7;
|
|
}
|
|
|
|
.rich-editor-content:focus { outline: none; }
|
|
|
|
.rich-editor-content h1 { font-size: 1.5em; font-weight: 700; margin: 0.8em 0 0.4em; color: white; }
|
|
.rich-editor-content h2 { font-size: 1.3em; font-weight: 600; margin: 0.7em 0 0.3em; color: white; }
|
|
.rich-editor-content h3 { font-size: 1.15em; font-weight: 600; margin: 0.6em 0 0.3em; color: white; }
|
|
.rich-editor-content p { margin: 0.4em 0; }
|
|
.rich-editor-content strong { color: white; }
|
|
.rich-editor-content code { background: #1f2937; padding: 2px 6px; border-radius: 3px; font-size: 0.9em; color: #38bdac; }
|
|
.rich-editor-content pre { background: #1f2937; padding: 12px; border-radius: 6px; overflow-x: auto; margin: 0.6em 0; }
|
|
.rich-editor-content blockquote {
|
|
border-left: 3px solid #38bdac;
|
|
padding-left: 12px;
|
|
margin: 0.6em 0;
|
|
color: #9ca3af;
|
|
}
|
|
.rich-editor-content ul, .rich-editor-content ol { padding-left: 1.5em; margin: 0.4em 0; }
|
|
.rich-editor-content li { margin: 0.2em 0; }
|
|
.rich-editor-content hr { border: none; border-top: 1px solid #374151; margin: 1em 0; }
|
|
.rich-editor-content img { max-width: 100%; border-radius: 6px; margin: 0.5em 0; }
|
|
.rich-editor-content a, .rich-link { color: #38bdac; text-decoration: underline; cursor: pointer; }
|
|
|
|
.rich-editor-content table {
|
|
border-collapse: collapse;
|
|
width: 100%;
|
|
margin: 0.5em 0;
|
|
}
|
|
.rich-editor-content th, .rich-editor-content td {
|
|
border: 1px solid #374151;
|
|
padding: 6px 10px;
|
|
text-align: left;
|
|
}
|
|
.rich-editor-content th { background: #1f2937; font-weight: 600; }
|
|
|
|
.rich-editor-content .ProseMirror-placeholder::before {
|
|
content: attr(data-placeholder);
|
|
color: #6b7280;
|
|
float: left;
|
|
height: 0;
|
|
pointer-events: none;
|
|
}
|
|
|
|
.mention-tag {
|
|
background: rgba(56, 189, 172, 0.15);
|
|
color: #38bdac;
|
|
border-radius: 4px;
|
|
padding: 1px 4px;
|
|
font-weight: 500;
|
|
}
|
|
|
|
.mention-popup {
|
|
position: fixed;
|
|
z-index: 9999;
|
|
background: #1a2638;
|
|
border: 1px solid #374151;
|
|
border-radius: 8px;
|
|
padding: 4px;
|
|
min-width: 180px;
|
|
max-height: 240px;
|
|
overflow-y: auto;
|
|
box-shadow: 0 4px 20px rgba(0,0,0,0.4);
|
|
}
|
|
.mention-item {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
padding: 6px 10px;
|
|
border-radius: 4px;
|
|
cursor: pointer;
|
|
color: #d1d5db;
|
|
font-size: 13px;
|
|
}
|
|
.mention-item:hover, .mention-item.is-selected {
|
|
background: rgba(56, 189, 172, 0.15);
|
|
color: #38bdac;
|
|
}
|
|
.mention-name { font-weight: 500; }
|
|
.mention-id { font-size: 11px; color: #6b7280; }
|
|
|
|
.bubble-menu {
|
|
display: flex;
|
|
gap: 2px;
|
|
background: #1a2638;
|
|
border: 1px solid #374151;
|
|
border-radius: 6px;
|
|
padding: 4px;
|
|
box-shadow: 0 4px 12px rgba(0,0,0,0.3);
|
|
}
|
|
.bubble-menu button {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
width: 26px;
|
|
height: 26px;
|
|
border-radius: 4px;
|
|
border: none;
|
|
background: transparent;
|
|
color: #9ca3af;
|
|
cursor: pointer;
|
|
}
|
|
.bubble-menu button:hover { background: #1f2937; color: #d1d5db; }
|
|
.bubble-menu button.is-active { color: #38bdac; }
|