diff --git a/client_v2/src/common/controls/Select/CustomOptionIcon.tsx b/client_v2/src/common/controls/Select/CustomOptionIcon.tsx
index edc3de0e..bc3cdc6b 100644
--- a/client_v2/src/common/controls/Select/CustomOptionIcon.tsx
+++ b/client_v2/src/common/controls/Select/CustomOptionIcon.tsx
@@ -12,7 +12,7 @@ export const CustomOptionIcon = ({ isSelected, isMulti }: Props) => {
if (isMulti) {
return (
);
diff --git a/client_v2/src/common/ui/Breadcrumbs/Breadcrumbs.tsx b/client_v2/src/common/ui/Breadcrumbs/Breadcrumbs.tsx
index fcfd1683..dcfc2ead 100644
--- a/client_v2/src/common/ui/Breadcrumbs/Breadcrumbs.tsx
+++ b/client_v2/src/common/ui/Breadcrumbs/Breadcrumbs.tsx
@@ -1,14 +1,14 @@
import React from 'react';
import cn from 'clsx';
import { Icon, Link } from 'panel/common/ui';
-import { RoutePath } from 'panel/components/Routes/Paths';
+import { RoutePathKey } from 'panel/components/Routes/Paths';
import theme from 'panel/lib/theme';
import s from './styles.module.pcss';
type Props = {
parentLinks: {
- path: RoutePath;
+ path: RoutePathKey;
title: string;
props?: Partial>;
}[];
diff --git a/client_v2/src/common/ui/Link/Link.tsx b/client_v2/src/common/ui/Link/Link.tsx
index 26880856..94e9898d 100644
--- a/client_v2/src/common/ui/Link/Link.tsx
+++ b/client_v2/src/common/ui/Link/Link.tsx
@@ -1,11 +1,11 @@
import React, { MouseEvent, MouseEventHandler, ReactNode } from 'react';
import { Link as L, LinkProps as LProps } from 'react-router-dom';
import cn from 'clsx';
-import { LinkParams, linkPathBuilder, RoutePath } from 'panel/components/Routes/Paths';
+import { LinkParams, linkPathBuilder, RoutePathKey } from 'panel/components/Routes/Paths';
import theme from 'panel/lib/theme';
type Props = {
- to: RoutePath;
+ to: RoutePathKey;
props?: LinkParams;
className?: string;
type?: LProps['type'];
diff --git a/client_v2/src/common/ui/Menu/AccordionSection.tsx b/client_v2/src/common/ui/Menu/AccordionSection.tsx
index 5344bd59..ec936c81 100644
--- a/client_v2/src/common/ui/Menu/AccordionSection.tsx
+++ b/client_v2/src/common/ui/Menu/AccordionSection.tsx
@@ -1,7 +1,7 @@
import React, { useEffect, useState } from 'react';
import cn from 'clsx';
import { Icon, Link, IconType } from 'panel/common/ui';
-import { RoutePath } from 'panel/components/Routes/Paths';
+import { RoutePathKey } from 'panel/components/Routes/Paths';
import theme from 'panel/lib/theme';
import s from './styles.module.pcss';
@@ -9,7 +9,7 @@ import s from './styles.module.pcss';
type AccordionItem = {
label: string;
path: string;
- routePath: RoutePath;
+ routePath: RoutePathKey;
};
type Props = {
diff --git a/client_v2/src/components/Routes/Paths.ts b/client_v2/src/components/Routes/Paths.ts
index b594de1a..e41aef76 100644
--- a/client_v2/src/components/Routes/Paths.ts
+++ b/client_v2/src/components/Routes/Paths.ts
@@ -3,24 +3,26 @@ import qs from 'qs';
const BasicPath = '/';
const pathBuilder = (path: string) => `${BasicPath}${path}`;
-export enum RoutePath {
- Dashboard = 'Dashboard',
- Logs = 'Logs',
- Guide = 'Guide',
- Encryption = 'Encryption',
- Dhcp = 'Dhcp',
- Dns = 'Dns',
- SettingsPage = 'SettingsPage',
- Clients = 'Clients',
- DnsBlocklists = 'DnsBlocklists',
- DnsAllowlists = 'DnsAllowlists',
- DnsRewrites = 'DnsRewrites',
- CustomRules = 'CustomRules',
- BlockedServices = 'BlockedServices',
- UserRules = 'UserRules',
-}
+export const RoutePath = {
+ Dashboard: 'Dashboard',
+ Logs: 'Logs',
+ Guide: 'Guide',
+ Encryption: 'Encryption',
+ Dhcp: 'Dhcp',
+ Dns: 'Dns',
+ SettingsPage: 'SettingsPage',
+ Clients: 'Clients',
+ DnsBlocklists: 'DnsBlocklists',
+ DnsAllowlists: 'DnsAllowlists',
+ DnsRewrites: 'DnsRewrites',
+ CustomRules: 'CustomRules',
+ BlockedServices: 'BlockedServices',
+ UserRules: 'UserRules',
+} as const;
-export const Paths: Record = {
+export type RoutePathKey = keyof typeof RoutePath;
+
+export const Paths: Record = {
Dashboard: pathBuilder(''),
Logs: pathBuilder('logs'),
Guide: pathBuilder('guide'),
@@ -40,7 +42,7 @@ export const Paths: Record = {
export type LinkParams = Partial>;
export const linkPathBuilder = (
- route: RoutePath,
+ route: RoutePathKey,
params?: LinkParams,
query?: Partial>,
) => {