diff --git a/ui/mantine-ui/package-lock.json b/ui/mantine-ui/package-lock.json
index 41ea67ceba..aec08c440a 100644
--- a/ui/mantine-ui/package-lock.json
+++ b/ui/mantine-ui/package-lock.json
@@ -11,6 +11,7 @@
"@mantine/code-highlight": "^8.3.16",
"@mantine/core": "^8.3.13",
"@mantine/hooks": "^8.3.13",
+ "@tabler/icons-react": "^3.36.1",
"@tanstack/react-query": "^5.90.21",
"highlight.js": "^11.11.1",
"react": "^19.1.0",
@@ -1885,6 +1886,32 @@
"dev": true,
"license": "MIT"
},
+ "node_modules/@tabler/icons": {
+ "version": "3.36.1",
+ "resolved": "https://registry.npmjs.org/@tabler/icons/-/icons-3.36.1.tgz",
+ "integrity": "sha512-f4Jg3Fof/Vru5ioix/UO4GX+sdDsF9wQo47FbtvG+utIYYVQ/QVAC0QYgcBbAjQGfbdOh2CCf0BgiFOF9Ixtjw==",
+ "license": "MIT",
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/codecalm"
+ }
+ },
+ "node_modules/@tabler/icons-react": {
+ "version": "3.36.1",
+ "resolved": "https://registry.npmjs.org/@tabler/icons-react/-/icons-react-3.36.1.tgz",
+ "integrity": "sha512-/8nOXeNeMoze9xY/QyEKG65wuvRhkT3q9aytaur6Gj8bYU2A98YVJyLc9MRmc5nVvpy+bRlrrwK/Ykr8WGyUWg==",
+ "license": "MIT",
+ "dependencies": {
+ "@tabler/icons": ""
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/codecalm"
+ },
+ "peerDependencies": {
+ "react": ">= 16"
+ }
+ },
"node_modules/@tanstack/query-core": {
"version": "5.90.20",
"resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.90.20.tgz",
diff --git a/ui/mantine-ui/package.json b/ui/mantine-ui/package.json
index d0a583f7dd..3017d90158 100644
--- a/ui/mantine-ui/package.json
+++ b/ui/mantine-ui/package.json
@@ -21,6 +21,7 @@
"@mantine/core": "^8.3.13",
"@mantine/hooks": "^8.3.13",
"@tanstack/react-query": "^5.90.21",
+ "@tabler/icons-react": "^3.36.1",
"highlight.js": "^11.11.1",
"react": "^19.1.0",
"react-dom": "^19.2.4",
diff --git a/ui/mantine-ui/src/components/Header.module.css b/ui/mantine-ui/src/components/Header.module.css
index fdc0a0cc64..4626dd7910 100644
--- a/ui/mantine-ui/src/components/Header.module.css
+++ b/ui/mantine-ui/src/components/Header.module.css
@@ -1,3 +1,9 @@
+.header {
+ background-color: rgb(65, 73, 81);
+ color: #fff;
+ border-bottom: 1px solid var(--mantine-color-gray-6);
+}
+
.navMain {
flex: 1;
}
diff --git a/ui/mantine-ui/src/components/Header.tsx b/ui/mantine-ui/src/components/Header.tsx
index 956a2ae09a..a97f5abfd0 100644
--- a/ui/mantine-ui/src/components/Header.tsx
+++ b/ui/mantine-ui/src/components/Header.tsx
@@ -1,5 +1,6 @@
import { Link, NavLink, Route, Routes } from 'react-router-dom';
import { AppShell, Button, Group, Menu, Text } from '@mantine/core';
+import { ThemeSelector } from '@/components/ThemeSelector';
import { AlertsPage } from '@/pages/Alerts.page';
import { SilencesPage } from '@/pages/Silences.page';
import classes from './Header.module.css';
@@ -117,6 +118,9 @@ export const Header = () => {
{navLinks}
+
+
+
diff --git a/ui/mantine-ui/src/components/ThemeSelector.tsx b/ui/mantine-ui/src/components/ThemeSelector.tsx
new file mode 100644
index 0000000000..76d8f37a4e
--- /dev/null
+++ b/ui/mantine-ui/src/components/ThemeSelector.tsx
@@ -0,0 +1,31 @@
+import { FC } from 'react';
+import { IconBrightnessFilled, IconMoonFilled, IconSunFilled } from '@tabler/icons-react';
+import { ActionIcon, rem, useMantineColorScheme } from '@mantine/core';
+
+export const ThemeSelector: FC = () => {
+ const { colorScheme, setColorScheme } = useMantineColorScheme();
+ const iconProps = {
+ style: { width: rem(20), height: rem(20), display: 'block' },
+ stroke: 1.5,
+ };
+
+ return (
+
+ setColorScheme(colorScheme === 'light' ? 'dark' : colorScheme === 'dark' ? 'auto' : 'light')
+ }
+ >
+ {colorScheme === 'light' ? (
+
+ ) : colorScheme === 'dark' ? (
+
+ ) : (
+
+ )}
+
+ );
+};