119 lines
3.7 KiB
TypeScript
Executable File
119 lines
3.7 KiB
TypeScript
Executable File
import type { PracticeModule } from "@/types/practice";
|
|
|
|
export const mockPracticeModules: PracticeModule[] = [
|
|
{
|
|
slug: "translation",
|
|
title: "Legal Translation Challenge",
|
|
description: "Translate legal terms accurately in context with timed multiple-choice questions.",
|
|
isInteractive: true,
|
|
difficulty: "Beginner",
|
|
questions: [
|
|
{
|
|
id: "q1",
|
|
prompt: "Spanish term: incumplimiento contractual",
|
|
choices: ["Contractual compliance", "Breach of contract", "Contract interpretation", "Mutual assent"],
|
|
answerIndex: 1,
|
|
},
|
|
{
|
|
id: "q2",
|
|
prompt: "Spanish term: medida cautelar",
|
|
choices: ["Class action", "Summary judgment", "Injunctive relief", "Arbitration clause"],
|
|
answerIndex: 2,
|
|
},
|
|
{
|
|
id: "q3",
|
|
prompt: "Spanish term: fuerza mayor",
|
|
choices: ["Strict liability", "Force majeure", "Punitive damages", "Specific performance"],
|
|
answerIndex: 1,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
slug: "term-matching",
|
|
title: "Term Matching Game",
|
|
description: "Match core legal concepts with the most accurate definition in English.",
|
|
isInteractive: true,
|
|
difficulty: "Intermediate",
|
|
questions: [
|
|
{
|
|
id: "q1",
|
|
prompt: "Match: consideration",
|
|
choices: [
|
|
"A legally binding command from the court",
|
|
"A bargained-for exchange of value between parties",
|
|
"A prior case that has no legal effect",
|
|
"A statement made outside of court",
|
|
],
|
|
answerIndex: 1,
|
|
},
|
|
{
|
|
id: "q2",
|
|
prompt: "Match: injunction",
|
|
choices: [
|
|
"A court order requiring a party to do or stop doing something",
|
|
"A clause that sets venue for disputes",
|
|
"A witness statement under oath",
|
|
"A mandatory arbitration waiver",
|
|
],
|
|
answerIndex: 0,
|
|
},
|
|
{
|
|
id: "q3",
|
|
prompt: "Match: precedent",
|
|
choices: [
|
|
"A contractual deadline extension",
|
|
"A final administrative regulation",
|
|
"A prior judicial decision used as authority",
|
|
"A private settlement term",
|
|
],
|
|
answerIndex: 2,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
slug: "contract-clauses",
|
|
title: "Contract Clause Practice",
|
|
description: "Identify the strongest contract clause option for each scenario.",
|
|
isInteractive: true,
|
|
difficulty: "Advanced",
|
|
questions: [
|
|
{
|
|
id: "q1",
|
|
prompt: "Choose the strongest force majeure clause element:",
|
|
choices: [
|
|
"No definition of triggering events",
|
|
"Broad reference without notice obligations",
|
|
"Defined events, notice timeline, and mitigation duty",
|
|
"Automatic termination without limits",
|
|
],
|
|
answerIndex: 2,
|
|
},
|
|
{
|
|
id: "q2",
|
|
prompt: "Best limitation of liability drafting choice:",
|
|
choices: [
|
|
"Exclude all damages including willful misconduct",
|
|
"Cap liability with carve-outs for fraud and gross negligence",
|
|
"No cap and no exclusions",
|
|
"Cap liability only for one party",
|
|
],
|
|
answerIndex: 1,
|
|
},
|
|
{
|
|
id: "q3",
|
|
prompt: "Best dispute resolution clause for cross-border deals:",
|
|
choices: [
|
|
"No governing law or venue specified",
|
|
"Unilateral right to sue in any court worldwide",
|
|
"Clear governing law, venue, and arbitration seat",
|
|
"Only internal escalation with no external remedy",
|
|
],
|
|
answerIndex: 2,
|
|
},
|
|
],
|
|
},
|
|
];
|
|
|
|
export const getPracticeBySlug = (slug: string) =>
|
|
mockPracticeModules.find((module) => module.slug === slug);
|