+
-
diff --git a/plugins/addon/theme_configurator/template/admin/theme.css b/plugins/addon/theme_configurator/template/admin/theme.css
index a487c5c..c313fda 100644
--- a/plugins/addon/theme_configurator/template/admin/theme.css
+++ b/plugins/addon/theme_configurator/template/admin/theme.css
@@ -1,111 +1,435 @@
-.theme-card {
- margin-bottom: 20px;
+/* ============================================
+ 主题配置插件 - 现代化 UI 设计
+ 设计理念:清晰、高效、美观
+ ============================================ */
+
+/* 全局容器 */
+.template {
+ max-width: 1400px;
+ margin: 0 auto;
}
+/* 卡片优化 - 增加层次感和呼吸感 */
+.theme-card {
+ margin-bottom: 24px;
+ border-radius: 12px;
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
+ transition: all 0.3s ease;
+ overflow: hidden;
+}
+
+.theme-card:hover {
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
+}
+
+/* 表单网格 - 优化间距和布局 */
.form-grid {
display: grid;
- grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
- grid-gap: 16px;
+ grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
+ gap: 20px;
+ padding: 4px 0;
}
+/* 表单项优化 */
.form-item {
display: flex;
flex-direction: column;
+ min-height: 70px;
}
.form-item--full {
grid-column: 1 / -1;
}
+/* 标签样式优化 - 更清晰的视觉层次 */
.form-item label {
+ font-size: 14px;
+ font-weight: 500;
+ color: #374151;
+ margin-bottom: 8px;
+ display: flex;
+ align-items: center;
+ line-height: 1.5;
+}
+
+.form-item label::before {
+ content: '';
+ width: 3px;
+ height: 14px;
+ background: linear-gradient(180deg, #3b82f6 0%, #8b5cf6 100%);
+ border-radius: 2px;
+ margin-right: 8px;
+ opacity: 0.6;
+}
+
+/* Switch 开关优化 - 解决"新窗口打开"文字过长问题 */
+.form-item--switch {
+ flex-direction: row;
+ align-items: center;
+ justify-content: space-between;
+ min-height: 48px;
+ padding: 12px 16px;
+ background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);
+ border-radius: 8px;
+ border: 1px solid #e2e8f0;
+ transition: all 0.3s ease;
+}
+
+.form-item--switch:hover {
+ background: linear-gradient(135deg, #f1f5f9 0%, #e2e8f0 100%);
+ border-color: #cbd5e1;
+}
+
+.form-item--switch label {
+ margin-bottom: 0;
font-size: 13px;
- color: #6b7280;
- margin-bottom: 6px;
+ flex: 1;
}
-.theme-textarea textarea {
- font-family: "JetBrains Mono", Consolas, monospace;
+.form-item--switch label::before {
+ display: none;
}
+/* Switch 标签图标优化 */
+.switch-label {
+ display: flex;
+ align-items: center;
+ gap: 6px;
+ color: #64748b;
+ font-size: 13px;
+ font-weight: 500;
+}
+
+.switch-label-icon {
+ width: 16px;
+ height: 16px;
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ background: linear-gradient(135deg, #60a5fa 0%, #a78bfa 100%);
+ border-radius: 4px;
+ color: white;
+ font-size: 10px;
+ font-weight: 600;
+}
+
+/* 提示文本优化 */
.theme-tip {
- margin-top: 0;
- margin-bottom: 12px;
- color: #94a3b8;
+ margin: 0 0 16px;
+ padding: 12px 16px;
+ background: linear-gradient(135deg, #eff6ff 0%, #f5f3ff 100%);
+ border-left: 3px solid #3b82f6;
+ border-radius: 6px;
+ color: #475569;
+ font-size: 13px;
+ line-height: 1.6;
+}
+
+.theme-tip code {
+ padding: 2px 6px;
+ background: rgba(59, 130, 246, 0.1);
+ border-radius: 3px;
+ color: #3b82f6;
+ font-family: 'JetBrains Mono', Consolas, monospace;
font-size: 12px;
}
-.banner-item {
- border: 1px solid #e5e7eb;
+/* JSON 编辑器优化 */
+.theme-textarea textarea {
+ font-family: 'JetBrains Mono', Consolas, Monaco, monospace;
+ font-size: 13px;
+ line-height: 1.6;
+ background: #1e293b;
+ color: #e2e8f0;
border-radius: 8px;
- padding: 16px;
- margin-bottom: 16px;
- background: #f9fafb;
+ padding: 16px !important;
}
-.banner-item__header {
- display: flex;
- justify-content: space-between;
- align-items: center;
- margin-bottom: 16px;
-}
-
-.banner-item__header h4 {
- margin: 0;
- font-size: 16px;
-}
-
-/* 通用列表块,复用轮播样式 */
+/* 轮播/配置项卡片优化 - 更有层次感 */
+.banner-item,
.config-item {
- border: 1px solid #e5e7eb;
- border-radius: 8px;
- padding: 16px;
- margin-bottom: 16px;
- background: #f9fafb;
+ border: 1px solid #e2e8f0;
+ border-radius: 10px;
+ padding: 20px;
+ margin-bottom: 20px;
+ background: linear-gradient(135deg, #ffffff 0%, #f8fafc 100%);
+ box-shadow: 0 1px 4px rgba(0, 0, 0, 0.05);
+ transition: all 0.3s ease;
+ position: relative;
+ overflow: hidden;
}
+.banner-item::before,
+.config-item::before {
+ content: '';
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ height: 4px;
+ background: linear-gradient(90deg, #3b82f6 0%, #8b5cf6 50%, #ec4899 100%);
+ opacity: 0;
+ transition: opacity 0.3s ease;
+}
+
+.banner-item:hover,
+.config-item:hover {
+ border-color: #cbd5e1;
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
+ transform: translateY(-2px);
+}
+
+.banner-item:hover::before,
+.config-item:hover::before {
+ opacity: 1;
+}
+
+/* 配置项头部优化 */
+.banner-item__header,
.config-item__header {
display: flex;
justify-content: space-between;
align-items: center;
- margin-bottom: 16px;
+ margin-bottom: 20px;
+ padding-bottom: 12px;
+ border-bottom: 2px solid #f1f5f9;
}
+.banner-item__header h4,
.config-item__header h4 {
margin: 0;
font-size: 16px;
-}
-
-.sub-title {
- margin: 0 0 8px;
- font-size: 14px;
font-weight: 600;
- color: #4b5563;
-}
-
-.empty-tip {
- padding: 16px;
- border: 1px dashed #cbd5f5;
- border-radius: 6px;
- color: #6b7280;
- margin-bottom: 16px;
- background: #f8fafc;
-}
-
-.action-bar {
+ color: #1e293b;
display: flex;
- justify-content: flex-end;
- margin-top: 20px;
+ align-items: center;
+ gap: 8px;
}
-.upload-row {
+.banner-item__header h4::before,
+.config-item__header h4::before {
+ content: '●';
+ color: #3b82f6;
+ font-size: 12px;
+}
+
+/* 子标题优化 */
+.sub-title {
+ margin: 24px 0 12px;
+ padding-left: 12px;
+ font-size: 15px;
+ font-weight: 600;
+ color: #475569;
+ border-left: 3px solid #3b82f6;
display: flex;
align-items: center;
}
+/* 空状态优化 - 更友好的视觉引导 */
+.empty-tip {
+ padding: 32px 24px;
+ border: 2px dashed #cbd5e1;
+ border-radius: 10px;
+ color: #64748b;
+ margin-bottom: 20px;
+ background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%);
+ text-align: center;
+ font-size: 14px;
+ line-height: 1.8;
+ position: relative;
+ transition: all 0.3s ease;
+}
+
+.empty-tip::before {
+ content: '📋';
+ display: block;
+ font-size: 32px;
+ margin-bottom: 12px;
+ opacity: 0.6;
+}
+
+.empty-tip:hover {
+ border-color: #94a3b8;
+ background: linear-gradient(135deg, #f1f5f9 0%, #e2e8f0 100%);
+}
+
+/* 上传行优化 - 更紧凑的布局 */
+.upload-row {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+}
+
+.upload-row .t-input {
+ flex: 1;
+}
+
+.upload-row .t-button {
+ flex-shrink: 0;
+ min-width: 80px;
+}
+
+/* 底部操作栏优化 */
+.action-bar {
+ display: flex;
+ justify-content: flex-end;
+ align-items: center;
+ gap: 12px;
+ margin-top: 32px;
+ padding: 20px 24px;
+ background: linear-gradient(135deg, #f8fafc 0%, #ffffff 100%);
+ border-radius: 12px;
+ border: 1px solid #e2e8f0;
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04);
+ position: sticky;
+ bottom: 20px;
+ z-index: 100;
+}
+
+/* 按钮增强 */
+.action-bar .t-button {
+ min-width: 120px;
+ font-weight: 500;
+ transition: all 0.3s ease;
+}
+
+.action-bar .t-button--primary {
+ background: linear-gradient(135deg, #3b82f6 0%, #8b5cf6 100%);
+ box-shadow: 0 4px 12px rgba(59, 130, 246, 0.3);
+}
+
+.action-bar .t-button--primary:hover {
+ box-shadow: 0 6px 20px rgba(59, 130, 246, 0.4);
+ transform: translateY(-2px);
+}
+
+/* 间距工具类优化 */
.mt-10 {
- margin-top: 10px;
+ margin-top: 16px;
}
.ml-10 {
- margin-left: 10px;
+ margin-left: 12px;
+}
+
+.mb-10 {
+ margin-bottom: 16px;
+}
+
+/* Tab 标签页优化 */
+.t-tabs__nav {
+ background: linear-gradient(135deg, #ffffff 0%, #f8fafc 100%);
+ border-radius: 10px 10px 0 0;
+ padding: 8px;
+}
+
+.t-tab {
+ font-weight: 500;
+ transition: all 0.3s ease;
+}
+
+.t-tab.t-is-active {
+ background: linear-gradient(135deg, #3b82f6 0%, #8b5cf6 100%);
+ color: white !important;
+ border-radius: 6px;
+}
+
+/* 响应式优化 */
+@media (max-width: 768px) {
+ .form-grid {
+ grid-template-columns: 1fr;
+ gap: 16px;
+ }
+
+ .banner-item,
+ .config-item {
+ padding: 16px;
+ }
+
+ .action-bar {
+ flex-direction: column;
+ gap: 8px;
+ }
+
+ .action-bar .t-button {
+ width: 100%;
+ }
+
+ .form-item--switch {
+ flex-direction: column;
+ align-items: flex-start;
+ gap: 12px;
+ }
+}
+
+/* 滚动条美化 */
+::-webkit-scrollbar {
+ width: 8px;
+ height: 8px;
+}
+
+::-webkit-scrollbar-track {
+ background: #f1f5f9;
+ border-radius: 4px;
+}
+
+::-webkit-scrollbar-thumb {
+ background: linear-gradient(180deg, #3b82f6 0%, #8b5cf6 100%);
+ border-radius: 4px;
+ transition: background 0.3s ease;
+}
+
+::-webkit-scrollbar-thumb:hover {
+ background: linear-gradient(180deg, #2563eb 0%, #7c3aed 100%);
+}
+
+/* 输入框聚焦优化 */
+.t-input:focus-within,
+.t-textarea:focus-within {
+ box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
+ border-color: #3b82f6;
+}
+
+/* 加载状态优化 */
+.t-button--loading {
+ opacity: 0.7;
+ cursor: not-allowed;
+}
+
+/* 删除按钮优化 */
+.t-button--danger {
+ transition: all 0.3s ease;
+}
+
+.t-button--danger:hover {
+ transform: scale(1.05);
+ box-shadow: 0 4px 12px rgba(239, 68, 68, 0.3);
+}
+
+/* 成功状态提示 */
+.success-indicator {
+ display: inline-flex;
+ align-items: center;
+ gap: 6px;
+ padding: 4px 12px;
+ background: linear-gradient(135deg, #10b981 0%, #059669 100%);
+ color: white;
+ border-radius: 16px;
+ font-size: 12px;
+ font-weight: 500;
+}
+
+/* 表单验证提示 */
+.form-error {
+ color: #ef4444;
+ font-size: 12px;
+ margin-top: 4px;
+ display: flex;
+ align-items: center;
+ gap: 4px;
+}
+
+.form-error::before {
+ content: '⚠';
+ font-size: 14px;
}