Add module loader & registry (task 04)
Implements the extensibility foundation: ModuleManifest/DashboardWidget/EntityTypeRegistration types in _core/module.ts, a plain-Map registry singleton with registerModule/getRegistry/getEntityType/getWidget, and stub manifests for calendar/lists/notes. Root layout imports src/modules/index.ts for side-effect registration; AppNav reads the registry to render nav links. /debug/registry dumps the full registry JSON in dev using zod v4 + z.toJSONSchema(). Adding a fourth module requires one folder + one line in index.ts. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
37977568ed
commit
e237fe8449
@@ -0,0 +1,23 @@
|
||||
import type { ModuleManifest } from "../_core/module";
|
||||
|
||||
const manifest: ModuleManifest = {
|
||||
id: "lists",
|
||||
name: "Lists",
|
||||
nav: { href: "/lists", label: "Lists", icon: "list" },
|
||||
entities: [
|
||||
{
|
||||
type: "lists.list",
|
||||
label: { singular: "List", plural: "Lists" },
|
||||
resolveUrl: (id) => `/lists/${id}`,
|
||||
},
|
||||
{
|
||||
type: "lists.item",
|
||||
label: { singular: "List item", plural: "List items" },
|
||||
resolveUrl: (id) => `/lists/items/${id}`,
|
||||
},
|
||||
],
|
||||
dashboardWidgets: [],
|
||||
quickAdds: [],
|
||||
};
|
||||
|
||||
export default manifest;
|
||||
Reference in New Issue
Block a user