diff --git a/.changeset/happy-buckets-dance.md b/.changeset/happy-buckets-dance.md
new file mode 100644
index 0000000000..59e7147b9d
--- /dev/null
+++ b/.changeset/happy-buckets-dance.md
@@ -0,0 +1,5 @@
+---
+"@calcom/atoms": minor
+---
+
+Refactor SettingsHeader to accept onBackButtonClick callback instead of using useRouter directly.
diff --git a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/developer/webhooks/[id]/page.tsx b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/developer/webhooks/[id]/page.tsx
index 1dd209cb0b..b76496fed9 100644
--- a/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/developer/webhooks/[id]/page.tsx
+++ b/apps/web/app/(use-page-wrapper)/settings/(settings-layout)/developer/webhooks/[id]/page.tsx
@@ -1,7 +1,7 @@
import type { PageProps } from "app/_types";
-import { getTranslate, _generateMetadata } from "app/_utils";
+import { _generateMetadata, getTranslate } from "app/_utils";
-import SettingsHeader from "@calcom/features/settings/appDir/SettingsHeader";
+import SettingsHeaderWithBackButton from "@calcom/features/settings/appDir/SettingsHeaderWithBackButton";
import { WebhookRepository } from "@calcom/features/webhooks/lib/repository/WebhookRepository";
import { EditWebhookView } from "@calcom/features/webhooks/pages/webhook-edit-view";
import { APP_NAME } from "@calcom/lib/constants";
@@ -24,13 +24,12 @@ const Page = async ({ params: _params }: PageProps) => {
const webhook = await webhookRepository.findByWebhookId(id);
return (
-
+ borderInShellHeader={true}>
-
+
);
};
diff --git a/packages/features/settings/appDir/SettingsHeader.tsx b/packages/features/settings/appDir/SettingsHeader.tsx
index 1ca60a1092..6121107937 100644
--- a/packages/features/settings/appDir/SettingsHeader.tsx
+++ b/packages/features/settings/appDir/SettingsHeader.tsx
@@ -6,17 +6,27 @@ import classNames from "@calcom/ui/classNames";
import { Icon } from "@calcom/ui/components/icon";
import { Button } from "@calcom/ui/components/button";
import { useLocale } from "@calcom/lib/hooks/useLocale";
-import { useRouter } from "next/navigation";
-interface HeaderProps {
+type HeaderPropsBase = {
children: React.ReactNode;
title?: string;
description?: string;
CTA?: React.ReactNode;
ctaClassName?: string;
borderInShellHeader?: boolean;
- backButton?: boolean;
-}
+};
+
+type HeaderPropsWithBackButton = HeaderPropsBase & {
+ backButton: true;
+ onBackButtonClick: () => void;
+};
+
+type HeaderPropsWithoutBackButton = HeaderPropsBase & {
+ backButton?: false;
+ onBackButtonClick?: never;
+};
+
+type HeaderProps = HeaderPropsWithBackButton | HeaderPropsWithoutBackButton;
export default function Header({
children,
@@ -26,8 +36,8 @@ export default function Header({
ctaClassName,
borderInShellHeader,
backButton,
+ onBackButtonClick,
}: HeaderProps) {
- const router = useRouter();
const { t } = useLocale();
return (
@@ -40,12 +50,12 @@ export default function Header({
)}>
- {backButton && (
+ {backButton && onBackButtonClick && (