refactor(sidebar): align folder and conversation rail on a shared axis

This commit is contained in:
xintaofei
2026-04-23 10:33:42 +08:00
parent 6665b1902b
commit 02434b6e1d
3 changed files with 23 additions and 6 deletions

View File

@@ -152,14 +152,17 @@ export const SidebarConversationCard = memo(function SidebarConversationCard({
<span <span
aria-hidden aria-hidden
className={cn( className={cn(
"pointer-events-none absolute -top-px -bottom-px z-0", "pointer-events-none absolute z-0",
isOpenInTab isOpenInTab
? "bg-sidebar-primary/85" ? "bg-sidebar-primary/85"
: "bg-sidebar-primary/30" : "bg-sidebar-primary/30"
)} )}
style={{ style={{
left: "calc(0.875rem + 0.5px)", top: "-0.0625rem",
width: "1px", bottom: "-0.0625rem",
left: "var(--conv-rail-axis, 0.875rem)",
width: "0.125rem",
transform: "translateX(-50%)",
}} }}
/> />
<SidebarStatusIcon status={beadStatus} emphasized={isOpenInTab} /> <SidebarStatusIcon status={beadStatus} emphasized={isOpenInTab} />

View File

@@ -168,15 +168,24 @@ const FolderHeader = memo(function FolderHeader({
data-folder-id={folderId} data-folder-id={folderId}
onClick={() => onToggle(folderId)} onClick={() => onToggle(folderId)}
className={cn( className={cn(
"flex h-full min-w-0 flex-1 items-center gap-[0.5rem] px-2 outline-none", "relative flex h-full min-w-0 flex-1 items-center pr-[0.5rem] outline-none",
"text-sidebar-foreground", "text-sidebar-foreground",
isDragging ? "cursor-grabbing" : "cursor-grab" isDragging ? "cursor-grabbing" : "cursor-grab"
)} )}
style={{ paddingLeft: "calc(var(--conv-rail-axis) + 0.875rem)" }}
> >
<span <span
aria-hidden
className={cn( className={cn(
"flex h-[0.75rem] w-[0.75rem] shrink-0 items-center justify-center text-muted-foreground/75" "pointer-events-none absolute flex items-center justify-center text-muted-foreground/75"
)} )}
style={{
top: "50%",
left: "var(--conv-rail-axis)",
width: "0.75rem",
height: "0.75rem",
transform: "translate(-50%, -50%)",
}}
> >
{expanded ? ( {expanded ? (
<ChevronDown className="h-[0.6875rem] w-[0.6875rem]" /> <ChevronDown className="h-[0.6875rem] w-[0.6875rem]" />
@@ -919,6 +928,11 @@ export function SidebarConversationList({
values={orderedFolderIds} values={orderedFolderIds}
onReorder={handleReorder} onReorder={handleReorder}
className="flex flex-col" className="flex flex-col"
style={
{
"--conv-rail-axis": "0.875rem",
} as React.CSSProperties
}
> >
{orderedFolderIds.map((folderId, index) => { {orderedFolderIds.map((folderId, index) => {
const folderName = const folderName =

View File

@@ -28,7 +28,7 @@ function IconFrame({
className className
)} )}
style={{ style={{
left: "0.875rem", left: "var(--conv-rail-axis, 0.875rem)",
width: "0.75rem", width: "0.75rem",
height: "0.75rem", height: "0.75rem",
transform: "translate(-50%, -50%)", transform: "translate(-50%, -50%)",