From 7340b65ae98b4ceb3696f91ed6f56921a567013a Mon Sep 17 00:00:00 2001 From: Jonathan Bursztyn Date: Fri, 5 Sep 2025 00:29:18 +0100 Subject: [PATCH 1/3] adds support for dark mode for the three dots button --- src/ui/common/assets/three-dots-black.svg | 5 +++++ .../ThreeDotsMenu/ThreeDotsMenu.tsx | 21 ++++++++++++++++--- 2 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 src/ui/common/assets/three-dots-black.svg diff --git a/src/ui/common/assets/three-dots-black.svg b/src/ui/common/assets/three-dots-black.svg new file mode 100644 index 000000000..297bed51d --- /dev/null +++ b/src/ui/common/assets/three-dots-black.svg @@ -0,0 +1,5 @@ + + + diff --git a/src/ui/common/components/ThreeDotsMenu/ThreeDotsMenu.tsx b/src/ui/common/components/ThreeDotsMenu/ThreeDotsMenu.tsx index 490ef2d3a..59d0e5121 100644 --- a/src/ui/common/components/ThreeDotsMenu/ThreeDotsMenu.tsx +++ b/src/ui/common/components/ThreeDotsMenu/ThreeDotsMenu.tsx @@ -1,7 +1,9 @@ import { Popover, Text } from "@babylonlabs-io/core-ui"; -import { useState } from "react"; +import { useTheme } from "next-themes"; +import { useEffect, useState } from "react"; -import threeDots from "@/ui/common/assets/three-dots.svg"; +import threeDotsDark from "@/ui/common/assets/three-dots-black.svg"; +import threeDotsLight from "@/ui/common/assets/three-dots.svg"; interface ThreeDotsMenuProps { onChange: () => void; @@ -16,6 +18,12 @@ export const ThreeDotsMenu = ({ }: ThreeDotsMenuProps) => { const [open, setOpen] = useState(false); const [anchorEl, setAnchorEl] = useState(null); + const { resolvedTheme } = useTheme(); + const [mounted, setMounted] = useState(false); + + useEffect(() => { + setMounted(true); + }, []); return ( <> @@ -25,7 +33,14 @@ export const ThreeDotsMenu = ({ className={className} aria-label="Open options" > - options + {mounted && ( + options + )} Date: Fri, 5 Sep 2025 15:09:46 +0100 Subject: [PATCH 2/3] refactor --- .../Icons/common/ThreeDotsMenuIcon.tsx | 39 +++++++++++++++++++ .../ThreeDotsMenu/ThreeDotsMenu.tsx | 24 +++--------- 2 files changed, 45 insertions(+), 18 deletions(-) create mode 100644 src/ui/common/components/Icons/common/ThreeDotsMenuIcon.tsx diff --git a/src/ui/common/components/Icons/common/ThreeDotsMenuIcon.tsx b/src/ui/common/components/Icons/common/ThreeDotsMenuIcon.tsx new file mode 100644 index 000000000..482535683 --- /dev/null +++ b/src/ui/common/components/Icons/common/ThreeDotsMenuIcon.tsx @@ -0,0 +1,39 @@ +import { iconColorVariants } from "@babylonlabs-io/core-ui"; +import { twJoin } from "tailwind-merge"; + +interface ThreeDotsMenuIconProps { + className?: string; + size?: number; + /** Same variants supported by other icons */ + variant?: keyof typeof iconColorVariants; + /** Tailwind className to force a color */ + color?: string; +} + +export const ThreeDotsMenuIcon = ({ + className = "", + size = 20, + variant = "default", + color, +}: ThreeDotsMenuIconProps) => { + const colorClass = color || iconColorVariants[variant]; + + return ( + + + + ); +}; diff --git a/src/ui/common/components/ThreeDotsMenu/ThreeDotsMenu.tsx b/src/ui/common/components/ThreeDotsMenu/ThreeDotsMenu.tsx index 59d0e5121..e105a622f 100644 --- a/src/ui/common/components/ThreeDotsMenu/ThreeDotsMenu.tsx +++ b/src/ui/common/components/ThreeDotsMenu/ThreeDotsMenu.tsx @@ -1,9 +1,7 @@ import { Popover, Text } from "@babylonlabs-io/core-ui"; -import { useTheme } from "next-themes"; -import { useEffect, useState } from "react"; +import { useState } from "react"; -import threeDotsDark from "@/ui/common/assets/three-dots-black.svg"; -import threeDotsLight from "@/ui/common/assets/three-dots.svg"; +import { ThreeDotsMenuIcon } from "@/ui/common/components/Icons/common/ThreeDotsMenuIcon"; interface ThreeDotsMenuProps { onChange: () => void; @@ -18,12 +16,6 @@ export const ThreeDotsMenu = ({ }: ThreeDotsMenuProps) => { const [open, setOpen] = useState(false); const [anchorEl, setAnchorEl] = useState(null); - const { resolvedTheme } = useTheme(); - const [mounted, setMounted] = useState(false); - - useEffect(() => { - setMounted(true); - }, []); return ( <> @@ -33,14 +25,10 @@ export const ThreeDotsMenu = ({ className={className} aria-label="Open options" > - {mounted && ( - options - )} + Date: Fri, 5 Sep 2025 15:14:28 +0100 Subject: [PATCH 3/3] remove icon --- src/ui/common/assets/three-dots.svg | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 src/ui/common/assets/three-dots.svg diff --git a/src/ui/common/assets/three-dots.svg b/src/ui/common/assets/three-dots.svg deleted file mode 100644 index 16dabb8c6..000000000 --- a/src/ui/common/assets/three-dots.svg +++ /dev/null @@ -1,5 +0,0 @@ - - - \ No newline at end of file