-
-
- {intl.getMessage('dhcp_static_leases_not_found')}
-
-
- }
- pageSize={pageSize}
getRowId={(row: StaticLease) => `${row.mac}-${row.ip}`}
/>
);
diff --git a/client_v3/src/components/Dhcp/LeasesPage/index.ts b/client_v3/src/components/Dhcp/LeasesPage/index.ts
new file mode 100644
index 000000000..7cd1bd477
--- /dev/null
+++ b/client_v3/src/components/Dhcp/LeasesPage/index.ts
@@ -0,0 +1 @@
+export { LeasesPage } from './LeasesPage';
diff --git a/client_v3/src/components/Dhcp/LeasesPage/styles.module.pcss b/client_v3/src/components/Dhcp/LeasesPage/styles.module.pcss
new file mode 100644
index 000000000..faa82ad01
--- /dev/null
+++ b/client_v3/src/components/Dhcp/LeasesPage/styles.module.pcss
@@ -0,0 +1,41 @@
+.breadcrumbs,
+.tabs {
+ padding: 24px 16px 0;
+}
+
+.tabContent {
+ padding: 16px 0 0 0;
+}
+
+.title {
+ padding: 0;
+}
+
+.header {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ padding: 16px 0;
+}
+
+.headerActions {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+}
+
+.menuButton {
+ border: none;
+ background: transparent;
+ cursor: pointer;
+ color: var(--default-gray-icons);
+ padding: 4px;
+ border-radius: 4px;
+ &:hover {
+ color: var(--default-black-icons);
+ }
+}
+
+.addButton {
+ padding-bottom: 24px;
+}
diff --git a/client_v3/src/components/Dhcp/blocks/DhcpToggle.tsx b/client_v3/src/components/Dhcp/blocks/DhcpToggle.tsx
new file mode 100644
index 000000000..fd969606d
--- /dev/null
+++ b/client_v3/src/components/Dhcp/blocks/DhcpToggle.tsx
@@ -0,0 +1,57 @@
+import type { Accessor } from 'solid-js';
+import { SettingRow } from 'panel/common/ui/SettingRow';
+import intl from 'panel/common/intl';
+import { dhcpState, toggleDhcp } from 'panel/stores/dhcp';
+
+type Props = {
+ selectedInterface: Accessor