import { Form, Link, redirect } from "react-router"; import type { Route } from "./+types/admin.templates.new"; import { createSeasonTemplate } from "~/models/season-template"; import { Button } from "~/components/ui/button"; import { Input } from "~/components/ui/input"; import { Label } from "~/components/ui/label"; import { Textarea } from "~/components/ui/textarea"; import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "~/components/ui/card"; export function meta(): Route.MetaDescriptors { return [{ title: "New Template - Brackt Admin" }]; } export async function action({ request }: Route.ActionArgs) { const formData = await request.formData(); const name = formData.get("name"); const year = formData.get("year"); const description = formData.get("description"); // Validation if (typeof name !== "string" || !name.trim()) { return { error: "Template name is required" }; } if (typeof year !== "string") { return { error: "Year is required" }; } const yearNum = parseInt(year, 10); if (isNaN(yearNum) || yearNum < 2000 || yearNum > 2100) { return { error: "Year must be between 2000 and 2100" }; } try { const template = await createSeasonTemplate({ name: name.trim(), year: yearNum, description: typeof description === "string" && description.trim() ? description.trim() : null, isActive: true, }); return redirect(`/admin/templates/${template.id}`); } catch (error) { console.error("Error creating template:", error); return { error: "Failed to create template. Please try again." }; } } export default function NewTemplate({ actionData }: Route.ComponentProps) { const currentYear = new Date().getFullYear(); return (

Create Season Template

Bundle sports seasons together for league commissioners

Template Details Create a template that commissioners can use when setting up their leagues

A descriptive name that commissioners will see