前段
Change-Id: I718d4d07ea03c6d2b6bcbd4d426c5d1af2201bf4
diff --git a/src/components/TorrentDetail.css b/src/components/TorrentDetail.css
new file mode 100644
index 0000000..f2b1ad2
--- /dev/null
+++ b/src/components/TorrentDetail.css
@@ -0,0 +1,516 @@
+/* 基础布局样式 */
+.torrent-detail-container {
+ max-width: 1000px;
+ margin: 0 auto;
+ padding: 20px;
+ color: #333;
+}
+
+.back-button {
+ background: none;
+ border: none;
+ color: #3498db;
+ font-size: 16px;
+ cursor: pointer;
+ margin-bottom: 20px;
+ padding: 5px 10px;
+}
+
+.back-button:hover {
+ text-decoration: underline;
+}
+
+/* 种子信息区域 */
+.torrent-main {
+ display: flex;
+ gap: 30px;
+ margin-bottom: 40px;
+}
+
+.torrent-cover {
+ flex: 0 0 300px;
+}
+
+.cover-placeholder {
+ width: 100%;
+ height: 450px;
+ background-color: #eee;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-size: 72px;
+ color: #999;
+ border-radius: 5px;
+}
+
+.torrent-info {
+ flex: 1;
+}
+
+.torrent-title {
+ font-size: 28px;
+ margin-bottom: 20px;
+ color: #222;
+}
+
+.uploader-info {
+ display: flex;
+ align-items: center;
+ gap: 15px;
+ margin-bottom: 20px;
+}
+
+.uploader-avatar {
+ width: 40px;
+ height: 40px;
+ border-radius: 50%;
+ background-color: #3498db;
+ color: white;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-weight: bold;
+}
+
+.uploader-details {
+ flex: 1;
+}
+
+.uploader-name {
+ font-weight: bold;
+}
+
+.upload-time {
+ font-size: 14px;
+ color: #777;
+}
+
+.torrent-meta {
+ margin-bottom: 20px;
+}
+
+.torrent-meta p {
+ margin: 5px 0;
+}
+
+.torrent-description {
+ margin-bottom: 30px;
+ line-height: 1.6;
+}
+
+.interaction-buttons {
+ display: flex;
+ gap: 15px;
+}
+
+.interaction-buttons button {
+ padding: 8px 15px;
+ border: none;
+ border-radius: 4px;
+ cursor: pointer;
+ font-size: 14px;
+ transition: background-color 0.2s;
+}
+
+.like-button {
+ background-color: #f0f0f0;
+}
+
+.like-button:hover {
+ background-color: #e0e0e0;
+}
+
+.download-button {
+ background-color: #3498db;
+ color: white;
+}
+
+.download-button:hover {
+ background-color: #2980b9;
+}
+
+/* 评论区域样式 */
+.comments-section {
+ margin-top: 40px;
+}
+
+.comments-section h2 {
+ font-size: 22px;
+ margin-bottom: 20px;
+ padding-bottom: 10px;
+ border-bottom: 1px solid #eee;
+}
+
+.comment-form {
+ margin-bottom: 30px;
+}
+
+.comment-form textarea {
+ width: 100%;
+ padding: 10px;
+ border: 1px solid #ddd;
+ border-radius: 4px;
+ margin-bottom: 10px;
+ resize: vertical;
+ min-height: 80px;
+}
+
+.comment-form button {
+ background-color: #3498db;
+ color: white;
+ border: none;
+ padding: 8px 15px;
+ border-radius: 4px;
+ cursor: pointer;
+}
+
+.comment-form button:hover {
+ background-color: #2980b9;
+}
+
+.comment-list {
+ margin-top: 20px;
+}
+
+/* 评论项统一样式 */
+.comment-container {
+ margin-bottom: 15px;
+}
+
+.comment-item {
+ display: flex;
+ gap: 15px;
+ padding: 12px;
+ background: #fff;
+ border-radius: 8px;
+ border: 1px solid #eaeaea;
+}
+
+/* 副评论统一缩进 */
+.comment-container.is-reply {
+ margin-left: 40px;
+ position: relative;
+}
+
+/* 副评论连接线 */
+.comment-container.is-reply:before {
+ content: "";
+ position: absolute;
+ left: -20px;
+ top: 20px;
+ width: 15px;
+ height: 1px;
+ background: #ddd;
+}
+
+.comment-avatar {
+ flex: 0 0 40px;
+ height: 40px;
+ border-radius: 50%;
+ background-color: #e74c3c;
+ color: white;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ font-weight: bold;
+}
+
+.comment-content {
+ flex: 1;
+}
+
+.comment-header {
+ margin-bottom: 8px;
+}
+
+.comment-user {
+ font-weight: bold;
+ margin-right: 10px;
+}
+
+.reply-to {
+ color: #666;
+ font-size: 14px;
+ margin: 0 5px;
+}
+
+.comment-time {
+ font-size: 14px;
+ color: #777;
+}
+
+.comment-text {
+ margin-bottom: 10px;
+ line-height: 1.5;
+}
+
+.comment-actions {
+ display: flex;
+ gap: 15px;
+}
+
+.comment-actions button {
+ background: none;
+ border: none;
+ color: #3498db;
+ cursor: pointer;
+ font-size: 14px;
+ padding: 0;
+}
+
+.comment-actions button:hover {
+ text-decoration: underline;
+}
+
+/* 回复列表容器 */
+.replies-container {
+ margin-top: 15px;
+}
+
+/* 副评论背景色 */
+.comment-container.is-reply .comment-item {
+ background: #f9f9f9;
+}
+
+/* 回复表单样式 */
+.reply-form {
+ margin-top: 15px;
+}
+
+.reply-form textarea {
+ width: 100%;
+ padding: 8px;
+ border: 1px solid #ddd;
+ border-radius: 4px;
+ margin-bottom: 10px;
+ resize: vertical;
+ min-height: 60px;
+}
+
+.reply-actions {
+ display: flex;
+ gap: 10px;
+ justify-content: flex-end;
+}
+
+.reply-actions button {
+ padding: 5px 10px;
+ border: none;
+ border-radius: 3px;
+ cursor: pointer;
+ font-size: 13px;
+}
+
+.reply-actions button[type="button"] {
+ background-color: #f0f0f0;
+}
+
+.reply-actions button[type="submit"] {
+ background-color: #3498db;
+ color: white;
+}
+
+/* 加载和错误状态 */
+.loading {
+ text-align: center;
+ padding: 50px;
+ font-size: 18px;
+}
+
+.error {
+ color: #e74c3c;
+ text-align: center;
+ padding: 50px;
+ font-size: 18px;
+}
+/* 回复表单样式 */
+.reply-form {
+ margin-left: 50px;
+ margin-top: 10px;
+ background: #f5f5f5;
+ padding: 10px;
+ border-radius: 4px;
+}
+
+.reply-form textarea {
+ width: 100%;
+ padding: 8px;
+ border: 1px solid #ddd;
+ border-radius: 4px;
+ resize: vertical;
+}
+
+.reply-form-buttons {
+ display: flex;
+ gap: 10px;
+ margin-top: 8px;
+}
+
+.reply-form-buttons button {
+ padding: 5px 10px;
+ border: none;
+ border-radius: 4px;
+ cursor: pointer;
+}
+
+.reply-form-buttons button[type="submit"] {
+ background-color: #1890ff;
+ color: white;
+}
+
+.reply-form-buttons .cancel-reply {
+ background-color: #f5f5f5;
+ border: 1px solid #d9d9d9;
+}
+
+.comment-list {
+ margin-top: 20px;
+ border-top: 1px solid #eee;
+ padding-top: 20px;
+}
+
+.reply-form {
+ margin-left: 50px;
+ margin-top: 10px;
+ margin-bottom: 15px;
+ background: #f9f9f9;
+ padding: 12px;
+ border-radius: 6px;
+ border: 1px solid #eee;
+}
+
+.reply-form.nested-reply {
+ margin-left: 80px;
+}
+
+.reply-form textarea {
+ width: 100%;
+ padding: 10px;
+ border: 1px solid #ddd;
+ border-radius: 4px;
+ resize: vertical;
+ min-height: 60px;
+ font-family: inherit;
+ font-size: 14px;
+}
+
+.reply-form-buttons {
+ display: flex;
+ gap: 10px;
+ margin-top: 10px;
+}
+
+.reply-form-buttons button {
+ padding: 6px 12px;
+ border-radius: 4px;
+ cursor: pointer;
+ font-size: 13px;
+ transition: all 0.2s;
+}
+
+.reply-form-buttons button[type="submit"] {
+ background-color: #1890ff;
+ color: white;
+ border: none;
+}
+
+.reply-form-buttons button[type="submit"]:hover {
+ background-color: #40a9ff;
+}
+
+.reply-form-buttons .cancel-reply {
+ background-color: #f5f5f5;
+ border: 1px solid #d9d9d9;
+ color: #666;
+}
+
+.reply-form-buttons .cancel-reply:hover {
+ background-color: #e8e8e8;
+}
+
+/* 回复弹窗样式 */
+.reply-modal-overlay {
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background-color: rgba(0, 0, 0, 0.5);
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ z-index: 1000;
+}
+
+.reply-modal {
+ background: white;
+ border-radius: 8px;
+ width: 90%;
+ max-width: 500px;
+ padding: 20px;
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
+}
+
+.modal-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin-bottom: 15px;
+}
+
+.modal-header h3 {
+ margin: 0;
+ font-size: 18px;
+}
+
+.close-modal {
+ background: none;
+ border: none;
+ font-size: 24px;
+ cursor: pointer;
+ color: #666;
+}
+
+.reply-modal textarea {
+ width: 100%;
+ padding: 12px;
+ border: 1px solid #ddd;
+ border-radius: 4px;
+ resize: vertical;
+ min-height: 120px;
+ font-size: 14px;
+ margin-bottom: 15px;
+}
+
+.modal-actions {
+ display: flex;
+ justify-content: flex-end;
+ gap: 10px;
+}
+
+.modal-actions button {
+ padding: 8px 16px;
+ border-radius: 4px;
+ cursor: pointer;
+ font-size: 14px;
+}
+
+.cancel-btn {
+ background: #f5f5f5;
+ border: 1px solid #d9d9d9;
+ color: #666;
+}
+
+.cancel-btn:hover {
+ background: #e8e8e8;
+}
+
+.submit-btn {
+ background: #1890ff;
+ color: white;
+ border: none;
+}
+
+.submit-btn:hover {
+ background: #40a9ff;
+}