diff --git a/apps/web/app/(app)/environments/[environmentId]/surveys/templates/TemplateList.tsx b/apps/web/app/(app)/environments/[environmentId]/surveys/templates/TemplateList.tsx
index 244ca72a6c..a34fdd0eac 100644
--- a/apps/web/app/(app)/environments/[environmentId]/surveys/templates/TemplateList.tsx
+++ b/apps/web/app/(app)/environments/[environmentId]/surveys/templates/TemplateList.tsx
@@ -15,7 +15,7 @@ import { SplitIcon } from "lucide-react";
import { useRouter } from "next/navigation";
import { useEffect, useState } from "react";
import { createSurveyAction } from "../actions";
-import { customSurvey, templates } from "./templates";
+import { customSurvey, templates, testTemplate } from "./templates";
type TemplateList = {
environmentId: string;
@@ -147,7 +147,10 @@ export default function TemplateList({
)}
- {filteredTemplates.map((template: TTemplate) => (
+ {(process.env.NODE_ENV === "development"
+ ? [...filteredTemplates, testTemplate]
+ : filteredTemplates
+ ).map((template: TTemplate) => (
{
const newTemplate = replacePresetPlaceholders(template, product);
diff --git a/apps/web/app/(app)/environments/[environmentId]/surveys/templates/templates.ts b/apps/web/app/(app)/environments/[environmentId]/surveys/templates/templates.ts
index 5a25830bb3..f59777e2b1 100644
--- a/apps/web/app/(app)/environments/[environmentId]/surveys/templates/templates.ts
+++ b/apps/web/app/(app)/environments/[environmentId]/surveys/templates/templates.ts
@@ -21,6 +21,308 @@ const welcomeCardDefault: TSurveyWelcomeCard = {
timeToFinish: true,
};
+export const testTemplate: TTemplate = {
+ name: "Test template",
+ description: "Test template consisting of all questions",
+ preset: {
+ name: "Test template",
+ questions: [
+ {
+ id: createId(),
+ type: TSurveyQuestionType.OpenText,
+ headline: "This is an open text question",
+ subheader: "Please enter some text:",
+ required: true,
+ inputType: "text",
+ },
+ {
+ id: createId(),
+ type: TSurveyQuestionType.OpenText,
+ headline: "This is an open text question",
+ subheader: "Please enter some text:",
+ required: false,
+ inputType: "text",
+ },
+ {
+ id: createId(),
+ type: TSurveyQuestionType.OpenText,
+ headline: "This is an open text question",
+ subheader: "Please enter an email",
+ required: true,
+ inputType: "email",
+ },
+ {
+ id: createId(),
+ type: TSurveyQuestionType.OpenText,
+ headline: "This is an open text question",
+ subheader: "Please enter an email",
+ required: false,
+ inputType: "email",
+ },
+ {
+ id: createId(),
+ type: TSurveyQuestionType.OpenText,
+ headline: "This is an open text question",
+ subheader: "Please enter a number",
+ required: true,
+ inputType: "number",
+ },
+ {
+ id: createId(),
+ type: TSurveyQuestionType.OpenText,
+ headline: "This is an open text question",
+ subheader: "Please enter a number",
+ required: false,
+ inputType: "number",
+ },
+ {
+ id: createId(),
+ type: TSurveyQuestionType.OpenText,
+ headline: "This is an open text question",
+ subheader: "Please enter a phone number",
+ required: true,
+ inputType: "phone",
+ },
+ {
+ id: createId(),
+ type: TSurveyQuestionType.OpenText,
+ headline: "This is an open text question",
+ subheader: "Please enter a phone number",
+ required: false,
+ inputType: "phone",
+ },
+ {
+ id: createId(),
+ type: TSurveyQuestionType.OpenText,
+ headline: "This is an open text question",
+ subheader: "Please enter a url",
+ required: true,
+ inputType: "url",
+ },
+ {
+ id: createId(),
+ type: TSurveyQuestionType.OpenText,
+ headline: "This is an open text question",
+ subheader: "Please enter a url",
+ required: false,
+ inputType: "url",
+ },
+ {
+ id: createId(),
+ type: TSurveyQuestionType.MultipleChoiceSingle,
+ headline: "This ia a Multiple choice Single question",
+ subheader: "Please select one of the following",
+ required: true,
+ shuffleOption: "none",
+ choices: [
+ {
+ id: createId(),
+ label: "Option1",
+ },
+ {
+ id: createId(),
+ label: "Option2",
+ },
+ ],
+ },
+ {
+ id: createId(),
+ type: TSurveyQuestionType.MultipleChoiceSingle,
+ headline: "This ia a Multiple choice Single question",
+ subheader: "Please select one of the following",
+ required: false,
+ shuffleOption: "none",
+ choices: [
+ {
+ id: createId(),
+ label: "Option 1",
+ },
+ {
+ id: createId(),
+ label: "Option 2",
+ },
+ ],
+ },
+ {
+ id: createId(),
+ type: TSurveyQuestionType.MultipleChoiceMulti,
+ headline: "This ia a Multiple choice Multiple question",
+ subheader: "Please select some from the following",
+ required: true,
+ shuffleOption: "none",
+ choices: [
+ {
+ id: createId(),
+ label: "Option1",
+ },
+ {
+ id: createId(),
+ label: "Option2",
+ },
+ ],
+ },
+ {
+ id: createId(),
+ type: TSurveyQuestionType.MultipleChoiceMulti,
+ headline: "This ia a Multiple choice Multiple question",
+ subheader: "Please select some from the following",
+ required: false,
+ shuffleOption: "none",
+ choices: [
+ {
+ id: createId(),
+ label: "Option1",
+ },
+ {
+ id: createId(),
+ label: "Option2",
+ },
+ ],
+ },
+ {
+ id: createId(),
+ type: TSurveyQuestionType.Rating,
+ headline: "This is a rating question",
+ required: true,
+ lowerLabel: "Low",
+ upperLabel: "High",
+ range: 5,
+ scale: "number",
+ },
+ {
+ id: createId(),
+ type: TSurveyQuestionType.Rating,
+ headline: "This is a rating question",
+ required: false,
+ lowerLabel: "Low",
+ upperLabel: "High",
+ range: 5,
+ scale: "number",
+ },
+ {
+ id: createId(),
+ type: TSurveyQuestionType.Rating,
+ headline: "This is a rating question",
+ required: true,
+ lowerLabel: "Low",
+ upperLabel: "High",
+ range: 5,
+ scale: "smiley",
+ },
+ {
+ id: createId(),
+ type: TSurveyQuestionType.Rating,
+ headline: "This is a rating question",
+ required: false,
+ lowerLabel: "Low",
+ upperLabel: "High",
+ range: 5,
+ scale: "smiley",
+ },
+ {
+ id: createId(),
+ type: TSurveyQuestionType.Rating,
+ headline: "This is a rating question",
+ required: true,
+ lowerLabel: "Low",
+ upperLabel: "High",
+ range: 5,
+ scale: "star",
+ },
+ {
+ id: createId(),
+ type: TSurveyQuestionType.Rating,
+ headline: "This is a rating question",
+ required: false,
+ lowerLabel: "Low",
+ upperLabel: "High",
+ range: 5,
+ scale: "star",
+ },
+ {
+ id: createId(),
+ type: TSurveyQuestionType.CTA,
+ headline: "This is a CTA question",
+ html: "This is a test CTA",
+ buttonLabel: "Click",
+ buttonUrl: "https://formbricks.com",
+ buttonExternal: true,
+ required: true,
+ dismissButtonLabel: "Maybe later",
+ },
+ {
+ id: createId(),
+ type: TSurveyQuestionType.CTA,
+ headline: "This is a CTA question",
+ html: "This is a test CTA",
+ buttonLabel: "Click",
+ buttonUrl: "https://formbricks.com",
+ buttonExternal: true,
+ required: false,
+ dismissButtonLabel: "Maybe later",
+ },
+ {
+ id: createId(),
+ type: TSurveyQuestionType.PictureSelection,
+ headline: "This is a Picture select",
+ allowMulti: true,
+ required: true,
+ choices: [
+ {
+ id: createId(),
+ imageUrl: "https://formbricks-cdn.s3.eu-central-1.amazonaws.com/puppy-1-small.jpg",
+ },
+ {
+ id: createId(),
+ imageUrl: "https://formbricks-cdn.s3.eu-central-1.amazonaws.com/puppy-2-small.jpg",
+ },
+ ],
+ },
+ {
+ id: createId(),
+ type: TSurveyQuestionType.PictureSelection,
+ headline: "This is a Picture select",
+ allowMulti: true,
+ required: false,
+ choices: [
+ {
+ id: createId(),
+ imageUrl: "https://formbricks-cdn.s3.eu-central-1.amazonaws.com/puppy-1-small.jpg",
+ },
+ {
+ id: createId(),
+ imageUrl: "https://formbricks-cdn.s3.eu-central-1.amazonaws.com/puppy-2-small.jpg",
+ },
+ ],
+ },
+ {
+ id: createId(),
+ type: TSurveyQuestionType.Consent,
+ headline: "This is a Consent question",
+ required: true,
+ label: "I agree to the terms and conditions",
+ dismissButtonLabel: "Skip",
+ },
+ {
+ id: createId(),
+ type: TSurveyQuestionType.Consent,
+ headline: "This is a Consent question",
+ required: false,
+ label: "I agree to the terms and conditions",
+ dismissButtonLabel: "Skip",
+ },
+ ],
+ thankYouCard: thankYouCardDefault,
+ welcomeCard: {
+ enabled: false,
+ timeToFinish: false,
+ },
+ hiddenFields: {
+ enabled: false,
+ },
+ },
+};
+
export const templates: TTemplate[] = [
{
name: "Product Market Fit (Superhuman)",