(null);
@@ -84,8 +84,8 @@ export function NodeManager() {
}
await refreshNodes();
- } catch (error: any) {
- toast.error(error.message || 'Failed to create node');
+ } catch (error) {
+ toast.error((error as Error).message || 'Failed to create node');
}
};
@@ -105,8 +105,8 @@ export function NodeManager() {
setEditingNodeId(null);
setFormData(defaultFormData);
await refreshNodes();
- } catch (error: any) {
- toast.error(error.message || 'Failed to update node');
+ } catch (error) {
+ toast.error((error as Error).message || 'Failed to update node');
}
};
@@ -135,8 +135,8 @@ export function NodeManager() {
setDeleteOpen(false);
setDeletingNode(null);
await refreshNodes();
- } catch (error: any) {
- toast.error(error.message || 'Failed to delete node');
+ } catch (error) {
+ toast.error((error as Error).message || 'Failed to delete node');
}
};
@@ -153,8 +153,8 @@ export function NodeManager() {
toast.error(`Failed to connect: ${result.error}`);
}
await refreshNodes();
- } catch (error: any) {
- toast.error(error.message || 'Connection test failed');
+ } catch (error) {
+ toast.error((error as Error).message || 'Connection test failed');
} finally {
setTesting(null);
}
@@ -169,8 +169,8 @@ export function NodeManager() {
const { token } = await res.json();
setGeneratedToken(token);
toast.success('Node token generated');
- } catch (error: any) {
- toast.error(error.message || 'Failed to generate token');
+ } catch (error) {
+ toast.error((error as Error).message || 'Failed to generate token');
} finally {
setGeneratingToken(false);
}
diff --git a/frontend/src/components/ResourcesView.tsx b/frontend/src/components/ResourcesView.tsx
index f66d3ff8..86369c00 100644
--- a/frontend/src/components/ResourcesView.tsx
+++ b/frontend/src/components/ResourcesView.tsx
@@ -78,8 +78,8 @@ export default function ResourcesView() {
setNetworks(await networksRes.json());
setOrphans(await orphansRes.json());
setSelectedOrphans([]);
- } catch (error) {
- console.error('Failed to fetch data', error);
+ } catch (err) {
+ console.error('Failed to fetch data', err);
toast.error('Failed to load resources data');
} finally {
setIsLoading(false);
@@ -105,7 +105,7 @@ export default function ResourcesView() {
toast.success(`Pruned ${confirmPruneType}.`);
}
await fetchAllData();
- } catch (error) {
+ } catch {
toast.error(`Failed to prune ${confirmPruneType}`);
} finally {
setIsActioning(false);
@@ -124,7 +124,7 @@ export default function ResourcesView() {
if (!res.ok) throw new Error();
toast.success(`Deleted ${confirmDelete.type.slice(0, -1)}`);
await fetchAllData();
- } catch (error) {
+ } catch {
toast.error(`Failed to delete ${confirmDelete.type.slice(0, -1)}`);
} finally {
setIsActioning(false);
@@ -154,7 +154,7 @@ export default function ResourcesView() {
toast.success(`Purged ${selectedOrphans.length} ghost container(s)`);
setBulkPurgeConfirm(false);
await fetchAllData();
- } catch (error) {
+ } catch {
toast.error('Failed to purge selected containers.');
} finally {
setIsActioning(false);
@@ -169,7 +169,7 @@ export default function ResourcesView() {
const totalReclaimable = chartData.reduce((acc, curr) => acc + curr.value, 0);
- const CustomTooltip = ({ active, payload }: any) => {
+ const CustomTooltip = ({ active, payload }: { active?: boolean; payload?: Array<{ name: string; value: number }> }) => {
if (active && payload && payload.length) {
return (
diff --git a/frontend/src/components/StackAlertSheet.tsx b/frontend/src/components/StackAlertSheet.tsx
index 7835fdd2..0c1cb629 100644
--- a/frontend/src/components/StackAlertSheet.tsx
+++ b/frontend/src/components/StackAlertSheet.tsx
@@ -147,7 +147,7 @@ export function StackAlertSheet({ isOpen, onClose, stackName }: StackAlertSheetP
const err = await res.json().catch(() => ({}));
toast.error(err?.error || 'Failed to delete alert rule.');
}
- } catch (e) {
+ } catch {
toast.error('Network error. Could not reach the node.');
} finally {
setIsLoading(false);
diff --git a/frontend/src/components/animate-ui/primitives/animate/slot.tsx b/frontend/src/components/animate-ui/primitives/animate/slot.tsx
index 3142cc40..35b9e0c9 100644
--- a/frontend/src/components/animate-ui/primitives/animate/slot.tsx
+++ b/frontend/src/components/animate-ui/primitives/animate/slot.tsx
@@ -1,3 +1,4 @@
+/* eslint-disable */
'use client';
import * as React from 'react';
diff --git a/frontend/src/components/animate-ui/primitives/effects/highlight.tsx b/frontend/src/components/animate-ui/primitives/effects/highlight.tsx
index 96ccc952..f7e7058d 100644
--- a/frontend/src/components/animate-ui/primitives/effects/highlight.tsx
+++ b/frontend/src/components/animate-ui/primitives/effects/highlight.tsx
@@ -1,3 +1,4 @@
+/* eslint-disable */
'use client';
import * as React from 'react';
diff --git a/frontend/src/components/animate-ui/primitives/radix/dialog.tsx b/frontend/src/components/animate-ui/primitives/radix/dialog.tsx
index 2efa06da..3730aead 100644
--- a/frontend/src/components/animate-ui/primitives/radix/dialog.tsx
+++ b/frontend/src/components/animate-ui/primitives/radix/dialog.tsx
@@ -1,3 +1,4 @@
+/* eslint-disable */
'use client';
import * as React from 'react';
@@ -204,4 +205,4 @@ export {
type DialogDescriptionProps,
type DialogContextType,
type DialogFlipDirection,
-};
+};
\ No newline at end of file
diff --git a/frontend/src/components/animate-ui/primitives/radix/dropdown-menu.tsx b/frontend/src/components/animate-ui/primitives/radix/dropdown-menu.tsx
index 0ee15e5f..b828b906 100644
--- a/frontend/src/components/animate-ui/primitives/radix/dropdown-menu.tsx
+++ b/frontend/src/components/animate-ui/primitives/radix/dropdown-menu.tsx
@@ -1,3 +1,4 @@
+/* eslint-disable */
'use client';
import * as React from 'react';
@@ -560,4 +561,4 @@ export {
type DropdownMenuRadioGroupProps,
type DropdownMenuContextType,
type DropdownMenuSubContextType,
-};
+};
\ No newline at end of file
diff --git a/frontend/src/components/animate-ui/primitives/radix/hover-card.tsx b/frontend/src/components/animate-ui/primitives/radix/hover-card.tsx
index 239843b5..b2ce5ca7 100644
--- a/frontend/src/components/animate-ui/primitives/radix/hover-card.tsx
+++ b/frontend/src/components/animate-ui/primitives/radix/hover-card.tsx
@@ -1,3 +1,4 @@
+/* eslint-disable */
'use client';
import * as React from 'react';
@@ -204,4 +205,4 @@ export {
type HoverCardContentProps,
type HoverCardArrowProps,
type HoverCardContextType,
-};
+};
\ No newline at end of file
diff --git a/frontend/src/components/animate-ui/primitives/radix/popover.tsx b/frontend/src/components/animate-ui/primitives/radix/popover.tsx
index 99ecf2a3..c022ac4b 100644
--- a/frontend/src/components/animate-ui/primitives/radix/popover.tsx
+++ b/frontend/src/components/animate-ui/primitives/radix/popover.tsx
@@ -1,3 +1,4 @@
+/* eslint-disable */
'use client';
import * as React from 'react';
@@ -159,4 +160,4 @@ export {
type PopoverCloseProps,
type PopoverArrowProps,
type PopoverContextType,
-};
+};
\ No newline at end of file
diff --git a/frontend/src/components/animate-ui/primitives/radix/sheet.tsx b/frontend/src/components/animate-ui/primitives/radix/sheet.tsx
index b789c2e2..59f7a0ae 100644
--- a/frontend/src/components/animate-ui/primitives/radix/sheet.tsx
+++ b/frontend/src/components/animate-ui/primitives/radix/sheet.tsx
@@ -1,3 +1,4 @@
+/* eslint-disable */
'use client';
import * as React from 'react';
@@ -188,4 +189,4 @@ export {
type SheetFooterProps,
type SheetTitleProps,
type SheetDescriptionProps,
-};
+};
\ No newline at end of file
diff --git a/frontend/src/components/animate-ui/primitives/radix/switch.tsx b/frontend/src/components/animate-ui/primitives/radix/switch.tsx
index 800a28fd..c414bf99 100644
--- a/frontend/src/components/animate-ui/primitives/radix/switch.tsx
+++ b/frontend/src/components/animate-ui/primitives/radix/switch.tsx
@@ -1,3 +1,4 @@
+/* eslint-disable */
'use client';
import * as React from 'react';
@@ -152,4 +153,4 @@ export {
type SwitchIconProps,
type SwitchIconPosition,
type SwitchContextType,
-};
+};
\ No newline at end of file
diff --git a/frontend/src/components/animate-ui/primitives/radix/tooltip.tsx b/frontend/src/components/animate-ui/primitives/radix/tooltip.tsx
index ee7413ba..39e21586 100644
--- a/frontend/src/components/animate-ui/primitives/radix/tooltip.tsx
+++ b/frontend/src/components/animate-ui/primitives/radix/tooltip.tsx
@@ -1,3 +1,4 @@
+/* eslint-disable */
'use client';
import * as React from 'react';
@@ -217,4 +218,4 @@ export {
type TooltipContentProps,
type TooltipArrowProps,
type TooltipContextType,
-};
+};
\ No newline at end of file
diff --git a/frontend/src/components/animate-ui/primitives/texts/sliding-number.tsx b/frontend/src/components/animate-ui/primitives/texts/sliding-number.tsx
index 561173f5..b4750d2f 100644
--- a/frontend/src/components/animate-ui/primitives/texts/sliding-number.tsx
+++ b/frontend/src/components/animate-ui/primitives/texts/sliding-number.tsx
@@ -1,3 +1,4 @@
+/* eslint-disable */
'use client';
import * as React from 'react';
@@ -350,4 +351,4 @@ function SlidingNumber({
);
}
-export { SlidingNumber, type SlidingNumberProps };
+export { SlidingNumber, type SlidingNumberProps };
\ No newline at end of file
diff --git a/frontend/src/components/ui/badge.tsx b/frontend/src/components/ui/badge.tsx
index e87d62bf..644e9dd5 100644
--- a/frontend/src/components/ui/badge.tsx
+++ b/frontend/src/components/ui/badge.tsx
@@ -33,4 +33,5 @@ function Badge({ className, variant, ...props }: BadgeProps) {
)
}
+// eslint-disable-next-line react-refresh/only-export-components
export { Badge, badgeVariants }
diff --git a/frontend/src/components/ui/button.tsx b/frontend/src/components/ui/button.tsx
index 65d4fcd9..d8f7202c 100644
--- a/frontend/src/components/ui/button.tsx
+++ b/frontend/src/components/ui/button.tsx
@@ -54,4 +54,5 @@ const Button = React.forwardRef(
)
Button.displayName = "Button"
+// eslint-disable-next-line react-refresh/only-export-components
export { Button, buttonVariants }
diff --git a/frontend/src/context/AuthContext.tsx b/frontend/src/context/AuthContext.tsx
index 55b308ea..81691514 100644
--- a/frontend/src/context/AuthContext.tsx
+++ b/frontend/src/context/AuthContext.tsx
@@ -108,6 +108,7 @@ export function AuthProvider({ children }: { children: ReactNode }) {
);
}
+// eslint-disable-next-line react-refresh/only-export-components
export function useAuth() {
const context = useContext(AuthContext);
if (context === undefined) {
diff --git a/frontend/src/context/NodeContext.tsx b/frontend/src/context/NodeContext.tsx
index 2d368ca4..1a297861 100644
--- a/frontend/src/context/NodeContext.tsx
+++ b/frontend/src/context/NodeContext.tsx
@@ -98,6 +98,7 @@ export function NodeProvider({ children }: { children: React.ReactNode }) {
);
}
+// eslint-disable-next-line react-refresh/only-export-components
export function useNodes() {
const context = useContext(NodeContext);
if (!context) {
diff --git a/frontend/src/hooks/use-data-state.tsx b/frontend/src/hooks/use-data-state.tsx
index 7166f3ef..59decef4 100644
--- a/frontend/src/hooks/use-data-state.tsx
+++ b/frontend/src/hooks/use-data-state.tsx
@@ -51,4 +51,5 @@ function useDataState(
return [value, localRef];
}
+// eslint-disable-next-line react-refresh/only-export-components
export { useDataState, type DataStateValue };
diff --git a/frontend/src/hooks/use-is-in-view.tsx b/frontend/src/hooks/use-is-in-view.tsx
index 3738c569..0648e4e5 100644
--- a/frontend/src/hooks/use-is-in-view.tsx
+++ b/frontend/src/hooks/use-is-in-view.tsx
@@ -22,4 +22,5 @@ function useIsInView(
return { ref: localRef, isInView };
}
+// eslint-disable-next-line react-refresh/only-export-components
export { useIsInView, type UseIsInViewOptions };
diff --git a/frontend/src/lib/api.ts b/frontend/src/lib/api.ts
index 7fbd64b4..3282f165 100644
--- a/frontend/src/lib/api.ts
+++ b/frontend/src/lib/api.ts
@@ -39,7 +39,7 @@ export async function apiFetch(
if (errData.error && errData.error.includes('not found') && errData.error.includes('Node')) {
window.dispatchEvent(new Event('node-not-found'));
}
- } catch (e) {
+ } catch {
// Ignore JSON parse errors, caller handles standard 404s
}
}