import type { TemplateId } from './types' interface ComponentBinding { id: string template_id: TemplateId component: string adapters: readonly string[] props: readonly string[] description: string importPath: '@morscherlab/mint-sdk' } export const templateComponentBindings = { 'plate-map': [ binding('plate-map', 'PlateEditor', ['toPlateMapEditorState', 'racksFromPlateState'], ['modelValue', 'activeRackId', 'groups', 'formats', 'wellFields'], 'Edit plate layouts and assign sample groups from plate-map template data.'), binding('plate-map', 'WellPlate', ['toWellPlateWells'], ['format', 'wells', 'sampleColors', 'legendItems'], 'Render the active plate as a well grid.'), ], 'sample-sheet': [ binding('sample-sheet', 'DataFrame', ['toTemplateDataFrame'], ['data', 'columns', 'rowKey'], 'Render sample metadata as a sortable table.'), binding('sample-sheet', 'SampleSelector', ['toSampleOptions'], ['samples', 'modelValue'], 'Select samples from sample-sheet records.'), ], 'sample-prep': [ binding('sample-prep', 'DataFrame', ['toTemplateDataFrame'], ['data', 'columns', 'rowKey'], 'Render preparation steps as a table.'), ], 'dose-response': [ binding('dose-response', 'DoseCalculator', ['toDoseConditions'], ['mode', 'targetWells'], 'Configure serial dilution and apply concentrations to wells.'), binding('dose-response', 'WellPlate', ['toDoseLayoutState'], ['format', 'wells', 'sampleColors', 'legendItems'], 'Render the optional dose-response plate layout.'), ], 'calibration-curve': [ binding('calibration-curve', 'DataFrame', ['toTemplateDataFrame'], ['data', 'columns', 'rowKey'], 'Render standards, QC, blanks, and response values.'), ], 'time-course': [ binding('time-course', 'ExperimentTimeline', ['toTimeCourseSteps'], ['modelValue', 'orientation'], 'Render time points as an ordered timeline.'), binding('time-course', 'DataFrame', ['toTemplateDataFrame'], ['data', 'columns', 'rowKey'], 'Render longitudinal samples as a table.'), ], 'protocol-steps': [ binding('protocol-steps', 'ExperimentTimeline', ['toProtocolSteps'], ['modelValue', 'orientation', 'editable'], 'Render protocol steps as an editable timeline.'), binding('protocol-steps', 'DataFrame', ['toTemplateDataFrame'], ['data', 'columns', 'rowKey'], 'Render protocol steps as a table.'), ], 'assay-matrix': [ binding('assay-matrix', 'DataFrame', ['toTemplateDataFrame'], ['data', 'columns', 'rowKey'], 'Render sample-by-feature measurements.'), binding('assay-matrix', 'SampleSelector', ['toAssayMatrixSampleOptions'], ['samples', 'modelValue'], 'Select samples from assay-matrix records.'), ], 'reagent-list': [ binding('reagent-list', 'ReagentList', ['toReagentListItems'], ['modelValue'], 'Render reagents with lot, storage, and stock metadata.'), binding('reagent-list', 'DataFrame', ['toTemplateDataFrame'], ['data', 'columns', 'rowKey'], 'Render reagents as a table.'), ], 'flow-cytometry-panel': [ binding('flow-cytometry-panel', 'DataFrame', ['toTemplateDataFrame'], ['data', 'columns', 'rowKey'], 'Render markers, fluorophores, detectors, and controls.'), ], 'instrument-run': [ binding('instrument-run', 'DataFrame', ['toTemplateDataFrame'], ['data', 'columns', 'rowKey'], 'Render acquisition queues, methods, QC, and run status.'), binding( 'instrument-run', 'ScheduleCalendar', ['toInstrumentRunScheduleEvents'], ['modelValue', 'events', 'view', 'readonly', 'showNavigation', 'showViewToggle'], 'Render acquisition queues as a scheduled run calendar.', ), binding( 'instrument-run', 'ExperimentTimeline', ['toInstrumentRunSteps'], ['modelValue', 'orientation', 'showDuration', 'editable'], 'Render acquisition queues as an ordered run timeline.', ), ], 'qpcr-plate': [ binding('qpcr-plate', 'WellPlate', ['toQpcrWellPlateWells'], ['format', 'wells', 'sampleColors', 'legendItems'], 'Render qPCR reactions on a well plate.'), binding('qpcr-plate', 'DataFrame', ['toTemplateDataFrame'], ['data', 'columns', 'rowKey'], 'Render qPCR reactions, targets, controls, and Cq values.'), ], } satisfies Record function binding( templateId: TemplateId, component: string, adapters: readonly string[], props: readonly string[], description: string ): ComponentBinding { return { id: `${templateId}:${component}`, template_id: templateId, component, adapters, props, description, importPath: '@morscherlab/mint-sdk', } }