Skip to content

Commit 9e2bbf4

Browse files
Add a simple tooltip to the sidebar (#6295)
## Summary Not perfect, but IMO helpful: <img width="1792" alt="Screen Shot 2023-08-02 at 9 29 24 PM" src="https://github.com/astral-sh/ruff/assets/1309177/e613e918-75cb-475e-9ea4-f833d1a0b5f6"> <img width="1792" alt="Screen Shot 2023-08-02 at 9 29 20 PM" src="https://github.com/astral-sh/ruff/assets/1309177/bb3efdfe-40e1-45b5-b774-082521b2d214">
1 parent d7627c3 commit 9e2bbf4

File tree

4 files changed

+31
-5
lines changed

4 files changed

+31
-5
lines changed

playground/src/Editor/PrimarySideBar.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ export default function PrimarySideBar({
1616
<SideBar position="left">
1717
<SideBarEntry
1818
title="Source"
19+
position={"left"}
1920
onClick={() => onSelectTool("Source")}
2021
selected={selected == "Source"}
2122
>
@@ -24,6 +25,7 @@ export default function PrimarySideBar({
2425

2526
<SideBarEntry
2627
title="Settings"
28+
position={"left"}
2729
onClick={() => onSelectTool("Settings")}
2830
selected={selected == "Settings"}
2931
>

playground/src/Editor/SecondarySideBar.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ export default function SecondarySideBar({
2020
<SideBar position="right">
2121
<SideBarEntry
2222
title="Format (alpha)"
23+
position={"right"}
2324
selected={selected === SecondaryTool.Format}
2425
onClick={() => onSelected(SecondaryTool.Format)}
2526
>
@@ -28,6 +29,7 @@ export default function SecondarySideBar({
2829

2930
<SideBarEntry
3031
title="AST"
32+
position={"right"}
3133
selected={selected === SecondaryTool.AST}
3234
onClick={() => onSelected(SecondaryTool.AST)}
3335
>
@@ -36,6 +38,7 @@ export default function SecondarySideBar({
3638

3739
<SideBarEntry
3840
title="Tokens"
41+
position={"right"}
3942
selected={selected === SecondaryTool.Tokens}
4043
onClick={() => onSelected(SecondaryTool.Tokens)}
4144
>
@@ -44,6 +47,7 @@ export default function SecondarySideBar({
4447

4548
<SideBarEntry
4649
title="Formatter IR"
50+
position={"right"}
4751
selected={selected === SecondaryTool.FIR}
4852
onClick={() => onSelected(SecondaryTool.FIR)}
4953
>

playground/src/Editor/ShareButton.tsx

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,7 @@ export default function ShareButton({ onShare }: { onShare?: () => void }) {
2222
>
2323
Share
2424
</span>
25-
<span aria-hidden="false">
26-
Copied!
27-
</span>
25+
<span aria-hidden="false">Copied!</span>
2826
</AstralButton>
2927
) : (
3028
<AstralButton

playground/src/Editor/SideBar.tsx

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ export interface SideBarEntryProps {
2323
title: string;
2424
selected: boolean;
2525
children: ReactNode;
26+
position: "left" | "right";
27+
2628
onClick?(): void;
2729
}
2830

@@ -31,20 +33,40 @@ export function SideBarEntry({
3133
onClick,
3234
children,
3335
selected,
36+
position,
3437
}: SideBarEntryProps) {
3538
return (
3639
<li
37-
title={title}
40+
aria-label={title}
3841
onClick={onClick}
3942
role="button"
40-
className={`py-4 px-2 relative flex items-center flex-col fill-white text-white ${
43+
className={`group py-4 px-2 relative flex items-center justify-center flex-col fill-white text-white ${
4144
selected ? "opacity-100" : "opacity-50 hover:opacity-100"
4245
}`}
4346
>
4447
{children}
4548
{selected && (
4649
<span className="absolute start-0 inset-y-0 bg-white w-0.5"></span>
4750
)}
51+
52+
<Tooltip position={position}>{title}</Tooltip>
4853
</li>
4954
);
5055
}
56+
57+
interface TooltipProps {
58+
children: ReactNode;
59+
position: "left" | "right";
60+
}
61+
62+
function Tooltip({ children, position }: TooltipProps) {
63+
return (
64+
<span
65+
className={`z-10 absolute w-100 rounded dark:border-[1px] dark:border-white bg-space dark:bg-white px-2 py-1 hidden text-xs text-white dark:text-black group-hover:flex whitespace-nowrap ${
66+
position === "right" ? "right-[52px]" : "left-[52px]"
67+
}`}
68+
>
69+
{children}
70+
</span>
71+
);
72+
}

0 commit comments

Comments
 (0)