From cd4b6fdae0ebc0e6a6ff18e7ccd7464a71c822fe Mon Sep 17 00:00:00 2001
From: Matti Nannt
Date: Thu, 14 Dec 2023 10:51:02 +0100
Subject: [PATCH] chore: add prettier config for import sorting, update
packages, migrate to prettier 3 (#1777)
---
.prettierrc.js | 7 +-
README.md | 1 -
apps/demo/package.json | 2 +-
apps/demo/pages/_app.tsx | 1 +
apps/demo/pages/_document.tsx | 2 +-
apps/demo/pages/app/index.tsx | 8 +-
apps/formbricks-com/app/docs/layout.tsx | 4 +-
apps/formbricks-com/app/providers.tsx | 2 +-
.../components/docs/BestPractices.tsx | 10 +-
.../formbricks-com/components/docs/Button.tsx | 2 +-
apps/formbricks-com/components/docs/Code.tsx | 5 +-
.../components/docs/DocsFeedback.tsx | 3 +-
.../components/docs/Feedback.tsx | 5 +-
.../formbricks-com/components/docs/Footer.tsx | 3 +-
.../formbricks-com/components/docs/Header.tsx | 2 +-
.../components/docs/Heading.tsx | 4 +-
.../formbricks-com/components/docs/Layout.tsx | 6 +-
.../components/docs/Libraries.tsx | 4 +-
.../components/docs/MobileNavigation.tsx | 6 +-
.../components/docs/Navigation.tsx | 2 +-
.../formbricks-com/components/docs/Search.tsx | 15 +-
.../components/docs/SectionProvider.tsx | 3 +-
.../components/docs/ThemeToggle.tsx | 2 +-
.../components/docs/docsFaq.tsx | 1 +
apps/formbricks-com/components/docs/mdx.tsx | 6 +-
.../components/dummyUI/AddEventDummy.tsx | 5 +-
.../dummyUI/AddNoCodeEventModalDummy.tsx | 11 +-
.../components/dummyUI/CTAQuestion.tsx | 1 +
.../components/dummyUI/DemoPreview.tsx | 5 +-
.../components/dummyUI/DemoView.tsx | 4 +-
.../components/dummyUI/Modal.tsx | 1 +
.../dummyUI/MultipleChoiceMultiQuestion.tsx | 4 +-
.../dummyUI/MultipleChoiceSingleQuestion.tsx | 4 +-
.../components/dummyUI/NPSQuestion.tsx | 2 +
.../components/dummyUI/OpenTextQuestion.tsx | 4 +-
.../components/dummyUI/PreviewSurvey.tsx | 4 +-
.../dummyUI/QuestionConditional.tsx | 9 +-
.../components/dummyUI/RatingQuestion.tsx | 4 +-
.../components/dummyUI/TemplateList.tsx | 4 +-
.../components/dummyUI/templates.ts | 8 +-
apps/formbricks-com/components/home/Faq.tsx | 2 +-
.../components/home/Features.tsx | 1 +
apps/formbricks-com/components/home/Hero.tsx | 4 +-
.../components/home/ScrollToTop.tsx | 3 +-
.../components/home/SetupTabs.tsx | 1 +
apps/formbricks-com/components/home/Steps.tsx | 4 +-
.../components/home/VideoWalkThrough.tsx | 2 +-
.../shared/BestPracticeNavigation.tsx | 5 +-
.../components/shared/BreakerCTA.tsx | 3 +-
apps/formbricks-com/components/shared/CTA.tsx | 4 +-
.../components/shared/Callout.tsx | 2 +-
.../components/shared/EarlyBirdDeal.tsx | 3 +-
.../components/shared/FeatureHighlight.tsx | 5 +-
.../components/shared/Footer.tsx | 1 +
.../components/shared/Header.tsx | 18 +-
.../components/shared/HeroAnimation.tsx | 2 +-
.../components/shared/LayoutMdx.tsx | 1 +
.../formbricks-com/components/shared/Logo.tsx | 8 +-
.../components/shared/MdxCTA.tsx | 3 +-
.../components/shared/MdxTryItCTA.tsx | 3 +-
.../components/shared/Navigation.tsx | 2 +-
.../components/shared/NewsletterSignup.tsx | 3 +-
.../components/shared/PricingTable.tsx | 3 +-
.../components/shared/Search.tsx | 6 +-
.../components/shared/SlideInBanner.tsx | 7 +-
.../components/shared/Slider.tsx | 2 +-
.../components/shared/TryItCTA.tsx | 3 +-
.../components/shared/UseCaseCTA.tsx | 3 +-
.../components/shared/WhyFormbricks.tsx | 8 +-
apps/formbricks-com/pages/_app.tsx | 4 +-
.../pages/community/HeaderTribe.tsx | 5 +-
.../pages/community/LevelCard.tsx | 3 +-
.../pages/community/Roadmap.tsx | 3 +-
apps/formbricks-com/pages/community/index.tsx | 6 +-
apps/formbricks-com/pages/concierge.tsx | 3 +-
.../formbricks-com/pages/demo/HeaderLight.tsx | 4 +-
.../pages/docs-feedback/index.tsx | 6 +-
.../pages/feature-chaser/index.tsx | 6 +-
.../pages/feedback-box/index.tsx | 6 +-
.../pages/improve-trial-conversion/index.tsx | 6 +-
.../pages/interview-prompt/index.tsx | 6 +-
.../pages/learn-from-churn/index.tsx | 6 +-
apps/formbricks-com/pages/oss-friends.tsx | 1 +
apps/formbricks-com/pages/pricing.tsx | 1 +
apps/formbricks-com/tailwind.config.ts | 1 +
apps/storybook/.storybook/main.ts | 3 +-
apps/storybook/.storybook/preview.ts | 2 +
apps/storybook/package.json | 25 +-
apps/storybook/src/App.tsx | 1 +
apps/storybook/src/main.tsx | 1 +
apps/storybook/vite.config.ts | 2 +-
.../components/ConfirmationPage.tsx | 5 +-
.../app/(app)/billing-confirmation/page.tsx | 4 +-
.../app/(app)/components/FormbricksClient.tsx | 5 +-
.../app/(app)/components/PosthogIdentify.tsx | 4 +-
.../(actionsAndAttributes)/actions/actions.ts | 14 +-
.../actions/components/ActionActivityTab.tsx | 21 +-
.../actions/components/ActionClassesTable.tsx | 10 +-
.../actions/components/ActionDetailModal.tsx | 8 +-
.../actions/components/ActionRowData.tsx | 3 +-
.../actions/components/ActionSettingsTab.tsx | 16 +-
.../actions/components/AddActionModal.tsx | 12 +-
.../actions/components/CssSelector.tsx | 3 +-
.../actions/components/InnerHtmlSelector.tsx | 3 +-
.../actions/components/PageUrlSelector.tsx | 18 +-
.../(actionsAndAttributes)/actions/layout.tsx | 1 +
.../actions/loading.tsx | 3 +-
.../(actionsAndAttributes)/actions/page.tsx | 6 +-
.../attributes/actions.ts | 5 +-
.../components/AttributeActivityTab.tsx | 7 +-
.../components/AttributeClassesTable.tsx | 8 +-
.../components/AttributeDetailModal.tsx | 6 +-
.../components/AttributeRowData.tsx | 3 +-
.../components/AttributeSettingsTab.tsx | 13 +-
.../components/HowToAddAttributesButton.tsx | 3 +-
.../attributes/components/SecondNavbar.tsx | 6 +-
.../attributes/layout.tsx | 1 +
.../attributes/loading.tsx | 3 +-
.../attributes/page.tsx | 6 +-
.../environments/[environmentId]/actions.ts | 7 +-
.../components/AddProductModal.tsx | 9 +-
.../components/EnvironmentsNavbar.tsx | 7 +-
.../[environmentId]/components/Navigation.tsx | 74 +-
.../components/UrlShortenerModal.tsx | 18 +-
.../components/WidgetStatusIndicator.tsx | 3 +-
.../[environmentId]/integrations/actions.ts | 4 +-
.../components/AddIntegrationModal.tsx | 32 +-
.../airtable/components/AirtableWrapper.tsx | 13 +-
.../airtable/components/Connect.tsx | 4 +-
.../integrations/airtable/components/Home.tsx | 18 +-
.../integrations/airtable/page.tsx | 1 +
.../components/IntegrationsPageTitle.tsx | 3 +-
.../integrations/google-sheets/actions.ts | 4 +-
.../components/AddIntegrationModal.tsx | 16 +-
.../google-sheets/components/Connect.tsx | 8 +-
.../components/GoogleSheetWrapper.tsx | 4 +-
.../google-sheets/components/Home.tsx | 6 +-
.../integrations/google-sheets/loading.tsx | 2 +-
.../integrations/google-sheets/page.tsx | 1 +
.../[environmentId]/integrations/layout.tsx | 3 +-
.../[environmentId]/integrations/page.tsx | 32 +-
.../integrations/webhooks/actions.ts | 9 +-
.../webhooks/components/AddWebhookModal.tsx | 28 +-
.../components/SurveyCheckboxGroup.tsx | 3 +-
.../components/TriggerCheckboxGroup.tsx | 3 +-
.../components/WebhookDetailModal.tsx | 7 +-
.../components/WebhookOverviewTab.tsx | 8 +-
.../components/WebhookSettingsTab.tsx | 30 +-
.../webhooks/components/WebhookTable.tsx | 11 +-
.../webhooks/components/testEndpoint.tsx | 1 +
.../integrations/webhooks/page.tsx | 8 +-
.../environments/[environmentId]/layout.tsx | 10 +-
.../people/[personId]/actions.ts | 7 +-
.../components/ActivityItemComponents.tsx | 9 +-
.../[personId]/components/ActivitySection.tsx | 1 +
.../components/ActivityTimeline.tsx | 1 +
.../components/AttributesSection.tsx | 6 +-
.../components/DeletePersonButton.tsx | 5 +-
.../[personId]/components/HeadingSection.tsx | 14 +-
.../[personId]/components/ResponseSection.tsx | 3 +-
.../components/ResponseTimeline.tsx | 7 +-
.../[personId]/components/ResponsesFeed.tsx | 4 +-
.../people/[personId]/loading.tsx | 5 +-
.../people/[personId]/page.tsx | 8 +-
.../[environmentId]/people/layout.tsx | 3 +-
.../[environmentId]/people/page.tsx | 10 +-
.../settings/api-keys/actions.ts | 7 +-
.../api-keys/components/AddApiKeyModal.tsx | 7 +-
.../api-keys/components/ApiKeyList.tsx | 5 +-
.../api-keys/components/EditApiKeys.tsx | 14 +-
.../settings/api-keys/page.tsx | 19 +-
.../settings/billing/actions.ts | 11 +-
.../billing/components/PricingTable.tsx | 17 +-
.../[environmentId]/settings/billing/page.tsx | 21 +-
.../settings/billing/unlimited/page.tsx | 8 +-
.../settings/components/SettingsNavbar.tsx | 11 +-
.../[environmentId]/settings/layout.tsx | 12 +-
.../settings/lookandfeel/actions.ts | 9 +-
.../lookandfeel/components/EditBrandColor.tsx | 6 +-
.../lookandfeel/components/EditBranding.tsx | 8 +-
.../components/EditHighlightBorder.tsx | 10 +-
.../lookandfeel/components/EditPlacement.tsx | 14 +-
.../settings/lookandfeel/loading.tsx | 5 +-
.../settings/lookandfeel/page.tsx | 6 +-
.../settings/members/actions.ts | 17 +-
.../members/components/AddMemberModal.tsx | 7 +-
.../members/components/DeleteTeam.tsx | 9 +-
.../EditMemberships/EditMemberships.tsx | 11 +-
.../EditMemberships/MemberActions.tsx | 13 +-
.../EditMemberships/MembersInfo.tsx | 7 +-
.../EditMemberships/TeamActions.tsx | 13 +-
.../members/components/EditTeamName.tsx | 9 +-
.../members/components/ShareInviteModal.tsx | 6 +-
.../[environmentId]/settings/members/page.tsx | 6 +-
.../settings/notifications/actions.ts | 6 +-
.../notifications/components/EditAlerts.tsx | 6 +-
.../components/EditWeeklySummary.tsx | 3 +-
.../components/NotificationSwitch.tsx | 10 +-
.../settings/notifications/page.tsx | 8 +-
.../settings/product/actions.ts | 17 +-
.../product/components/DeleteProduct.tsx | 9 +-
.../components/DeleteProductRender.tsx | 9 +-
.../product/components/EditProductName.tsx | 6 +-
.../product/components/EditWaitingTime.tsx | 5 +-
.../[environmentId]/settings/product/page.tsx | 4 +-
.../settings/profile/actions.ts | 7 +-
.../profile/components/AccountSecurity.tsx | 3 +-
.../profile/components/DeleteAccount.tsx | 12 +-
.../components/DisableTwoFactorModal.tsx | 13 +-
.../profile/components/EditAvatar.tsx | 12 +-
.../settings/profile/components/EditName.tsx | 8 +-
.../components/EnableTwoFactorModal.tsx | 11 +-
.../[environmentId]/settings/profile/page.tsx | 7 +-
.../setup/components/SetupInstructions.tsx | 7 +-
.../[environmentId]/settings/setup/page.tsx | 6 +-
.../[environmentId]/settings/tags/actions.ts | 7 +-
.../tags/components/EditTagsWrapper.tsx | 23 +-
.../tags/components/MergeTagsCombobox.tsx | 7 +-
.../[environmentId]/settings/tags/page.tsx | 14 +-
.../surveys/[surveyId]/(analysis)/actions.ts | 1 +
.../components/EmptyInAppSurveys.tsx | 5 +-
.../components/SurveyResultsTabs.tsx | 7 +-
.../surveys/[surveyId]/(analysis)/layout.tsx | 5 +-
.../(analysis)/responses/actions.ts | 12 +-
.../responses/components/ResponsePage.tsx | 16 +-
.../responses/components/ResponseTimeline.tsx | 8 +-
.../[surveyId]/(analysis)/responses/page.tsx | 15 +-
.../[surveyId]/(analysis)/summary/actions.ts | 3 +-
.../summary/components/CTASummary.tsx | 7 +-
.../summary/components/ConsentSummary.tsx | 9 +-
.../components/DateQuestionSummary.tsx | 13 +-
.../summary/components/FileUploadSummary.tsx | 7 +-
.../components/HiddenFieldsSummary.tsx | 7 +-
.../summary/components/LinkModalButton.tsx | 10 +-
.../components/LinkSingleUseSurveyModal.tsx | 9 +-
.../components/MultipleChoiceSummary.tsx | 19 +-
.../summary/components/NPSSummary.tsx | 9 +-
.../summary/components/OpenTextSummary.tsx | 11 +-
.../components/PictureChoiceSummary.tsx | 5 +-
.../summary/components/RatingSummary.tsx | 9 +-
.../summary/components/ShareEmbedSurvey.tsx | 14 +-
.../summary/components/SuccessMessage.tsx | 10 +-
.../summary/components/SummaryDropOffs.tsx | 5 +-
.../summary/components/SummaryList.tsx | 14 +-
.../summary/components/SummaryMetadata.tsx | 5 +-
.../summary/components/SummaryPage.tsx | 9 +-
.../components/shareEmbedTabs/EmailTab.tsx | 8 +-
.../components/shareEmbedTabs/LinkTab.tsx | 11 +-
.../components/shareEmbedTabs/WebpageTab.tsx | 7 +-
.../(analysis)/summary/lib/emailTemplate.tsx | 12 +-
.../[surveyId]/(analysis)/summary/page.tsx | 9 +-
.../[surveyId]/components/CustomFilter.tsx | 44 +-
.../components/QuestionFilterComboBox.tsx | 15 +-
.../components/QuestionsComboBox.tsx | 27 +-
.../[surveyId]/components/ResponseFilter.tsx | 10 +-
.../[surveyId]/components/SummaryHeader.tsx | 35 +-
.../components/SurveyStatusDropdown.tsx | 15 +-
.../surveys/[surveyId]/edit/actions.ts | 3 +-
.../edit/components/AddQuestionButton.tsx | 5 +-
.../edit/components/AdvancedSettings.tsx | 2 +
.../edit/components/AnimatedSurveyBg.tsx | 3 +-
.../edit/components/CTAQuestionForm.tsx | 3 +-
.../edit/components/ColorSurveyBg.tsx | 3 +-
.../edit/components/ConsentQuestionForm.tsx | 3 +-
.../edit/components/DateQuestionForm.tsx | 12 +-
.../edit/components/EditThankYouCard.tsx | 3 +-
.../edit/components/EditWelcomeCard.tsx | 8 +-
.../components/FileUploadQuestionForm.tsx | 7 +-
.../edit/components/HiddenFieldsCard.tsx | 7 +-
.../edit/components/HowToSendCard.tsx | 18 +-
.../edit/components/ImageSurveyBg.tsx | 2 +-
.../edit/components/LogicEditor.tsx | 13 +-
.../components/MultipleChoiceMultiForm.tsx | 9 +-
.../components/MultipleChoiceSingleForm.tsx | 7 +-
.../edit/components/NPSQuestionForm.tsx | 5 +-
.../edit/components/OpenQuestionForm.tsx | 19 +-
.../edit/components/PictureSelectionForm.tsx | 18 +-
.../[surveyId]/edit/components/Placement.tsx | 2 +
.../edit/components/QuestionCard.tsx | 28 +-
.../edit/components/QuestionFormInput.tsx | 5 +-
.../edit/components/QuestionMenu.tsx | 2 +-
.../edit/components/QuestionsSettingsTabs.tsx | 3 +-
.../edit/components/QuestionsView.tsx | 6 +-
.../edit/components/RatingQuestionForm.tsx | 10 +-
.../edit/components/RatingTypeDropdown.tsx | 2 +-
.../edit/components/RecontactOptionsCard.tsx | 9 +-
.../edit/components/ResponseOptionsCard.tsx | 10 +-
.../edit/components/SettingsView.tsx | 13 +-
.../edit/components/StylingCard.tsx | 8 +-
.../edit/components/SurveyBgSelectorTab.tsx | 4 +-
.../edit/components/SurveyEditor.tsx | 16 +-
.../edit/components/SurveyMenuBar.tsx | 24 +-
.../edit/components/UpdateQuestionId.tsx | 5 +-
.../[surveyId]/edit/components/Validation.ts | 1 -
.../edit/components/WhenToSendCard.tsx | 12 +-
.../edit/components/WhoToSendCard.tsx | 11 +-
.../surveys/[surveyId]/edit/page.tsx | 7 +-
.../[environmentId]/surveys/actions.ts | 3 +-
.../surveys/components/Modal.tsx | 11 +-
.../surveys/components/PreviewSurvey.tsx | 13 +-
.../surveys/components/SurveyDropDownMenu.tsx | 23 +-
.../surveys/components/SurveyList.tsx | 11 +-
.../surveys/components/SurveyStarter.tsx | 13 +-
.../[environmentId]/surveys/page.tsx | 7 +-
.../surveys/templates/TemplateContainer.tsx | 18 +-
.../surveys/templates/TemplateList.tsx | 38 +-
.../surveys/templates/actions.ts | 5 +-
.../surveys/templates/page.tsx | 4 +-
.../surveys/templates/templates.ts | 3 +-
apps/web/app/(app)/layout.tsx | 8 +-
apps/web/app/(app)/onboarding/actions.ts | 3 +-
.../(app)/onboarding/components/Greeting.tsx | 3 +-
.../(app)/onboarding/components/Objective.tsx | 6 +-
.../onboarding/components/Onboarding.tsx | 10 +-
.../(app)/onboarding/components/Product.tsx | 17 +-
.../app/(app)/onboarding/components/Role.tsx | 8 +-
apps/web/app/(app)/onboarding/page.tsx | 7 +-
.../(auth)/auth/components/AzureButton.tsx | 5 +-
.../(auth)/auth/components/GithubButton.tsx | 3 +-
.../(auth)/auth/components/GoogleButton.tsx | 3 +-
.../auth/components/IsPasswordValid.tsx | 2 +-
.../(auth)/auth/components/Testimonial.tsx | 4 +-
.../components/PasswordResetForm/index.tsx | 3 +-
.../components/ResetPasswordForm/index.tsx | 7 +-
apps/web/app/(auth)/auth/layout.tsx | 1 +
.../auth/login/components/SigninForm.tsx | 18 +-
.../auth/login/components/TwoFactor.tsx | 1 +
.../auth/login/components/TwoFactorBackup.tsx | 3 +-
apps/web/app/(auth)/auth/login/page.tsx | 9 +-
.../auth/signup/components/SignupForm.tsx | 13 +-
apps/web/app/(auth)/auth/signup/page.tsx | 8 +-
.../components/RequestVerificationEmail.tsx | 3 +-
apps/web/app/(auth)/auth/verify/page.tsx | 4 +-
apps/web/app/(auth)/invite/page.tsx | 20 +-
apps/web/app/(auth)/layout.tsx | 3 +-
.../(redirects)/products/[productId]/route.ts | 7 +-
.../app/(redirects)/teams/[teamId]/route.ts | 9 +-
apps/web/app/[shortUrlId]/page.tsx | 1 +
apps/web/app/api/auth/[...nextauth]/route.ts | 1 +
.../app/api/billing/stripe-webhook/route.ts | 3 +-
apps/web/app/api/cron/close_surveys/route.ts | 3 +-
apps/web/app/api/cron/ping/route.ts | 3 +-
apps/web/app/api/cron/report-usage/route.ts | 7 +-
apps/web/app/api/cron/weekly_summary/email.ts | 6 +-
apps/web/app/api/cron/weekly_summary/route.ts | 6 +-
.../app/api/google-sheet/callback/route.ts | 15 +-
apps/web/app/api/google-sheet/route.ts | 11 +-
.../app/api/internal/csv-conversion/route.ts | 5 +-
.../api/internal/excel-conversion/route.ts | 3 +-
.../api/pipeline/lib/handleIntegrations.ts | 6 +-
apps/web/app/api/pipeline/route.ts | 16 +-
.../people/[userId]/set-attribute/route.ts | 3 +-
.../displays/[displayId]/responded/route.ts | 3 +-
.../client/displays/[displayId]/route.ts | 3 +-
.../api/v1/(legacy)/client/displays/route.ts | 3 +-
.../people/[personId]/set-attribute/route.ts | 3 +-
.../client/responses/[responseId]/route.ts | 9 +-
.../api/v1/(legacy)/client/responses/route.ts | 5 +-
.../people/[personId]/set-attribute/route.ts | 3 +-
.../js/people/[personId]/set-user-id/route.ts | 3 +-
.../app/api/v1/(legacy)/js/people/route.ts | 3 +-
apps/web/app/api/v1/(legacy)/js/sync/route.ts | 3 +-
apps/web/app/api/v1/auth.ts | 5 +-
.../client/[environmentId]/actions/route.ts | 5 +-
.../displays/[displayId]/route.ts | 3 +-
.../client/[environmentId]/displays/route.ts | 3 +-
.../in-app/sync/[userId]/route.ts | 3 +-
.../[environmentId]/in-app/sync/route.ts | 3 +-
.../[environmentId]/people/[userId]/route.ts | 3 +-
.../v1/client/[environmentId]/people/route.ts | 4 +-
.../responses/[responseId]/route.ts | 9 +-
.../client/[environmentId]/responses/route.ts | 5 +-
.../storage/lib/uploadPrivateFile.ts | 1 +
.../[environmentId]/storage/local/route.ts | 7 +-
.../client/[environmentId]/storage/route.ts | 4 +-
.../integrations/airtable/callback/route.ts | 11 +-
.../app/api/v1/integrations/airtable/route.ts | 8 +-
.../v1/integrations/airtable/tables/route.ts | 11 +-
.../action-classes/[actionClassId]/route.ts | 7 +-
.../api/v1/management/action-classes/route.ts | 11 +-
.../[attributeClassId]/route.ts | 7 +-
.../v1/management/attribute-classes/route.ts | 9 +-
apps/web/app/api/v1/management/me/route.ts | 3 +-
.../v1/management/people/[personId]/route.ts | 3 +-
.../web/app/api/v1/management/people/route.ts | 1 +
.../responses/[responseId]/route.ts | 15 +-
.../app/api/v1/management/responses/route.ts | 3 +-
.../v1/management/storage/lib/getSignedUrl.ts | 3 +-
.../api/v1/management/storage/local/route.ts | 9 +-
.../app/api/v1/management/storage/route.ts | 4 +-
.../v1/management/surveys/[surveyId]/route.ts | 11 +-
.../app/api/v1/management/surveys/route.ts | 7 +-
apps/web/app/api/v1/memberships/route.ts | 3 +-
apps/web/app/api/v1/og/route.tsx | 4 -
.../app/api/v1/users/forgot-password/route.ts | 3 +-
apps/web/app/api/v1/users/me/route.ts | 3 +-
.../app/api/v1/users/reset-password/route.ts | 5 +-
apps/web/app/api/v1/users/route.ts | 5 +-
.../api/v1/users/verification-email/route.ts | 3 +-
.../app/api/v1/webhooks/[webhookId]/route.ts | 3 +-
apps/web/app/api/v1/webhooks/route.ts | 9 +-
apps/web/app/error.tsx | 3 +-
apps/web/app/layout.tsx | 1 +
apps/web/app/lib/api/apiHelper.ts | 7 +-
apps/web/app/lib/email.ts | 4 +-
apps/web/app/lib/questions.ts | 8 +-
.../lib/responses/questionResponseMapping.ts | 2 +-
apps/web/app/lib/singleUseSurveys.ts | 5 +-
apps/web/app/lib/surveys/surveys.ts | 5 +-
apps/web/app/middleware/bucket.ts | 1 +
apps/web/app/not-found.tsx | 4 +-
apps/web/app/page.tsx | 7 +-
apps/web/app/s/[surveyId]/actions.ts | 13 +-
.../s/[surveyId]/components/LegalFooter.tsx | 3 +-
.../s/[surveyId]/components/LinkSurvey.tsx | 7 +-
.../[surveyId]/components/MediaBackground.tsx | 3 +-
.../app/s/[surveyId]/components/PinScreen.tsx | 5 +-
.../[surveyId]/components/SurveyInactive.tsx | 6 +-
.../[surveyId]/components/SurveyLinkUsed.tsx | 4 +-
.../s/[surveyId]/components/VerifyEmail.tsx | 7 +-
apps/web/app/s/[surveyId]/lib/prefilling.ts | 2 +-
apps/web/app/s/[surveyId]/not-found.tsx | 8 +-
apps/web/app/s/[surveyId]/page.tsx | 19 +-
.../[accessType]/[fileName]/lib/deleteFile.ts | 1 +
.../[accessType]/[fileName]/lib/getFile.ts | 7 +-
.../[accessType]/[fileName]/route.ts | 10 +-
apps/web/middleware.ts | 2 +-
apps/web/next.config.mjs | 6 +-
apps/web/package.json | 14 +-
.../displays/[displayId]/responded.ts | 3 +-
.../[environmentId]/displays/index.ts | 5 +-
.../[environmentId]/events/index.ts | 3 +-
.../people/[personId]/attribute.ts | 3 +-
.../responses/[responseId]/index.ts | 3 +-
.../[environmentId]/responses/index.ts | 3 +-
.../api/v1/client/surveys/[surveyId]/index.ts | 3 +-
apps/web/sentry.client.config.ts | 1 -
apps/web/sentry.edge.config.ts | 1 -
apps/web/sentry.server.config.ts | 1 -
apps/web/tsconfig.json | 10 +-
package.json | 9 +-
packages/api/README.md | 2 +-
packages/api/package.json | 4 +-
packages/api/src/api/client/action.ts | 3 +-
packages/api/src/api/client/display.ts | 1 +
packages/api/src/api/client/index.ts | 4 +-
packages/api/src/api/client/people.ts | 1 +
packages/api/src/api/client/response.ts | 1 +
packages/api/src/index.ts | 2 +-
packages/api/src/utils/makeRequest.ts | 1 +
packages/database/jsonTypes.ts | 4 +-
packages/database/package.json | 4 +-
packages/database/src/index.ts | 1 +
.../components/AddMemberRole.tsx | 5 +-
.../components/EditMembershipRole.tsx | 18 +-
.../components/TransferOwnershipModal.tsx | 3 +-
packages/ee/RoleManagement/lib/actions.ts | 9 +-
packages/ee/billing/api/stripe-webhook.ts | 1 +
.../handlers/checkoutSessionCompleted.ts | 6 +-
.../handlers/subscriptionCreatedOrUpdated.ts | 7 +-
.../billing/handlers/subscriptionDeleted.ts | 5 +-
.../lib/createCustomerPortalSession.ts | 1 +
packages/ee/billing/lib/createSubscription.ts | 17 +-
packages/ee/billing/lib/removeSubscription.ts | 8 +-
packages/ee/billing/lib/reportUsage.ts | 4 +-
packages/ee/lib/service.ts | 1 +
packages/ee/package.json | 2 +-
.../eslint-config-formbricks/package.json | 2 +-
packages/js/package.json | 12 +-
packages/js/src/index.ts | 1 +
packages/js/src/lib/actions.ts | 4 +-
packages/js/src/lib/api.ts | 1 +
packages/js/src/lib/config.ts | 1 +
packages/js/src/lib/initialize.ts | 7 +-
packages/js/src/lib/noCodeActions.ts | 3 +-
packages/js/src/lib/person.ts | 1 +
packages/js/src/lib/sync.ts | 1 +
packages/js/src/lib/widget.ts | 1 +
packages/js/tests/__mocks__/apiMock.ts | 1 +
packages/js/tests/index.test.ts | 8 +-
packages/lib/account/service.ts | 5 +-
packages/lib/action/service.ts | 12 +-
packages/lib/actionClass/auth.ts | 16 +-
packages/lib/actionClass/service.ts | 9 +-
packages/lib/airtable/service.ts | 4 +-
packages/lib/apiKey/auth.ts | 10 +-
packages/lib/apiKey/service.ts | 18 +-
packages/lib/attributeClass/auth.ts | 10 +-
packages/lib/attributeClass/service.ts | 21 +-
packages/lib/auth.ts | 3 +-
packages/lib/auth/service.ts | 6 +-
packages/lib/authOptions.ts | 6 +-
packages/lib/constants.ts | 2 +
packages/lib/crypto.ts | 3 +-
packages/lib/display/service.ts | 10 +-
packages/lib/emails/emails.ts | 3 +-
packages/lib/environment/auth.ts | 6 +-
packages/lib/environment/service.ts | 15 +-
packages/lib/googleSheet/service.ts | 6 +-
packages/lib/integration/auth.ts | 10 +-
packages/lib/integration/service.ts | 6 +-
packages/lib/invite/service.ts | 36 +-
packages/lib/jwt.ts | 2 +
packages/lib/membership/hooks/actions.ts | 7 +-
.../membership/hooks/useMembershipRole.tsx | 3 +-
packages/lib/membership/service.ts | 16 +-
packages/lib/package.json | 10 +-
packages/lib/person/auth.ts | 10 +-
packages/lib/person/service.ts | 21 +-
packages/lib/product/auth.ts | 14 +-
packages/lib/product/service.ts | 8 +-
packages/lib/response/auth.ts | 6 +-
packages/lib/response/service.ts | 6 +-
packages/lib/responseNote/auth.ts | 8 +-
packages/lib/responseNote/service.ts | 17 +-
packages/lib/responseQueue.ts | 1 +
packages/lib/responses.ts | 2 +-
packages/lib/shortUrl/service.ts | 8 +-
packages/lib/storage/service.ts | 24 +-
packages/lib/survey/auth.ts | 18 +-
packages/lib/survey/service.ts | 6 +-
packages/lib/tag/auth.ts | 14 +-
packages/lib/tag/service.ts | 7 +-
packages/lib/tagOnResponse/auth.ts | 12 +-
packages/lib/tagOnResponse/service.ts | 14 +-
packages/lib/team/auth.ts | 12 +-
packages/lib/team/hooks/actions.ts | 7 +-
packages/lib/team/hooks/useGetBillingInfo.ts | 4 +-
packages/lib/team/service.ts | 6 +-
packages/lib/teamDetail/service.ts | 8 +-
packages/lib/tsconfig.json | 9 +-
packages/lib/user/service.ts | 9 +-
packages/lib/utils/validate.ts | 1 +
packages/lib/webhook/auth.ts | 8 +-
packages/lib/webhook/cache.ts | 1 +
packages/lib/webhook/service.ts | 18 +-
.../prettier-config/merged-prettier-plugin.js | 12 -
packages/prettier-config/package.json | 5 +-
packages/prettier-config/prettier-preset.js | 12 +-
packages/surveys/package.json | 10 +-
.../src/components/general/FileInput.tsx | 3 +-
.../src/components/general/ProgressBar.tsx | 6 +-
.../general/QuestionConditional.tsx | 3 +-
.../surveys/src/components/general/Survey.tsx | 4 +-
.../src/components/general/SurveyInline.tsx | 1 +
.../src/components/general/SurveyModal.tsx | 5 +-
.../src/components/general/WelcomeCard.tsx | 2 +
.../src/components/questions/CTAQuestion.tsx | 12 +-
.../components/questions/ConsentQuestion.tsx | 5 +-
.../src/components/questions/DateQuestion.tsx | 3 +-
.../questions/FileUploadQuestion.tsx | 8 +-
.../questions/MultipleChoiceMultiQuestion.tsx | 14 +-
.../MultipleChoiceSingleQuestion.tsx | 14 +-
.../src/components/questions/NPSQuestion.tsx | 14 +-
.../components/questions/OpenTextQuestion.tsx | 13 +-
.../questions/PictureSelectionQuestion.tsx | 6 +-
.../components/questions/RatingQuestion.tsx | 6 +-
.../components/wrappers/AutoCloseWrapper.tsx | 4 +-
.../surveys/src/components/wrappers/Modal.tsx | 3 +-
packages/surveys/src/lib/styles.ts | 3 +-
packages/surveys/src/lib/ttc.ts | 4 +-
.../src/sideload/question-date/Question.tsx | 2 +-
.../src/sideload/question-date/index.tsx | 5 +-
packages/surveys/src/types/props.ts | 2 +-
packages/surveys/vite.config.ts | 2 +-
packages/tsconfig/package.json | 6 +-
packages/types/actions.ts | 1 +
packages/types/auth.ts | 1 +
packages/types/integration/airtable.ts | 1 +
packages/types/integration/googleSheet.ts | 1 +
packages/types/integration/index.ts | 2 +
packages/types/integration/sharedTypes.ts | 1 +
packages/types/invites.ts | 1 +
packages/types/js.ts | 1 +
packages/types/next-auth.d.ts | 1 +
packages/types/pipelines.ts | 1 +
packages/types/product.ts | 3 +-
packages/types/responses.ts | 1 +
packages/types/surveys.ts | 1 +
packages/types/templates.ts | 3 +-
packages/types/webhooks.ts | 1 +
packages/ui/Accordion/index.tsx | 3 +-
packages/ui/AdvancedOptionToggle/index.tsx | 1 +
packages/ui/Alert/index.tsx | 2 +-
packages/ui/AlertDialog/index.tsx | 2 +-
packages/ui/BillingSlider/index.tsx | 2 +-
packages/ui/Button/index.tsx | 3 +-
packages/ui/Calendar/index.tsx | 3 +-
packages/ui/Checkbox/index.tsx | 2 +-
packages/ui/CodeBlock/index.tsx | 3 +-
packages/ui/ColorPicker/index.tsx | 3 +-
packages/ui/Command/index.tsx | 3 +-
packages/ui/Confetti/index.tsx | 2 +-
packages/ui/CreateTeamModal/index.tsx | 11 +-
packages/ui/CustomDialog/index.tsx | 2 +-
packages/ui/DatePicker/index.tsx | 14 +-
packages/ui/DeleteDialog/index.tsx | 2 +-
packages/ui/Dialog/index.tsx | 2 +-
packages/ui/DropdownMenu/index.tsx | 2 +-
.../components/AddVariablesDropdown.tsx | 3 +-
packages/ui/Editor/components/Editor.tsx | 2 +-
.../ui/Editor/components/ToolbarPlugin.tsx | 25 +-
packages/ui/EmptySpaceFiller/index.tsx | 3 +-
packages/ui/EnvironmentNotice/index.tsx | 3 +-
packages/ui/FileInput/index.tsx | 6 +-
packages/ui/FileUploadResponse/index.tsx | 1 +
packages/ui/GoBackButton/index.tsx | 3 +-
packages/ui/Input/index.tsx | 1 +
packages/ui/Label/index.tsx | 2 +-
packages/ui/LoadingWrapper/index.tsx | 1 +
packages/ui/Modal/index.tsx | 3 +-
packages/ui/ModalWithTabs/index.tsx | 3 +-
packages/ui/OTPInput/index.tsx | 4 +-
packages/ui/PasswordInput/index.tsx | 5 +-
.../ui/PictureSelectionResponse/index.tsx | 12 +-
packages/ui/Popover/index.tsx | 2 +-
packages/ui/PostHogClient/index.tsx | 3 +-
packages/ui/PricingCard/index.tsx | 6 +-
packages/ui/RadioGroup/index.tsx | 3 +-
packages/ui/RatingResponse/index.tsx | 4 +-
packages/ui/SearchBox/index.tsx | 5 +-
packages/ui/Select/index.tsx | 2 +-
packages/ui/SingleResponseCard/actions.ts | 14 +-
.../components/QuestionSkip.tsx | 6 +-
.../components/ResponseNote.tsx | 18 +-
.../components/ResponseTagsWrapper.tsx | 14 +-
packages/ui/SingleResponseCard/index.tsx | 30 +-
packages/ui/Survey/index.tsx | 3 +-
packages/ui/SurveyStatusIndicator/index.tsx | 3 +-
packages/ui/Switch/index.tsx | 2 +-
packages/ui/Tag/index.tsx | 3 +-
packages/ui/TagsCombobox/index.tsx | 9 +-
packages/ui/Tooltip/index.tsx | 2 +-
packages/ui/UpgradePlanNotice/index.tsx | 1 +
packages/ui/package.json | 18 +-
packages/ui/v2/Button/index.tsx | 3 +-
pnpm-lock.yaml | 7836 +++++++----------
637 files changed, 5828 insertions(+), 6417 deletions(-)
delete mode 100644 packages/prettier-config/merged-prettier-plugin.js
diff --git a/.prettierrc.js b/.prettierrc.js
index db8e3eee54..5430f66ec3 100644
--- a/.prettierrc.js
+++ b/.prettierrc.js
@@ -1 +1,6 @@
-module.exports = require("./packages/prettier-config/prettier-preset");
+const baseConfig = require("./packages/prettier-config/prettier-preset");
+
+module.exports = {
+ ...baseConfig,
+ plugins: ["@trivago/prettier-plugin-sort-imports", "prettier-plugin-tailwindcss"],
+};
diff --git a/README.md b/README.md
index d43219e8f6..19d72ef820 100644
--- a/README.md
+++ b/README.md
@@ -56,7 +56,6 @@ Harvest user-insights, build irresistible experiences.
-
diff --git a/apps/demo/package.json b/apps/demo/package.json
index 67e93c3364..adb1a28123 100644
--- a/apps/demo/package.json
+++ b/apps/demo/package.json
@@ -13,7 +13,7 @@
"dependencies": {
"@formbricks/js": "workspace:*",
"@heroicons/react": "^2.0.18",
- "next": "14.0.3",
+ "next": "14.0.4",
"react": "18.2.0",
"react-dom": "18.2.0"
},
diff --git a/apps/demo/pages/_app.tsx b/apps/demo/pages/_app.tsx
index 6b12fe2353..2ce0edb5ce 100644
--- a/apps/demo/pages/_app.tsx
+++ b/apps/demo/pages/_app.tsx
@@ -1,5 +1,6 @@
import type { AppProps } from "next/app";
import Head from "next/head";
+
import "../styles/globals.css";
export default function App({ Component, pageProps }: AppProps) {
diff --git a/apps/demo/pages/_document.tsx b/apps/demo/pages/_document.tsx
index ac43b6f24d..816404f321 100644
--- a/apps/demo/pages/_document.tsx
+++ b/apps/demo/pages/_document.tsx
@@ -1,4 +1,4 @@
-import { Html, Head, Main, NextScript } from "next/document";
+import { Head, Html, Main, NextScript } from "next/document";
export default function Document() {
return (
diff --git a/apps/demo/pages/app/index.tsx b/apps/demo/pages/app/index.tsx
index 9df5d57ed2..07afa60606 100644
--- a/apps/demo/pages/app/index.tsx
+++ b/apps/demo/pages/app/index.tsx
@@ -1,8 +1,10 @@
-import formbricks from "@formbricks/js";
import Image from "next/image";
-import { useEffect, useState } from "react";
-import fbsetup from "../../public/fb-setup.png";
import { useRouter } from "next/router";
+import { useEffect, useState } from "react";
+
+import formbricks from "@formbricks/js";
+
+import fbsetup from "../../public/fb-setup.png";
declare const window: any;
diff --git a/apps/formbricks-com/app/docs/layout.tsx b/apps/formbricks-com/app/docs/layout.tsx
index 351db463ae..6be68ac6af 100644
--- a/apps/formbricks-com/app/docs/layout.tsx
+++ b/apps/formbricks-com/app/docs/layout.tsx
@@ -1,9 +1,7 @@
-import glob from "fast-glob";
-
import { Providers } from "@/app/providers";
import { Layout } from "@/components/docs/Layout";
-
import { type Section } from "@/components/docs/SectionProvider";
+import glob from "fast-glob";
import { type Metadata } from "next";
export const metadata: Metadata = {
diff --git a/apps/formbricks-com/app/providers.tsx b/apps/formbricks-com/app/providers.tsx
index c5666c2268..c295f39d59 100644
--- a/apps/formbricks-com/app/providers.tsx
+++ b/apps/formbricks-com/app/providers.tsx
@@ -1,7 +1,7 @@
"use client";
-import { useEffect } from "react";
import { ThemeProvider, useTheme } from "next-themes";
+import { useEffect } from "react";
function ThemeWatcher() {
let { resolvedTheme, setTheme } = useTheme();
diff --git a/apps/formbricks-com/components/docs/BestPractices.tsx b/apps/formbricks-com/components/docs/BestPractices.tsx
index b48d3036e1..04fd4cddf0 100644
--- a/apps/formbricks-com/components/docs/BestPractices.tsx
+++ b/apps/formbricks-com/components/docs/BestPractices.tsx
@@ -1,14 +1,14 @@
"use client";
-import Link from "next/link";
-import { type MotionValue, motion, useMotionTemplate, useMotionValue } from "framer-motion";
-
-import { GridPattern } from "./GridPattern";
-import { Heading } from "./Heading";
import { ChatBubbleIcon } from "@/components/docs/icons/ChatBubbleIcon";
import { EnvelopeIcon } from "@/components/docs/icons/EnvelopeIcon";
import { UserIcon } from "@/components/docs/icons/UserIcon";
import { UsersIcon } from "@/components/docs/icons/UsersIcon";
+import { type MotionValue, motion, useMotionTemplate, useMotionValue } from "framer-motion";
+import Link from "next/link";
+
+import { GridPattern } from "./GridPattern";
+import { Heading } from "./Heading";
interface BestPractice {
href: string;
diff --git a/apps/formbricks-com/components/docs/Button.tsx b/apps/formbricks-com/components/docs/Button.tsx
index df5df37a0f..b385731705 100644
--- a/apps/formbricks-com/components/docs/Button.tsx
+++ b/apps/formbricks-com/components/docs/Button.tsx
@@ -1,5 +1,5 @@
-import Link from "next/link";
import clsx from "clsx";
+import Link from "next/link";
function ArrowIcon(props: React.ComponentPropsWithoutRef<"svg">) {
return (
diff --git a/apps/formbricks-com/components/docs/Code.tsx b/apps/formbricks-com/components/docs/Code.tsx
index 5199e671c5..03ffcd77b5 100644
--- a/apps/formbricks-com/components/docs/Code.tsx
+++ b/apps/formbricks-com/components/docs/Code.tsx
@@ -1,12 +1,11 @@
"use client";
-import { Children, createContext, isValidElement, useContext, useEffect, useRef, useState } from "react";
+import { Tag } from "@/components/docs/Tag";
import { Tab } from "@headlessui/react";
import clsx from "clsx";
+import { Children, createContext, isValidElement, useContext, useEffect, useRef, useState } from "react";
import { create } from "zustand";
-import { Tag } from "@/components/docs/Tag";
-
const languageNames: Record = {
js: "JavaScript",
ts: "TypeScript",
diff --git a/apps/formbricks-com/components/docs/DocsFeedback.tsx b/apps/formbricks-com/components/docs/DocsFeedback.tsx
index 05c30b964d..697cd5df3b 100644
--- a/apps/formbricks-com/components/docs/DocsFeedback.tsx
+++ b/apps/formbricks-com/components/docs/DocsFeedback.tsx
@@ -1,8 +1,9 @@
"use client";
+import { useState } from "react";
+
import { Button } from "@formbricks/ui/Button";
import { Popover, PopoverContent, PopoverTrigger } from "@formbricks/ui/Popover";
-import { useState } from "react";
export const DocsFeedback: React.FC = () => {
const [isOpen, setIsOpen] = useState(false);
diff --git a/apps/formbricks-com/components/docs/Feedback.tsx b/apps/formbricks-com/components/docs/Feedback.tsx
index e18496b0fb..109f7d5d69 100644
--- a/apps/formbricks-com/components/docs/Feedback.tsx
+++ b/apps/formbricks-com/components/docs/Feedback.tsx
@@ -1,8 +1,9 @@
"use client";
-import { forwardRef, Fragment, useState } from "react";
-import { usePathname } from "next/navigation";
import { Transition } from "@headlessui/react";
+import { usePathname } from "next/navigation";
+import { Fragment, forwardRef, useState } from "react";
+
import { handleFeedbackSubmit } from "../../lib/handleFeedbackSubmit";
function CheckIcon(props: React.ComponentPropsWithoutRef<"svg">) {
diff --git a/apps/formbricks-com/components/docs/Footer.tsx b/apps/formbricks-com/components/docs/Footer.tsx
index e5f78badf6..455b63bc15 100644
--- a/apps/formbricks-com/components/docs/Footer.tsx
+++ b/apps/formbricks-com/components/docs/Footer.tsx
@@ -2,7 +2,8 @@
import Link from "next/link";
import { usePathname } from "next/navigation";
-import { FaGithub, FaXTwitter, FaDiscord } from "react-icons/fa6";
+import { FaDiscord, FaGithub, FaXTwitter } from "react-icons/fa6";
+
import { Button } from "./Button";
import { navigation } from "./Navigation";
diff --git a/apps/formbricks-com/components/docs/Header.tsx b/apps/formbricks-com/components/docs/Header.tsx
index 6a6b582aff..f091a24ca8 100644
--- a/apps/formbricks-com/components/docs/Header.tsx
+++ b/apps/formbricks-com/components/docs/Header.tsx
@@ -1,11 +1,11 @@
"use client";
+import { FooterLogo } from "@/components/shared/Logo";
import clsx from "clsx";
import { motion, useScroll, useTransform } from "framer-motion";
import Link from "next/link";
import { forwardRef } from "react";
-import { FooterLogo } from "@/components/shared/Logo";
import { Button } from "./Button";
import { MobileNavigation, useIsInsideMobileNavigation, useMobileNavigationStore } from "./MobileNavigation";
import { MobileSearch, Search } from "./Search";
diff --git a/apps/formbricks-com/components/docs/Heading.tsx b/apps/formbricks-com/components/docs/Heading.tsx
index f9ddf1c5ca..5537e85cfe 100644
--- a/apps/formbricks-com/components/docs/Heading.tsx
+++ b/apps/formbricks-com/components/docs/Heading.tsx
@@ -1,13 +1,13 @@
"use client";
+import { remToPx } from "@/lib/remToPx";
import { useInView } from "framer-motion";
import Link from "next/link";
+import { usePathname } from "next/navigation";
import { useEffect, useRef } from "react";
-import { remToPx } from "@/lib/remToPx";
import { useSectionStore } from "./SectionProvider";
import { Tag } from "./Tag";
-import { usePathname } from "next/navigation";
function AnchorIcon(props: React.ComponentPropsWithoutRef<"svg">) {
return (
diff --git a/apps/formbricks-com/components/docs/Layout.tsx b/apps/formbricks-com/components/docs/Layout.tsx
index 429f2d6540..af2b26cb81 100644
--- a/apps/formbricks-com/components/docs/Layout.tsx
+++ b/apps/formbricks-com/components/docs/Layout.tsx
@@ -1,14 +1,14 @@
"use client";
+import { Navigation } from "@/components/docs/Navigation";
+import { FooterLogo } from "@/components/shared/Logo";
+import { motion } from "framer-motion";
import Link from "next/link";
import { usePathname } from "next/navigation";
-import { motion } from "framer-motion";
import { Footer } from "./Footer";
import { Header } from "./Header";
import { type Section, SectionProvider } from "./SectionProvider";
-import { FooterLogo } from "@/components/shared/Logo";
-import { Navigation } from "@/components/docs/Navigation";
export function Layout({
children,
diff --git a/apps/formbricks-com/components/docs/Libraries.tsx b/apps/formbricks-com/components/docs/Libraries.tsx
index 66443967d6..9eb90b46b7 100644
--- a/apps/formbricks-com/components/docs/Libraries.tsx
+++ b/apps/formbricks-com/components/docs/Libraries.tsx
@@ -1,9 +1,9 @@
-import Image from "next/image";
-
import logoHtml from "@/images/logos/html5.svg";
import logoNextjs from "@/images/logos/nextjs.svg";
import logoReactJs from "@/images/logos/reactjs.svg";
import logoVueJs from "@/images/logos/vuejs.svg";
+import Image from "next/image";
+
import { Button } from "./Button";
const libraries = [
diff --git a/apps/formbricks-com/components/docs/MobileNavigation.tsx b/apps/formbricks-com/components/docs/MobileNavigation.tsx
index 0c0d702f20..592378f538 100644
--- a/apps/formbricks-com/components/docs/MobileNavigation.tsx
+++ b/apps/formbricks-com/components/docs/MobileNavigation.tsx
@@ -1,12 +1,12 @@
"use client";
-import { createContext, Fragment, Suspense, useContext, useEffect, useRef } from "react";
-import { usePathname, useSearchParams } from "next/navigation";
+import { Header } from "@/components/docs/Header";
import { Dialog, Transition } from "@headlessui/react";
import { motion } from "framer-motion";
+import { usePathname, useSearchParams } from "next/navigation";
+import { Fragment, Suspense, createContext, useContext, useEffect, useRef } from "react";
import { create } from "zustand";
-import { Header } from "@/components/docs/Header";
import { Navigation } from "./Navigation";
function MenuIcon(props: React.ComponentPropsWithoutRef<"svg">) {
diff --git a/apps/formbricks-com/components/docs/Navigation.tsx b/apps/formbricks-com/components/docs/Navigation.tsx
index 02c7586541..d67a90820b 100644
--- a/apps/formbricks-com/components/docs/Navigation.tsx
+++ b/apps/formbricks-com/components/docs/Navigation.tsx
@@ -1,12 +1,12 @@
"use client";
+import { remToPx } from "@/lib/remToPx";
import clsx from "clsx";
import { AnimatePresence, motion, useIsPresent } from "framer-motion";
import Link from "next/link";
import { usePathname } from "next/navigation";
import { useRef } from "react";
-import { remToPx } from "@/lib/remToPx";
import { Button } from "./Button";
import { useIsInsideMobileNavigation } from "./MobileNavigation";
import { useSectionStore } from "./SectionProvider";
diff --git a/apps/formbricks-com/components/docs/Search.tsx b/apps/formbricks-com/components/docs/Search.tsx
index 6e149f1975..f08a090e44 100644
--- a/apps/formbricks-com/components/docs/Search.tsx
+++ b/apps/formbricks-com/components/docs/Search.tsx
@@ -1,19 +1,18 @@
"use client";
-import { forwardRef, Fragment, Suspense, useCallback, useEffect, useId, useRef, useState } from "react";
-import Highlighter from "react-highlight-words";
-import { usePathname, useRouter, useSearchParams } from "next/navigation";
+import { navigation } from "@/components/docs/Navigation";
+import { type Result } from "@/mdx/search.mjs";
import {
type AutocompleteApi,
- createAutocomplete,
- type AutocompleteState,
type AutocompleteCollection,
+ type AutocompleteState,
+ createAutocomplete,
} from "@algolia/autocomplete-core";
import { Dialog, Transition } from "@headlessui/react";
import clsx from "clsx";
-
-import { type Result } from "@/mdx/search.mjs";
-import { navigation } from "@/components/docs/Navigation";
+import { usePathname, useRouter, useSearchParams } from "next/navigation";
+import { Fragment, Suspense, forwardRef, useCallback, useEffect, useId, useRef, useState } from "react";
+import Highlighter from "react-highlight-words";
type EmptyObject = Record;
diff --git a/apps/formbricks-com/components/docs/SectionProvider.tsx b/apps/formbricks-com/components/docs/SectionProvider.tsx
index 3eb6390e05..ca3b156102 100644
--- a/apps/formbricks-com/components/docs/SectionProvider.tsx
+++ b/apps/formbricks-com/components/docs/SectionProvider.tsx
@@ -1,10 +1,9 @@
"use client";
+import { remToPx } from "@/lib/remToPx";
import { createContext, useContext, useEffect, useLayoutEffect, useState } from "react";
import { type StoreApi, createStore, useStore } from "zustand";
-import { remToPx } from "@/lib/remToPx";
-
export interface Section {
id: string;
title: string;
diff --git a/apps/formbricks-com/components/docs/ThemeToggle.tsx b/apps/formbricks-com/components/docs/ThemeToggle.tsx
index 0d33c95dd5..d1cbd39cb5 100644
--- a/apps/formbricks-com/components/docs/ThemeToggle.tsx
+++ b/apps/formbricks-com/components/docs/ThemeToggle.tsx
@@ -1,7 +1,7 @@
"use client";
-import { useEffect, useState } from "react";
import { useTheme } from "next-themes";
+import { useEffect, useState } from "react";
function SunIcon(props: React.ComponentPropsWithoutRef<"svg">) {
return (
diff --git a/apps/formbricks-com/components/docs/docsFaq.tsx b/apps/formbricks-com/components/docs/docsFaq.tsx
index 962e01fa9d..81cb4ccd4a 100644
--- a/apps/formbricks-com/components/docs/docsFaq.tsx
+++ b/apps/formbricks-com/components/docs/docsFaq.tsx
@@ -1,4 +1,5 @@
import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "@formbricks/ui/Accordion";
+
import FaqJsonLdComponent from "./faQJsonLD";
const FAQ_DATA = [
diff --git a/apps/formbricks-com/components/docs/mdx.tsx b/apps/formbricks-com/components/docs/mdx.tsx
index 7d8fa21ac1..f421d93f4b 100644
--- a/apps/formbricks-com/components/docs/mdx.tsx
+++ b/apps/formbricks-com/components/docs/mdx.tsx
@@ -1,7 +1,7 @@
-import Link from "next/link";
-import clsx from "clsx";
-
import { Feedback } from "@/components/docs/Feedback";
+import clsx from "clsx";
+import Link from "next/link";
+
import { Heading } from "./Heading";
import { Prose } from "./Prose";
diff --git a/apps/formbricks-com/components/dummyUI/AddEventDummy.tsx b/apps/formbricks-com/components/dummyUI/AddEventDummy.tsx
index 827d6bdf5d..29100b10cf 100644
--- a/apps/formbricks-com/components/dummyUI/AddEventDummy.tsx
+++ b/apps/formbricks-com/components/dummyUI/AddEventDummy.tsx
@@ -1,8 +1,9 @@
-import { Button } from "@formbricks/ui/Button";
-import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@formbricks/ui/Select";
import { PlusIcon, TrashIcon } from "@heroicons/react/24/solid";
import { useState } from "react";
+import { Button } from "@formbricks/ui/Button";
+import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@formbricks/ui/Select";
+
const DummyUI: React.FC = () => {
const actionClasses = [
{ id: "1", name: "View Dashboard" },
diff --git a/apps/formbricks-com/components/dummyUI/AddNoCodeEventModalDummy.tsx b/apps/formbricks-com/components/dummyUI/AddNoCodeEventModalDummy.tsx
index 093f3788bf..2344abe8f7 100644
--- a/apps/formbricks-com/components/dummyUI/AddNoCodeEventModalDummy.tsx
+++ b/apps/formbricks-com/components/dummyUI/AddNoCodeEventModalDummy.tsx
@@ -1,10 +1,11 @@
-import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@formbricks/ui/Select";
-import { Button } from "@formbricks/ui/Button";
-import { Label } from "@formbricks/ui/Label";
-import { Input } from "@formbricks/ui/Input";
-import { RadioGroup, RadioGroupItem } from "@formbricks/ui/RadioGroup";
import { CursorArrowRaysIcon } from "@heroicons/react/24/solid";
+
+import { Button } from "@formbricks/ui/Button";
+import { Input } from "@formbricks/ui/Input";
+import { Label } from "@formbricks/ui/Label";
import { Modal } from "@formbricks/ui/Modal";
+import { RadioGroup, RadioGroupItem } from "@formbricks/ui/RadioGroup";
+import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@formbricks/ui/Select";
interface EventDetailModalProps {
open: boolean;
diff --git a/apps/formbricks-com/components/dummyUI/CTAQuestion.tsx b/apps/formbricks-com/components/dummyUI/CTAQuestion.tsx
index 8f5af6eb3b..2d7817e0fc 100644
--- a/apps/formbricks-com/components/dummyUI/CTAQuestion.tsx
+++ b/apps/formbricks-com/components/dummyUI/CTAQuestion.tsx
@@ -1,4 +1,5 @@
import { TSurveyCTAQuestion } from "@formbricks/types/surveys";
+
import Headline from "./Headline";
import HtmlBody from "./HtmlBody";
diff --git a/apps/formbricks-com/components/dummyUI/DemoPreview.tsx b/apps/formbricks-com/components/dummyUI/DemoPreview.tsx
index efb3f94eaf..bf2c6e08ec 100644
--- a/apps/formbricks-com/components/dummyUI/DemoPreview.tsx
+++ b/apps/formbricks-com/components/dummyUI/DemoPreview.tsx
@@ -1,8 +1,11 @@
"use client";
+
import React, { useEffect, useState } from "react";
+
+import { TTemplate } from "@formbricks/types/templates";
+
import PreviewSurvey from "./PreviewSurvey";
import { findTemplateByName } from "./templates";
-import { TTemplate } from "@formbricks/types/templates";
interface DemoPreviewProps {
template: string;
diff --git a/apps/formbricks-com/components/dummyUI/DemoView.tsx b/apps/formbricks-com/components/dummyUI/DemoView.tsx
index 8f9c1f9aee..a384b1de31 100644
--- a/apps/formbricks-com/components/dummyUI/DemoView.tsx
+++ b/apps/formbricks-com/components/dummyUI/DemoView.tsx
@@ -1,5 +1,7 @@
-import { TTemplate } from "@formbricks/types/templates";
import { useEffect, useState } from "react";
+
+import { TTemplate } from "@formbricks/types/templates";
+
import PreviewSurvey from "./PreviewSurvey";
import TemplateList from "./TemplateList";
import { templates } from "./templates";
diff --git a/apps/formbricks-com/components/dummyUI/Modal.tsx b/apps/formbricks-com/components/dummyUI/Modal.tsx
index 0468b9f161..a04f2ce3a5 100644
--- a/apps/formbricks-com/components/dummyUI/Modal.tsx
+++ b/apps/formbricks-com/components/dummyUI/Modal.tsx
@@ -1,4 +1,5 @@
import { ReactNode, useEffect, useState } from "react";
+
import { cn } from "@formbricks/lib/cn";
export default function Modal({
diff --git a/apps/formbricks-com/components/dummyUI/MultipleChoiceMultiQuestion.tsx b/apps/formbricks-com/components/dummyUI/MultipleChoiceMultiQuestion.tsx
index 961a6f90d3..806627ac24 100644
--- a/apps/formbricks-com/components/dummyUI/MultipleChoiceMultiQuestion.tsx
+++ b/apps/formbricks-com/components/dummyUI/MultipleChoiceMultiQuestion.tsx
@@ -1,6 +1,8 @@
-import { useState, useEffect } from "react";
+import { useEffect, useState } from "react";
+
import { cn } from "@formbricks/lib/cn";
import { TSurveyMultipleChoiceMultiQuestion } from "@formbricks/types/surveys";
+
import Headline from "./Headline";
import Subheader from "./Subheader";
diff --git a/apps/formbricks-com/components/dummyUI/MultipleChoiceSingleQuestion.tsx b/apps/formbricks-com/components/dummyUI/MultipleChoiceSingleQuestion.tsx
index c5fea00cc3..1ea0112b93 100644
--- a/apps/formbricks-com/components/dummyUI/MultipleChoiceSingleQuestion.tsx
+++ b/apps/formbricks-com/components/dummyUI/MultipleChoiceSingleQuestion.tsx
@@ -1,6 +1,8 @@
+import { useState } from "react";
+
import { cn } from "@formbricks/lib/cn";
import { TSurveyMultipleChoiceSingleQuestion } from "@formbricks/types/surveys";
-import { useState } from "react";
+
import Headline from "./Headline";
import Subheader from "./Subheader";
diff --git a/apps/formbricks-com/components/dummyUI/NPSQuestion.tsx b/apps/formbricks-com/components/dummyUI/NPSQuestion.tsx
index 825a96606d..15217a4d93 100644
--- a/apps/formbricks-com/components/dummyUI/NPSQuestion.tsx
+++ b/apps/formbricks-com/components/dummyUI/NPSQuestion.tsx
@@ -1,6 +1,8 @@
import { useState } from "react";
+
import { cn } from "@formbricks/lib/cn";
import { TSurveyNPSQuestion } from "@formbricks/types/surveys";
+
import Headline from "./Headline";
import Subheader from "./Subheader";
diff --git a/apps/formbricks-com/components/dummyUI/OpenTextQuestion.tsx b/apps/formbricks-com/components/dummyUI/OpenTextQuestion.tsx
index 63dd1001b6..f866ce752e 100644
--- a/apps/formbricks-com/components/dummyUI/OpenTextQuestion.tsx
+++ b/apps/formbricks-com/components/dummyUI/OpenTextQuestion.tsx
@@ -1,5 +1,7 @@
-import { TSurveyOpenTextQuestion } from "@formbricks/types/surveys";
import { useState } from "react";
+
+import { TSurveyOpenTextQuestion } from "@formbricks/types/surveys";
+
import Headline from "./Headline";
import Subheader from "./Subheader";
diff --git a/apps/formbricks-com/components/dummyUI/PreviewSurvey.tsx b/apps/formbricks-com/components/dummyUI/PreviewSurvey.tsx
index 9233deb860..523b029478 100644
--- a/apps/formbricks-com/components/dummyUI/PreviewSurvey.tsx
+++ b/apps/formbricks-com/components/dummyUI/PreviewSurvey.tsx
@@ -1,7 +1,9 @@
import { useState } from "react";
+
+import { TSurvey, TSurveyQuestion } from "@formbricks/types/surveys";
+
import Modal from "./Modal";
import QuestionConditional from "./QuestionConditional";
-import { TSurveyQuestion, TSurvey } from "@formbricks/types/surveys";
import ThankYouCard from "./ThankYouCard";
interface PreviewSurveyProps {
diff --git a/apps/formbricks-com/components/dummyUI/QuestionConditional.tsx b/apps/formbricks-com/components/dummyUI/QuestionConditional.tsx
index fedd8d5e50..4e02d5421c 100644
--- a/apps/formbricks-com/components/dummyUI/QuestionConditional.tsx
+++ b/apps/formbricks-com/components/dummyUI/QuestionConditional.tsx
@@ -1,9 +1,10 @@
import { TSurveyQuestion, TSurveyQuestionType } from "@formbricks/types/surveys";
-import OpenTextQuestion from "./OpenTextQuestion";
-import MultipleChoiceSingleQuestion from "./MultipleChoiceSingleQuestion";
-import MultipleChoiceMultiQuestion from "./MultipleChoiceMultiQuestion";
-import NPSQuestion from "./NPSQuestion";
+
import CTAQuestion from "./CTAQuestion";
+import MultipleChoiceMultiQuestion from "./MultipleChoiceMultiQuestion";
+import MultipleChoiceSingleQuestion from "./MultipleChoiceSingleQuestion";
+import NPSQuestion from "./NPSQuestion";
+import OpenTextQuestion from "./OpenTextQuestion";
import RatingQuestion from "./RatingQuestion";
interface QuestionConditionalProps {
diff --git a/apps/formbricks-com/components/dummyUI/RatingQuestion.tsx b/apps/formbricks-com/components/dummyUI/RatingQuestion.tsx
index 51bcc64bbc..8c277ca1dc 100644
--- a/apps/formbricks-com/components/dummyUI/RatingQuestion.tsx
+++ b/apps/formbricks-com/components/dummyUI/RatingQuestion.tsx
@@ -1,6 +1,8 @@
-import { TSurveyRatingQuestion } from "@formbricks/types/surveys";
import { useState } from "react";
+
import { cn } from "@formbricks/lib/cn";
+import { TSurveyRatingQuestion } from "@formbricks/types/surveys";
+
import Headline from "./Headline";
import Subheader from "./Subheader";
diff --git a/apps/formbricks-com/components/dummyUI/TemplateList.tsx b/apps/formbricks-com/components/dummyUI/TemplateList.tsx
index 01e6388066..829d21f87e 100644
--- a/apps/formbricks-com/components/dummyUI/TemplateList.tsx
+++ b/apps/formbricks-com/components/dummyUI/TemplateList.tsx
@@ -1,6 +1,8 @@
-import { TTemplate } from "@formbricks/types/templates";
import { useEffect, useState } from "react";
+
import { cn } from "@formbricks/lib/cn";
+import { TTemplate } from "@formbricks/types/templates";
+
import { templates } from "./templates";
type TemplateList = {
diff --git a/apps/formbricks-com/components/dummyUI/templates.ts b/apps/formbricks-com/components/dummyUI/templates.ts
index 702a4e49a0..bd69a85339 100644
--- a/apps/formbricks-com/components/dummyUI/templates.ts
+++ b/apps/formbricks-com/components/dummyUI/templates.ts
@@ -1,3 +1,7 @@
+import { createId } from "@paralleldrive/cuid2";
+
+import { TSurveyQuestionType } from "@formbricks/types/surveys";
+import { TTemplate } from "@formbricks/types/templates";
import {
AppPieChartIcon,
ArrowRightCircleIcon,
@@ -22,10 +26,6 @@ import {
VideoTabletAdjustIcon,
} from "@formbricks/ui/icons";
-import { TSurveyQuestionType } from "@formbricks/types/surveys";
-import { TTemplate } from "@formbricks/types/templates";
-import { createId } from "@paralleldrive/cuid2";
-
const thankYouCardDefault = {
enabled: true,
headline: "Thank you!",
diff --git a/apps/formbricks-com/components/home/Faq.tsx b/apps/formbricks-com/components/home/Faq.tsx
index 21884fb8d8..2d17949383 100644
--- a/apps/formbricks-com/components/home/Faq.tsx
+++ b/apps/formbricks-com/components/home/Faq.tsx
@@ -1,6 +1,6 @@
+import HeadingCentered from "@/components/shared/HeadingCentered";
import { FAQPageJsonLd } from "next-seo";
-import HeadingCentered from "@/components/shared/HeadingCentered";
import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "@formbricks/ui/Accordion";
const FAQ_DATA = [
diff --git a/apps/formbricks-com/components/home/Features.tsx b/apps/formbricks-com/components/home/Features.tsx
index 77f687f2c2..57826d440e 100644
--- a/apps/formbricks-com/components/home/Features.tsx
+++ b/apps/formbricks-com/components/home/Features.tsx
@@ -1,4 +1,5 @@
import { CodeFileIcon, EyeIcon, HandPuzzleIcon } from "@formbricks/ui/icons";
+
import HeadingCentered from "../shared/HeadingCentered";
const features = [
diff --git a/apps/formbricks-com/components/home/Hero.tsx b/apps/formbricks-com/components/home/Hero.tsx
index ec9b642aaa..3a0eb20017 100644
--- a/apps/formbricks-com/components/home/Hero.tsx
+++ b/apps/formbricks-com/components/home/Hero.tsx
@@ -6,11 +6,13 @@ import FlixbusLogo from "@/images/clients/flixbus-white.svg";
import NILogoDark from "@/images/clients/niLogoDark.svg";
import NILogoLight from "@/images/clients/niLogoWhite.svg";
import AnimationFallback from "@/public/animations/opensource-xm-platform-formbricks-fallback.png";
-import { Button } from "@formbricks/ui/Button";
import { ChevronRightIcon } from "@heroicons/react/24/outline";
import { usePlausible } from "next-plausible";
import Image from "next/image";
import { useRouter } from "next/router";
+
+import { Button } from "@formbricks/ui/Button";
+
import HeroAnimation from "./HeroAnimation";
export const Hero: React.FC = ({}) => {
diff --git a/apps/formbricks-com/components/home/ScrollToTop.tsx b/apps/formbricks-com/components/home/ScrollToTop.tsx
index 6c173e6456..7d34f4f479 100644
--- a/apps/formbricks-com/components/home/ScrollToTop.tsx
+++ b/apps/formbricks-com/components/home/ScrollToTop.tsx
@@ -1,8 +1,9 @@
-import { Button } from "@formbricks/ui/Button";
import { ArrowUpIcon } from "@heroicons/react/24/solid";
import throttle from "lodash/throttle";
import { useCallback, useEffect, useState } from "react";
+import { Button } from "@formbricks/ui/Button";
+
const ScrollToTopButton = () => {
const [visible, setVisible] = useState(false);
diff --git a/apps/formbricks-com/components/home/SetupTabs.tsx b/apps/formbricks-com/components/home/SetupTabs.tsx
index eb6f6402ba..6f567233ea 100644
--- a/apps/formbricks-com/components/home/SetupTabs.tsx
+++ b/apps/formbricks-com/components/home/SetupTabs.tsx
@@ -1,6 +1,7 @@
import clsx from "clsx";
import { useState } from "react";
import { IoLogoHtml5, IoLogoNpm } from "react-icons/io5";
+
import CodeBlock from "../shared/CodeBlock";
interface SecondNavbarProps {
diff --git a/apps/formbricks-com/components/home/Steps.tsx b/apps/formbricks-com/components/home/Steps.tsx
index 7a86d4db06..abc1d18fd9 100644
--- a/apps/formbricks-com/components/home/Steps.tsx
+++ b/apps/formbricks-com/components/home/Steps.tsx
@@ -1,10 +1,12 @@
import DemoPreview from "@/components/dummyUI/DemoPreview";
import DashboardMockupDark from "@/images/dashboard-mockup-dark.png";
import DashboardMockup from "@/images/dashboard-mockup.png";
-import { Button } from "@formbricks/ui/Button";
import { CursorArrowRaysIcon } from "@heroicons/react/24/solid";
import Image from "next/image";
import { useState } from "react";
+
+import { Button } from "@formbricks/ui/Button";
+
import AddEventDummy from "../dummyUI/AddEventDummy";
import AddNoCodeEventModalDummy from "../dummyUI/AddNoCodeEventModalDummy";
import HeadingCentered from "../shared/HeadingCentered";
diff --git a/apps/formbricks-com/components/home/VideoWalkThrough.tsx b/apps/formbricks-com/components/home/VideoWalkThrough.tsx
index 8dec387a29..4c40872d68 100644
--- a/apps/formbricks-com/components/home/VideoWalkThrough.tsx
+++ b/apps/formbricks-com/components/home/VideoWalkThrough.tsx
@@ -1,5 +1,5 @@
-import { ResponsiveVideo } from "@formbricks/ui/ResponsiveVideo";
import { Modal } from "@formbricks/ui/Modal";
+import { ResponsiveVideo } from "@formbricks/ui/ResponsiveVideo";
interface VideoWalkThroughProps {
open: boolean;
diff --git a/apps/formbricks-com/components/shared/BestPracticeNavigation.tsx b/apps/formbricks-com/components/shared/BestPracticeNavigation.tsx
index e5246f9ac9..636d938871 100644
--- a/apps/formbricks-com/components/shared/BestPracticeNavigation.tsx
+++ b/apps/formbricks-com/components/shared/BestPracticeNavigation.tsx
@@ -1,3 +1,6 @@
+import clsx from "clsx";
+import Link from "next/link";
+
import {
BaseballIcon,
CancelSubscriptionIcon,
@@ -8,8 +11,6 @@ import {
OnboardingIcon,
PMFIcon,
} from "@formbricks/ui/icons";
-import clsx from "clsx";
-import Link from "next/link";
export default function BestPracticeNavigation() {
const BestPractices = [
diff --git a/apps/formbricks-com/components/shared/BreakerCTA.tsx b/apps/formbricks-com/components/shared/BreakerCTA.tsx
index 2aa5f2a4f9..7e58507137 100644
--- a/apps/formbricks-com/components/shared/BreakerCTA.tsx
+++ b/apps/formbricks-com/components/shared/BreakerCTA.tsx
@@ -1,8 +1,9 @@
-import { Button } from "@formbricks/ui/Button";
import clsx from "clsx";
import { usePlausible } from "next-plausible";
import { useRouter } from "next/router";
+import { Button } from "@formbricks/ui/Button";
+
interface Props {
teaser: string;
headline: string;
diff --git a/apps/formbricks-com/components/shared/CTA.tsx b/apps/formbricks-com/components/shared/CTA.tsx
index 63a9e6aebd..2412cff9bc 100644
--- a/apps/formbricks-com/components/shared/CTA.tsx
+++ b/apps/formbricks-com/components/shared/CTA.tsx
@@ -1,5 +1,7 @@
-import { Button } from "@formbricks/ui/Button";
import { useRouter } from "next/router";
+
+import { Button } from "@formbricks/ui/Button";
+
import HeadingCentered from "./HeadingCentered";
export default function CTA() {
diff --git a/apps/formbricks-com/components/shared/Callout.tsx b/apps/formbricks-com/components/shared/Callout.tsx
index 99be002ec5..4996f840bc 100644
--- a/apps/formbricks-com/components/shared/Callout.tsx
+++ b/apps/formbricks-com/components/shared/Callout.tsx
@@ -1,5 +1,5 @@
-import clsx from "clsx";
import { Icon } from "@/components/shared/Icon";
+import clsx from "clsx";
const styles = {
note: {
diff --git a/apps/formbricks-com/components/shared/EarlyBirdDeal.tsx b/apps/formbricks-com/components/shared/EarlyBirdDeal.tsx
index c67ac03d86..29f4d7a2db 100644
--- a/apps/formbricks-com/components/shared/EarlyBirdDeal.tsx
+++ b/apps/formbricks-com/components/shared/EarlyBirdDeal.tsx
@@ -1,8 +1,9 @@
import EarlyBird from "@/images/early bird deal for open source jotform alternative typeform and surveymonkey_v2.svg";
-import { Button } from "@formbricks/ui/Button";
import { usePlausible } from "next-plausible";
import Image from "next/image";
+import { Button } from "@formbricks/ui/Button";
+
export default function EarlyBirdDeal() {
const plausible = usePlausible();
return (
diff --git a/apps/formbricks-com/components/shared/FeatureHighlight.tsx b/apps/formbricks-com/components/shared/FeatureHighlight.tsx
index 8a010f70e4..bec3f6e4a1 100644
--- a/apps/formbricks-com/components/shared/FeatureHighlight.tsx
+++ b/apps/formbricks-com/components/shared/FeatureHighlight.tsx
@@ -1,6 +1,7 @@
-import { Button } from "@formbricks/ui/Button";
-import { useRouter } from "next/router";
import clsx from "clsx";
+import { useRouter } from "next/router";
+
+import { Button } from "@formbricks/ui/Button";
interface Props {
featureTitle: string;
diff --git a/apps/formbricks-com/components/shared/Footer.tsx b/apps/formbricks-com/components/shared/Footer.tsx
index 1c8bace20b..54e237d12b 100644
--- a/apps/formbricks-com/components/shared/Footer.tsx
+++ b/apps/formbricks-com/components/shared/Footer.tsx
@@ -1,5 +1,6 @@
import Link from "next/link";
import { FaDiscord, FaGithub, FaXTwitter } from "react-icons/fa6";
+
import { FooterLogo } from "./Logo";
const navigation = {
diff --git a/apps/formbricks-com/components/shared/Header.tsx b/apps/formbricks-com/components/shared/Header.tsx
index e6b7b2eeff..f932ba4eaa 100644
--- a/apps/formbricks-com/components/shared/Header.tsx
+++ b/apps/formbricks-com/components/shared/Header.tsx
@@ -1,5 +1,14 @@
import GitHubMarkWhite from "@/images/github-mark-white.svg";
import GitHubMarkDark from "@/images/github-mark.svg";
+import { Popover, Transition } from "@headlessui/react";
+import { Bars3Icon, ChevronDownIcon, ChevronRightIcon, XMarkIcon } from "@heroicons/react/24/outline";
+import clsx from "clsx";
+import { usePlausible } from "next-plausible";
+import Image from "next/image";
+import Link from "next/link";
+import { useRouter } from "next/router";
+import { Fragment, useEffect, useState } from "react";
+
import { Button } from "@formbricks/ui/Button";
import {
BaseballIcon,
@@ -11,14 +20,7 @@ import {
OnboardingIcon,
PMFIcon,
} from "@formbricks/ui/icons";
-import { Popover, Transition } from "@headlessui/react";
-import { Bars3Icon, ChevronDownIcon, ChevronRightIcon, XMarkIcon } from "@heroicons/react/24/outline";
-import clsx from "clsx";
-import { usePlausible } from "next-plausible";
-import Image from "next/image";
-import Link from "next/link";
-import { useRouter } from "next/router";
-import { Fragment, useEffect, useState } from "react";
+
import { FooterLogo } from "./Logo";
function GitHubIcon(props: any) {
diff --git a/apps/formbricks-com/components/shared/HeroAnimation.tsx b/apps/formbricks-com/components/shared/HeroAnimation.tsx
index 8556664838..bfbd3d6c9e 100644
--- a/apps/formbricks-com/components/shared/HeroAnimation.tsx
+++ b/apps/formbricks-com/components/shared/HeroAnimation.tsx
@@ -1,5 +1,5 @@
-import { useEffect, useRef, useState } from "react";
import type { LottiePlayer } from "lottie-web";
+import { useEffect, useRef, useState } from "react";
export default function HeroAnimation(props: any) {
const ref = useRef(null);
diff --git a/apps/formbricks-com/components/shared/LayoutMdx.tsx b/apps/formbricks-com/components/shared/LayoutMdx.tsx
index c54d4b48f7..5502ab6422 100644
--- a/apps/formbricks-com/components/shared/LayoutMdx.tsx
+++ b/apps/formbricks-com/components/shared/LayoutMdx.tsx
@@ -1,5 +1,6 @@
import SlideInBanner from "@/components/shared/SlideInBanner";
import { useEffect } from "react";
+
import Footer from "./Footer";
import Header from "./Header";
import MetaInformation from "./MetaInformation";
diff --git a/apps/formbricks-com/components/shared/Logo.tsx b/apps/formbricks-com/components/shared/Logo.tsx
index 3f45009ea6..8c80f4bac5 100644
--- a/apps/formbricks-com/components/shared/Logo.tsx
+++ b/apps/formbricks-com/components/shared/Logo.tsx
@@ -1,9 +1,9 @@
-import Image from "next/image";
-import logomark from "@/images/logo/logomark.svg";
+import footerLogoDark from "@/images/logo/footerlogo-dark.svg";
+import footerLogo from "@/images/logo/footerlogo.svg";
import logo from "@/images/logo/logo.svg";
import logoDark from "@/images/logo/logo_dark.svg";
-import footerLogo from "@/images/logo/footerlogo.svg";
-import footerLogoDark from "@/images/logo/footerlogo-dark.svg";
+import logomark from "@/images/logo/logomark.svg";
+import Image from "next/image";
export function Logomark(props: any) {
return ;
diff --git a/apps/formbricks-com/components/shared/MdxCTA.tsx b/apps/formbricks-com/components/shared/MdxCTA.tsx
index 2ae624f825..fe52736a45 100644
--- a/apps/formbricks-com/components/shared/MdxCTA.tsx
+++ b/apps/formbricks-com/components/shared/MdxCTA.tsx
@@ -1,6 +1,7 @@
-import { Button } from "@formbricks/ui/Button";
import { useRouter } from "next/router";
+import { Button } from "@formbricks/ui/Button";
+
export default function CTA() {
const router = useRouter();
return (
diff --git a/apps/formbricks-com/components/shared/MdxTryItCTA.tsx b/apps/formbricks-com/components/shared/MdxTryItCTA.tsx
index 5533a2adf2..abc39e5af9 100644
--- a/apps/formbricks-com/components/shared/MdxTryItCTA.tsx
+++ b/apps/formbricks-com/components/shared/MdxTryItCTA.tsx
@@ -1,7 +1,8 @@
-import { Button } from "@formbricks/ui/Button";
import { DocumentDuplicateIcon } from "@heroicons/react/24/outline";
import { useRouter } from "next/router";
+import { Button } from "@formbricks/ui/Button";
+
export default function HeadingCentered() {
const router = useRouter();
return (
diff --git a/apps/formbricks-com/components/shared/Navigation.tsx b/apps/formbricks-com/components/shared/Navigation.tsx
index 0befd0b566..b47238a07e 100644
--- a/apps/formbricks-com/components/shared/Navigation.tsx
+++ b/apps/formbricks-com/components/shared/Navigation.tsx
@@ -1,6 +1,6 @@
+import clsx from "clsx";
import Link from "next/link";
import { useRouter } from "next/router";
-import clsx from "clsx";
interface NavigationProps {
navigation: {
diff --git a/apps/formbricks-com/components/shared/NewsletterSignup.tsx b/apps/formbricks-com/components/shared/NewsletterSignup.tsx
index c1d7c3b861..8d0b90f517 100644
--- a/apps/formbricks-com/components/shared/NewsletterSignup.tsx
+++ b/apps/formbricks-com/components/shared/NewsletterSignup.tsx
@@ -1,7 +1,8 @@
import Friends from "@/images/newsletter-signup-gif.gif";
-import { Button } from "@formbricks/ui/Button";
import Image from "next/image";
+import { Button } from "@formbricks/ui/Button";
+
export default function WaitlistForm() {
return (
diff --git a/apps/formbricks-com/components/shared/PricingTable.tsx b/apps/formbricks-com/components/shared/PricingTable.tsx
index cd1677690b..d66d525527 100644
--- a/apps/formbricks-com/components/shared/PricingTable.tsx
+++ b/apps/formbricks-com/components/shared/PricingTable.tsx
@@ -1,6 +1,7 @@
-import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@formbricks/ui/Tooltip";
import { CheckIcon, XMarkIcon } from "@heroicons/react/24/outline";
+import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@formbricks/ui/Tooltip";
+
export const PricingTable = ({ leadRow, pricing, endRow }) => {
return (
diff --git a/apps/formbricks-com/components/shared/Search.tsx b/apps/formbricks-com/components/shared/Search.tsx
index 679185b068..b7c0f4e530 100644
--- a/apps/formbricks-com/components/shared/Search.tsx
+++ b/apps/formbricks-com/components/shared/Search.tsx
@@ -1,8 +1,8 @@
-import { useCallback, useEffect, useState } from "react";
-import { createPortal } from "react-dom";
+import { DocSearchModal, useDocSearchKeyboardEvents } from "@docsearch/react";
import Link from "next/link";
import Router from "next/router";
-import { DocSearchModal, useDocSearchKeyboardEvents } from "@docsearch/react";
+import { useCallback, useEffect, useState } from "react";
+import { createPortal } from "react-dom";
const docSearchConfig = {
appId: process.env.NEXT_PUBLIC_DOCSEARCH_APP_ID || "",
diff --git a/apps/formbricks-com/components/shared/SlideInBanner.tsx b/apps/formbricks-com/components/shared/SlideInBanner.tsx
index 01101b3fde..2580ee423d 100644
--- a/apps/formbricks-com/components/shared/SlideInBanner.tsx
+++ b/apps/formbricks-com/components/shared/SlideInBanner.tsx
@@ -1,9 +1,10 @@
import LFGLuigi from "@/images/blog/lfg-luigi-200px.webp";
-import { Button } from "@formbricks/ui/Button";
import { XMarkIcon } from "@heroicons/react/24/solid";
import Image from "next/image";
import React, { useEffect, useState } from "react";
+import { Button } from "@formbricks/ui/Button";
+
interface Props {
delay?: number;
scrollPercentage?: number;
@@ -46,8 +47,8 @@ const SlideInBanner: React.FC
= ({ delay = 5000, scrollPercentage = 10, U
showBanner && !isExiting
? "visible translate-y-0 opacity-100"
: isExiting
- ? "visible translate-y-full opacity-0"
- : "invisible translate-y-full opacity-0"
+ ? "visible translate-y-full opacity-0"
+ : "invisible translate-y-full opacity-0"
}`}>
diff --git a/apps/formbricks-com/components/shared/Slider.tsx b/apps/formbricks-com/components/shared/Slider.tsx
index 07bce61744..4879826aba 100644
--- a/apps/formbricks-com/components/shared/Slider.tsx
+++ b/apps/formbricks-com/components/shared/Slider.tsx
@@ -1,7 +1,7 @@
"use client";
-import * as React from "react";
import * as SliderPrimitive from "@radix-ui/react-slider";
+import * as React from "react";
import { cn } from "@formbricks/lib/cn";
diff --git a/apps/formbricks-com/components/shared/TryItCTA.tsx b/apps/formbricks-com/components/shared/TryItCTA.tsx
index 3669a55c7d..ab804538c7 100644
--- a/apps/formbricks-com/components/shared/TryItCTA.tsx
+++ b/apps/formbricks-com/components/shared/TryItCTA.tsx
@@ -1,7 +1,8 @@
-import { Button } from "@formbricks/ui/Button";
import { DocumentDuplicateIcon } from "@heroicons/react/24/outline";
import { useRouter } from "next/router";
+import { Button } from "@formbricks/ui/Button";
+
export default function HeadingCentered() {
const router = useRouter();
return (
diff --git a/apps/formbricks-com/components/shared/UseCaseCTA.tsx b/apps/formbricks-com/components/shared/UseCaseCTA.tsx
index 9399a3b796..09c9d00280 100644
--- a/apps/formbricks-com/components/shared/UseCaseCTA.tsx
+++ b/apps/formbricks-com/components/shared/UseCaseCTA.tsx
@@ -1,6 +1,7 @@
-import { Button } from "@formbricks/ui/Button";
import { useRouter } from "next/router";
+import { Button } from "@formbricks/ui/Button";
+
interface UseCaseCTAProps {
href: string;
}
diff --git a/apps/formbricks-com/components/shared/WhyFormbricks.tsx b/apps/formbricks-com/components/shared/WhyFormbricks.tsx
index 78d29c8d65..e99578f508 100644
--- a/apps/formbricks-com/components/shared/WhyFormbricks.tsx
+++ b/apps/formbricks-com/components/shared/WhyFormbricks.tsx
@@ -1,10 +1,10 @@
import {
- UsersIcon,
- CubeTransparentIcon,
- UserGroupIcon,
CommandLineIcon,
- SwatchIcon,
+ CubeTransparentIcon,
SquaresPlusIcon,
+ SwatchIcon,
+ UserGroupIcon,
+ UsersIcon,
} from "@heroicons/react/24/outline";
const features = [
diff --git a/apps/formbricks-com/pages/_app.tsx b/apps/formbricks-com/pages/_app.tsx
index 2c8715556b..c399d5687e 100644
--- a/apps/formbricks-com/pages/_app.tsx
+++ b/apps/formbricks-com/pages/_app.tsx
@@ -1,9 +1,9 @@
import PlausibleProvider from "next-plausible";
import type { AppProps } from "next/app";
-import "../styles/globals.css";
-
import { Jost } from "next/font/google";
+import "../styles/globals.css";
+
const jost = Jost({
weight: ["100", "200", "300", "400", "500", "600", "700", "800", "900"],
style: ["normal", "italic"],
diff --git a/apps/formbricks-com/pages/community/HeaderTribe.tsx b/apps/formbricks-com/pages/community/HeaderTribe.tsx
index 445743c3a0..8845c1a500 100644
--- a/apps/formbricks-com/pages/community/HeaderTribe.tsx
+++ b/apps/formbricks-com/pages/community/HeaderTribe.tsx
@@ -1,11 +1,12 @@
import footerLogoDark from "@/images/logo/footerlogo-dark.svg";
-import { Button } from "@formbricks/ui/Button";
-import { Popover, PopoverContent, PopoverTrigger } from "@formbricks/ui/Popover";
import { Bars3Icon } from "@heroicons/react/24/solid";
import Image from "next/image";
import Link from "next/link";
import { useState } from "react";
+import { Button } from "@formbricks/ui/Button";
+import { Popover, PopoverContent, PopoverTrigger } from "@formbricks/ui/Popover";
+
const navigation = [
{ name: "Roadmap", href: "#roadmap" },
{ name: "Levels", href: "#levels" },
diff --git a/apps/formbricks-com/pages/community/LevelCard.tsx b/apps/formbricks-com/pages/community/LevelCard.tsx
index ea2c82075a..f624d2b923 100644
--- a/apps/formbricks-com/pages/community/LevelCard.tsx
+++ b/apps/formbricks-com/pages/community/LevelCard.tsx
@@ -1,7 +1,6 @@
import Image from "next/image";
-import React from "react";
-
import { StaticImageData } from "next/image";
+import React from "react";
type Task = {
title: string;
diff --git a/apps/formbricks-com/pages/community/Roadmap.tsx b/apps/formbricks-com/pages/community/Roadmap.tsx
index 90adb02629..420a7f7552 100644
--- a/apps/formbricks-com/pages/community/Roadmap.tsx
+++ b/apps/formbricks-com/pages/community/Roadmap.tsx
@@ -1,8 +1,9 @@
-import { Button } from "@formbricks/ui/Button";
import { ChevronDownIcon } from "@heroicons/react/24/outline";
import Link from "next/link";
import { FaGithub } from "react-icons/fa6";
+import { Button } from "@formbricks/ui/Button";
+
interface Event {
name: string;
link?: string;
diff --git a/apps/formbricks-com/pages/community/index.tsx b/apps/formbricks-com/pages/community/index.tsx
index 714e685492..dd8ba37b8c 100644
--- a/apps/formbricks-com/pages/community/index.tsx
+++ b/apps/formbricks-com/pages/community/index.tsx
@@ -7,11 +7,13 @@ import PrimeBadge from "@/images/formtribe/prime-batch.png";
import RookieBadge from "@/images/formtribe/rookie-batch.png";
import HallOfFame from "@/pages/community/HallOfFame";
import Roadmap from "@/pages/community/Roadmap";
-import LoadingSpinner from "@formbricks/ui/LoadingSpinner";
-import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@formbricks/ui/Tooltip";
import Image from "next/image";
import Link from "next/link";
import { useEffect } from "react";
+
+import LoadingSpinner from "@formbricks/ui/LoadingSpinner";
+import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@formbricks/ui/Tooltip";
+
import ContributorGrid from "./ContributorGrid";
import LayoutTribe from "./LayoutTribe";
import LevelCard from "./LevelCard";
diff --git a/apps/formbricks-com/pages/concierge.tsx b/apps/formbricks-com/pages/concierge.tsx
index c3a5a9c6cd..bdddb85bf0 100644
--- a/apps/formbricks-com/pages/concierge.tsx
+++ b/apps/formbricks-com/pages/concierge.tsx
@@ -1,9 +1,10 @@
import HeroTitle from "@/components/shared/HeroTitle";
import Layout from "@/components/shared/Layout";
import Cal, { getCalApi } from "@calcom/embed-react";
-import { Button } from "@formbricks/ui/Button";
import { useEffect } from "react";
+import { Button } from "@formbricks/ui/Button";
+
const XMOffer = [
{
step: "1",
diff --git a/apps/formbricks-com/pages/demo/HeaderLight.tsx b/apps/formbricks-com/pages/demo/HeaderLight.tsx
index 107bf9283e..f55a837c5a 100644
--- a/apps/formbricks-com/pages/demo/HeaderLight.tsx
+++ b/apps/formbricks-com/pages/demo/HeaderLight.tsx
@@ -1,8 +1,10 @@
-import { Button } from "@formbricks/ui/Button";
import { Popover } from "@headlessui/react";
import { usePlausible } from "next-plausible";
import Link from "next/link";
import { useRouter } from "next/router";
+
+import { Button } from "@formbricks/ui/Button";
+
import { FooterLogo } from "../../components/shared/Logo";
export default function HeaderLight() {
diff --git a/apps/formbricks-com/pages/docs-feedback/index.tsx b/apps/formbricks-com/pages/docs-feedback/index.tsx
index 113507f244..91ba2a6b40 100644
--- a/apps/formbricks-com/pages/docs-feedback/index.tsx
+++ b/apps/formbricks-com/pages/docs-feedback/index.tsx
@@ -1,8 +1,8 @@
-import Layout from "@/components/shared/Layout";
-import UseCaseHeader from "@/components/shared/UseCaseHeader";
-import UseCaseCTA from "@/components/shared/UseCaseCTA";
import DocsFeedback from "@/components/docs/DocsFeedback";
import BestPracticeNavigation from "@/components/shared/BestPracticeNavigation";
+import Layout from "@/components/shared/Layout";
+import UseCaseCTA from "@/components/shared/UseCaseCTA";
+import UseCaseHeader from "@/components/shared/UseCaseHeader";
export default function DocsFeedbackPage() {
return (
diff --git a/apps/formbricks-com/pages/feature-chaser/index.tsx b/apps/formbricks-com/pages/feature-chaser/index.tsx
index 393989fc35..2f053acdd3 100644
--- a/apps/formbricks-com/pages/feature-chaser/index.tsx
+++ b/apps/formbricks-com/pages/feature-chaser/index.tsx
@@ -1,8 +1,8 @@
-import Layout from "@/components/shared/Layout";
-import UseCaseHeader from "@/components/shared/UseCaseHeader";
-import UseCaseCTA from "@/components/shared/UseCaseCTA";
import DemoPreview from "@/components/dummyUI/DemoPreview";
import BestPracticeNavigation from "@/components/shared/BestPracticeNavigation";
+import Layout from "@/components/shared/Layout";
+import UseCaseCTA from "@/components/shared/UseCaseCTA";
+import UseCaseHeader from "@/components/shared/UseCaseHeader";
export default function FeatureChaserPage() {
return (
diff --git a/apps/formbricks-com/pages/feedback-box/index.tsx b/apps/formbricks-com/pages/feedback-box/index.tsx
index 8f6ca36186..3c51c455b4 100644
--- a/apps/formbricks-com/pages/feedback-box/index.tsx
+++ b/apps/formbricks-com/pages/feedback-box/index.tsx
@@ -1,8 +1,8 @@
-import Layout from "@/components/shared/Layout";
-import UseCaseHeader from "@/components/shared/UseCaseHeader";
-import UseCaseCTA from "@/components/shared/UseCaseCTA";
import DemoPreview from "@/components/dummyUI/DemoPreview";
import BestPracticeNavigation from "@/components/shared/BestPracticeNavigation";
+import Layout from "@/components/shared/Layout";
+import UseCaseCTA from "@/components/shared/UseCaseCTA";
+import UseCaseHeader from "@/components/shared/UseCaseHeader";
export default function FeedbackBoxPage() {
return (
diff --git a/apps/formbricks-com/pages/improve-trial-conversion/index.tsx b/apps/formbricks-com/pages/improve-trial-conversion/index.tsx
index 3ab56f8e59..cfb9a6749a 100644
--- a/apps/formbricks-com/pages/improve-trial-conversion/index.tsx
+++ b/apps/formbricks-com/pages/improve-trial-conversion/index.tsx
@@ -1,8 +1,8 @@
-import Layout from "@/components/shared/Layout";
-import UseCaseHeader from "@/components/shared/UseCaseHeader";
-import UseCaseCTA from "@/components/shared/UseCaseCTA";
import DemoPreview from "@/components/dummyUI/DemoPreview";
import BestPracticeNavigation from "@/components/shared/BestPracticeNavigation";
+import Layout from "@/components/shared/Layout";
+import UseCaseCTA from "@/components/shared/UseCaseCTA";
+import UseCaseHeader from "@/components/shared/UseCaseHeader";
export default function MissedTrialPagePage() {
return (
diff --git a/apps/formbricks-com/pages/interview-prompt/index.tsx b/apps/formbricks-com/pages/interview-prompt/index.tsx
index 4efe5f6e8d..417194ce68 100644
--- a/apps/formbricks-com/pages/interview-prompt/index.tsx
+++ b/apps/formbricks-com/pages/interview-prompt/index.tsx
@@ -1,8 +1,8 @@
-import Layout from "@/components/shared/Layout";
-import UseCaseHeader from "@/components/shared/UseCaseHeader";
-import UseCaseCTA from "@/components/shared/UseCaseCTA";
import DemoPreview from "@/components/dummyUI/DemoPreview";
import BestPracticeNavigation from "@/components/shared/BestPracticeNavigation";
+import Layout from "@/components/shared/Layout";
+import UseCaseCTA from "@/components/shared/UseCaseCTA";
+import UseCaseHeader from "@/components/shared/UseCaseHeader";
export default function InterviewPromptPage() {
return (
diff --git a/apps/formbricks-com/pages/learn-from-churn/index.tsx b/apps/formbricks-com/pages/learn-from-churn/index.tsx
index cf1c6a69c0..cc8ca28199 100644
--- a/apps/formbricks-com/pages/learn-from-churn/index.tsx
+++ b/apps/formbricks-com/pages/learn-from-churn/index.tsx
@@ -1,8 +1,8 @@
-import Layout from "@/components/shared/Layout";
-import UseCaseHeader from "@/components/shared/UseCaseHeader";
-import UseCaseCTA from "@/components/shared/UseCaseCTA";
import DemoPreview from "@/components/dummyUI/DemoPreview";
import BestPracticeNavigation from "@/components/shared/BestPracticeNavigation";
+import Layout from "@/components/shared/Layout";
+import UseCaseCTA from "@/components/shared/UseCaseCTA";
+import UseCaseHeader from "@/components/shared/UseCaseHeader";
export default function LearnFromChurnPage() {
return (
diff --git a/apps/formbricks-com/pages/oss-friends.tsx b/apps/formbricks-com/pages/oss-friends.tsx
index 2da1b8621a..792a9d9d9c 100644
--- a/apps/formbricks-com/pages/oss-friends.tsx
+++ b/apps/formbricks-com/pages/oss-friends.tsx
@@ -1,5 +1,6 @@
import HeroTitle from "@/components/shared/HeroTitle";
import Layout from "@/components/shared/Layout";
+
import { Button } from "@formbricks/ui/Button";
type OSSFriend = {
diff --git a/apps/formbricks-com/pages/pricing.tsx b/apps/formbricks-com/pages/pricing.tsx
index c0d6da9124..67e7f39b39 100644
--- a/apps/formbricks-com/pages/pricing.tsx
+++ b/apps/formbricks-com/pages/pricing.tsx
@@ -2,6 +2,7 @@ import HeroTitle from "@/components/shared/HeroTitle";
import Layout from "@/components/shared/Layout";
import { OpenSourceInfo } from "@/components/shared/OpenSourceInfo";
import { GetStartedWithPricing } from "@/components/shared/PricingGetStarted";
+
import { PricingTable } from "../components/shared/PricingTable";
const inProductSurveys = {
diff --git a/apps/formbricks-com/tailwind.config.ts b/apps/formbricks-com/tailwind.config.ts
index 25d3466b7f..f2fc328b51 100644
--- a/apps/formbricks-com/tailwind.config.ts
+++ b/apps/formbricks-com/tailwind.config.ts
@@ -3,6 +3,7 @@ import forms from "@tailwindcss/forms";
import typographyPlugin from "@tailwindcss/typography";
import { type Config } from "tailwindcss";
import defaultTheme from "tailwindcss/defaultTheme";
+
import typographyStyles from "./typography";
export default {
diff --git a/apps/storybook/.storybook/main.ts b/apps/storybook/.storybook/main.ts
index 0b2d4b73bc..b43427219c 100644
--- a/apps/storybook/.storybook/main.ts
+++ b/apps/storybook/.storybook/main.ts
@@ -1,6 +1,5 @@
import type { StorybookConfig } from "@storybook/react-vite";
-
-import { join, dirname } from "path";
+import { dirname, join } from "path";
/**
* This function is used to resolve the absolute path of a package.
diff --git a/apps/storybook/.storybook/preview.ts b/apps/storybook/.storybook/preview.ts
index 51e55951de..2367511d1e 100644
--- a/apps/storybook/.storybook/preview.ts
+++ b/apps/storybook/.storybook/preview.ts
@@ -1,5 +1,7 @@
import type { Preview } from "@storybook/react";
+
import "../src/index.css";
+
const preview: Preview = {
parameters: {
actions: { argTypesRegex: "^on[A-Z].*" },
diff --git a/apps/storybook/package.json b/apps/storybook/package.json
index e62bf5f876..3b67b5dee6 100644
--- a/apps/storybook/package.json
+++ b/apps/storybook/package.json
@@ -14,24 +14,23 @@
"dependencies": {
"@formbricks/ui": "workspace:*",
"react": "^18.2.0",
- "react-dom": "^18.2.0",
- "storybook": "^7.6.3"
+ "react-dom": "^18.2.0"
},
"devDependencies": {
"@formbricks/tsconfig": "workspace:*",
- "@storybook/addon-essentials": "^7.6.3",
- "@storybook/addon-interactions": "^7.6.3",
- "@storybook/addon-links": "^7.6.3",
- "@storybook/addon-onboarding": "^1.0.9",
- "@storybook/blocks": "^7.6.3",
- "@storybook/react": "^7.6.3",
- "@storybook/react-vite": "^7.6.3",
+ "@storybook/addon-essentials": "^7.6.4",
+ "@storybook/addon-interactions": "^7.6.4",
+ "@storybook/addon-links": "^7.6.4",
+ "@storybook/addon-onboarding": "^1.0.10",
+ "@storybook/blocks": "^7.6.4",
+ "@storybook/react": "^7.6.4",
+ "@storybook/react-vite": "^7.6.4",
"@storybook/testing-library": "^0.2.2",
- "@typescript-eslint/eslint-plugin": "^6.13.2",
- "@typescript-eslint/parser": "^6.13.2",
+ "@typescript-eslint/eslint-plugin": "^6.14.0",
+ "@typescript-eslint/parser": "^6.14.0",
"@vitejs/plugin-react": "^4.2.1",
- "esbuild": "^0.19.8",
+ "esbuild": "^0.19.9",
"tsup": "^8.0.1",
- "vite": "^5.0.6"
+ "vite": "^5.0.8"
}
}
diff --git a/apps/storybook/src/App.tsx b/apps/storybook/src/App.tsx
index c880ac7f3f..1c359f8f1a 100644
--- a/apps/storybook/src/App.tsx
+++ b/apps/storybook/src/App.tsx
@@ -1,6 +1,7 @@
import { useState } from "react";
import "./App.css";
+
function App() {
const [count, setCount] = useState(0);
diff --git a/apps/storybook/src/main.tsx b/apps/storybook/src/main.tsx
index 966f17a4b2..51f96d81a6 100644
--- a/apps/storybook/src/main.tsx
+++ b/apps/storybook/src/main.tsx
@@ -1,5 +1,6 @@
import React from "react";
import ReactDOM from "react-dom/client";
+
import App from "./App.tsx";
import "./index.css";
diff --git a/apps/storybook/vite.config.ts b/apps/storybook/vite.config.ts
index cd7f7a8af3..208b2d1c7f 100644
--- a/apps/storybook/vite.config.ts
+++ b/apps/storybook/vite.config.ts
@@ -1,5 +1,5 @@
-import { defineConfig } from "vite";
import react from "@vitejs/plugin-react";
+import { defineConfig } from "vite";
// https://vitejs.dev/config/
export default defineConfig({
diff --git a/apps/web/app/(app)/billing-confirmation/components/ConfirmationPage.tsx b/apps/web/app/(app)/billing-confirmation/components/ConfirmationPage.tsx
index 8306587d4a..20d4945275 100644
--- a/apps/web/app/(app)/billing-confirmation/components/ConfirmationPage.tsx
+++ b/apps/web/app/(app)/billing-confirmation/components/ConfirmationPage.tsx
@@ -1,9 +1,10 @@
"use client";
-import ContentWrapper from "@formbricks/ui/ContentWrapper";
+import { useEffect, useState } from "react";
+
import { Button } from "@formbricks/ui/Button";
import { Confetti } from "@formbricks/ui/Confetti";
-import { useEffect, useState } from "react";
+import ContentWrapper from "@formbricks/ui/ContentWrapper";
interface ConfirmationPageProps {
environmentId: string;
diff --git a/apps/web/app/(app)/billing-confirmation/page.tsx b/apps/web/app/(app)/billing-confirmation/page.tsx
index 4c36b6f1c1..6ba109cafd 100644
--- a/apps/web/app/(app)/billing-confirmation/page.tsx
+++ b/apps/web/app/(app)/billing-confirmation/page.tsx
@@ -1,7 +1,7 @@
-export const dynamic = "force-dynamic";
-
import ConfirmationPage from "./components/ConfirmationPage";
+export const dynamic = "force-dynamic";
+
export default function BillingConfirmation({ searchParams }) {
const { environmentId } = searchParams;
diff --git a/apps/web/app/(app)/components/FormbricksClient.tsx b/apps/web/app/(app)/components/FormbricksClient.tsx
index 4b50e91034..69299b6703 100644
--- a/apps/web/app/(app)/components/FormbricksClient.tsx
+++ b/apps/web/app/(app)/components/FormbricksClient.tsx
@@ -1,10 +1,11 @@
"use client";
-import { env } from "@formbricks/lib/env.mjs";
import { formbricksEnabled } from "@/app/lib/formbricks";
-import formbricks from "@formbricks/js";
import { useEffect } from "react";
+import formbricks from "@formbricks/js";
+import { env } from "@formbricks/lib/env.mjs";
+
type UsageAttributesUpdaterProps = {
numSurveys: number;
};
diff --git a/apps/web/app/(app)/components/PosthogIdentify.tsx b/apps/web/app/(app)/components/PosthogIdentify.tsx
index 57444b192f..7e8186c12c 100644
--- a/apps/web/app/(app)/components/PosthogIdentify.tsx
+++ b/apps/web/app/(app)/components/PosthogIdentify.tsx
@@ -1,9 +1,11 @@
"use client";
-import { env } from "@formbricks/lib/env.mjs";
+
import type { Session } from "next-auth";
import { usePostHog } from "posthog-js/react";
import { useEffect } from "react";
+import { env } from "@formbricks/lib/env.mjs";
+
const posthogEnabled = env.NEXT_PUBLIC_POSTHOG_API_KEY && env.NEXT_PUBLIC_POSTHOG_API_HOST;
export default function PosthogIdentify({ session }: { session: Session }) {
diff --git a/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/actions.ts b/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/actions.ts
index b8333e5140..dec7d8d87e 100644
--- a/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/actions.ts
+++ b/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/actions.ts
@@ -1,20 +1,20 @@
"use server";
-import { authOptions } from "@formbricks/lib/authOptions";
-import { hasUserEnvironmentAccess } from "@formbricks/lib/environment/auth";
-import { createActionClass, deleteActionClass, updateActionClass } from "@formbricks/lib/actionClass/service";
-import { canUserUpdateActionClass, verifyUserRoleAccess } from "@formbricks/lib/actionClass/auth";
import { getServerSession } from "next-auth";
-import { TActionClassInput } from "@formbricks/types/actionClasses";
import {
- getActionCountInLast24Hours,
getActionCountInLast7Days,
+ getActionCountInLast24Hours,
getActionCountInLastHour,
} from "@formbricks/lib/action/service";
+import { canUserUpdateActionClass, verifyUserRoleAccess } from "@formbricks/lib/actionClass/auth";
+import { createActionClass, deleteActionClass, updateActionClass } from "@formbricks/lib/actionClass/service";
+import { authOptions } from "@formbricks/lib/authOptions";
+import { hasUserEnvironmentAccess } from "@formbricks/lib/environment/auth";
import { getSurveysByActionClassId } from "@formbricks/lib/survey/service";
-import { AuthorizationError } from "@formbricks/types/errors";
import { getTeamByEnvironmentId } from "@formbricks/lib/team/service";
+import { TActionClassInput } from "@formbricks/types/actionClasses";
+import { AuthorizationError } from "@formbricks/types/errors";
export async function deleteActionClassAction(environmentId, actionClassId: string) {
const session = await getServerSession(authOptions);
diff --git a/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/ActionActivityTab.tsx b/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/ActionActivityTab.tsx
index 6f2e0cf364..7fe4a4e350 100644
--- a/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/ActionActivityTab.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/ActionActivityTab.tsx
@@ -1,19 +1,22 @@
"use client";
-import LoadingSpinner from "@formbricks/ui/LoadingSpinner";
+import { CodeBracketIcon, CursorArrowRaysIcon, SparklesIcon } from "@heroicons/react/24/solid";
+import { useEffect, useState } from "react";
+
+import { capitalizeFirstLetter } from "@formbricks/lib/strings";
+import { convertDateTimeStringShort } from "@formbricks/lib/time";
+import { TActionClass } from "@formbricks/types/actionClasses";
import { ErrorComponent } from "@formbricks/ui/ErrorComponent";
import { Label } from "@formbricks/ui/Label";
-import { convertDateTimeStringShort } from "@formbricks/lib/time";
-import { capitalizeFirstLetter } from "@formbricks/lib/strings";
-import { CodeBracketIcon, CursorArrowRaysIcon, SparklesIcon } from "@heroicons/react/24/solid";
-import { TActionClass } from "@formbricks/types/actionClasses";
-import { useEffect, useState } from "react";
+import LoadingSpinner from "@formbricks/ui/LoadingSpinner";
+
import {
- getActionCountInLastHourAction,
- getActionCountInLast24HoursAction,
- getActionCountInLast7DaysAction,
GetActiveInactiveSurveysAction,
+ getActionCountInLast7DaysAction,
+ getActionCountInLast24HoursAction,
+ getActionCountInLastHourAction,
} from "../actions";
+
interface ActivityTabProps {
actionClass: TActionClass;
environmentId: string;
diff --git a/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/ActionClassesTable.tsx b/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/ActionClassesTable.tsx
index eb586e8a4c..1d9b23dd2c 100644
--- a/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/ActionClassesTable.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/ActionClassesTable.tsx
@@ -1,15 +1,17 @@
"use client";
-import { Button } from "@formbricks/ui/Button";
import { CursorArrowRaysIcon } from "@heroicons/react/24/solid";
import { useState } from "react";
-import AddNoCodeActionModal from "./AddActionModal";
-import ActionDetailModal from "./ActionDetailModal";
-import { TActionClass } from "@formbricks/types/actionClasses";
+
import { useMembershipRole } from "@formbricks/lib/membership/hooks/useMembershipRole";
import { getAccessFlags } from "@formbricks/lib/membership/utils";
+import { TActionClass } from "@formbricks/types/actionClasses";
+import { Button } from "@formbricks/ui/Button";
import { LoadingWrapper } from "@formbricks/ui/LoadingWrapper";
+import ActionDetailModal from "./ActionDetailModal";
+import AddNoCodeActionModal from "./AddActionModal";
+
export default function ActionClassesTable({
environmentId,
actionClasses,
diff --git a/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/ActionDetailModal.tsx b/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/ActionDetailModal.tsx
index f41b86df9e..a4fb8a65ee 100644
--- a/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/ActionDetailModal.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/ActionDetailModal.tsx
@@ -1,9 +1,11 @@
-import ModalWithTabs from "@formbricks/ui/ModalWithTabs";
import { CodeBracketIcon, CursorArrowRaysIcon, SparklesIcon } from "@heroicons/react/24/solid";
-import EventActivityTab from "./ActionActivityTab";
-import ActionSettingsTab from "./ActionSettingsTab";
+
import { TActionClass } from "@formbricks/types/actionClasses";
import { TMembershipRole } from "@formbricks/types/memberships";
+import ModalWithTabs from "@formbricks/ui/ModalWithTabs";
+
+import EventActivityTab from "./ActionActivityTab";
+import ActionSettingsTab from "./ActionSettingsTab";
interface ActionDetailModalProps {
environmentId: string;
diff --git a/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/ActionRowData.tsx b/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/ActionRowData.tsx
index 8740001dce..3bb477d967 100644
--- a/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/ActionRowData.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/ActionRowData.tsx
@@ -1,6 +1,7 @@
+import { CodeBracketIcon, CursorArrowRaysIcon, SparklesIcon } from "@heroicons/react/24/solid";
+
import { timeSinceConditionally } from "@formbricks/lib/time";
import { TActionClass } from "@formbricks/types/actionClasses";
-import { CodeBracketIcon, CursorArrowRaysIcon, SparklesIcon } from "@heroicons/react/24/solid";
export default function ActionClassDataRow({ actionClass }: { actionClass: TActionClass }) {
return (
diff --git a/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/ActionSettingsTab.tsx b/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/ActionSettingsTab.tsx
index 0db0b81c68..9923bbae39 100644
--- a/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/ActionSettingsTab.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/ActionSettingsTab.tsx
@@ -7,19 +7,21 @@ import {
import { CssSelector } from "@/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/CssSelector";
import { InnerHtmlSelector } from "@/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/InnerHtmlSelector";
import { PageUrlSelector } from "@/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/PageUrlSelector";
-import { TActionClassInput, TActionClassNoCodeConfig, TNoCodeConfig } from "@formbricks/types/actionClasses";
-import { Button } from "@formbricks/ui/Button";
-import { DeleteDialog } from "@formbricks/ui/DeleteDialog";
-import { Input } from "@formbricks/ui/Input";
-import { Label } from "@formbricks/ui/Label";
import { TrashIcon } from "@heroicons/react/24/outline";
import { useRouter } from "next/navigation";
import { useState } from "react";
import { useForm } from "react-hook-form";
import { toast } from "react-hot-toast";
-import { testURLmatch } from "../lib/testURLmatch";
-import { TMembershipRole } from "@formbricks/types/memberships";
+
import { getAccessFlags } from "@formbricks/lib/membership/utils";
+import { TActionClassInput, TActionClassNoCodeConfig, TNoCodeConfig } from "@formbricks/types/actionClasses";
+import { TMembershipRole } from "@formbricks/types/memberships";
+import { Button } from "@formbricks/ui/Button";
+import { DeleteDialog } from "@formbricks/ui/DeleteDialog";
+import { Input } from "@formbricks/ui/Input";
+import { Label } from "@formbricks/ui/Label";
+
+import { testURLmatch } from "../lib/testURLmatch";
interface ActionSettingsTabProps {
environmentId: string;
diff --git a/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/AddActionModal.tsx b/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/AddActionModal.tsx
index 8f0db6de35..6120d69b53 100644
--- a/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/AddActionModal.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/AddActionModal.tsx
@@ -4,6 +4,12 @@ import { createActionClassAction } from "@/app/(app)/environments/[environmentId
import { CssSelector } from "@/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/CssSelector";
import { InnerHtmlSelector } from "@/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/InnerHtmlSelector";
import { PageUrlSelector } from "@/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/PageUrlSelector";
+import { CursorArrowRaysIcon } from "@heroicons/react/24/solid";
+import { Terminal } from "lucide-react";
+import { useState } from "react";
+import { useForm } from "react-hook-form";
+import toast from "react-hot-toast";
+
import { TActionClass, TActionClassInput, TActionClassNoCodeConfig } from "@formbricks/types/actionClasses";
import { Alert, AlertDescription, AlertTitle } from "@formbricks/ui/Alert";
import { Button } from "@formbricks/ui/Button";
@@ -11,11 +17,7 @@ import { Input } from "@formbricks/ui/Input";
import { Label } from "@formbricks/ui/Label";
import { Modal } from "@formbricks/ui/Modal";
import { TabBar } from "@formbricks/ui/TabBar";
-import { CursorArrowRaysIcon } from "@heroicons/react/24/solid";
-import { Terminal } from "lucide-react";
-import { useState } from "react";
-import { useForm } from "react-hook-form";
-import toast from "react-hot-toast";
+
import { testURLmatch } from "../lib/testURLmatch";
interface AddNoCodeActionModalProps {
diff --git a/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/CssSelector.tsx b/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/CssSelector.tsx
index 8cca983b7a..af3f82c934 100644
--- a/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/CssSelector.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/CssSelector.tsx
@@ -1,6 +1,7 @@
+import { UseFormRegister } from "react-hook-form";
+
import { AdvancedOptionToggle } from "@formbricks/ui/AdvancedOptionToggle";
import { Input } from "@formbricks/ui/Input";
-import { UseFormRegister } from "react-hook-form";
interface CssSelectorProps {
isCssSelector: boolean;
diff --git a/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/InnerHtmlSelector.tsx b/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/InnerHtmlSelector.tsx
index e8e6205f60..cb8f8ded2d 100644
--- a/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/InnerHtmlSelector.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/InnerHtmlSelector.tsx
@@ -1,6 +1,7 @@
+import { UseFormRegister } from "react-hook-form";
+
import { AdvancedOptionToggle } from "@formbricks/ui/AdvancedOptionToggle";
import { Input } from "@formbricks/ui/Input";
-import { UseFormRegister } from "react-hook-form";
interface InnerHtmlSelectorProps {
isInnerHtml: boolean;
diff --git a/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/PageUrlSelector.tsx b/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/PageUrlSelector.tsx
index 491cbfd885..1918c4b9c3 100644
--- a/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/PageUrlSelector.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/PageUrlSelector.tsx
@@ -1,12 +1,12 @@
-import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@formbricks/ui/Select";
-import { Button } from "@formbricks/ui/Button";
-import { AdvancedOptionToggle } from "@formbricks/ui/AdvancedOptionToggle";
-import { Input } from "@formbricks/ui/Input";
-
import { Label } from "@radix-ui/react-dropdown-menu";
import clsx from "clsx";
import { Control, Controller, UseFormRegister } from "react-hook-form";
+import { AdvancedOptionToggle } from "@formbricks/ui/AdvancedOptionToggle";
+import { Button } from "@formbricks/ui/Button";
+import { Input } from "@formbricks/ui/Input";
+import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@formbricks/ui/Select";
+
interface PageUrlSelectorProps {
isPageUrl: boolean;
setIsPageUrl: (value: boolean) => void;
@@ -91,10 +91,10 @@ export const PageUrlSelector = ({
isMatch === "yes"
? "border-green-500 bg-green-50"
: isMatch === "no"
- ? "border-red-200 bg-red-50"
- : isMatch === "default"
- ? "border-slate-200"
- : "bg-white"
+ ? "border-red-200 bg-red-50"
+ : isMatch === "default"
+ ? "border-slate-200"
+ : "bg-white"
)}
placeholder="e.g. https://app.com/dashboard"
/>
diff --git a/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/layout.tsx b/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/layout.tsx
index b23d40d297..754e715cff 100644
--- a/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/layout.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/layout.tsx
@@ -1,4 +1,5 @@
import ActionsAttributesTabs from "@/app/(app)/environments/[environmentId]/(actionsAndAttributes)/attributes/components/ActionsAttributesTabs";
+
import ContentWrapper from "@formbricks/ui/ContentWrapper";
export default function ActionsAndAttributesLayout({ params, children }) {
diff --git a/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/loading.tsx b/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/loading.tsx
index dabe1549c5..e4a8fbd549 100644
--- a/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/loading.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/loading.tsx
@@ -1,6 +1,7 @@
-import { Button } from "@formbricks/ui/Button";
import { CursorArrowRaysIcon } from "@heroicons/react/24/solid";
+import { Button } from "@formbricks/ui/Button";
+
export default function Loading() {
return (
<>
diff --git a/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/page.tsx b/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/page.tsx
index 325e0fbf92..67d59b8c66 100644
--- a/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/page.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/page.tsx
@@ -1,12 +1,10 @@
-export const revalidate = REVALIDATION_INTERVAL;
-
import ActionClassesTable from "@/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/ActionClassesTable";
import ActionClassDataRow from "@/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/ActionRowData";
import ActionTableHeading from "@/app/(app)/environments/[environmentId]/(actionsAndAttributes)/actions/components/ActionTableHeading";
-import { REVALIDATION_INTERVAL } from "@formbricks/lib/constants";
-import { getActionClasses } from "@formbricks/lib/actionClass/service";
import { Metadata } from "next";
+import { getActionClasses } from "@formbricks/lib/actionClass/service";
+
export const metadata: Metadata = {
title: "Actions",
};
diff --git a/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/attributes/actions.ts b/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/attributes/actions.ts
index c74baab22d..20f26af5fb 100644
--- a/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/attributes/actions.ts
+++ b/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/attributes/actions.ts
@@ -1,10 +1,11 @@
"use server";
import { getServerSession } from "next-auth";
-import { AuthorizationError } from "@formbricks/types/errors";
+
+import { canUserAccessAttributeClass } from "@formbricks/lib/attributeClass/auth";
import { authOptions } from "@formbricks/lib/authOptions";
import { getSurveysByAttributeClassId } from "@formbricks/lib/survey/service";
-import { canUserAccessAttributeClass } from "@formbricks/lib/attributeClass/auth";
+import { AuthorizationError } from "@formbricks/types/errors";
export const GetActiveInactiveSurveysAction = async (
attributeClassId: string
diff --git a/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/attributes/components/AttributeActivityTab.tsx b/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/attributes/components/AttributeActivityTab.tsx
index fc038943ae..f4dd773a13 100644
--- a/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/attributes/components/AttributeActivityTab.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/attributes/components/AttributeActivityTab.tsx
@@ -1,14 +1,15 @@
"use client";
import { GetActiveInactiveSurveysAction } from "@/app/(app)/environments/[environmentId]/(actionsAndAttributes)/attributes/actions";
-import LoadingSpinner from "@formbricks/ui/LoadingSpinner";
+import { TagIcon } from "@heroicons/react/24/solid";
+import { useEffect, useState } from "react";
+
import { capitalizeFirstLetter } from "@formbricks/lib/strings";
import { convertDateTimeStringShort } from "@formbricks/lib/time";
import { TAttributeClass } from "@formbricks/types/attributeClasses";
import { ErrorComponent } from "@formbricks/ui/ErrorComponent";
import { Label } from "@formbricks/ui/Label";
-import { TagIcon } from "@heroicons/react/24/solid";
-import { useEffect, useState } from "react";
+import LoadingSpinner from "@formbricks/ui/LoadingSpinner";
interface EventActivityTabProps {
attributeClass: TAttributeClass;
diff --git a/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/attributes/components/AttributeClassesTable.tsx b/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/attributes/components/AttributeClassesTable.tsx
index d09f98b4c0..e549e605e5 100644
--- a/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/attributes/components/AttributeClassesTable.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/attributes/components/AttributeClassesTable.tsx
@@ -1,11 +1,13 @@
"use client";
-import { Switch } from "@formbricks/ui/Switch";
import { useState } from "react";
+import { useMemo } from "react";
+
+import { TAttributeClass } from "@formbricks/types/attributeClasses";
+import { Switch } from "@formbricks/ui/Switch";
+
import AttributeDetailModal from "./AttributeDetailModal";
import UploadAttributesModal from "./UploadAttributesModal";
-import { useMemo } from "react";
-import { TAttributeClass } from "@formbricks/types/attributeClasses";
export default function AttributeClassesTable({
attributeClasses,
diff --git a/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/attributes/components/AttributeDetailModal.tsx b/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/attributes/components/AttributeDetailModal.tsx
index cda82863fa..b105d3c62c 100644
--- a/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/attributes/components/AttributeDetailModal.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/attributes/components/AttributeDetailModal.tsx
@@ -1,8 +1,10 @@
-import ModalWithTabs from "@formbricks/ui/ModalWithTabs";
import { TagIcon } from "@heroicons/react/24/solid";
+
+import { TAttributeClass } from "@formbricks/types/attributeClasses";
+import ModalWithTabs from "@formbricks/ui/ModalWithTabs";
+
import AttributeActivityTab from "./AttributeActivityTab";
import AttributeSettingsTab from "./AttributeSettingsTab";
-import { TAttributeClass } from "@formbricks/types/attributeClasses";
interface AttributeDetailModalProps {
open: boolean;
diff --git a/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/attributes/components/AttributeRowData.tsx b/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/attributes/components/AttributeRowData.tsx
index e7e8de8200..57655f311e 100644
--- a/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/attributes/components/AttributeRowData.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/attributes/components/AttributeRowData.tsx
@@ -1,6 +1,7 @@
+import { TagIcon } from "@heroicons/react/24/solid";
+
import { timeSinceConditionally } from "@formbricks/lib/time";
import { Badge } from "@formbricks/ui/Badge";
-import { TagIcon } from "@heroicons/react/24/solid";
export default function AttributeClassDataRow({ attributeClass }) {
return (
diff --git a/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/attributes/components/AttributeSettingsTab.tsx b/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/attributes/components/AttributeSettingsTab.tsx
index faf6917e19..0fe7f45d02 100644
--- a/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/attributes/components/AttributeSettingsTab.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/attributes/components/AttributeSettingsTab.tsx
@@ -1,14 +1,15 @@
"use client";
+import { ArchiveBoxArrowDownIcon, ArchiveBoxXMarkIcon } from "@heroicons/react/24/solid";
+import type { AttributeClass } from "@prisma/client";
+import { useRouter } from "next/navigation";
+import { useState } from "react";
+import { useForm } from "react-hook-form";
+
+import { updateAttributeClass } from "@formbricks/lib/attributeClass/service";
import { Button } from "@formbricks/ui/Button";
import { Input } from "@formbricks/ui/Input";
import { Label } from "@formbricks/ui/Label";
-import type { AttributeClass } from "@prisma/client";
-import { useForm } from "react-hook-form";
-import { ArchiveBoxArrowDownIcon, ArchiveBoxXMarkIcon } from "@heroicons/react/24/solid";
-import { useRouter } from "next/navigation";
-import { updateAttributeClass } from "@formbricks/lib/attributeClass/service";
-import { useState } from "react";
interface AttributeSettingsTabProps {
attributeClass: AttributeClass;
diff --git a/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/attributes/components/HowToAddAttributesButton.tsx b/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/attributes/components/HowToAddAttributesButton.tsx
index 7f66b12eeb..fe2ae09460 100644
--- a/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/attributes/components/HowToAddAttributesButton.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/(actionsAndAttributes)/attributes/components/HowToAddAttributesButton.tsx
@@ -1,6 +1,7 @@
-import { Button } from "@formbricks/ui/Button";
import { QuestionMarkCircleIcon } from "@heroicons/react/24/solid";
+import { Button } from "@formbricks/ui/Button";
+
export default function HowToAddAttributesButton() {
return (