From 1fbd7a7f9a611749768168ea9a30f87d7eda2c5b Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Tue, 9 Dec 2025 15:21:04 -0600 Subject: [PATCH] wip(desktop): progress --- packages/desktop/src/pages/layout.tsx | 49 +++++++++++++++------------ packages/ui/src/components/avatar.css | 5 +++ packages/ui/src/components/avatar.tsx | 10 ++++-- 3 files changed, 39 insertions(+), 25 deletions(-) diff --git a/packages/desktop/src/pages/layout.tsx b/packages/desktop/src/pages/layout.tsx index c2755b9dc..c083fbdfe 100644 --- a/packages/desktop/src/pages/layout.tsx +++ b/packages/desktop/src/pages/layout.tsx @@ -140,8 +140,8 @@ export default function Layout(props: ParentProps) { return <> } - const ProjectVisual = (props: { directory: string; class?: string }): JSX.Element => { - const name = createMemo(() => getFilename(props.directory)) + const ProjectVisual = (props: { project: Project & { expanded: boolean }; class?: string }): JSX.Element => { + const name = createMemo(() => getFilename(props.project.worktree)) return ( @@ -153,7 +153,12 @@ export default function Layout(props: ParentProps) { >
- +
{name()}
@@ -164,11 +169,16 @@ export default function Layout(props: ParentProps) { variant="ghost" size="large" class="flex items-center justify-center p-0 aspect-square border-none" - data-selected={props.directory === currentDirectory()} - onClick={() => navigateToProject(props.directory)} + data-selected={props.project.worktree === currentDirectory()} + onClick={() => navigateToProject(props.project.worktree)} >
- +
@@ -194,18 +204,12 @@ export default function Layout(props: ParentProps) { >
- - - {(url) => } - - - - - + - + @@ -291,11 +295,12 @@ export default function Layout(props: ParentProps) { } const ProjectDragOverlay = (): JSX.Element => { + const project = createMemo(() => layout.projects.list().find((p) => p.worktree === store.activeDraggable)) return ( - - {(directory) => ( + + {(p) => (
- +
)}
diff --git a/packages/ui/src/components/avatar.css b/packages/ui/src/components/avatar.css index bc87f3bd8..4e42e6f99 100644 --- a/packages/ui/src/components/avatar.css +++ b/packages/ui/src/components/avatar.css @@ -13,6 +13,11 @@ color: oklch(from var(--avatar-bg) calc(l * 0.72) calc(c * 8) h); } +[data-component="avatar"][data-has-image] { + background-color: transparent; + border: none; +} + [data-component="avatar"][data-size="small"] { width: 1.25rem; height: 1.25rem; diff --git a/packages/ui/src/components/avatar.tsx b/packages/ui/src/components/avatar.tsx index 183a15b9b..1ff3008ee 100644 --- a/packages/ui/src/components/avatar.tsx +++ b/packages/ui/src/components/avatar.tsx @@ -2,27 +2,31 @@ import { type ComponentProps, splitProps, Show } from "solid-js" export interface AvatarProps extends ComponentProps<"div"> { fallback: string + src?: string background?: string size?: "small" | "normal" | "large" } export function Avatar(props: AvatarProps) { - const [split, rest] = splitProps(props, ["fallback", "background", "size", "class", "classList", "style"]) + const [split, rest] = splitProps(props, ["fallback", "src", "background", "size", "class", "classList", "style"]) return (
- {split.fallback[0]} + + {(src) => } +
) }