import { RelationshipType, type CampaignId, type Document } from "@/lib/types"; import { LocationForm } from "./location/LocationForm"; import { MonsterForm } from "./monsters/MonsterForm"; import { NpcForm } from "./npc/NpcForm"; import { SceneForm } from "./scene/SceneForm"; import { SecretForm } from "./secret/SecretForm"; import { TreasureForm } from "./treasure/TreasureForm"; function assertUnreachable(_x: never): never { throw new Error("DocumentForm switch is not exhaustive"); } /** * Renders a form for any document type depending on the relationship. */ export const DocumentForm = ({ campaignId, relationshipType, onCreate, }: { campaignId: CampaignId; relationshipType: RelationshipType; onCreate: (document: Document) => Promise; }) => { switch (relationshipType) { case RelationshipType.Locations: return ; case RelationshipType.Monsters: return ; case RelationshipType.Npcs: return ; case RelationshipType.Secrets: return ; case RelationshipType.DiscoveredIn: return "Form not supported here"; case RelationshipType.Treasures: return ; case RelationshipType.Scenes: return ; } return assertUnreachable(relationshipType); };