From 634ae2316dfa6c136a97ce1ae51fb5e5082dda99 Mon Sep 17 00:00:00 2001
From: Aryan Khurana <101019909+AryanK1511@users.noreply.github.com>
Date: Sun, 13 Oct 2024 06:34:02 -0400
Subject: [PATCH] Create a User Settings button with light/dark mode toggle as
a menu item (#42964)
---
airflow/ui/src/layouts/Nav/Nav.tsx | 16 +----
.../ui/src/layouts/Nav/UserSettingsButton.tsx | 58 +++++++++++++++++++
2 files changed, 60 insertions(+), 14 deletions(-)
create mode 100644 airflow/ui/src/layouts/Nav/UserSettingsButton.tsx
diff --git a/airflow/ui/src/layouts/Nav/Nav.tsx b/airflow/ui/src/layouts/Nav/Nav.tsx
index 9886b5eb75760..3b47595e8c173 100644
--- a/airflow/ui/src/layouts/Nav/Nav.tsx
+++ b/airflow/ui/src/layouts/Nav/Nav.tsx
@@ -21,7 +21,6 @@ import {
Flex,
Icon,
Link,
- useColorMode,
useColorModeValue,
VStack,
} from "@chakra-ui/react";
@@ -32,9 +31,7 @@ import {
FiDatabase,
FiGlobe,
FiHome,
- FiMoon,
FiSettings,
- FiSun,
} from "react-icons/fi";
import { AirflowPin } from "src/assets/AirflowPin";
@@ -42,9 +39,9 @@ import { DagIcon } from "src/assets/DagIcon";
import { DocsButton } from "./DocsButton";
import { NavButton } from "./NavButton";
+import { UserSettingsButton } from "./UserSettingsButton";
export const Nav = () => {
- const { colorMode, toggleColorMode } = useColorMode();
const navBg = useColorModeValue("blue.100", "blue.900");
return (
@@ -106,16 +103,7 @@ export const Nav = () => {
title="Return to legacy UI"
/>
-
- ) : (
-
- )
- }
- onClick={toggleColorMode}
- />
+
);
diff --git a/airflow/ui/src/layouts/Nav/UserSettingsButton.tsx b/airflow/ui/src/layouts/Nav/UserSettingsButton.tsx
new file mode 100644
index 0000000000000..c43c17b6d039b
--- /dev/null
+++ b/airflow/ui/src/layouts/Nav/UserSettingsButton.tsx
@@ -0,0 +1,58 @@
+/*!
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+import {
+ IconButton,
+ Menu,
+ MenuButton,
+ useColorMode,
+ MenuItem,
+ MenuList,
+} from "@chakra-ui/react";
+import { FiMoon, FiSun, FiUser } from "react-icons/fi";
+
+import { navButtonProps } from "./navButtonProps";
+
+export const UserSettingsButton = () => {
+ const { colorMode, toggleColorMode } = useColorMode();
+
+ return (
+
+ );
+};