@@ -39,7 +39,7 @@ export const FormElement = ({ element, index, isEditing, isDisabled }: FormEleme
3939 const field = pubFields [ element . fieldId as PubFieldsId ] ;
4040 const labelName = field
4141 ? ( element . label ?? ( element . config as any ) ?. label ?? field . name )
42- : ( element . label ?? element . id ) ;
42+ : ( element . label ?? element . elementId ) ;
4343
4444 const { openConfigPanel, removeElement, restoreElement } = useBuilder ( ) ;
4545
@@ -86,8 +86,12 @@ export const FormElement = ({ element, index, isEditing, isDisabled }: FormEleme
8686 "group flex min-h-[76px] flex-1 flex-shrink-0 items-center justify-between gap-3 self-stretch rounded border border-l-[12px] border-solid border-gray-200 border-l-emerald-100 bg-white p-3 pr-4" ,
8787 isEditing && "border-sky-500 border-l-blue-500" ,
8888 isDisabled && "cursor-auto opacity-50" ,
89- element . deleted && "border-l-red-200" ,
90- isDragging && "z-10 cursor-grabbing"
89+ isDragging && "z-10 cursor-grabbing" ,
90+ {
91+ "border-l-amber-200/70 bg-amber-50/30" : element . updated && ! element . added ,
92+ "border-l-emerald-200 bg-emerald-50/30" : element . added ,
93+ "border-l-red-200 bg-red-50/30" : element . deleted ,
94+ }
9195 ) }
9296 >
9397 < div className = "flex flex-1 flex-shrink-0 flex-wrap justify-start gap-0.5" >
@@ -154,16 +158,23 @@ export const FieldInputElement = ({ element, isEditing, labelId }: FieldInputEle
154158 className = { cn (
155159 "mr-4 mt-3 shrink-0" ,
156160 isEditing ? "text-blue-500" : "text-emerald-500" ,
157- element . deleted && "text-gray-500"
161+ {
162+ "text-red-300" : element . deleted ,
163+ "text-amber-500" : element . updated && ! element . added ,
164+ "text-emerald-700" : element . added ,
165+ }
158166 ) }
159167 />
160168 < div >
161169 < div className = "text-gray-500" > { field . slug } </ div >
162170 < div
163171 id = { labelId }
164- className = { cn ( "font-semibold" , element . deleted ? "text-gray-500" : "" ) }
172+ className = { cn ( "font-semibold" , {
173+ "text-gray-500" : element . deleted ,
174+ } ) }
165175 >
166176 { ( element . config as any ) ?. label ?? field . name }
177+ { element . required && < span className = "text-red-500" > * </ span > }
167178 </ div >
168179 </ div >
169180 </ >
@@ -179,24 +190,24 @@ const StructuralElement = ({ element, isEditing, labelId }: StructuralElementPro
179190 const { Icon, name } = structuralElements [ element . element ] ;
180191
181192 return (
182- < >
183- < Icon
184- size = { 20 }
185- className = { cn (
186- "mr-4 mt-3 shrink-0" ,
187- isEditing ? "text-blue -500" : "text-emerald-500" ,
188- element . deleted && "text-gray-500"
189- ) }
190- />
191- < div >
193+ < div >
194+ < div className = "flex items-center gap-2" >
195+ < Icon
196+ size = { 20 }
197+ className = { cn ( "shrink-0" , isEditing ? "text-blue-500" : "text-emerald-500" , {
198+ "text-amber -500" : element . updated && ! element . added ,
199+ "text-emerald-700" : element . added ,
200+ "text-red-300" : element . deleted ,
201+ } ) }
202+ / >
192203 < div id = { labelId } className = "text-gray-500" >
193204 { name }
194205 </ div >
195- < div className = { cn ( "prose prose-sm" , element . deleted ? "text-gray-500" : "" ) } >
196- { /* TODO: sanitize links, truncate, generally improve styles for rendered content*/ }
197- < Markdown className = "line-clamp-2" > { element . content } </ Markdown >
198- </ div >
199206 </ div >
200- </ >
207+ < div className = { cn ( "prose prose-sm" , element . deleted ? "text-gray-500" : "" ) } >
208+ { /* TODO: sanitize links, truncate, generally improve styles for rendered content*/ }
209+ < Markdown className = "line-clamp-2" > { element . content } </ Markdown >
210+ </ div >
211+ </ div >
201212 ) ;
202213} ;
0 commit comments