@morscherlab/mint-sdk 1.0.0-rc.4 → 1.0.0-rc.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (304) hide show
  1. package/dist/__tests__/components/AppTopBar.navigation.test.d.ts +1 -0
  2. package/dist/__tests__/components/DoseCalculatorVolumeField.test.d.ts +1 -0
  3. package/dist/__tests__/components/PlateMapEditorToolbarInternal.test.d.ts +1 -0
  4. package/dist/__tests__/components/PluginWorkspaceView.controls.test.d.ts +1 -0
  5. package/dist/__tests__/components/PluginWorkspaceView.navigation.test.d.ts +1 -0
  6. package/dist/__tests__/components/PluginWorkspaceView.shell.test.d.ts +1 -0
  7. package/dist/__tests__/components/ProtocolStep.presentation.test.d.ts +1 -0
  8. package/dist/__tests__/components/ProtocolStepEditor.state.test.d.ts +1 -0
  9. package/dist/__tests__/components/ProtocolStepParameterField.test.d.ts +1 -0
  10. package/dist/__tests__/components/ReagentList.presentation.test.d.ts +1 -0
  11. package/dist/__tests__/components/SampleSelector.colors.test.d.ts +1 -0
  12. package/dist/__tests__/components/SampleSelector.drag.test.d.ts +1 -0
  13. package/dist/__tests__/components/SampleSelector.groups.test.d.ts +1 -0
  14. package/dist/__tests__/components/SampleSelector.selection.test.d.ts +1 -0
  15. package/dist/__tests__/components/SampleSelectorSampleRow.test.d.ts +1 -0
  16. package/dist/__tests__/components/ScheduleCalendar.test.d.ts +1 -0
  17. package/dist/__tests__/components/SettingsModal.schema.test.d.ts +1 -0
  18. package/dist/__tests__/components/WellPlate.colors.test.d.ts +1 -0
  19. package/dist/__tests__/components/WellPlate.conditions.test.d.ts +1 -0
  20. package/dist/__tests__/components/WellPlate.geometry.test.d.ts +1 -0
  21. package/dist/__tests__/components/WellPlate.interaction.test.d.ts +1 -0
  22. package/dist/__tests__/components/WellPlate.legend.test.d.ts +1 -0
  23. package/dist/__tests__/components/WellPlate.rendering.test.d.ts +1 -0
  24. package/dist/__tests__/components/WellPlate.sampleDrop.test.d.ts +1 -0
  25. package/dist/__tests__/composables/autoGroup/classify.test.d.ts +1 -0
  26. package/dist/__tests__/composables/autoGroup/columns.test.d.ts +1 -0
  27. package/dist/__tests__/composables/autoGroup/compose.test.d.ts +1 -0
  28. package/dist/__tests__/composables/autoGroup/cooccurrence.test.d.ts +1 -0
  29. package/dist/__tests__/composables/autoGroup/fingerprint.test.d.ts +1 -0
  30. package/dist/__tests__/composables/autoGroup/integration.test.d.ts +1 -0
  31. package/dist/__tests__/composables/autoGroup/template.test.d.ts +1 -0
  32. package/dist/__tests__/composables/autoGroup/tokenize.test.d.ts +1 -0
  33. package/dist/__tests__/composables/useAutoGroupInputSources.test.d.ts +1 -0
  34. package/dist/__tests__/composables/useScheduleCalendarLayout.test.d.ts +1 -0
  35. package/dist/__tests__/docs/extractDocsComponents.test.d.ts +1 -0
  36. package/dist/__tests__/docs/extractDocsExports.test.d.ts +1 -0
  37. package/dist/__tests__/docs/extractDocsParsing.test.d.ts +1 -0
  38. package/dist/__tests__/docs/extractDocsTemplates.test.d.ts +1 -0
  39. package/dist/__tests__/docs/extractDocsTheme.test.d.ts +1 -0
  40. package/dist/components/AppSidebar.vue.d.ts +3 -3
  41. package/dist/components/AppTopBar.navigation.d.ts +11 -0
  42. package/dist/components/BaseButton.vue.d.ts +1 -1
  43. package/dist/components/BaseCheckbox.vue.d.ts +1 -1
  44. package/dist/components/BaseInput.vue.d.ts +2 -2
  45. package/dist/components/BasePill.vue.d.ts +1 -1
  46. package/dist/components/BaseRadioGroup.vue.d.ts +1 -1
  47. package/dist/components/BaseSelect.vue.d.ts +1 -1
  48. package/dist/components/BaseSlider.vue.d.ts +2 -2
  49. package/dist/components/BaseTextarea.vue.d.ts +2 -2
  50. package/dist/components/BaseToggle.vue.d.ts +1 -1
  51. package/dist/components/BioTemplateExperimentWorkspaceView.vue.d.ts +2 -2
  52. package/dist/components/BioTemplatePackWorkspaceView.vue.d.ts +1 -1
  53. package/dist/components/ColorSlider.vue.d.ts +2 -2
  54. package/dist/components/ConcentrationInput.vue.d.ts +2 -2
  55. package/dist/components/ControlWorkspaceView.vue.d.ts +3 -3
  56. package/dist/components/DatePicker.vue.d.ts +1 -1
  57. package/dist/components/DateTimePicker.vue.d.ts +2 -2
  58. package/dist/components/DoseCalculatorVolumeField.vue.d.ts +15 -0
  59. package/dist/components/DoseDesignWorkspaceView.vue.d.ts +1 -1
  60. package/dist/components/DropdownButton.vue.d.ts +1 -1
  61. package/dist/components/FileUploader.vue.d.ts +2 -2
  62. package/dist/components/FormulaInput.vue.d.ts +2 -2
  63. package/dist/components/IconButton.vue.d.ts +1 -1
  64. package/dist/components/LoadingSpinner.vue.d.ts +1 -1
  65. package/dist/components/MoleculeInput.vue.d.ts +2 -2
  66. package/dist/components/MultiSelect.vue.d.ts +1 -1
  67. package/dist/components/NumberInput.vue.d.ts +1 -1
  68. package/dist/components/PlateMapEditor.vue.d.ts +6 -6
  69. package/dist/components/PluginWorkspaceView.controls.d.ts +28 -0
  70. package/dist/components/PluginWorkspaceView.navigation.d.ts +29 -0
  71. package/dist/components/PluginWorkspaceView.props.d.ts +151 -0
  72. package/dist/components/PluginWorkspaceView.shell.d.ts +19 -0
  73. package/dist/components/PluginWorkspaceView.vue.d.ts +46 -195
  74. package/dist/components/ProgressBar.vue.d.ts +1 -1
  75. package/dist/components/ProtocolStep.presentation.d.ts +4 -0
  76. package/dist/components/ProtocolStepEditor.state.d.ts +18 -0
  77. package/dist/components/ProtocolStepParameterField.vue.d.ts +12 -0
  78. package/dist/components/ReagentList.presentation.d.ts +16 -0
  79. package/dist/components/ResourceCard.vue.d.ts +1 -1
  80. package/dist/components/SampleSelector.colors.d.ts +13 -0
  81. package/dist/components/SampleSelector.drag.d.ts +24 -0
  82. package/dist/components/SampleSelector.groups.d.ts +15 -0
  83. package/dist/components/SampleSelector.selection.d.ts +26 -0
  84. package/dist/components/SampleSelector.vue.d.ts +4 -1
  85. package/dist/components/SampleSelectorSampleRow.vue.d.ts +21 -0
  86. package/dist/components/SegmentedControl.vue.d.ts +1 -1
  87. package/dist/components/SequenceInput.vue.d.ts +2 -2
  88. package/dist/components/SequenceProgressBar.vue.d.ts +1 -1
  89. package/dist/components/SettingsModal.schema.d.ts +9 -0
  90. package/dist/components/StatusIndicator.vue.d.ts +1 -1
  91. package/dist/components/TagsInput.vue.d.ts +2 -2
  92. package/dist/components/TimePicker.vue.d.ts +2 -2
  93. package/dist/components/TimeRangeInput.vue.d.ts +1 -1
  94. package/dist/components/UnitInput.vue.d.ts +2 -2
  95. package/dist/components/WellPlate.colors.d.ts +9 -0
  96. package/dist/components/WellPlate.conditions.d.ts +26 -0
  97. package/dist/components/WellPlate.geometry.d.ts +23 -0
  98. package/dist/components/WellPlate.interaction.d.ts +71 -0
  99. package/dist/components/WellPlate.legend.d.ts +2 -0
  100. package/dist/components/WellPlate.rendering.d.ts +24 -0
  101. package/dist/components/WellPlate.sampleDrop.d.ts +8 -0
  102. package/dist/components/WellPlate.vue.d.ts +1 -1
  103. package/dist/components/index.js +2 -2
  104. package/dist/components/internal/ActionItemInternal.vue.d.ts +1 -1
  105. package/dist/components/internal/PlateMapEditorToolbarInternal.vue.d.ts +28 -0
  106. package/dist/{components-DafPc4rM.js → components-DtHA2bgp.js} +3754 -2991
  107. package/dist/components-DtHA2bgp.js.map +1 -0
  108. package/dist/composables/autoGroup/classKey.d.ts +4 -0
  109. package/dist/composables/autoGroup/classify.d.ts +28 -0
  110. package/dist/composables/autoGroup/colors.d.ts +2 -0
  111. package/dist/composables/autoGroup/columns.d.ts +10 -0
  112. package/dist/composables/autoGroup/compose.d.ts +8 -0
  113. package/dist/composables/autoGroup/cooccurrence.d.ts +2 -0
  114. package/dist/composables/autoGroup/csv-shim.d.ts +2 -0
  115. package/dist/composables/autoGroup/fingerprint.d.ts +3 -0
  116. package/dist/composables/autoGroup/index.d.ts +16 -0
  117. package/dist/composables/autoGroup/replicatePreGroup.d.ts +38 -0
  118. package/dist/composables/autoGroup/template.d.ts +15 -0
  119. package/dist/composables/autoGroup/tokenize.d.ts +8 -0
  120. package/dist/composables/autoGroupConstants.d.ts +1 -0
  121. package/dist/composables/autoGroupGrouping.d.ts +3 -0
  122. package/dist/composables/controlComponentBindings.d.ts +1 -1
  123. package/dist/composables/controlSchemaAdapters.d.ts +1 -1
  124. package/dist/composables/controlSchemaDoseDesign.d.ts +11 -0
  125. package/dist/composables/controlSchemaLayout.d.ts +1 -1
  126. package/dist/composables/controlSchemaModel.d.ts +5 -0
  127. package/dist/composables/controlSchemaNormalize.d.ts +1 -1
  128. package/dist/composables/controlSchemaTypes.d.ts +305 -0
  129. package/dist/composables/controlWorkspaceOptions.d.ts +1 -1
  130. package/dist/composables/formBuilderSchema.d.ts +18 -0
  131. package/dist/composables/index.js +3 -3
  132. package/dist/composables/pluginEndpointBuilder.d.ts +13 -0
  133. package/dist/composables/protocolTemplateCatalog.d.ts +26 -0
  134. package/dist/composables/useAutoGroup.d.ts +61 -74
  135. package/dist/composables/useAutoGroupInputSources.d.ts +32 -0
  136. package/dist/composables/useBioTemplateControls.d.ts +1 -1
  137. package/dist/composables/useBioTemplatePresetWorkspace.d.ts +1 -1
  138. package/dist/composables/useBioTemplateWorkspace.d.ts +1 -1
  139. package/dist/composables/useControlSchema.d.ts +4 -316
  140. package/dist/composables/useControlWorkspace.d.ts +1 -1
  141. package/dist/composables/useForm.d.ts +2 -33
  142. package/dist/composables/useFormBuilder.d.ts +2 -9
  143. package/dist/composables/useFormValidation.d.ts +34 -0
  144. package/dist/composables/usePluginClient.d.ts +1 -4
  145. package/dist/composables/useProtocolTemplates.d.ts +2 -24
  146. package/dist/composables/useScheduleCalendarLayout.d.ts +49 -0
  147. package/dist/{composables-BMkPQhVK.js → composables-Dlg8jenH.js} +33 -31
  148. package/dist/composables-Dlg8jenH.js.map +1 -0
  149. package/dist/index.js +4 -4
  150. package/dist/install.js +2 -2
  151. package/dist/styles.css +547 -516
  152. package/dist/templates/controlSchemaTypes.d.ts +1 -1
  153. package/dist/templates/index.js +1 -1
  154. package/dist/templates/templateAdapterTypes.d.ts +48 -0
  155. package/dist/templates/templateCreateOptions.d.ts +165 -0
  156. package/dist/templates/templateQpcrTypes.d.ts +42 -0
  157. package/dist/templates/types.d.ts +5 -250
  158. package/dist/{templates-bUAWMn5L.js → templates-DtdUvJ4c.js} +144 -136
  159. package/dist/templates-DtdUvJ4c.js.map +1 -0
  160. package/dist/types/auto-group.d.ts +79 -9
  161. package/dist/types/componentLabTypes.d.ts +161 -0
  162. package/dist/types/componentWorkflowTypes.d.ts +150 -0
  163. package/dist/types/components.d.ts +2 -311
  164. package/dist/{useProtocolTemplates-QZtHFFH2.js → useProtocolTemplates-Bm5vyH4_.js} +1220 -454
  165. package/dist/useProtocolTemplates-Bm5vyH4_.js.map +1 -0
  166. package/package.json +1 -1
  167. package/src/__tests__/components/AppTopBar.navigation.test.ts +70 -0
  168. package/src/__tests__/components/DoseCalculatorVolumeField.test.ts +53 -0
  169. package/src/__tests__/components/PlateMapEditorToolbarInternal.test.ts +54 -0
  170. package/src/__tests__/components/PluginWorkspaceView.controls.test.ts +156 -0
  171. package/src/__tests__/components/PluginWorkspaceView.navigation.test.ts +102 -0
  172. package/src/__tests__/components/PluginWorkspaceView.shell.test.ts +41 -0
  173. package/src/__tests__/components/ProtocolStep.presentation.test.ts +31 -0
  174. package/src/__tests__/components/ProtocolStepEditor.state.test.ts +165 -0
  175. package/src/__tests__/components/ProtocolStepParameterField.test.ts +44 -0
  176. package/src/__tests__/components/ReagentList.presentation.test.ts +68 -0
  177. package/src/__tests__/components/SampleSelector.colors.test.ts +49 -0
  178. package/src/__tests__/components/SampleSelector.drag.test.ts +100 -0
  179. package/src/__tests__/components/SampleSelector.groups.test.ts +81 -0
  180. package/src/__tests__/components/SampleSelector.selection.test.ts +70 -0
  181. package/src/__tests__/components/SampleSelector.test.ts +32 -0
  182. package/src/__tests__/components/SampleSelectorSampleRow.test.ts +37 -0
  183. package/src/__tests__/components/ScheduleCalendar.test.ts +44 -0
  184. package/src/__tests__/components/SettingsModal.schema.test.ts +97 -0
  185. package/src/__tests__/components/WellPlate.colors.test.ts +28 -0
  186. package/src/__tests__/components/WellPlate.conditions.test.ts +68 -0
  187. package/src/__tests__/components/WellPlate.geometry.test.ts +54 -0
  188. package/src/__tests__/components/WellPlate.interaction.test.ts +171 -0
  189. package/src/__tests__/components/WellPlate.legend.test.ts +13 -0
  190. package/src/__tests__/components/WellPlate.rendering.test.ts +122 -0
  191. package/src/__tests__/components/WellPlate.sampleDrop.test.ts +70 -0
  192. package/src/__tests__/composables/autoGroup/classify.test.ts +107 -0
  193. package/src/__tests__/composables/autoGroup/columns.test.ts +135 -0
  194. package/src/__tests__/composables/autoGroup/compose.test.ts +227 -0
  195. package/src/__tests__/composables/autoGroup/cooccurrence.test.ts +91 -0
  196. package/src/__tests__/composables/autoGroup/fingerprint.test.ts +50 -0
  197. package/src/__tests__/composables/autoGroup/integration.test.ts +79 -0
  198. package/src/__tests__/composables/autoGroup/template.test.ts +70 -0
  199. package/src/__tests__/composables/autoGroup/tokenize.test.ts +33 -0
  200. package/src/__tests__/composables/useAutoGroup.test.ts +129 -625
  201. package/src/__tests__/composables/useAutoGroupInputSources.test.ts +107 -0
  202. package/src/__tests__/composables/useControlSchema.test.ts +23 -0
  203. package/src/__tests__/composables/useScheduleCalendarLayout.test.ts +89 -0
  204. package/src/__tests__/docs/extractDocsComponents.test.ts +142 -0
  205. package/src/__tests__/docs/extractDocsExports.test.ts +77 -0
  206. package/src/__tests__/docs/extractDocsParsing.test.ts +69 -0
  207. package/src/__tests__/docs/extractDocsTemplates.test.ts +54 -0
  208. package/src/__tests__/docs/extractDocsTheme.test.ts +89 -0
  209. package/src/__tests__/docs/frontendDocsCatalog.test.ts +1 -1
  210. package/src/__tests__/fixtures/auto-group/mixed-lc-ms-batch.txt +187 -0
  211. package/src/components/AppSidebar.vue +2 -6
  212. package/src/components/AppTopBar.navigation.ts +62 -0
  213. package/src/components/AppTopBar.vue +17 -44
  214. package/src/components/AutoGroupModal.story.vue +50 -0
  215. package/src/components/AutoGroupModal.vue +441 -158
  216. package/src/components/ControlWorkspaceView.vue +2 -6
  217. package/src/components/DoseCalculator.vue +13 -73
  218. package/src/components/DoseCalculatorVolumeField.vue +61 -0
  219. package/src/components/ExperimentTimeline.vue +6 -31
  220. package/src/components/FormBuilder.vue +2 -7
  221. package/src/components/PlateMapEditor.vue +32 -106
  222. package/src/components/PluginWorkspaceView.controls.ts +182 -0
  223. package/src/components/PluginWorkspaceView.navigation.ts +106 -0
  224. package/src/components/PluginWorkspaceView.props.ts +174 -0
  225. package/src/components/PluginWorkspaceView.shell.ts +66 -0
  226. package/src/components/PluginWorkspaceView.vue +85 -404
  227. package/src/components/ProtocolStep.presentation.ts +31 -0
  228. package/src/components/ProtocolStepEditor.state.ts +104 -0
  229. package/src/components/ProtocolStepEditor.vue +48 -179
  230. package/src/components/ProtocolStepParameterField.vue +134 -0
  231. package/src/components/ReagentList.presentation.ts +105 -0
  232. package/src/components/ReagentList.vue +16 -79
  233. package/src/components/SampleSelector.colors.ts +43 -0
  234. package/src/components/SampleSelector.drag.ts +164 -0
  235. package/src/components/SampleSelector.groups.ts +109 -0
  236. package/src/components/SampleSelector.selection.ts +103 -0
  237. package/src/components/SampleSelector.vue +82 -349
  238. package/src/components/SampleSelectorSampleRow.vue +64 -0
  239. package/src/components/ScheduleCalendar.vue +44 -199
  240. package/src/components/SettingsModal.schema.ts +71 -0
  241. package/src/components/SettingsModal.vue +16 -46
  242. package/src/components/WellPlate.colors.ts +56 -0
  243. package/src/components/WellPlate.conditions.ts +100 -0
  244. package/src/components/WellPlate.geometry.ts +91 -0
  245. package/src/components/WellPlate.interaction.ts +272 -0
  246. package/src/components/WellPlate.legend.ts +8 -0
  247. package/src/components/WellPlate.rendering.ts +105 -0
  248. package/src/components/WellPlate.sampleDrop.ts +73 -0
  249. package/src/components/WellPlate.vue +102 -550
  250. package/src/components/internal/PlateMapEditorToolbarInternal.vue +128 -0
  251. package/src/composables/autoGroup/classKey.ts +5 -0
  252. package/src/composables/autoGroup/classify.ts +205 -0
  253. package/src/composables/autoGroup/colors.ts +6 -0
  254. package/src/composables/autoGroup/columns.ts +226 -0
  255. package/src/composables/autoGroup/compose.ts +156 -0
  256. package/src/composables/autoGroup/cooccurrence.ts +46 -0
  257. package/src/composables/autoGroup/csv-shim.ts +44 -0
  258. package/src/composables/autoGroup/fingerprint.ts +49 -0
  259. package/src/composables/autoGroup/index.ts +20 -0
  260. package/src/composables/autoGroup/replicatePreGroup.ts +90 -0
  261. package/src/composables/autoGroup/template.ts +126 -0
  262. package/src/composables/autoGroup/tokenize.ts +41 -0
  263. package/src/composables/autoGroup/vocab.json +67 -0
  264. package/src/composables/autoGroupConstants.ts +4 -0
  265. package/src/composables/autoGroupGrouping.ts +148 -0
  266. package/src/composables/controlComponentBindings.ts +1 -1
  267. package/src/composables/controlSchemaAdapters.ts +1 -1
  268. package/src/composables/controlSchemaDoseDesign.ts +215 -0
  269. package/src/composables/controlSchemaFormFields.ts +1 -1
  270. package/src/composables/controlSchemaLayout.ts +1 -1
  271. package/src/composables/controlSchemaModel.ts +163 -0
  272. package/src/composables/controlSchemaNormalize.ts +1 -1
  273. package/src/composables/controlSchemaTypes.ts +364 -0
  274. package/src/composables/controlWorkspaceOptions.ts +1 -1
  275. package/src/composables/formBuilderSchema.ts +153 -0
  276. package/src/composables/pluginEndpointBuilder.ts +203 -0
  277. package/src/composables/protocolTemplateCatalog.ts +325 -0
  278. package/src/composables/useAutoGroup.ts +395 -549
  279. package/src/composables/useAutoGroupInputSources.ts +147 -0
  280. package/src/composables/useBioTemplateControls.ts +1 -1
  281. package/src/composables/useBioTemplatePresetWorkspace.ts +1 -1
  282. package/src/composables/useBioTemplateWorkspace.ts +1 -1
  283. package/src/composables/useControlSchema.ts +21 -692
  284. package/src/composables/useControlWorkspace.ts +7 -13
  285. package/src/composables/useForm.ts +5 -187
  286. package/src/composables/useFormBuilder.ts +11 -153
  287. package/src/composables/useFormValidation.ts +154 -0
  288. package/src/composables/usePluginClient.ts +10 -193
  289. package/src/composables/useProtocolTemplates.ts +10 -328
  290. package/src/composables/useScheduleCalendarLayout.ts +287 -0
  291. package/src/styles/components/auto-group-modal.css +248 -310
  292. package/src/templates/controlSchemaTypes.ts +1 -1
  293. package/src/templates/templateAdapterTypes.ts +58 -0
  294. package/src/templates/templateCreateOptions.ts +208 -0
  295. package/src/templates/templateQpcrTypes.ts +48 -0
  296. package/src/templates/types.ts +79 -275
  297. package/src/types/auto-group.ts +107 -9
  298. package/src/types/componentLabTypes.ts +235 -0
  299. package/src/types/componentWorkflowTypes.ts +190 -0
  300. package/src/types/components.ts +74 -424
  301. package/dist/components-DafPc4rM.js.map +0 -1
  302. package/dist/composables-BMkPQhVK.js.map +0 -1
  303. package/dist/templates-bUAWMn5L.js.map +0 -1
  304. package/dist/useProtocolTemplates-QZtHFFH2.js.map +0 -1
@@ -7,28 +7,98 @@ export interface OutlierInfo {
7
7
  fieldCount: number;
8
8
  action: OutlierAction;
9
9
  }
10
+ export interface MetadataRow {
11
+ sampleName: string;
12
+ fields: Record<string, string>;
13
+ group: string;
14
+ }
15
+ export interface ParsedCsvData {
16
+ columns: string[];
17
+ rows: Record<string, string>[];
18
+ sampleColumn: string;
19
+ delimiter: string;
20
+ }
21
+ export type SampleClassKind = 'biological' | 'iqc' | 'eqc' | 'standard' | 'spike-in' | 'stock' | 'blank' | 'unknown';
22
+ export type ClassDisposition = 'group' | 'overlay' | 'exclude';
23
+ export interface SampleClass {
24
+ kind: SampleClassKind;
25
+ label: string;
26
+ subKind?: string;
27
+ members: number[];
28
+ classTagPositions: number[];
29
+ disposition: ClassDisposition;
30
+ }
31
+ export type ColumnRole = 'constant' | 'factor' | 'replicate' | 'run-order' | 'numeric' | 'class-tag' | 'ignore';
32
+ export interface NumericParse {
33
+ value: number;
34
+ unit: string;
35
+ raw: string;
36
+ }
37
+ export interface NumericBinning {
38
+ mode: 'discrete' | 'binned';
39
+ edges?: number[];
40
+ labels?: string[];
41
+ }
42
+ export interface ValueOps {
43
+ alias?: Record<string, string>;
44
+ exclude?: string[];
45
+ }
10
46
  export interface ColumnInfo {
11
47
  index: number;
12
48
  name: string;
49
+ sourceIndices: number[];
13
50
  uniqueValues: string[];
14
51
  cardinality: number;
52
+ /** Legacy field, retained alongside `role` during the shim window. */
15
53
  type?: 'prefix' | 'suffix';
54
+ role?: ColumnRole;
55
+ numeric?: {
56
+ byValue: Record<string, NumericParse>;
57
+ };
58
+ binning?: NumericBinning;
59
+ ops?: ValueOps;
16
60
  /** Original CSV column header — used for row lookups when name is renamed */
17
61
  originalName?: string;
62
+ displayName?: string;
18
63
  }
19
- export interface MetadataRow {
20
- sampleName: string;
21
- fields: Record<string, string>;
22
- group: string;
64
+ export interface ClassSchema {
65
+ classKind: SampleClassKind;
66
+ subKind?: string;
67
+ columns: ColumnInfo[];
68
+ groupBy: number[];
69
+ replicateColumn?: number;
70
+ }
71
+ export interface MergeSuggestion {
72
+ classKind: SampleClassKind;
73
+ subKind?: string;
74
+ columnIndices: number[];
75
+ proposedName: string;
76
+ confidence: number;
23
77
  }
24
78
  export interface AutoGroupResult {
79
+ /** All emitted groups, experimental + overlay concatenated for source compat. */
25
80
  groups: SampleGroup[];
81
+ /** Class disposition === 'group' only. */
82
+ experimentalGroups?: SampleGroup[];
83
+ /** Class disposition === 'overlay' only. */
84
+ qcGroups?: SampleGroup[];
26
85
  metadata: MetadataRow[];
27
86
  excludedSamples: string[];
87
+ schemas?: ClassSchema[];
88
+ fingerprint?: SchemaFingerprint;
28
89
  }
29
- export interface ParsedCsvData {
30
- columns: string[];
31
- rows: Record<string, string>[];
32
- sampleColumn: string;
33
- delimiter: string;
90
+ export interface SchemaFingerprint {
91
+ version: 1;
92
+ classes: Array<{
93
+ kind: SampleClassKind;
94
+ subKind?: string;
95
+ columns: Array<{
96
+ name: string;
97
+ role: ColumnRole;
98
+ sourceIndices: number[];
99
+ binning?: NumericBinning;
100
+ ops?: ValueOps;
101
+ }>;
102
+ groupBy: number[];
103
+ }>;
34
104
  }
@@ -0,0 +1,161 @@
1
+ export type WellPlateFormat = 6 | 12 | 24 | 48 | 54 | 96 | 384;
2
+ export type WellState = 'empty' | 'filled' | 'selected' | 'disabled';
3
+ export type WellPlateSelectionMode = 'none' | 'single' | 'multiple' | 'rectangle' | 'drag';
4
+ export type WellPlateSize = 'sm' | 'md' | 'lg' | 'xl' | 'fill';
5
+ export type WellShape = 'circle' | 'rounded';
6
+ export interface Well {
7
+ id: string;
8
+ row: number;
9
+ col: number;
10
+ state: WellState;
11
+ sampleType?: string;
12
+ value?: number;
13
+ metadata?: Record<string, unknown>;
14
+ }
15
+ export type HeatmapColorScale = 'viridis' | 'plasma' | 'turbo' | 'custom';
16
+ export interface HeatmapConfig {
17
+ enabled: boolean;
18
+ min?: number;
19
+ max?: number;
20
+ colorScale?: HeatmapColorScale;
21
+ customColors?: string[];
22
+ showLegend?: boolean;
23
+ }
24
+ export type SlotPosition = 'R' | 'G' | 'B' | 'Y';
25
+ export interface WellExtendedData {
26
+ label?: string;
27
+ injectionVolume?: number;
28
+ injectionCount?: number;
29
+ customMethod?: string | null;
30
+ }
31
+ export interface WellEditData {
32
+ wellId: string;
33
+ label: string;
34
+ sampleType: string;
35
+ injectionVolume: number;
36
+ injectionCount: number;
37
+ customMethod: string;
38
+ }
39
+ export type WellEditField = 'label' | 'sampleType' | 'injectionVolume' | 'injectionCount' | 'customMethod';
40
+ export interface WellSampleDropData {
41
+ id?: string;
42
+ sampleName?: string;
43
+ label?: string;
44
+ sampleType?: string;
45
+ injectionVolume?: number;
46
+ injectionCount?: number;
47
+ customMethod?: string | null;
48
+ metadata?: Record<string, unknown>;
49
+ raw?: unknown;
50
+ }
51
+ export interface WellSampleDropContext {
52
+ wellId: string;
53
+ event: DragEvent;
54
+ }
55
+ export type WellSampleDropParser = (event: DragEvent, context: WellSampleDropContext) => WellSampleDropData | null | undefined;
56
+ export interface WellLegendItem {
57
+ type: string;
58
+ label: string;
59
+ color: string;
60
+ }
61
+ export interface PlateCondition {
62
+ label: string;
63
+ color: string;
64
+ concentrations: number[];
65
+ unit?: string;
66
+ }
67
+ export interface ColumnCondition extends PlateCondition {
68
+ cols: number[];
69
+ }
70
+ export interface RowCondition extends PlateCondition {
71
+ rows: string[];
72
+ }
73
+ export interface Rack {
74
+ id: string;
75
+ name: string;
76
+ format: WellPlateFormat;
77
+ slot: SlotPosition;
78
+ injectionVolume: number;
79
+ wells: Record<string, Partial<Well>>;
80
+ }
81
+ export interface RackSampleDropContext {
82
+ rack: Rack;
83
+ rackId: string;
84
+ wellId: string;
85
+ event: DragEvent;
86
+ }
87
+ export type RackSampleDropMapper = (data: WellSampleDropData, context: RackSampleDropContext) => WellEditData | null | undefined;
88
+ export interface SampleType {
89
+ id: string;
90
+ name: string;
91
+ color?: string;
92
+ count?: number;
93
+ description?: string;
94
+ }
95
+ export interface PlateMap {
96
+ id: string;
97
+ name: string;
98
+ format: WellPlateFormat;
99
+ wells: Record<string, Well>;
100
+ }
101
+ export interface PlateMapEditorState {
102
+ plates: PlateMap[];
103
+ activePlateId: string;
104
+ samples: SampleType[];
105
+ selectedWells: string[];
106
+ activeSampleId?: string;
107
+ }
108
+ export type ProtocolStepType = 'incubation' | 'wash' | 'addition' | 'measurement' | 'transfer' | 'centrifuge' | 'mix' | 'custom';
109
+ export type ProtocolStepStatus = 'pending' | 'in_progress' | 'completed' | 'failed' | 'skipped';
110
+ export interface ProtocolStep {
111
+ id: string;
112
+ type: ProtocolStepType;
113
+ name: string;
114
+ description?: string;
115
+ duration?: number;
116
+ status: ProtocolStepStatus;
117
+ parameters?: Record<string, unknown>;
118
+ order: number;
119
+ }
120
+ export interface SampleGroup {
121
+ name: string;
122
+ color: string;
123
+ samples: string[];
124
+ }
125
+ export interface GroupItem {
126
+ name: string;
127
+ color: string;
128
+ count: number;
129
+ }
130
+ export type FileUploaderMode = 'file' | 'folder';
131
+ export interface MoleculeData {
132
+ smiles: string;
133
+ molfile: string;
134
+ }
135
+ export type StorageCondition = 'RT' | '4C' | '-20C' | '-80C';
136
+ export type ReagentColumn = 'name' | 'catalog' | 'lot' | 'expiry' | 'storage' | 'location' | 'stock' | 'supplier';
137
+ export interface Reagent {
138
+ id: string;
139
+ name: string;
140
+ catalogNumber?: string;
141
+ lotNumber?: string;
142
+ expiryDate?: Date | string;
143
+ storageCondition?: StorageCondition;
144
+ location?: string;
145
+ stockLevel?: number;
146
+ stockUnit?: string;
147
+ supplier?: string;
148
+ url?: string;
149
+ }
150
+ export type TreeNodeType = 'study' | 'experiment' | 'plate' | 'sample' | 'cell_line' | 'passage' | 'clone' | 'treatment' | 'folder' | 'custom';
151
+ export type BadgeVariant = 'default' | 'success' | 'warning' | 'error';
152
+ export interface TreeNode {
153
+ id: string;
154
+ label: string;
155
+ type?: TreeNodeType;
156
+ icon?: string;
157
+ children?: TreeNode[];
158
+ metadata?: Record<string, unknown>;
159
+ badge?: string | number;
160
+ badgeVariant?: BadgeVariant;
161
+ }
@@ -0,0 +1,150 @@
1
+ import { UserSummary } from './platform';
2
+ export type NumberNotation = 'auto' | 'scientific' | 'engineering' | 'compact';
3
+ export interface UnitOption {
4
+ value: string;
5
+ label: string;
6
+ factor?: number;
7
+ group?: string;
8
+ }
9
+ export interface WizardStep {
10
+ id: string;
11
+ label: string;
12
+ description?: string;
13
+ icon?: string;
14
+ optional?: boolean;
15
+ }
16
+ export type WizardStepState = 'pending' | 'active' | 'completed' | 'disabled';
17
+ export type AuditEntryType = 'create' | 'update' | 'delete' | 'system';
18
+ export interface AuditEntry {
19
+ id: string;
20
+ type: AuditEntryType;
21
+ action: string;
22
+ detail?: string;
23
+ user?: string;
24
+ timestamp: Date | string;
25
+ metadata?: Record<string, unknown>;
26
+ }
27
+ export type BatchItemStatus = 'pending' | 'processing' | 'completed' | 'error' | 'skipped';
28
+ export interface BatchItem {
29
+ id: string;
30
+ label: string;
31
+ status: BatchItemStatus;
32
+ progress?: number;
33
+ message?: string;
34
+ }
35
+ export interface BatchSummary {
36
+ total: number;
37
+ completed: number;
38
+ processing: number;
39
+ error: number;
40
+ pending: number;
41
+ skipped: number;
42
+ percent: number;
43
+ }
44
+ export type TimePickerFormat = '12h' | '24h';
45
+ export interface TimeRange {
46
+ start: string;
47
+ end: string;
48
+ }
49
+ export type ScheduleView = 'day' | 'week' | 'month';
50
+ export type ScheduleEventStatus = 'confirmed' | 'pending' | 'cancelled' | 'in-progress';
51
+ export interface ScheduleEvent {
52
+ id: string;
53
+ start: string;
54
+ end: string;
55
+ title: string;
56
+ color?: string;
57
+ status?: ScheduleEventStatus;
58
+ draggable?: boolean;
59
+ resizable?: boolean;
60
+ metadata?: Record<string, unknown>;
61
+ }
62
+ export interface ScheduleBlockedSlot {
63
+ start: string;
64
+ end: string;
65
+ label?: string;
66
+ }
67
+ export interface ScheduleSlotContext {
68
+ date: Date;
69
+ hour: number;
70
+ minute: number;
71
+ }
72
+ export interface ScheduleEventCreateContext {
73
+ start: Date;
74
+ end: Date;
75
+ }
76
+ export interface ScheduleEventUpdateContext {
77
+ event: ScheduleEvent;
78
+ newStart: Date;
79
+ newEnd: Date;
80
+ }
81
+ export interface SummarySectionItem {
82
+ label: string;
83
+ metadata?: Record<string, unknown>;
84
+ item_count: number;
85
+ item_key: string;
86
+ columns: string[];
87
+ rows: Record<string, unknown>[];
88
+ }
89
+ export interface SummarySection {
90
+ key: string;
91
+ label: string;
92
+ type: 'table' | 'group';
93
+ /** Group sections: list of group items with embedded tables */
94
+ items?: SummarySectionItem[];
95
+ /** Table sections: flat table columns and rows */
96
+ columns?: string[];
97
+ rows?: Record<string, unknown>[];
98
+ row_count?: number;
99
+ }
100
+ export interface SummaryData {
101
+ metadata: Record<string, unknown>;
102
+ sections: SummarySection[];
103
+ }
104
+ export type ResourceStatus = 'available' | 'in-use' | 'maintenance' | 'offline';
105
+ export interface ResourceSpec {
106
+ label: string;
107
+ value: string;
108
+ }
109
+ export type ExperimentStatus = 'planned' | 'ongoing' | 'completed' | 'cancelled';
110
+ export type DatePreset = 'last_7_days' | 'last_30_days' | 'last_90_days';
111
+ export type ExperimentSortField = 'created_at' | 'updated_at' | 'name' | 'status';
112
+ export interface ExperimentTypeOption {
113
+ value: string;
114
+ label: string;
115
+ color?: string;
116
+ }
117
+ export interface ExperimentSummary {
118
+ id: number;
119
+ experiment_code?: string;
120
+ name: string;
121
+ status: ExperimentStatus;
122
+ experiment_type: string;
123
+ project?: string;
124
+ project_id?: number;
125
+ project_name?: string;
126
+ notes?: string;
127
+ tags?: Record<string, unknown>;
128
+ created_at: string;
129
+ updated_at: string;
130
+ created_by?: number;
131
+ created_by_user?: UserSummary;
132
+ has_design_data: boolean;
133
+ }
134
+ export interface ExperimentListResponse {
135
+ experiments: ExperimentSummary[];
136
+ total: number;
137
+ }
138
+ export interface ExperimentFilters {
139
+ search?: string;
140
+ status?: ExperimentStatus | null;
141
+ project?: string | null;
142
+ experimentType?: string | null;
143
+ datePreset?: DatePreset | null;
144
+ }
145
+ export type FitState = 'idle' | 'running' | 'completed' | 'error';
146
+ export interface FitResultSummary {
147
+ label: string;
148
+ value: string | number;
149
+ variant?: 'default' | 'success' | 'warning' | 'error';
150
+ }