优化模版样式
This commit is contained in:
		
							parent
							
								
									54ea0b97a9
								
							
						
					
					
						commit
						a21bde97f9
					
				| @ -1,6 +1,6 @@ | ||||
| 'use client' | ||||
| 
 | ||||
| import { useState } from 'react' | ||||
| import { useState, useEffect } from 'react' | ||||
| import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogTrigger } from '@/components/ui/dialog' | ||||
| import { Label } from '@/components/ui/label' | ||||
| import { Input } from '@/components/ui/input' | ||||
| @ -33,6 +33,11 @@ export function StyleConfigDialog({ value, onChangeAction }: StyleConfigDialogPr | ||||
|   const [currentOptions, setCurrentOptions] = useState<RendererOptions>(value) | ||||
|   const [customizedFields, setCustomizedFields] = useState<Set<string>>(new Set()) | ||||
| 
 | ||||
|   useEffect(() => { | ||||
|     setCurrentOptions(value) | ||||
|     setCustomizedFields(new Set()) | ||||
|   }, [value]) | ||||
| 
 | ||||
|   const handleOptionChange = ( | ||||
|     category: keyof RendererOptions, | ||||
|     subcategory: string, | ||||
|  | ||||
| @ -81,18 +81,27 @@ export default function WechatEditor() { | ||||
|       block: { | ||||
|         ...(template?.options?.block || {}), | ||||
|         ...(styleOptions.block || {}), | ||||
|         // 确保标题使用主题颜色和正确的字体大小
 | ||||
|         // 合并标题样式,保留模版中的其他样式属性
 | ||||
|         h1: {  | ||||
|           fontSize: styleOptions.block?.h1?.fontSize || '24px', | ||||
|           color: styleOptions.base?.themeColor || '#1a1a1a' | ||||
|           ...(template?.options?.block?.h1 || {}), | ||||
|           ...(styleOptions.block?.h1 || {}), | ||||
|           fontSize: styleOptions.block?.h1?.fontSize || template?.options?.block?.h1?.fontSize || '24px', | ||||
|           color: styleOptions.base?.themeColor || template?.options?.base?.themeColor || '#1a1a1a', | ||||
|           borderBottom: `2px solid ${styleOptions.base?.themeColor || template?.options?.base?.themeColor || '#1a1a1a'}` | ||||
|         }, | ||||
|         h2: {  | ||||
|           fontSize: styleOptions.block?.h2?.fontSize || '20px', | ||||
|           color: styleOptions.base?.themeColor || '#1a1a1a' | ||||
|           ...(template?.options?.block?.h2 || {}), | ||||
|           ...(styleOptions.block?.h2 || {}), | ||||
|           fontSize: styleOptions.block?.h2?.fontSize || template?.options?.block?.h2?.fontSize || '20px', | ||||
|           color: styleOptions.base?.themeColor || template?.options?.base?.themeColor || '#1a1a1a', | ||||
|           borderBottom: `2px solid ${styleOptions.base?.themeColor || template?.options?.base?.themeColor || '#1a1a1a'}` | ||||
|         }, | ||||
|         h3: {  | ||||
|           fontSize: styleOptions.block?.h3?.fontSize || '18px', | ||||
|           color: styleOptions.base?.themeColor || '#1a1a1a' | ||||
|           ...(template?.options?.block?.h3 || {}), | ||||
|           ...(styleOptions.block?.h3 || {}), | ||||
|           fontSize: styleOptions.block?.h3?.fontSize || template?.options?.block?.h3?.fontSize || '18px', | ||||
|           color: styleOptions.base?.themeColor || template?.options?.base?.themeColor || '#1a1a1a', | ||||
|           borderLeft: `3px solid ${styleOptions.base?.themeColor || template?.options?.base?.themeColor || '#1a1a1a'}` | ||||
|         } | ||||
|       }, | ||||
|       inline: { | ||||
| @ -384,6 +393,13 @@ export default function WechatEditor() { | ||||
|     }) | ||||
|   }, [value, handleEditorChange]) | ||||
| 
 | ||||
|   // 处理模版选择
 | ||||
|   const handleTemplateSelect = useCallback((templateId: string) => { | ||||
|     setSelectedTemplate(templateId) | ||||
|     // 重置样式设置为模版默认值
 | ||||
|     setStyleOptions({}) | ||||
|   }, []) | ||||
| 
 | ||||
|   return ( | ||||
|     <div className="h-full flex flex-col"> | ||||
|       <div className="hidden sm:block"> | ||||
| @ -397,7 +413,7 @@ export default function WechatEditor() { | ||||
|           onCopyPreview={handleCopy} | ||||
|           onNewArticle={handleNewArticle} | ||||
|           onArticleSelect={handleArticleSelect} | ||||
|           onTemplateSelect={setSelectedTemplate} | ||||
|           onTemplateSelect={handleTemplateSelect} | ||||
|           onTemplateChange={() => setValue(value)} | ||||
|           onStyleOptionsChange={setStyleOptions} | ||||
|           onPreviewToggle={() => setShowPreview(!showPreview)} | ||||
| @ -412,7 +428,7 @@ export default function WechatEditor() { | ||||
|             <div className="flex-1 mr-2"> | ||||
|               <WechatStylePicker  | ||||
|                 value={selectedTemplate}  | ||||
|                 onSelect={setSelectedTemplate} | ||||
|                 onSelect={handleTemplateSelect} | ||||
|               /> | ||||
|             </div> | ||||
|             <button | ||||
|  | ||||
| @ -17,6 +17,7 @@ export const templates: Template[] = [ | ||||
|     styles: '', | ||||
|     options: { | ||||
|       base: { | ||||
|         themeColor: '#16a34a', | ||||
|         primaryColor: '#000000', | ||||
|         textAlign: 'left', | ||||
|         lineHeight: '1.75', | ||||
| @ -44,7 +45,7 @@ export const templates: Template[] = [ | ||||
|           padding: '0 0.2em', | ||||
|           margin: '4em auto 2em', | ||||
|           color: '#fff', | ||||
|           background: 'var(--md-primary-color)', | ||||
|           borderBottom: '2px solid var(--md-primary-color)', | ||||
|           fontSize: '1.2em', | ||||
|           fontWeight: 'bold', | ||||
|           textAlign: 'center' | ||||
| @ -183,6 +184,7 @@ export const templates: Template[] = [ | ||||
|     styles: 'prose-elegant', | ||||
|     options: { | ||||
|       base: { | ||||
|         themeColor: '#16a34a', | ||||
|         primaryColor: '#16a34a', | ||||
|         textAlign: 'justify', | ||||
|         lineHeight: '1.8' | ||||
| @ -198,15 +200,13 @@ export const templates: Template[] = [ | ||||
|           textAlign: 'center' | ||||
|         }, | ||||
|         h2: { | ||||
|           display: 'table', | ||||
|           padding: '0.2em 1em', | ||||
|           margin: '4em auto 2em', | ||||
|           color: '#fff', | ||||
|           background: '#16a34a', | ||||
|           fontSize: '1.2em', | ||||
|           fontWeight: 'bold', | ||||
|           textAlign: 'center', | ||||
|           borderRadius: '4px' | ||||
|             display: 'table', | ||||
|             padding: '0 1.5em', | ||||
|             borderBottom: '2px solid #16a34a', | ||||
|             margin: '2.5em auto 1.2em', | ||||
|             fontSize: '1.4em', | ||||
|             fontWeight: 'bold', | ||||
|             textAlign: 'center' | ||||
|         }, | ||||
|         h3: { | ||||
|           paddingLeft: '8px', | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 tianyaxiang
						tianyaxiang