UNPKG

@freecodecamp/ui

Version:

The freeCodeCamp.org open-source UI components

32 lines (31 loc) 1.17 kB
import { type Question } from "./types"; type InitialQuestion<AnswerT extends number | string> = Omit<Question<AnswerT>, "onChange">; type ReturnedQuestion<AnswerT extends number | string> = Question<AnswerT> & { onChange: (selectedAnswer: AnswerT) => void; }; export interface UseQuizProps<AnswerT extends number | string> { initialQuestions: InitialQuestion<AnswerT>[]; validationMessages: { correct: string; incorrect: string; }; passingPercent: number; onSuccess?: () => void; onFailure?: () => void; showCorrectAnswersOnSuccess?: boolean; } type ValidationData = { validated: true; grade: number; correctAnswerCount: number; } | { validated: false; grade?: never; correctAnswerCount?: never; }; export type UseQuizResult<AnswerT extends number | string> = ValidationData & { questions: ReturnedQuestion<AnswerT>[]; validateAnswers: () => void; }; export declare const useQuiz: <AnswerT extends number | string>({ initialQuestions, validationMessages, onSuccess, onFailure, passingPercent, showCorrectAnswersOnSuccess, }: UseQuizProps<AnswerT>) => UseQuizResult<AnswerT>; export {};