diff --git a/components/instructions-wizard.tsx b/components/instructions-wizard.tsx index 30cada2..c0814c0 100644 --- a/components/instructions-wizard.tsx +++ b/components/instructions-wizard.tsx @@ -139,6 +139,7 @@ const mapAnswerSourceToWizard = (answer: DataAnswerSource): WizardAnswer => { isDefault: answer.isDefault, disabled: answer.disabled, disabledLabel: answer.disabledLabel, + skippable: answer.skippable, } } @@ -154,6 +155,7 @@ const buildStepFromQuestionSet = ( question: question.question, allowMultiple: question.allowMultiple, answers: question.answers.map(mapAnswerSourceToWizard), + skippable: question.skippable, })), }) @@ -165,6 +167,7 @@ const idesStep: WizardStep = { id: "preferredIdes", question: "Which IDEs should we prepare instructions for?", allowMultiple: true, + skippable: false, answers: (rawIdes as IdeConfig[]).map((ide) => ({ value: ide.id, label: ide.label, @@ -179,6 +182,7 @@ const idesStep: WizardStep = { disabled: ide.enabled === false, disabledLabel: ide.enabled === false ? "Soon" : undefined, docs: ide.docs, + skippable: ide.skippable, })), }, ], @@ -191,6 +195,7 @@ const frameworksStep: WizardStep = { { id: FRAMEWORK_QUESTION_ID, question: "Which framework are you working with?", + skippable: false, answers: (rawFrameworks as FrameworkConfig[]).map((framework) => ({ value: framework.id, label: framework.label, @@ -198,6 +203,7 @@ const frameworksStep: WizardStep = { disabled: framework.enabled === false, disabledLabel: framework.enabled === false ? "Soon" : undefined, docs: framework.docs, + skippable: framework.skippable, })), }, ], @@ -241,6 +247,7 @@ const filesStep: WizardStep = { id: "outputFiles", question: "Which instruction files should we generate?", allowMultiple: true, + skippable: false, answers: (filesData as FileOutputConfig[]).map((file) => { const infoLines: string[] = [] if (file.filename) { @@ -259,6 +266,7 @@ const filesStep: WizardStep = { tags: file.format ? [file.format] : undefined, disabled: file.enabled === false, disabledLabel: file.enabled === false ? "Soon" : undefined, + skippable: file.skippable, } }), }, @@ -374,6 +382,7 @@ export function InstructionsWizard({ onClose }: InstructionsWizardProps) { id: question.id, question: question.question, allowMultiple: question.allowMultiple, + skippable: question.skippable, answers: question.answers.map((answer) => { const infoLines: string[] = [] if (answer.pros && answer.pros.length > 0) { @@ -390,6 +399,7 @@ export function InstructionsWizard({ onClose }: InstructionsWizardProps) { example: answer.example, infoLines: infoLines.length > 0 ? infoLines : undefined, docs: answer.docs, + skippable: answer.skippable, } }), })) @@ -473,6 +483,10 @@ export function InstructionsWizard({ onClose }: InstructionsWizardProps) { } const skipQuestion = () => { + if (currentQuestion.skippable === false) { + return + } + setResponses((prev) => ({ ...prev, [currentQuestion.id]: null, @@ -722,9 +736,11 @@ export function InstructionsWizard({ onClose }: InstructionsWizardProps) {

{currentQuestion.question}

- + {currentQuestion.skippable !== false ? ( + + ) : null}
diff --git a/data/files.json b/data/files.json index c547259..e0649b0 100644 --- a/data/files.json +++ b/data/files.json @@ -6,7 +6,8 @@ "format": "markdown", "enabled": true, "icon": "markdown", - "docs": "https://docs.github.com/en/copilot" + "docs": "https://docs.github.com/en/copilot", + "skippable": false }, { "id": "agents-md", @@ -15,7 +16,8 @@ "format": "markdown", "enabled": true, "icon": "markdown", - "docs": "https://docs.github.com/en/copilot" + "docs": "https://docs.github.com/en/copilot", + "skippable": false }, { "id": "cursor-rules", @@ -23,7 +25,8 @@ "filename": ".cursor/rules", "format": "cursor-rules", "enabled": false, - "docs": "https://docs.cursor.com/workflows/rules" + "docs": "https://docs.cursor.com/workflows/rules", + "skippable": false }, { "id": "json-rules", @@ -32,6 +35,7 @@ "format": "json", "enabled": false, "icon": "json", - "docs": "https://json-schema.org/" + "docs": "https://json-schema.org/", + "skippable": false } -] \ No newline at end of file +] diff --git a/data/frameworks.json b/data/frameworks.json index fd26a6f..8369cbe 100644 --- a/data/frameworks.json +++ b/data/frameworks.json @@ -4,20 +4,23 @@ "label": "React", "icon": "react", "enabled": true, - "docs": "https://react.dev/learn" + "docs": "https://react.dev/learn", + "skippable": false }, { "id": "nextjs", "label": "Next.js", "icon": "nextdotjs", "enabled": true, - "docs": "https://nextjs.org/docs" + "docs": "https://nextjs.org/docs", + "skippable": false }, { "id": "angular", "label": "Angular", "icon": "angular", "enabled": false, - "docs": "https://angular.io/docs" + "docs": "https://angular.io/docs", + "skippable": false } ] diff --git a/data/ides.json b/data/ides.json index 69296cd..08527a3 100644 --- a/data/ides.json +++ b/data/ides.json @@ -5,6 +5,7 @@ "icon": "visualstudiocode", "enabled": true, "docs": "https://code.visualstudio.com/docs", + "skippable": false, "outputFiles": [ "instructions-md", "agents-md" @@ -16,6 +17,7 @@ "icon": "/icons/cursor.svg", "enabled": false, "docs": "https://docs.cursor.com/", + "skippable": false, "outputFiles": [ "cursor-rules", "json-rules" @@ -27,6 +29,7 @@ "icon": "/icons/jetbrains.svg", "enabled": false, "docs": "https://www.jetbrains.com/help/", + "skippable": false, "outputFiles": [ "instructions-md" ] @@ -37,9 +40,10 @@ "icon": "windsurf", "enabled": false, "docs": "https://codeium.com/windsurf", + "skippable": false, "outputFiles": [ "instructions-md", "json-rules" ] } -] \ No newline at end of file +] diff --git a/types/wizard.ts b/types/wizard.ts index 9179730..568a2c6 100644 --- a/types/wizard.ts +++ b/types/wizard.ts @@ -5,6 +5,7 @@ export type IdeConfig = { enabled?: boolean outputFiles?: string[] docs?: string + skippable?: boolean } export type FrameworkConfig = { @@ -13,6 +14,7 @@ export type FrameworkConfig = { icon?: string enabled?: boolean docs?: string + skippable?: boolean } export type DataAnswerSource = { @@ -27,6 +29,7 @@ export type DataAnswerSource = { isDefault?: boolean disabled?: boolean disabledLabel?: string + skippable?: boolean } export type DataQuestionSource = { @@ -34,6 +37,7 @@ export type DataQuestionSource = { question: string allowMultiple?: boolean answers: DataAnswerSource[] + skippable?: boolean } export type FileOutputConfig = { @@ -44,6 +48,7 @@ export type FileOutputConfig = { enabled?: boolean icon?: string docs?: string + skippable?: boolean } export type WizardAnswer = { @@ -57,6 +62,7 @@ export type WizardAnswer = { disabled?: boolean disabledLabel?: string docs?: string + skippable?: boolean } export type WizardQuestion = { @@ -64,6 +70,7 @@ export type WizardQuestion = { question: string allowMultiple?: boolean answers: WizardAnswer[] + skippable?: boolean } export type WizardStep = {