@@ -12,6 +12,7 @@ import { type LocalProject, getAvatarColors } from "@/context/layout"
1212import { getFilename } from "@opencode-ai/shared/util/path"
1313import { Avatar } from "@opencode-ai/ui/avatar"
1414import { useLanguage } from "@/context/language"
15+ import { getProjectAvatarSource } from "@/pages/layout/sidebar-items"
1516
1617const AVATAR_COLOR_KEYS = [ "pink" , "mint" , "orange" , "purple" , "cyan" , "lime" ] as const
1718
@@ -144,7 +145,11 @@ export function DialogEditProject(props: { project: LocalProject }) {
144145 } }
145146 >
146147 < Show
147- when = { store . iconOverride || ( ! store . color && props . project . icon ?. url ) }
148+ when = { getProjectAvatarSource ( props . project . id , {
149+ color : store . color ,
150+ url : props . project . icon ?. url ,
151+ override : store . iconOverride ,
152+ } ) }
148153 fallback = {
149154 < div class = "size-full flex items-center justify-center" >
150155 < Avatar
@@ -155,11 +160,13 @@ export function DialogEditProject(props: { project: LocalProject }) {
155160 </ div >
156161 }
157162 >
158- < img
159- src = { store . iconOverride || props . project . icon ?. url }
160- alt = { language . t ( "dialog.project.edit.icon.alt" ) }
161- class = "size-full object-cover"
162- />
163+ { ( src ) => (
164+ < img
165+ src = { src ( ) }
166+ alt = { language . t ( "dialog.project.edit.icon.alt" ) }
167+ class = "size-full object-cover"
168+ />
169+ ) }
163170 </ Show >
164171 </ div >
165172 < div
@@ -216,6 +223,7 @@ export function DialogEditProject(props: { project: LocalProject }) {
216223 store . color !== color ,
217224 } }
218225 onClick = { ( ) => {
226+ if ( store . color === color && ! props . project . icon ?. url ) return
219227 setStore ( "color" , store . color === color ? undefined : color )
220228 } }
221229 >
0 commit comments