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)",