diff --git a/.gitignore b/.gitignore
index 257331cb4e90b..a9c055041d980 100644
--- a/.gitignore
+++ b/.gitignore
@@ -111,6 +111,7 @@ celerybeat-schedule
# dotenv
.env
+.env.local
.autoenv*.zsh
# virtualenv
diff --git a/airflow/ui/.env.example b/airflow/ui/.env.example
new file mode 100644
index 0000000000000..9374d93de6bca
--- /dev/null
+++ b/airflow/ui/.env.example
@@ -0,0 +1,23 @@
+#
+# 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.
+#/
+
+
+# This is an example. You should make your own `.env.local` file for development
+
+VITE_FASTAPI_URL="http://localhost:29091"
diff --git a/airflow/ui/src/layouts/Nav/DocsButton.tsx b/airflow/ui/src/layouts/Nav/DocsButton.tsx
new file mode 100644
index 0000000000000..07a4b93dfaede
--- /dev/null
+++ b/airflow/ui/src/layouts/Nav/DocsButton.tsx
@@ -0,0 +1,67 @@
+/*!
+ * 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,
+ Link,
+ Menu,
+ MenuButton,
+ MenuItem,
+ MenuList,
+} from "@chakra-ui/react";
+import { FiBookOpen } from "react-icons/fi";
+
+import { navButtonProps } from "./navButtonProps";
+
+const links = [
+ {
+ href: "https://airflow.apache.org/docs/",
+ title: "Documentation",
+ },
+ {
+ href: "https://github.com/apache/airflow",
+ title: "GitHub Repo",
+ },
+ {
+ href: `${import.meta.env.VITE_FASTAPI_URL}/docs`,
+ title: "REST API Reference",
+ },
+];
+
+export const DocsButton = () => (
+
+);
diff --git a/airflow/ui/src/layouts/Nav.tsx b/airflow/ui/src/layouts/Nav/Nav.tsx
similarity index 94%
rename from airflow/ui/src/layouts/Nav.tsx
rename to airflow/ui/src/layouts/Nav/Nav.tsx
index 4900540cd96d1..55bfd4480e0f4 100644
--- a/airflow/ui/src/layouts/Nav.tsx
+++ b/airflow/ui/src/layouts/Nav/Nav.tsx
@@ -37,8 +37,10 @@ import {
FiSun,
} from "react-icons/fi";
-import { AirflowPin } from "../assets/AirflowPin";
-import { DagIcon } from "../assets/DagIcon";
+import { AirflowPin } from "src/assets/AirflowPin";
+import { DagIcon } from "src/assets/DagIcon";
+
+import { DocsButton } from "./DocsButton";
import { NavButton } from "./NavButton";
export const Nav = () => {
@@ -78,7 +80,7 @@ export const Nav = () => {
}
isDisabled
- title="Datasets"
+ title="Assets"
/>
}
@@ -103,6 +105,7 @@ export const Nav = () => {
icon={}
title="Return to legacy UI"
/>
+ (
-