chore: ran linting

This commit is contained in:
Anish Sarkar 2026-02-06 19:45:22 +05:30
parent 9d071d686a
commit bacda8cb08
4 changed files with 176 additions and 178 deletions

View file

@ -190,9 +190,7 @@ export function SearchSpaceAvatar({
{avatarButton} {avatarButton}
</div> </div>
</DropdownMenuTrigger> </DropdownMenuTrigger>
<DropdownMenuContent className="w-48"> <DropdownMenuContent className="w-48">{menuItems}</DropdownMenuContent>
{menuItems}
</DropdownMenuContent>
</DropdownMenu> </DropdownMenu>
); );
} }

View file

@ -594,15 +594,15 @@ export function InboxSidebar({
{/* Mobile: Button that opens bottom drawer */} {/* Mobile: Button that opens bottom drawer */}
{isMobile ? ( {isMobile ? (
<> <>
<Button <Button
variant="ghost" variant="ghost"
size="icon" size="icon"
className="h-8 w-8 rounded-full" className="h-8 w-8 rounded-full"
onClick={() => setFilterDrawerOpen(true)} onClick={() => setFilterDrawerOpen(true)}
> >
<ListFilter className="h-4 w-4 text-muted-foreground" /> <ListFilter className="h-4 w-4 text-muted-foreground" />
<span className="sr-only">{t("filter") || "Filter"}</span> <span className="sr-only">{t("filter") || "Filter"}</span>
</Button> </Button>
<Drawer <Drawer
open={filterDrawerOpen} open={filterDrawerOpen}
onOpenChange={setFilterDrawerOpen} onOpenChange={setFilterDrawerOpen}
@ -806,36 +806,36 @@ export function InboxSidebar({
</DropdownMenuContent> </DropdownMenuContent>
</DropdownMenu> </DropdownMenu>
)} )}
{isMobile ? ( {isMobile ? (
<Button <Button
variant="ghost" variant="ghost"
size="icon" size="icon"
className="h-8 w-8 rounded-full" className="h-8 w-8 rounded-full"
onClick={handleMarkAllAsRead} onClick={handleMarkAllAsRead}
disabled={totalUnreadCount === 0} disabled={totalUnreadCount === 0}
> >
<CheckCheck className="h-4 w-4 text-muted-foreground" /> <CheckCheck className="h-4 w-4 text-muted-foreground" />
<span className="sr-only">{t("mark_all_read") || "Mark all as read"}</span> <span className="sr-only">{t("mark_all_read") || "Mark all as read"}</span>
</Button> </Button>
) : ( ) : (
<Tooltip> <Tooltip>
<TooltipTrigger asChild> <TooltipTrigger asChild>
<Button <Button
variant="ghost" variant="ghost"
size="icon" size="icon"
className="h-8 w-8 rounded-full" className="h-8 w-8 rounded-full"
onClick={handleMarkAllAsRead} onClick={handleMarkAllAsRead}
disabled={totalUnreadCount === 0} disabled={totalUnreadCount === 0}
> >
<CheckCheck className="h-4 w-4 text-muted-foreground" /> <CheckCheck className="h-4 w-4 text-muted-foreground" />
<span className="sr-only">{t("mark_all_read") || "Mark all as read"}</span> <span className="sr-only">{t("mark_all_read") || "Mark all as read"}</span>
</Button> </Button>
</TooltipTrigger> </TooltipTrigger>
<TooltipContent className="z-80"> <TooltipContent className="z-80">
{t("mark_all_read") || "Mark all as read"} {t("mark_all_read") || "Mark all as read"}
</TooltipContent> </TooltipContent>
</Tooltip> </Tooltip>
)} )}
{/* Dock/Undock button - desktop only */} {/* Dock/Undock button - desktop only */}
{!isMobile && onDockedChange && ( {!isMobile && onDockedChange && (
<Tooltip> <Tooltip>
@ -984,61 +984,61 @@ export function InboxSidebar({
isMarkingAsRead && "opacity-50 pointer-events-none" isMarkingAsRead && "opacity-50 pointer-events-none"
)} )}
> >
{isMobile ? ( {isMobile ? (
<button <button
type="button" type="button"
onClick={() => handleItemClick(item)} onClick={() => handleItemClick(item)}
disabled={isMarkingAsRead} disabled={isMarkingAsRead}
className="flex items-center gap-3 flex-1 min-w-0 text-left overflow-hidden" className="flex items-center gap-3 flex-1 min-w-0 text-left overflow-hidden"
> >
<div className="shrink-0">{getStatusIcon(item)}</div> <div className="shrink-0">{getStatusIcon(item)}</div>
<div className="flex-1 min-w-0 overflow-hidden"> <div className="flex-1 min-w-0 overflow-hidden">
<p <p
className={cn( className={cn(
"text-xs font-medium line-clamp-2", "text-xs font-medium line-clamp-2",
!item.read && "font-semibold" !item.read && "font-semibold"
)} )}
> >
{item.title} {item.title}
</p> </p>
<p className="text-[11px] text-muted-foreground line-clamp-2 mt-0.5"> <p className="text-[11px] text-muted-foreground line-clamp-2 mt-0.5">
{convertRenderedToDisplay(item.message)} {convertRenderedToDisplay(item.message)}
</p> </p>
</div> </div>
</button> </button>
) : ( ) : (
<Tooltip> <Tooltip>
<TooltipTrigger asChild> <TooltipTrigger asChild>
<button <button
type="button" type="button"
onClick={() => handleItemClick(item)} onClick={() => handleItemClick(item)}
disabled={isMarkingAsRead} disabled={isMarkingAsRead}
className="flex items-center gap-3 flex-1 min-w-0 text-left overflow-hidden" className="flex items-center gap-3 flex-1 min-w-0 text-left overflow-hidden"
> >
<div className="shrink-0">{getStatusIcon(item)}</div> <div className="shrink-0">{getStatusIcon(item)}</div>
<div className="flex-1 min-w-0 overflow-hidden"> <div className="flex-1 min-w-0 overflow-hidden">
<p <p
className={cn( className={cn(
"text-xs font-medium line-clamp-2", "text-xs font-medium line-clamp-2",
!item.read && "font-semibold" !item.read && "font-semibold"
)} )}
> >
{item.title} {item.title}
</p> </p>
<p className="text-[11px] text-muted-foreground line-clamp-2 mt-0.5"> <p className="text-[11px] text-muted-foreground line-clamp-2 mt-0.5">
{convertRenderedToDisplay(item.message)} {convertRenderedToDisplay(item.message)}
</p> </p>
</div> </div>
</button> </button>
</TooltipTrigger> </TooltipTrigger>
<TooltipContent side="bottom" align="start" className="max-w-[250px]"> <TooltipContent side="bottom" align="start" className="max-w-[250px]">
<p className="font-medium">{item.title}</p> <p className="font-medium">{item.title}</p>
<p className="text-muted-foreground mt-1"> <p className="text-muted-foreground mt-1">
{convertRenderedToDisplay(item.message)} {convertRenderedToDisplay(item.message)}
</p> </p>
</TooltipContent> </TooltipContent>
</Tooltip> </Tooltip>
)} )}
{/* Time and unread dot - fixed width to prevent content shift */} {/* Time and unread dot - fixed width to prevent content shift */}
<div className="flex items-center justify-end gap-1.5 shrink-0 w-10"> <div className="flex items-center justify-end gap-1.5 shrink-0 w-10">

View file

@ -101,21 +101,21 @@ export function Sidebar({
/> />
</div> </div>
) : ( ) : (
<div className="flex h-14 shrink-0 items-center gap-0 px-1 border-b"> <div className="flex h-14 shrink-0 items-center gap-0 px-1 border-b">
<SidebarHeader <SidebarHeader
searchSpace={searchSpace} searchSpace={searchSpace}
isCollapsed={isCollapsed}
onSettings={onSettings}
onManageMembers={onManageMembers}
/>
<div className="shrink-0">
<SidebarCollapseButton
isCollapsed={isCollapsed} isCollapsed={isCollapsed}
onToggle={onToggleCollapse ?? (() => {})} onSettings={onSettings}
disableTooltip={disableTooltips} onManageMembers={onManageMembers}
/> />
<div className="shrink-0">
<SidebarCollapseButton
isCollapsed={isCollapsed}
onToggle={onToggleCollapse ?? (() => {})}
disableTooltip={disableTooltips}
/>
</div>
</div> </div>
</div>
)} )}
{/* New chat button */} {/* New chat button */}
@ -149,38 +149,38 @@ export function Sidebar({
defaultOpen={true} defaultOpen={true}
fillHeight={false} fillHeight={false}
className="shrink-0 max-h-[50%] flex flex-col" className="shrink-0 max-h-[50%] flex flex-col"
action={ action={
onViewAllSharedChats ? ( onViewAllSharedChats ? (
disableTooltips ? ( disableTooltips ? (
<Button <Button
variant="ghost" variant="ghost"
size="icon" size="icon"
className="h-8 w-8 shrink-0 hover:bg-transparent hover:text-current focus-visible:ring-0" className="h-8 w-8 shrink-0 hover:bg-transparent hover:text-current focus-visible:ring-0"
onClick={onViewAllSharedChats} onClick={onViewAllSharedChats}
> >
<FolderOpen className="h-4 w-4" /> <FolderOpen className="h-4 w-4" />
</Button> </Button>
) : ( ) : (
<Tooltip> <Tooltip>
<TooltipTrigger asChild> <TooltipTrigger asChild>
<Button <Button
variant="ghost" variant="ghost"
size="icon" size="icon"
className="h-8 w-8 shrink-0 hover:bg-transparent hover:text-current focus-visible:ring-0" className="h-8 w-8 shrink-0 hover:bg-transparent hover:text-current focus-visible:ring-0"
onClick={onViewAllSharedChats} onClick={onViewAllSharedChats}
> >
<FolderOpen className="h-4 w-4" /> <FolderOpen className="h-4 w-4" />
</Button> </Button>
</TooltipTrigger> </TooltipTrigger>
<TooltipContent side="top"> <TooltipContent side="top">
{t("view_all_shared_chats") || "View all shared chats"} {t("view_all_shared_chats") || "View all shared chats"}
</TooltipContent> </TooltipContent>
</Tooltip> </Tooltip>
) )
) : undefined ) : undefined
} }
> >
{isLoadingChats ? ( {isLoadingChats ? (
<div className="flex flex-col gap-0.5"> <div className="flex flex-col gap-0.5">
<ChatListItemSkeleton /> <ChatListItemSkeleton />
<ChatListItemSkeleton /> <ChatListItemSkeleton />
@ -221,36 +221,36 @@ export function Sidebar({
title={t("chats")} title={t("chats")}
defaultOpen={true} defaultOpen={true}
fillHeight={true} fillHeight={true}
action={ action={
onViewAllPrivateChats ? ( onViewAllPrivateChats ? (
disableTooltips ? ( disableTooltips ? (
<Button <Button
variant="ghost" variant="ghost"
size="icon" size="icon"
className="h-8 w-8 shrink-0 hover:bg-transparent hover:text-current focus-visible:ring-0" className="h-8 w-8 shrink-0 hover:bg-transparent hover:text-current focus-visible:ring-0"
onClick={onViewAllPrivateChats} onClick={onViewAllPrivateChats}
> >
<FolderOpen className="h-4 w-4" /> <FolderOpen className="h-4 w-4" />
</Button> </Button>
) : ( ) : (
<Tooltip> <Tooltip>
<TooltipTrigger asChild> <TooltipTrigger asChild>
<Button <Button
variant="ghost" variant="ghost"
size="icon" size="icon"
className="h-8 w-8 shrink-0 hover:bg-transparent hover:text-current focus-visible:ring-0" className="h-8 w-8 shrink-0 hover:bg-transparent hover:text-current focus-visible:ring-0"
onClick={onViewAllPrivateChats} onClick={onViewAllPrivateChats}
> >
<FolderOpen className="h-4 w-4" /> <FolderOpen className="h-4 w-4" />
</Button> </Button>
</TooltipTrigger> </TooltipTrigger>
<TooltipContent side="top"> <TooltipContent side="top">
{t("view_all_private_chats") || "View all private chats"} {t("view_all_private_chats") || "View all private chats"}
</TooltipContent> </TooltipContent>
</Tooltip> </Tooltip>
) )
) : undefined ) : undefined
} }
> >
{isLoadingChats ? ( {isLoadingChats ? (
<div className="flex flex-col gap-0.5"> <div className="flex flex-col gap-0.5">

View file

@ -11,15 +11,17 @@ interface SidebarCollapseButtonProps {
disableTooltip?: boolean; disableTooltip?: boolean;
} }
export function SidebarCollapseButton({ isCollapsed, onToggle, disableTooltip = false }: SidebarCollapseButtonProps) { export function SidebarCollapseButton({
isCollapsed,
onToggle,
disableTooltip = false,
}: SidebarCollapseButtonProps) {
const t = useTranslations("sidebar"); const t = useTranslations("sidebar");
const button = ( const button = (
<Button variant="ghost" size="icon" onClick={onToggle} className="h-8 w-8 shrink-0"> <Button variant="ghost" size="icon" onClick={onToggle} className="h-8 w-8 shrink-0">
{isCollapsed ? <PanelLeft className="h-4 w-4" /> : <PanelLeftClose className="h-4 w-4" />} {isCollapsed ? <PanelLeft className="h-4 w-4" /> : <PanelLeftClose className="h-4 w-4" />}
<span className="sr-only"> <span className="sr-only">{isCollapsed ? t("expand_sidebar") : t("collapse_sidebar")}</span>
{isCollapsed ? t("expand_sidebar") : t("collapse_sidebar")}
</span>
</Button> </Button>
); );
@ -29,9 +31,7 @@ export function SidebarCollapseButton({ isCollapsed, onToggle, disableTooltip =
return ( return (
<Tooltip> <Tooltip>
<TooltipTrigger asChild> <TooltipTrigger asChild>{button}</TooltipTrigger>
{button}
</TooltipTrigger>
<TooltipContent side={isCollapsed ? "right" : "bottom"}> <TooltipContent side={isCollapsed ? "right" : "bottom"}>
{isCollapsed ? `${t("expand_sidebar")} (⌘B)` : `${t("collapse_sidebar")} (⌘B)`} {isCollapsed ? `${t("expand_sidebar")} (⌘B)` : `${t("collapse_sidebar")} (⌘B)`}
</TooltipContent> </TooltipContent>