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
-
+
{/* */} faveicon + {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 ( <> @@ -94,6 +104,7 @@ top:0; width:100%; height:100%; border:0;"> variant="darkCTA" title="Preview survey" aria-label="Preview survey" + className="flex justify-center" href={`${window.location.protocol}//${window.location.host}/s/${survey.id}?preview=true`} target="_blank" EndIcon={EyeIcon}> @@ -101,7 +112,7 @@ top:0; width:100%; height:100%; border:0;">
-
- + + ); } 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";