diff --git a/apps/web/app/(app)/environments/[environmentId]/EnvironmentsNavbar.tsx b/apps/web/app/(app)/environments/[environmentId]/EnvironmentsNavbar.tsx
index 21ce1b862b..b798e5115b 100644
--- a/apps/web/app/(app)/environments/[environmentId]/EnvironmentsNavbar.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/EnvironmentsNavbar.tsx
@@ -16,6 +16,7 @@ import {
DropdownMenuSubTrigger,
DropdownMenuTrigger,
} from "@/components/shared/DropdownMenu";
+import { Popover, PopoverContent, PopoverTrigger } from "@formbricks/ui";
import LoadingSpinner from "@/components/shared/LoadingSpinner";
import CreateTeamModal from "@/components/team/CreateTeamModal";
import {
@@ -65,6 +66,8 @@ import AddProductModal from "./AddProductModal";
import { formbricksLogout } from "@/lib/formbricks";
import formbricks from "@formbricks/js";
import { IS_FORMBRICKS_CLOUD } from "@formbricks/lib/constants";
+import { MenuIcon } from "lucide-react";
+import { cn } from "@formbricks/lib/cn";
interface EnvironmentsNavbarProps {
environmentId: string;
@@ -86,6 +89,8 @@ export default function EnvironmentsNavbar({ environmentId, session }: Environme
const [showAddProductModal, setShowAddProductModal] = useState(false);
const [showCreateTeamModal, setShowCreateTeamModal] = useState(false);
+ const [mobileNavMenuOpen, setMobileNavMenuOpen] = useState(false);
+
useEffect(() => {
if (environment && environment.widgetSetupCompleted) {
setWidgetSetupCompleted(true);
@@ -227,13 +232,14 @@ export default function EnvironmentsNavbar({ environmentId, session }: Environme
-
+
{/*
*/}
+
{navigation.map((item) => {
const IconComponent: React.ElementType = item.icon;
@@ -245,7 +251,7 @@ export default function EnvironmentsNavbar({ environmentId, session }: Environme
item.current
? "bg-slate-100 text-slate-900"
: "text-slate-900 hover:bg-slate-50 hover:text-slate-900",
- "inline-flex items-center rounded-md px-2 py-1 text-sm font-medium"
+ "hidden items-center rounded-md px-2 py-1 text-sm font-medium sm:inline-flex"
)}
aria-current={item.current ? "page" : undefined}>
@@ -254,6 +260,34 @@ export default function EnvironmentsNavbar({ environmentId, session }: Environme
);
})}
+
+
+
+ setMobileNavMenuOpen(!mobileNavMenuOpen)}>
+
+
+
+
+
+
+ {navigation.map((navItem) => (
+
+
setMobileNavMenuOpen(false)}
+ className={cn(
+ "flex items-center space-x-2 rounded-md p-2",
+ navItem.current && "bg-slate-300"
+ )}>
+
+ {navItem.name}
+
+
+ ))}
+
+
+
+
+
diff --git a/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/LinkModalButton.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/LinkModalButton.tsx
index e895a2331d..2fd1d56059 100644
--- a/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/LinkModalButton.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/LinkModalButton.tsx
@@ -14,6 +14,7 @@ interface LinkSurveyShareButtonProps {
export default function LinkSurveyShareButton({ survey, className }: LinkSurveyShareButtonProps) {
const [showLinkModal, setShowLinkModal] = useState(false);
+
return (
<>
-
+
+
);
}
diff --git a/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/SummaryPage.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/SummaryPage.tsx
index 9737b5fba6..3aca884217 100644
--- a/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/SummaryPage.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/summary/SummaryPage.tsx
@@ -1,4 +1,5 @@
"use client";
+
import CustomFilter from "@/app/(app)/environments/[environmentId]/surveys/[surveyId]/CustomFilter";
import SummaryHeader from "@/app/(app)/environments/[environmentId]/surveys/[surveyId]/SummaryHeader";
import SurveyResultsTabs from "@/app/(app)/environments/[environmentId]/surveys/[surveyId]/(analysis)/SurveyResultsTabs";
diff --git a/apps/web/components/shared/CodeBlock.tsx b/apps/web/components/shared/CodeBlock.tsx
index 0019cee6b5..0eb89c76f8 100644
--- a/apps/web/components/shared/CodeBlock.tsx
+++ b/apps/web/components/shared/CodeBlock.tsx
@@ -1,5 +1,6 @@
"use client";
+import { cn } from "@formbricks/lib/cn";
import { DocumentDuplicateIcon } from "@heroicons/react/24/outline";
import Prism from "prismjs";
import "prismjs/themes/prism.css";
@@ -9,15 +10,16 @@ import toast from "react-hot-toast";
interface CodeBlockProps {
children: React.ReactNode;
language: string;
+ customCodeClass?: string;
}
-const CodeBlock: React.FC
= ({ children, language }) => {
+const CodeBlock: React.FC = ({ children, language, customCodeClass = "" }) => {
useEffect(() => {
Prism.highlightAll();
}, [children]);
return (
-
+
{
@@ -27,7 +29,7 @@ const CodeBlock: React.FC = ({ children, language }) => {
}}
/>
- {children}
+ {children}
);
diff --git a/packages/ui/index.tsx b/packages/ui/index.tsx
index 0cc68f0b8a..62bdc91171 100644
--- a/packages/ui/index.tsx
+++ b/packages/ui/index.tsx
@@ -59,6 +59,15 @@ export {
} from "./components/Command";
export { Calendar } from "./components/Calendar";
export { DatePicker } from "./components/DatePicker";
+export {
+ Dialog,
+ DialogContent,
+ DialogDescription,
+ DialogFooter,
+ DialogHeader,
+ DialogTitle,
+ DialogTrigger,
+} from "./components/Dialog";
/* Icons */
export { AngryBirdRageIcon } from "./components/icons/AngryBirdRageIcon";