- {icon &&
{icon}}
-
-
-
-
{label}
+ {label && (
+
+ {icon &&
{icon}}
+
+
+
+ {label}
+
+ {sublabel && (
+
{sublabel}
+ )}
- {sublabel && (
-
{sublabel}
- )}
-
+ )}
{children}
);
diff --git a/web/src/services/api/cert.ts b/web/src/services/api/cert.ts
index 86d4387..4e07017 100644
--- a/web/src/services/api/cert.ts
+++ b/web/src/services/api/cert.ts
@@ -3,6 +3,7 @@ import { apiClient } from './client';
export interface CertInfo {
exists: boolean;
domain?: string;
+ wildcard?: boolean;
expiry?: string;
certPath?: string;
keyPath?: string;
diff --git a/web/src/services/api/dnsmasq.ts b/web/src/services/api/dnsmasq.ts
index 2863756..32fd6d8 100644
--- a/web/src/services/api/dnsmasq.ts
+++ b/web/src/services/api/dnsmasq.ts
@@ -1,9 +1,5 @@
import { apiClient } from './client';
-
-export interface DnsmasqStatus {
- running: boolean;
- status?: string;
-}
+import type { DnsmasqStatus } from '../../types';
export const dnsmasqApi = {
async getStatus(): Promise
{
diff --git a/web/src/services/api/index.ts b/web/src/services/api/index.ts
index c681e99..04a9bad 100644
--- a/web/src/services/api/index.ts
+++ b/web/src/services/api/index.ts
@@ -9,5 +9,5 @@ export { certApi } from './cert';
export type { CertStatusResponse, CertInfo } from './cert';
export { cloudflareApi } from './cloudflare';
export type { CloudflareVerifyResponse, CloudflareZone } from './cloudflare';
-export { operatorApi, centralDomainApi, dnsSettingsApi, ddnsConfigApi, dhcpConfigApi, nftablesConfigApi, haproxyRoutesApi } from './settings';
+export { dnsSettingsApi, ddnsConfigApi, dhcpConfigApi, nftablesConfigApi, haproxyRoutesApi } from './settings';
export type { OperatorSettings, CentralDomainSettings, DNSSettings, DDNSConfig, DHCPConfig, NftablesConfig, HAProxyCustomRoute, HAProxyRoutes } from './settings';
diff --git a/web/src/types/index.ts b/web/src/types/index.ts
index 9a6ad0b..8c814dd 100644
--- a/web/src/types/index.ts
+++ b/web/src/types/index.ts
@@ -10,10 +10,6 @@ export interface Message {
type: 'info' | 'success' | 'error';
}
-export interface LoadingState {
- [key: string]: boolean;
-}
-
export interface Messages {
[key: string]: Message;
}
diff --git a/web/src/utils/formatters.ts b/web/src/utils/formatters.ts
deleted file mode 100644
index 6028b36..0000000
--- a/web/src/utils/formatters.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export const formatTimestamp = (timestamp: string): string => {
- return new Date(timestamp).toLocaleString();
-};
\ No newline at end of file