diff --git a/ui-v2/src/components/settings/heading.tsx b/ui-v2/src/components/settings/heading.tsx
new file mode 100644
index 000000000000..65fe7291b6fc
--- /dev/null
+++ b/ui-v2/src/components/settings/heading.tsx
@@ -0,0 +1,27 @@
+import {
+ Breadcrumb,
+ BreadcrumbItem,
+ BreadcrumbList,
+} from "@/components/ui/breadcrumb";
+
+type HeadingProps = {
+ version: string;
+};
+
+export const Heading = ({ version }: HeadingProps) => {
+ return (
+
+
+
+
+ Settings
+
+
+
+
+
+ );
+};
diff --git a/ui-v2/src/components/settings/server-settings.tsx b/ui-v2/src/components/settings/server-settings.tsx
new file mode 100644
index 000000000000..989d96911068
--- /dev/null
+++ b/ui-v2/src/components/settings/server-settings.tsx
@@ -0,0 +1,14 @@
+type ServerSettingsProps = {
+ settings: Record;
+};
+
+export const ServerSettings = ({ settings }: ServerSettingsProps) => {
+ return (
+
+
+
+ TODO: {JSON.stringify(settings)}
+
+
+ );
+};
diff --git a/ui-v2/src/components/settings/settings-page.tsx b/ui-v2/src/components/settings/settings-page.tsx
new file mode 100644
index 000000000000..6fe188efa599
--- /dev/null
+++ b/ui-v2/src/components/settings/settings-page.tsx
@@ -0,0 +1,20 @@
+import { buildGetSettingsQuery, buildGetVersionQuery } from "@/api/admin";
+
+import { useSuspenseQuery } from "@tanstack/react-query";
+import { Heading } from "./heading";
+import { ServerSettings } from "./server-settings";
+import { ThemeSwitch } from "./theme-switch";
+
+export const SettingsPage = () => {
+ const { data: settingsData } = useSuspenseQuery(buildGetSettingsQuery());
+ const { data: versionData } = useSuspenseQuery(buildGetVersionQuery());
+
+ return (
+
+
+
+ {/** nb: open API needs to update schema */}
+ } />
+
+ );
+};
diff --git a/ui-v2/src/components/settings/theme-switch.tsx b/ui-v2/src/components/settings/theme-switch.tsx
new file mode 100644
index 000000000000..18f6640762da
--- /dev/null
+++ b/ui-v2/src/components/settings/theme-switch.tsx
@@ -0,0 +1,17 @@
+import { Icon } from "@/components/ui/icons";
+import { Switch } from "@/components/ui/switch";
+
+// TODO: Switch for dark mode provider
+
+export const ThemeSwitch = () => {
+ return (
+
+ );
+};
diff --git a/ui-v2/src/components/ui/icons/constants.ts b/ui-v2/src/components/ui/icons/constants.ts
index e61a7166d719..7551c6a54029 100644
--- a/ui-v2/src/components/ui/icons/constants.ts
+++ b/ui-v2/src/components/ui/icons/constants.ts
@@ -17,6 +17,7 @@ import {
Cpu,
ExternalLink,
Loader2,
+ Moon,
MoreHorizontal,
MoreVertical,
PanelLeft,
@@ -26,6 +27,7 @@ import {
Rocket,
Search,
ServerCrash,
+ Sun,
Trash2,
Variable,
Workflow,
@@ -51,6 +53,7 @@ export const ICONS = {
Cpu,
ExternalLink,
Loader2,
+ Moon,
MoreHorizontal,
MoreVertical,
PanelLeft,
@@ -60,6 +63,7 @@ export const ICONS = {
Rocket,
Search,
ServerCrash,
+ Sun,
Trash2,
Variable,
Workflow,
diff --git a/ui-v2/src/routes/settings.tsx b/ui-v2/src/routes/settings.tsx
index bab155424e8a..3f39f2b465cd 100644
--- a/ui-v2/src/routes/settings.tsx
+++ b/ui-v2/src/routes/settings.tsx
@@ -1,8 +1,9 @@
import { buildGetSettingsQuery, buildGetVersionQuery } from "@/api/admin";
+import { SettingsPage } from "@/components/settings/settings-page";
import { createFileRoute } from "@tanstack/react-router";
export const Route = createFileRoute("/settings")({
- component: RouteComponent,
+ component: SettingsPage,
loader: ({ context }) =>
Promise.all([
context.queryClient.ensureQueryData(buildGetSettingsQuery()),
@@ -10,7 +11,3 @@ export const Route = createFileRoute("/settings")({
]),
wrapInSuspense: true,
});
-
-function RouteComponent() {
- return "🚧🚧 Pardon our dust! 🚧🚧";
-}