Skip to content

Commit 1d7c07a

Browse files
fix(react-email): Sidebar overflowing issues (#1996)
Co-authored-by: Zeno Rocha <[email protected]>
1 parent 279bfee commit 1d7c07a

File tree

4 files changed

+56
-40
lines changed

4 files changed

+56
-40
lines changed

packages/react-email/src/components/sidebar/file-tree-directory-children.tsx

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { useSearchParams } from 'next/navigation';
55
import { cn } from '../../utils';
66
import type { EmailsDirectory } from '../../utils/get-emails-directory-metadata';
77
import { IconFile } from '../icons/icon-file';
8+
import { Tooltip } from '../tooltip';
89
import { FileTreeDirectory } from './file-tree-directory';
910

1011
export const FileTreeDirectoryChildren = (props: {
@@ -77,7 +78,7 @@ export const FileTreeDirectoryChildren = (props: {
7778
<motion.span
7879
animate={{ x: 0, opacity: 1 }}
7980
className={cn(
80-
'relative flex h-8 max-w-full items-center gap-2 rounded-md align-middle text-slate-11 text-sm transition-colors duration-100 ease-[cubic-bezier(.6,.12,.34,.96)]',
81+
'relative flex h-8 w-full items-center text-start gap-2 rounded-md align-middle text-slate-11 text-sm transition-colors duration-100 ease-[cubic-bezier(.6,.12,.34,.96)]',
8182
props.isRoot ? undefined : 'pl-3',
8283
{
8384
'text-cyan-11': isCurrentPage,
@@ -116,7 +117,16 @@ export const FileTreeDirectoryChildren = (props: {
116117
height="20"
117118
width="20"
118119
/>
119-
<span className="truncate">{emailFilename}</span>
120+
<Tooltip.Provider>
121+
<Tooltip>
122+
<Tooltip.Trigger asChild>
123+
<span className="truncate w-[calc(100%-1.25rem)]">
124+
{emailFilename}
125+
</span>
126+
</Tooltip.Trigger>
127+
<Tooltip.Content>{emailFilename}</Tooltip.Content>
128+
</Tooltip>
129+
</Tooltip.Provider>
120130
</motion.span>
121131
</Link>
122132
);

packages/react-email/src/components/sidebar/file-tree-directory.tsx

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { Heading } from '../heading';
77
import { IconArrowDown } from '../icons/icon-arrow-down';
88
import { IconFolder } from '../icons/icon-folder';
99
import { IconFolderOpen } from '../icons/icon-folder-open';
10+
import { Tooltip } from '../tooltip';
1011
import { FileTreeDirectoryChildren } from './file-tree-directory-children';
1112

1213
interface SidebarDirectoryProps {
@@ -51,31 +52,38 @@ export const FileTreeDirectory = ({
5152
>
5253
<Collapsible.Trigger
5354
className={cn(
54-
'mt-1 mb-1.5 flex w-full items-center justify-between gap-2 font-medium text-[14px]',
55+
'mt-1 mb-1.5 flex w-full items-center text-start justify-between gap-2 font-medium text-[14px]',
5556
{
5657
'cursor-pointer': !isEmpty,
5758
},
5859
)}
5960
>
60-
<div className="flex items-center gap-2 text-slate-11 transition duration-200 ease-in-out hover:text-slate-12">
61-
{open ? (
62-
<IconFolderOpen height="20" width="20" />
63-
) : (
64-
<IconFolder height="20" width="20" />
65-
)}
66-
<Heading
67-
as="h3"
68-
className="transition duration-200 ease-in-out hover:text-slate-12"
69-
color="gray"
70-
size="2"
71-
weight="medium"
72-
>
73-
{directoryMetadata.directoryName}
74-
</Heading>
75-
</div>
61+
{open ? (
62+
<IconFolderOpen className="w-[20px]" height="20" width="20" />
63+
) : (
64+
<IconFolder height="20" width="20" />
65+
)}
66+
<Tooltip.Provider>
67+
<Tooltip>
68+
<Tooltip.Trigger asChild>
69+
<Heading
70+
as="h3"
71+
className="transition grow w-[calc(100%-40px)] truncate duration-200 ease-in-out hover:text-slate-12"
72+
color="gray"
73+
size="2"
74+
weight="medium"
75+
>
76+
{directoryMetadata.directoryName}
77+
</Heading>
78+
</Tooltip.Trigger>
79+
<Tooltip.Content>{directoryMetadata.directoryName}</Tooltip.Content>
80+
</Tooltip>
81+
</Tooltip.Provider>
7682
{!isEmpty ? (
7783
<IconArrowDown
78-
className="justify-self-end opacity-60 transition-transform data-[open=true]:rotate-180"
84+
width="20"
85+
height="20"
86+
className="ml-auto opacity-60 transition-transform data-[open=true]:rotate-180"
7987
data-open={open}
8088
/>
8189
) : null}

packages/react-email/src/components/sidebar/file-tree.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ export const FileTree = ({
1313
emailsDirectoryMetadata,
1414
}: FileTreeProps) => {
1515
return (
16-
<div className="flex h-full w-full flex-col overflow-hidden lg:w-full lg:min-w-[14.5rem]">
17-
<nav className="flex w-full flex-grow flex-col overflow-y-auto p-4 pr-0 pl-0">
16+
<div className="flex w-full h-full flex-col lg:w-full lg:min-w-[14.5rem]">
17+
<nav className="flex flex-grow flex-col p-4 pr-0 pl-0">
1818
<Collapsible.Root open>
1919
<React.Suspense>
2020
<FileTreeDirectoryChildren

packages/react-email/src/components/sidebar/sidebar.tsx

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,28 +16,26 @@ export const Sidebar = ({ className, currentEmailOpenSlug }: SidebarProps) => {
1616
return (
1717
<aside
1818
className={cn(
19-
'fixed top-[4.375rem] left-0 z-[9999] h-full max-h-full w-screen max-w-ful overflow-hidden bg-black will-change-auto',
19+
'fixed top-[4.375rem] left-0 z-[9999] h-full max-h-full w-screen max-w-full bg-black will-change-auto',
2020
'lg:static lg:z-auto lg:max-h-screen lg:w-[16rem]',
2121
className,
2222
)}
2323
>
24-
<div className="w-full h-full overflow-y-auto overflow-x-hidden">
25-
<div className="flex w-full h-full flex-col border-slate-6 border-r">
26-
<div
27-
className={clsx(
28-
'hidden min-h-[3.3125rem] flex-shrink items-center p-3 px-4 lg:flex',
29-
)}
30-
>
31-
<h2>
32-
<Logo />
33-
</h2>
34-
</div>
35-
<div className="relative h-full w-full border-slate-4 border-t px-4 pb-3">
36-
<FileTree
37-
currentEmailOpenSlug={currentEmailOpenSlug}
38-
emailsDirectoryMetadata={emailsDirectoryMetadata}
39-
/>
40-
</div>
24+
<div className="flex w-full h-full overflow-hidden flex-col border-slate-6 border-r">
25+
<div
26+
className={clsx(
27+
'hidden min-h-[3.3125rem] flex-shrink items-center p-3 px-4 lg:flex',
28+
)}
29+
>
30+
<h2>
31+
<Logo />
32+
</h2>
33+
</div>
34+
<div className="relative grow w-full h-full overflow-y-auto overflow-x-hidden border-slate-4 border-t px-4 pb-3">
35+
<FileTree
36+
currentEmailOpenSlug={currentEmailOpenSlug}
37+
emailsDirectoryMetadata={emailsDirectoryMetadata}
38+
/>
4139
</div>
4240
</div>
4341
</aside>

0 commit comments

Comments
 (0)