import { createToolcraftModuleDefinition } from "../../contract/module-definition"; import type { ToolcraftModuleRecord } from "../../contract/module-protocol"; import { normalizeToolcraftSettingsContribution, type ToolcraftSettingsContribution } from "../../contract/control-section-contribution"; type SettingsRecord = Omit & { id: "grid-settings"; contributions: readonly ToolcraftSettingsContribution[]; }; export function gridSettingsModule(defaultSpacing = 12) { if (!Number.isFinite(defaultSpacing) || defaultSpacing < 1 || defaultSpacing > 64) throw new Error("Grid spacing must be between 1 and 64."); return createToolcraftModuleDefinition({ id: "grid-settings", provides: ["grid.settings"], requires: [], defaultProviders: [], portRequirements: [], contributions: [{ id: "grid-settings.settings", moduleId: "grid-settings", kind: "control-section", placement: { after: [], before: ["image-export.settings"], slot: "artifact-settings" }, runtimeSectionId: "runtime.grid-settings", section: { title: "Grid", controls: { spacing: { type: "slider", target: "grid.spacing", label: "Spacing", min: 1, max: 64, defaultValue: defaultSpacing, applicability: { mode: "always" } }, color: { type: "color", target: "grid.color", label: "Color", defaultValue: "#ffffff", applicability: { mode: "always" } }, }, layoutGroups: [], }, }], }, normalizeToolcraftSettingsContribution); }