@morscherlab/mint-sdk 1.0.0-beta.2 → 1.0.0-beta.4

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 (427) hide show
  1. package/README.md +225 -6
  2. package/dist/__tests__/components/ActionItem.test.d.ts +1 -0
  3. package/dist/__tests__/components/AppAvatarMenu.test.d.ts +1 -0
  4. package/dist/__tests__/components/AppPageSelector.test.d.ts +1 -0
  5. package/dist/__tests__/components/AppPillNav.test.d.ts +1 -0
  6. package/dist/__tests__/components/AppPluginSwitcher.test.d.ts +1 -0
  7. package/dist/__tests__/components/AppToastContainer.test.d.ts +1 -0
  8. package/dist/__tests__/components/BaseRadioGroup.test.d.ts +1 -0
  9. package/dist/__tests__/components/BaseSelect.test.d.ts +1 -0
  10. package/dist/__tests__/components/BaseTabs.test.d.ts +1 -0
  11. package/dist/__tests__/components/BatchProgressList.test.d.ts +1 -0
  12. package/dist/__tests__/components/BioTemplateExperimentWorkspaceView.test.d.ts +1 -0
  13. package/dist/__tests__/components/BioTemplatePackWorkspaceView.test.d.ts +1 -0
  14. package/dist/__tests__/components/BioTemplatePresetWorkspaceView.test.d.ts +1 -0
  15. package/dist/__tests__/components/BioTemplateRenderer.test.d.ts +1 -0
  16. package/dist/__tests__/components/Breadcrumb.test.d.ts +1 -0
  17. package/dist/__tests__/components/CalendarGridPanel.test.d.ts +1 -0
  18. package/dist/__tests__/components/ComponentBindingRenderer.test.d.ts +1 -0
  19. package/dist/__tests__/components/ConcentrationInput.test.d.ts +1 -0
  20. package/dist/__tests__/components/ControlWorkspaceView.test.d.ts +1 -0
  21. package/dist/__tests__/components/DatePicker.test.d.ts +1 -0
  22. package/dist/__tests__/components/DateTimePicker.test.d.ts +1 -0
  23. package/dist/__tests__/components/DoseDesignWorkspaceView.test.d.ts +1 -0
  24. package/dist/__tests__/components/EmptyState.test.d.ts +1 -0
  25. package/dist/__tests__/components/ExperimentPopover.test.d.ts +1 -0
  26. package/dist/__tests__/components/FormBuilder.test.d.ts +1 -0
  27. package/dist/__tests__/components/GroupAssigner.test.d.ts +1 -0
  28. package/dist/__tests__/components/MultiSelect.test.d.ts +1 -0
  29. package/dist/__tests__/components/PluginWorkspaceView.test.d.ts +1 -0
  30. package/dist/__tests__/components/ProtocolStepEditor.test.d.ts +1 -0
  31. package/dist/__tests__/components/ReagentList.test.d.ts +1 -0
  32. package/dist/__tests__/components/SampleHierarchyTree.test.d.ts +1 -0
  33. package/dist/__tests__/components/SampleSelector.test.d.ts +1 -0
  34. package/dist/__tests__/components/SegmentedControl.test.d.ts +1 -0
  35. package/dist/__tests__/components/SettingsModal.test.d.ts +1 -0
  36. package/dist/__tests__/components/TagsInput.test.d.ts +1 -0
  37. package/dist/__tests__/components/ThemeToggle.test.d.ts +1 -0
  38. package/dist/__tests__/components/TimePicker.test.d.ts +1 -0
  39. package/dist/__tests__/composables/experiment-utils.test.d.ts +1 -0
  40. package/dist/__tests__/composables/useApi.test.d.ts +1 -0
  41. package/dist/__tests__/composables/useBioTemplatePackWorkspace.test.d.ts +1 -0
  42. package/dist/__tests__/composables/useBioTemplatePresetWorkspace.test.d.ts +1 -0
  43. package/dist/__tests__/composables/useBioTemplateWorkspace.test.d.ts +1 -0
  44. package/dist/__tests__/composables/useCalendarGrid.test.d.ts +1 -0
  45. package/dist/__tests__/composables/useControlSchema.test.d.ts +1 -0
  46. package/dist/__tests__/composables/useDebouncedWatch.test.d.ts +1 -0
  47. package/dist/__tests__/composables/useDropdownState.test.d.ts +1 -0
  48. package/dist/__tests__/composables/useEventListener.test.d.ts +1 -0
  49. package/dist/__tests__/composables/useExpansionSet.test.d.ts +1 -0
  50. package/dist/__tests__/composables/useExperimentData.test.d.ts +1 -0
  51. package/dist/__tests__/composables/useExperimentSelector.test.d.ts +1 -0
  52. package/dist/__tests__/composables/useGroupAssignment.test.d.ts +1 -0
  53. package/dist/__tests__/composables/useListSelection.test.d.ts +1 -0
  54. package/dist/__tests__/composables/usePluginClient.test.d.ts +1 -0
  55. package/dist/__tests__/composables/usePluginConfig.test.d.ts +1 -0
  56. package/dist/__tests__/composables/useRequestSyncState.test.d.ts +1 -0
  57. package/dist/__tests__/composables/useSampleGroups.test.d.ts +1 -0
  58. package/dist/__tests__/composables/useSelectionLimit.test.d.ts +1 -0
  59. package/dist/__tests__/composables/useSortedItems.test.d.ts +1 -0
  60. package/dist/__tests__/composables/useTemplateCollection.test.d.ts +1 -0
  61. package/dist/__tests__/composables/useTextSearch.test.d.ts +1 -0
  62. package/dist/__tests__/composables/useTheme.test.d.ts +1 -0
  63. package/dist/__tests__/composables/useTimeUtils.test.d.ts +1 -0
  64. package/dist/__tests__/docs/frontendDocsCatalog.test.d.ts +1 -0
  65. package/dist/__tests__/templates/templates.test.d.ts +1 -0
  66. package/dist/{auth-DsI0rQ7_.js → auth-QQj2kkze.js} +12 -5
  67. package/dist/auth-QQj2kkze.js.map +1 -0
  68. package/dist/components/AppAvatarMenu.vue.d.ts +2 -7
  69. package/dist/components/AppContainer.vue.d.ts +1 -1
  70. package/dist/components/AppLayout.vue.d.ts +20 -1
  71. package/dist/components/AppSidebar.vue.d.ts +111 -6
  72. package/dist/components/AppTopBar.vue.d.ts +35 -22
  73. package/dist/components/BaseButton.vue.d.ts +1 -1
  74. package/dist/components/BaseCheckbox.vue.d.ts +1 -1
  75. package/dist/components/BaseInput.vue.d.ts +2 -2
  76. package/dist/components/BasePill.vue.d.ts +2 -2
  77. package/dist/components/BaseRadioGroup.vue.d.ts +3 -3
  78. package/dist/components/BaseSelect.vue.d.ts +3 -3
  79. package/dist/components/BaseTabs.vue.d.ts +2 -2
  80. package/dist/components/BaseTextarea.vue.d.ts +1 -1
  81. package/dist/components/BaseToggle.vue.d.ts +1 -1
  82. package/dist/components/BioTemplateExperimentWorkspaceView.vue.d.ts +119 -0
  83. package/dist/components/BioTemplatePackWorkspaceView.vue.d.ts +93 -0
  84. package/dist/components/BioTemplatePresetWorkspaceView.vue.d.ts +87 -0
  85. package/dist/components/BioTemplateRenderer.vue.d.ts +29 -0
  86. package/dist/components/Breadcrumb.vue.d.ts +2 -2
  87. package/dist/components/Calendar.vue.d.ts +1 -1
  88. package/dist/components/CollapsibleCard.vue.d.ts +1 -1
  89. package/dist/components/ComponentBindingRenderer.vue.d.ts +44 -0
  90. package/dist/components/ConcentrationInput.vue.d.ts +2 -2
  91. package/dist/components/ConfirmDialog.vue.d.ts +2 -2
  92. package/dist/components/ControlWorkspaceView.vue.d.ts +147 -0
  93. package/dist/components/DatePicker.vue.d.ts +1 -1
  94. package/dist/components/DateTimePicker.vue.d.ts +3 -3
  95. package/dist/components/Divider.vue.d.ts +1 -1
  96. package/dist/components/DoseDesignWorkspaceView.vue.d.ts +149 -0
  97. package/dist/components/DropdownButton.vue.d.ts +3 -3
  98. package/dist/components/EmptyState.vue.d.ts +1 -2
  99. package/dist/components/ExperimentDataViewer.vue.d.ts +1 -1
  100. package/dist/components/ExperimentTimeline.vue.d.ts +2 -2
  101. package/dist/components/FileUploader.vue.d.ts +1 -1
  102. package/dist/components/FitPanel.vue.d.ts +1 -1
  103. package/dist/components/FormActions.vue.d.ts +4 -4
  104. package/dist/components/FormBuilder.vue.d.ts +31 -17
  105. package/dist/components/FormulaInput.vue.d.ts +2 -2
  106. package/dist/components/MoleculeInput.vue.d.ts +2 -2
  107. package/dist/components/MultiSelect.vue.d.ts +3 -3
  108. package/dist/components/NumberInput.vue.d.ts +1 -1
  109. package/dist/components/PlateMapEditor.vue.d.ts +1 -1
  110. package/dist/components/PluginWorkspaceView.vue.d.ts +310 -0
  111. package/dist/components/ProgressBar.vue.d.ts +1 -1
  112. package/dist/components/ProtocolStepEditor.vue.d.ts +3 -1
  113. package/dist/components/RackEditor.vue.d.ts +2 -2
  114. package/dist/components/SampleLegend.vue.d.ts +2 -2
  115. package/dist/components/ScheduleCalendar.vue.d.ts +2 -2
  116. package/dist/components/SegmentedControl.vue.d.ts +2 -2
  117. package/dist/components/SequenceInput.vue.d.ts +3 -3
  118. package/dist/components/SettingsModal.vue.d.ts +14 -6
  119. package/dist/components/StatusIndicator.vue.d.ts +1 -1
  120. package/dist/components/TagsInput.vue.d.ts +3 -2
  121. package/dist/components/TimePicker.vue.d.ts +3 -3
  122. package/dist/components/TimeRangeInput.vue.d.ts +1 -1
  123. package/dist/components/UnitInput.vue.d.ts +2 -2
  124. package/dist/components/WellPlate.vue.d.ts +6 -6
  125. package/dist/components/index.d.ts +9 -8
  126. package/dist/components/index.js +3 -3
  127. package/dist/components/{SettingsButton.vue.d.ts → internal/ActionItemInternal.vue.d.ts} +11 -9
  128. package/dist/components/{AppPageSelector.vue.d.ts → internal/AppPageSelectorInternal.vue.d.ts} +3 -6
  129. package/dist/components/{AppPillNav.vue.d.ts → internal/AppPillNavInternal.vue.d.ts} +4 -2
  130. package/dist/components/internal/CalendarGridPanelInternal.vue.d.ts +25 -0
  131. package/dist/components/{FormFieldRenderer.vue.d.ts → internal/FormFieldRendererInternal.vue.d.ts} +2 -2
  132. package/dist/components/{FormSection.vue.d.ts → internal/FormSectionRenderer.vue.d.ts} +7 -7
  133. package/dist/components/{WellEditPopup.vue.d.ts → internal/WellEditPopupInternal.vue.d.ts} +1 -1
  134. package/dist/{components-_XqPEhP9.js → components-BkGF4B4y.js} +9760 -8471
  135. package/dist/components-BkGF4B4y.js.map +1 -0
  136. package/dist/composables/experiment-utils.d.ts +8 -0
  137. package/dist/composables/index.d.ts +22 -5
  138. package/dist/composables/index.js +4 -3
  139. package/dist/composables/platformContextHelpers.d.ts +14 -0
  140. package/dist/composables/useAppExperiment.d.ts +31 -2
  141. package/dist/composables/useBioTemplateComponents.d.ts +22 -0
  142. package/dist/composables/useBioTemplateControls.d.ts +6 -0
  143. package/dist/composables/useBioTemplatePackWorkspace.d.ts +46 -0
  144. package/dist/composables/useBioTemplatePresetWorkspace.d.ts +75 -0
  145. package/dist/composables/useBioTemplateWorkspace.d.ts +51 -0
  146. package/dist/composables/useCalendarGrid.d.ts +26 -0
  147. package/dist/composables/useControlSchema.d.ts +343 -0
  148. package/dist/composables/useDebouncedWatch.d.ts +20 -0
  149. package/dist/composables/useDropdownState.d.ts +19 -0
  150. package/dist/composables/useEventListener.d.ts +13 -0
  151. package/dist/composables/useExpansionSet.d.ts +21 -0
  152. package/dist/composables/useExperimentData.d.ts +10 -0
  153. package/dist/composables/useExperimentSave.d.ts +31 -2
  154. package/dist/composables/useExperimentSelector.d.ts +20 -0
  155. package/dist/composables/useForm.d.ts +2 -0
  156. package/dist/composables/useGroupAssignment.d.ts +31 -0
  157. package/dist/composables/useListSelection.d.ts +35 -0
  158. package/dist/composables/usePlatformContext.d.ts +21 -3
  159. package/dist/composables/usePluginClient.d.ts +112 -0
  160. package/dist/composables/usePluginConfig.d.ts +12 -0
  161. package/dist/composables/useRequestSyncState.d.ts +34 -0
  162. package/dist/composables/useSampleGroups.d.ts +32 -0
  163. package/dist/composables/useSelectionLimit.d.ts +17 -0
  164. package/dist/composables/useSortedItems.d.ts +32 -0
  165. package/dist/composables/useTemplateCollection.d.ts +58 -0
  166. package/dist/composables/useTextSearch.d.ts +18 -0
  167. package/dist/composables/useTimeUtils.d.ts +8 -0
  168. package/dist/{composables-tiZqLu1M.js → composables-CHsME9H1.js} +240 -146
  169. package/dist/composables-CHsME9H1.js.map +1 -0
  170. package/dist/index.d.ts +6 -4
  171. package/dist/index.js +6 -5
  172. package/dist/install.d.ts +7 -2
  173. package/dist/install.js +2 -2
  174. package/dist/install.js.map +1 -1
  175. package/dist/stores/index.js +1 -1
  176. package/dist/stores/settings.d.ts +4 -1
  177. package/dist/styles.css +4746 -5514
  178. package/dist/templates/adapters.d.ts +43 -0
  179. package/dist/templates/builders.d.ts +63 -0
  180. package/dist/templates/catalog.d.ts +188 -0
  181. package/dist/templates/componentBindings.d.ts +71 -0
  182. package/dist/templates/controlSchemas.d.ts +25 -0
  183. package/dist/templates/index.d.ts +15 -0
  184. package/dist/templates/index.js +2 -0
  185. package/dist/templates/lookup.d.ts +4 -0
  186. package/dist/templates/packs.d.ts +18 -0
  187. package/dist/templates/presets.d.ts +90 -0
  188. package/dist/templates/types.d.ts +531 -0
  189. package/dist/templates-B5jmTWuk.js +9388 -0
  190. package/dist/templates-B5jmTWuk.js.map +1 -0
  191. package/dist/types/components.d.ts +26 -23
  192. package/dist/types/form-builder.d.ts +6 -8
  193. package/dist/types/index.d.ts +2 -2
  194. package/dist/types/platform.d.ts +7 -1
  195. package/dist/useScheduleDrag-BgzpQT53.js +4414 -0
  196. package/dist/useScheduleDrag-BgzpQT53.js.map +1 -0
  197. package/dist/utils/formModelSync.d.ts +5 -0
  198. package/dist/utils/items.d.ts +8 -0
  199. package/dist/utils/options.d.ts +6 -0
  200. package/dist/utils/pluginIcon.d.ts +9 -0
  201. package/package.json +7 -2
  202. package/src/__tests__/components/ActionItem.test.ts +99 -0
  203. package/src/__tests__/components/AppAvatarMenu.test.ts +27 -0
  204. package/src/__tests__/components/AppLayout.test.ts +44 -0
  205. package/src/__tests__/components/AppPageSelector.test.ts +134 -0
  206. package/src/__tests__/components/AppPillNav.test.ts +125 -0
  207. package/src/__tests__/components/AppPluginSwitcher.test.ts +44 -0
  208. package/src/__tests__/components/AppSidebar.test.ts +496 -0
  209. package/src/__tests__/components/AppToastContainer.test.ts +37 -0
  210. package/src/__tests__/components/AppTopBar.test.ts +455 -9
  211. package/src/__tests__/components/BaseRadioGroup.test.ts +25 -0
  212. package/src/__tests__/components/BaseSelect.test.ts +21 -0
  213. package/src/__tests__/components/BaseTabs.test.ts +25 -0
  214. package/src/__tests__/components/BatchProgressList.test.ts +52 -0
  215. package/src/__tests__/components/BioTemplateExperimentWorkspaceView.test.ts +159 -0
  216. package/src/__tests__/components/BioTemplatePackWorkspaceView.test.ts +175 -0
  217. package/src/__tests__/components/BioTemplatePresetWorkspaceView.test.ts +306 -0
  218. package/src/__tests__/components/BioTemplateRenderer.test.ts +71 -0
  219. package/src/__tests__/components/Breadcrumb.test.ts +23 -0
  220. package/src/__tests__/components/CalendarGridPanel.test.ts +36 -0
  221. package/src/__tests__/components/ComponentBindingRenderer.test.ts +161 -0
  222. package/src/__tests__/components/ConcentrationInput.test.ts +45 -0
  223. package/src/__tests__/components/ControlWorkspaceView.test.ts +1102 -0
  224. package/src/__tests__/components/DataFrame.test.ts +11 -0
  225. package/src/__tests__/components/DatePicker.test.ts +45 -0
  226. package/src/__tests__/components/DateTimePicker.test.ts +48 -0
  227. package/src/__tests__/components/DoseDesignWorkspaceView.test.ts +185 -0
  228. package/src/__tests__/components/DropdownButton.test.ts +23 -0
  229. package/src/__tests__/components/EmptyState.test.ts +23 -0
  230. package/src/__tests__/components/ExperimentPopover.test.ts +56 -0
  231. package/src/__tests__/components/FormBuilder.test.ts +296 -0
  232. package/src/__tests__/components/GroupAssigner.test.ts +30 -0
  233. package/src/__tests__/components/MultiSelect.test.ts +48 -0
  234. package/src/__tests__/components/PluginWorkspaceView.test.ts +548 -0
  235. package/src/__tests__/components/ProtocolStepEditor.test.ts +33 -0
  236. package/src/__tests__/components/ReagentList.test.ts +82 -0
  237. package/src/__tests__/components/SampleHierarchyTree.test.ts +53 -0
  238. package/src/__tests__/components/SampleSelector.test.ts +60 -0
  239. package/src/__tests__/components/SegmentedControl.test.ts +24 -0
  240. package/src/__tests__/components/SettingsModal.test.ts +296 -0
  241. package/src/__tests__/components/TagsInput.test.ts +75 -0
  242. package/src/__tests__/components/ThemeToggle.test.ts +47 -0
  243. package/src/__tests__/components/TimePicker.test.ts +38 -0
  244. package/src/__tests__/composables/experiment-utils.test.ts +30 -0
  245. package/src/__tests__/composables/useApi.test.ts +30 -0
  246. package/src/__tests__/composables/useAppExperiment.test.ts +100 -1
  247. package/src/__tests__/composables/useBioTemplatePackWorkspace.test.ts +125 -0
  248. package/src/__tests__/composables/useBioTemplatePresetWorkspace.test.ts +199 -0
  249. package/src/__tests__/composables/useBioTemplateWorkspace.test.ts +104 -0
  250. package/src/__tests__/composables/useCalendarGrid.test.ts +38 -0
  251. package/src/__tests__/composables/useControlSchema.test.ts +1033 -0
  252. package/src/__tests__/composables/useDebouncedWatch.test.ts +93 -0
  253. package/src/__tests__/composables/useDropdownState.test.ts +95 -0
  254. package/src/__tests__/composables/useEventListener.test.ts +116 -0
  255. package/src/__tests__/composables/useExpansionSet.test.ts +62 -0
  256. package/src/__tests__/composables/useExperimentData.test.ts +4 -0
  257. package/src/__tests__/composables/useExperimentSave.test.ts +203 -8
  258. package/src/__tests__/composables/useExperimentSelector.test.ts +164 -0
  259. package/src/__tests__/composables/useForm.test.ts +58 -0
  260. package/src/__tests__/composables/useFormBuilder.test.ts +77 -0
  261. package/src/__tests__/composables/useGroupAssignment.test.ts +73 -0
  262. package/src/__tests__/composables/useListSelection.test.ts +66 -0
  263. package/src/__tests__/composables/usePluginClient.test.ts +541 -0
  264. package/src/__tests__/composables/usePluginConfig.test.ts +5 -0
  265. package/src/__tests__/composables/useRequestSyncState.test.ts +92 -0
  266. package/src/__tests__/composables/useSampleGroups.test.ts +66 -0
  267. package/src/__tests__/composables/useSelectionLimit.test.ts +41 -0
  268. package/src/__tests__/composables/useSortedItems.test.ts +87 -0
  269. package/src/__tests__/composables/useTemplateCollection.test.ts +147 -0
  270. package/src/__tests__/composables/useTextSearch.test.ts +55 -0
  271. package/src/__tests__/composables/useTheme.test.ts +91 -0
  272. package/src/__tests__/composables/useTimeUtils.test.ts +35 -0
  273. package/src/__tests__/docs/frontendDocsCatalog.test.ts +324 -0
  274. package/src/__tests__/fixtures/templates/dose-response.json +81 -0
  275. package/src/__tests__/fixtures/templates/plate-map.json +54 -0
  276. package/src/__tests__/fixtures/templates/qpcr-plate.json +96 -0
  277. package/src/__tests__/fixtures/templates/sample-sheet.json +71 -0
  278. package/src/__tests__/templates/templates.test.ts +1055 -0
  279. package/src/components/AppAvatarMenu.vue +15 -69
  280. package/src/components/AppLayout.story.vue +64 -25
  281. package/src/components/AppLayout.vue +83 -2
  282. package/src/components/AppPluginSwitcher.vue +41 -145
  283. package/src/components/AppSidebar.story.vue +203 -1
  284. package/src/components/AppSidebar.vue +320 -25
  285. package/src/components/{ToastNotification.story.vue → AppToastContainer.story.vue} +6 -6
  286. package/src/components/{ToastNotification.vue → AppToastContainer.vue} +1 -1
  287. package/src/components/AppTopBar.story.vue +7 -33
  288. package/src/components/AppTopBar.vue +104 -300
  289. package/src/components/BaseModal.vue +3 -5
  290. package/src/components/BaseRadioGroup.vue +7 -3
  291. package/src/components/BaseSelect.vue +11 -7
  292. package/src/components/BaseTabs.vue +6 -4
  293. package/src/components/BatchProgressList.vue +5 -8
  294. package/src/components/BioTemplateExperimentWorkspaceView.story.vue +123 -0
  295. package/src/components/BioTemplateExperimentWorkspaceView.vue +343 -0
  296. package/src/components/BioTemplatePackWorkspaceView.story.vue +107 -0
  297. package/src/components/BioTemplatePackWorkspaceView.vue +177 -0
  298. package/src/components/BioTemplatePresetWorkspaceView.story.vue +163 -0
  299. package/src/components/BioTemplatePresetWorkspaceView.vue +401 -0
  300. package/src/components/BioTemplateRenderer.story.vue +57 -0
  301. package/src/components/BioTemplateRenderer.vue +57 -0
  302. package/src/components/Breadcrumb.vue +14 -8
  303. package/src/components/ComponentBindingRenderer.story.vue +57 -0
  304. package/src/components/ComponentBindingRenderer.vue +308 -0
  305. package/src/components/ConcentrationInput.vue +27 -64
  306. package/src/components/ControlWorkspaceView.story.vue +347 -0
  307. package/src/components/ControlWorkspaceView.vue +378 -0
  308. package/src/components/DataFrame.vue +34 -50
  309. package/src/components/DatePicker.vue +59 -192
  310. package/src/components/DateTimePicker.vue +50 -171
  311. package/src/components/DoseDesignWorkspaceView.story.vue +77 -0
  312. package/src/components/DoseDesignWorkspaceView.vue +255 -0
  313. package/src/components/DropdownButton.vue +14 -32
  314. package/src/components/EmptyState.vue +4 -2
  315. package/src/components/ExperimentPopover.vue +7 -28
  316. package/src/components/ExperimentSelectorModal.vue +6 -5
  317. package/src/components/FormBuilder.story.vue +190 -0
  318. package/src/components/FormBuilder.vue +124 -27
  319. package/src/components/GroupAssigner.vue +24 -56
  320. package/src/components/MultiSelect.vue +17 -12
  321. package/src/components/PlateMapEditor.vue +3 -8
  322. package/src/components/PluginIcon.vue +2 -22
  323. package/src/components/PluginWorkspaceView.story.vue +334 -0
  324. package/src/components/PluginWorkspaceView.vue +708 -0
  325. package/src/components/ProtocolStepEditor.vue +13 -22
  326. package/src/components/ReagentList.vue +25 -33
  327. package/src/components/SampleHierarchyTree.vue +12 -23
  328. package/src/components/SampleSelector.vue +42 -122
  329. package/src/components/SegmentedControl.vue +7 -3
  330. package/src/components/SettingsModal.story.vue +88 -1
  331. package/src/components/SettingsModal.vue +120 -29
  332. package/src/components/TagsInput.vue +29 -14
  333. package/src/components/ThemeToggle.vue +9 -7
  334. package/src/components/TimePicker.vue +19 -41
  335. package/src/components/Tooltip.vue +7 -12
  336. package/src/components/WellPlate.vue +6 -12
  337. package/src/components/index.ts +9 -8
  338. package/src/components/internal/ActionItemInternal.vue +82 -0
  339. package/src/components/internal/AppPageSelectorInternal.vue +128 -0
  340. package/src/components/internal/AppPillNavInternal.vue +194 -0
  341. package/src/components/internal/CalendarGridPanelInternal.vue +120 -0
  342. package/src/components/{FormFieldRenderer.vue → internal/FormFieldRendererInternal.vue} +4 -12
  343. package/src/components/{FormSection.vue → internal/FormSectionRenderer.vue} +6 -18
  344. package/src/components/{WellEditPopup.vue → internal/WellEditPopupInternal.vue} +5 -10
  345. package/src/composables/experiment-utils.ts +26 -0
  346. package/src/composables/index.ts +229 -3
  347. package/src/composables/platformContextHelpers.ts +74 -0
  348. package/src/composables/useApi.ts +9 -2
  349. package/src/composables/useAppExperiment.ts +85 -13
  350. package/src/composables/useBioTemplateComponents.ts +105 -0
  351. package/src/composables/useBioTemplateControls.ts +41 -0
  352. package/src/composables/useBioTemplatePackWorkspace.ts +185 -0
  353. package/src/composables/useBioTemplatePresetWorkspace.ts +326 -0
  354. package/src/composables/useBioTemplateWorkspace.ts +141 -0
  355. package/src/composables/useCalendarGrid.ts +140 -0
  356. package/src/composables/useControlSchema.ts +1362 -0
  357. package/src/composables/useDebouncedWatch.ts +119 -0
  358. package/src/composables/useDropdownState.ts +83 -0
  359. package/src/composables/useEventListener.ts +111 -0
  360. package/src/composables/useExpansionSet.ts +117 -0
  361. package/src/composables/useExperimentData.ts +20 -11
  362. package/src/composables/useExperimentSave.ts +202 -50
  363. package/src/composables/useExperimentSelector.ts +86 -72
  364. package/src/composables/useForm.ts +49 -4
  365. package/src/composables/useFormBuilder.ts +93 -42
  366. package/src/composables/useGroupAssignment.ts +148 -0
  367. package/src/composables/useListSelection.ts +158 -0
  368. package/src/composables/usePluginClient.ts +466 -0
  369. package/src/composables/usePluginConfig.ts +34 -13
  370. package/src/composables/useRequestSyncState.ts +126 -0
  371. package/src/composables/useSampleGroups.ts +126 -0
  372. package/src/composables/useSelectionLimit.ts +57 -0
  373. package/src/composables/useSortedItems.ts +118 -0
  374. package/src/composables/useTemplateCollection.ts +229 -0
  375. package/src/composables/useTextSearch.ts +60 -0
  376. package/src/composables/useTheme.ts +2 -28
  377. package/src/composables/useTimeUtils.ts +26 -2
  378. package/src/composables/useWellPlateEditor.ts +13 -9
  379. package/src/index.ts +11 -348
  380. package/src/install.ts +11 -4
  381. package/src/stores/settings.ts +13 -9
  382. package/src/styles/components/app-layout.css +82 -0
  383. package/src/styles/components/app-page-selector.css +23 -0
  384. package/src/styles/components/app-pill-nav.css +77 -0
  385. package/src/styles/components/app-sidebar.css +119 -0
  386. package/src/styles/components/app-top-bar.css +0 -201
  387. package/src/styles/components/concentration-input.css +3 -142
  388. package/src/styles/components/empty-state.css +0 -16
  389. package/src/styles/components/theme-toggle.css +3 -66
  390. package/src/styles/index.css +0 -2
  391. package/src/templates/adapters.ts +785 -0
  392. package/src/templates/builders.ts +2149 -0
  393. package/src/templates/catalog.ts +245 -0
  394. package/src/templates/componentBindings.ts +653 -0
  395. package/src/templates/controlSchemas.ts +718 -0
  396. package/src/templates/index.ts +318 -0
  397. package/src/templates/lookup.ts +18 -0
  398. package/src/templates/packs.ts +156 -0
  399. package/src/templates/presets.ts +146 -0
  400. package/src/templates/types.ts +668 -0
  401. package/src/types/components.ts +39 -27
  402. package/src/types/form-builder.ts +7 -2
  403. package/src/types/index.ts +13 -3
  404. package/src/types/platform.ts +7 -1
  405. package/src/utils/formModelSync.ts +52 -0
  406. package/src/utils/items.ts +28 -0
  407. package/src/utils/options.ts +23 -0
  408. package/src/utils/pluginIcon.ts +30 -0
  409. package/dist/__tests__/composables/usePluginApi.test.d.ts +0 -13
  410. package/dist/auth-DsI0rQ7_.js.map +0 -1
  411. package/dist/components/GroupingModal.vue.d.ts +0 -12
  412. package/dist/components-_XqPEhP9.js.map +0 -1
  413. package/dist/composables/usePluginApi.d.ts +0 -29
  414. package/dist/composables-tiZqLu1M.js.map +0 -1
  415. package/dist/useScheduleDrag-CA9sGNJG.js +0 -7181
  416. package/dist/useScheduleDrag-CA9sGNJG.js.map +0 -1
  417. package/src/__tests__/composables/usePluginApi.test.ts +0 -81
  418. package/src/components/AppPageSelector.vue +0 -159
  419. package/src/components/AppPillNav.vue +0 -66
  420. package/src/components/GroupingModal.story.vue +0 -52
  421. package/src/components/GroupingModal.vue +0 -422
  422. package/src/components/SettingsButton.story.vue +0 -58
  423. package/src/components/SettingsButton.vue +0 -76
  424. package/src/composables/usePluginApi.ts +0 -39
  425. package/src/styles/components/grouping-modal.css +0 -323
  426. package/src/styles/components/settings-button.css +0 -94
  427. /package/dist/components/{ToastNotification.vue.d.ts → AppToastContainer.vue.d.ts} +0 -0
@@ -5,6 +5,16 @@ interface Props {
5
5
  sidebarWidth?: string;
6
6
  /** When true, topbar/sidebar/main render as floating cards with gaps */
7
7
  floating?: boolean;
8
+ /** Convert the sidebar into a mobile overlay with built-in toggle and backdrop below 1024px. */
9
+ responsiveSidebar?: boolean;
10
+ /** Controlled mobile sidebar open state. Desktop sidebar remains visible. */
11
+ sidebarOpen?: boolean;
12
+ /** Initial mobile sidebar open state when sidebarOpen is uncontrolled. */
13
+ defaultSidebarOpen?: boolean;
14
+ /** Accessible label for the mobile sidebar toggle. */
15
+ sidebarToggleLabel?: string;
16
+ /** Accessible label used when the mobile sidebar is open. */
17
+ sidebarCloseLabel?: string;
8
18
  }
9
19
  declare function __VLS_template(): {
10
20
  attrs: Partial<{}>;
@@ -17,10 +27,19 @@ declare function __VLS_template(): {
17
27
  rootEl: HTMLDivElement;
18
28
  };
19
29
  type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
20
- declare const __VLS_component: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<Props> & Readonly<{}>, {
30
+ declare const __VLS_component: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
31
+ "update:sidebarOpen": (value: boolean) => any;
32
+ }, string, import('vue').PublicProps, Readonly<Props> & Readonly<{
33
+ "onUpdate:sidebarOpen"?: ((value: boolean) => any) | undefined;
34
+ }>, {
21
35
  floating: boolean;
22
36
  sidebarPosition: "left" | "right";
23
37
  sidebarWidth: string;
38
+ responsiveSidebar: boolean;
39
+ sidebarOpen: boolean;
40
+ defaultSidebarOpen: boolean;
41
+ sidebarToggleLabel: string;
42
+ sidebarCloseLabel: string;
24
43
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
25
44
  declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
26
45
  export default _default;
@@ -1,24 +1,94 @@
1
- import { SidebarToolSection } from '../types';
1
+ import { PillNavItem, SidebarToolSection } from '../types';
2
+ import { FormEnhancements, FormSchema } from '../types/form-builder';
3
+ import { ControlModel, ControlModelBinding, ControlSchema, ControlWorkspaceOptions } from '../composables/useControlSchema';
2
4
  interface Props {
5
+ /** Optional chrome title rendered above generated sections. */
6
+ title?: string;
7
+ /** Optional secondary chrome copy rendered below title. */
8
+ subtitle?: string;
9
+ /** Optional compact badge/count rendered in the chrome header. */
10
+ badge?: string | number;
11
+ /** Visual preset for common plugin sidebars. `analysis` preserves the LEAF-style MINT analysis sidebar design language. */
12
+ variant?: 'default' | 'analysis';
3
13
  /** Map of view IDs to their tool sections */
4
14
  panels?: Record<string, SidebarToolSection[]>;
5
15
  /** Which view's panels to display */
6
16
  activeView?: string;
7
- /** Floating variant with absolute positioning */
17
+ /** Floating variant with absolute positioning. Defaults to false for analysis variant. */
8
18
  floating?: boolean;
9
19
  /** Compact layout: smaller headers, tighter spacing, no icon backgrounds */
10
20
  dense?: boolean;
11
- /** Width when visible */
21
+ /** Width when visible. Defaults to 20rem for analysis variant, otherwise 280px. */
12
22
  width?: string;
13
23
  /** Position sidebar on left or right side */
14
24
  side?: 'left' | 'right';
15
25
  /** Toggle state map: sectionId → boolean */
16
26
  toggleState?: Record<string, boolean>;
27
+ /** Optional FormBuilder schemas keyed by section ID. Used when no section slot is provided. */
28
+ forms?: Record<string, FormSchema>;
29
+ /** Generated view IDs from useControlSchema(). Consumed for clean v-bind ergonomics. */
30
+ viewIds?: string[];
31
+ /** Generated AppTopBar pillNav-compatible view items from useControlSchema(). Consumed for clean v-bind ergonomics. */
32
+ viewItems?: PillNavItem[];
33
+ /** Default view ID used when activeView is omitted. */
34
+ defaultView?: string;
35
+ /** Model returned by defineControlModel(), or a raw nested ControlModel for one-step sidebar/form generation. */
36
+ model?: ControlModel | ControlModelBinding;
37
+ /** Compact control schema. When provided, AppSidebar generates panels, section forms, and default values. */
38
+ controls?: ControlSchema;
39
+ /** Options passed to compact control schema generation, including shared initialValues. */
40
+ controlOptions?: ControlWorkspaceOptions;
41
+ /** DOM id for the scrollable content area. Use with Teleport when route/tab children own sidebar controls. */
42
+ contentId?: string;
43
+ /** Render the sidebar shell even when no panel matches the active view. Useful for default-slot or Teleport-driven sidebars. */
44
+ showWhenEmpty?: boolean;
45
+ /** Shared values for auto-rendered section forms. Supports default v-model. */
46
+ modelValue?: Record<string, unknown>;
47
+ /** Shared values for auto-rendered section forms */
48
+ values?: Record<string, unknown>;
49
+ /** Runtime FormBuilder enhancements for auto-rendered section forms */
50
+ formEnhancements?: FormEnhancements<Record<string, unknown>>;
51
+ /** Show submit/cancel actions inside auto-rendered section forms */
52
+ showFormActions?: boolean;
53
+ /** Loading/saving state for auto-rendered section forms */
54
+ formLoading?: boolean;
55
+ /** Disabled state for auto-rendered section forms */
56
+ formDisabled?: boolean;
57
+ /** Readonly state for auto-rendered section forms */
58
+ formReadonly?: boolean;
59
+ /** Size passed to auto-rendered section forms */
60
+ formSize?: 'sm' | 'md' | 'lg';
61
+ /** Show a built-in collapse/expand button in the sidebar chrome. Defaults to true for analysis variant. */
62
+ collapsible?: boolean;
63
+ /** Controlled collapsed state. */
64
+ collapsed?: boolean;
65
+ /** Initial collapsed state when collapsed is uncontrolled. */
66
+ defaultCollapsed?: boolean;
67
+ /** Width when collapsed. */
68
+ collapsedWidth?: string;
69
+ /** Accessible label for the collapse action. */
70
+ collapseButtonLabel?: string;
71
+ /** Accessible label for the expand action. */
72
+ expandButtonLabel?: string;
17
73
  }
74
+ declare function toggleCollapsed(): void;
75
+ declare function expandCollapsed(): void;
18
76
  declare function __VLS_template(): {
19
77
  attrs: Partial<{}>;
20
78
  slots: Partial<Record<`section-${string}`, (_: {}) => any>> & {
21
- header?(_: {}): any;
79
+ header?(_: {
80
+ collapsed: boolean;
81
+ toggleCollapsed: typeof toggleCollapsed;
82
+ }): any;
83
+ default?(_: {
84
+ sections: SidebarToolSection[];
85
+ activeView: string;
86
+ values: Record<string, unknown>;
87
+ }): any;
88
+ collapsed?(_: {
89
+ sections: SidebarToolSection[];
90
+ expand: typeof expandCollapsed;
91
+ }): any;
22
92
  footer?(_: {}): any;
23
93
  };
24
94
  refs: {};
@@ -26,17 +96,52 @@ declare function __VLS_template(): {
26
96
  };
27
97
  type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
28
98
  declare const __VLS_component: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
99
+ "update:modelValue": (values: Record<string, unknown>) => any;
100
+ "update:values": (values: Record<string, unknown>) => any;
29
101
  "update:toggle": (sectionId: string, value: boolean) => any;
102
+ "update:collapsed": (value: boolean) => any;
103
+ "form-submit": (sectionId: string, values: Record<string, unknown>) => any;
104
+ "form-cancel": (sectionId: string) => any;
30
105
  }, string, import('vue').PublicProps, Readonly<Props> & Readonly<{
106
+ "onUpdate:modelValue"?: ((values: Record<string, unknown>) => any) | undefined;
107
+ "onUpdate:values"?: ((values: Record<string, unknown>) => any) | undefined;
31
108
  "onUpdate:toggle"?: ((sectionId: string, value: boolean) => any) | undefined;
109
+ "onUpdate:collapsed"?: ((value: boolean) => any) | undefined;
110
+ "onForm-submit"?: ((sectionId: string, values: Record<string, unknown>) => any) | undefined;
111
+ "onForm-cancel"?: ((sectionId: string) => any) | undefined;
32
112
  }>, {
113
+ values: Record<string, unknown>;
114
+ modelValue: Record<string, unknown>;
115
+ title: string;
116
+ variant: "default" | "analysis";
33
117
  width: string;
34
- dense: boolean;
35
- panels: Record<string, SidebarToolSection[]>;
118
+ subtitle: string;
119
+ controlOptions: ControlWorkspaceOptions;
120
+ model: ControlModel | ControlModelBinding;
121
+ viewIds: string[];
122
+ viewItems: PillNavItem[];
123
+ defaultView: string;
36
124
  activeView: string;
125
+ panels: Record<string, SidebarToolSection[]>;
126
+ forms: Record<string, FormSchema>;
127
+ dense: boolean;
128
+ collapsible: boolean;
129
+ badge: string | number;
37
130
  floating: boolean;
38
131
  side: "left" | "right";
39
132
  toggleState: Record<string, boolean>;
133
+ contentId: string;
134
+ showWhenEmpty: boolean;
135
+ showFormActions: boolean;
136
+ formLoading: boolean;
137
+ formDisabled: boolean;
138
+ formReadonly: boolean;
139
+ formSize: "sm" | "md" | "lg";
140
+ collapsed: boolean;
141
+ defaultCollapsed: boolean;
142
+ collapsedWidth: string;
143
+ collapseButtonLabel: string;
144
+ expandButtonLabel: string;
40
145
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLElement>;
41
146
  declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
42
147
  export default _default;
@@ -1,33 +1,52 @@
1
- import { TopBarPage, TopBarTab, TopBarTabOption, TopBarSettingsConfig, TopBarVariant, PillNavItem, PageSelectorItem, PluginSwitcherInfo, PluginSwitcherPlugin, AccountMenuItem } from '../types/components';
1
+ import { PillNavOption, TopBarSettingsConfig, TopBarVariant, PillNavItem, PillNavItemInput, PageSelectorItem, PageSelectorItemInput, PluginSwitcherInfo, PluginSwitcherPlugin, AccountMenuItem } from '../types/components';
2
2
  interface Props {
3
+ /** App or plugin title shown in the left title group when no page selector is present. */
3
4
  title?: string;
5
+ /** Secondary title copy shown under the title in title-group layouts. */
4
6
  subtitle?: string;
7
+ /** Show the default MINT logo when the icon/logo slot is not provided. */
5
8
  showLogo?: boolean;
9
+ /** Top bar visual treatment. */
6
10
  variant?: TopBarVariant;
7
- pluginName?: string;
8
- pages?: TopBarPage[];
9
- currentPageId?: string;
10
- tabs?: TopBarTab[];
11
- currentTabId?: string;
11
+ /** Home link used by the brand icon. */
12
12
  homePath?: string;
13
- pageSelector?: PageSelectorItem[];
13
+ /** Preferred route-level page switch entries for plugin and platform pages. Integrated plugins read platform plugin.nav_items metadata automatically when pageSelector is omitted. */
14
+ pageSelector?: PageSelectorItemInput[];
15
+ /** Active id for the preferred page selector. */
14
16
  currentPageSelectorId?: string;
17
+ /** Optional plugin switcher shown in the left navigation position instead of pageSelector. */
15
18
  pluginSwitcher?: PluginSwitcherInfo;
16
- pillNav?: PillNavItem[];
19
+ /** Preferred centered navigation for local modes inside the current route. */
20
+ pillNav?: PillNavItemInput[];
21
+ /** Active id for the preferred centered pill navigation. */
17
22
  currentPillId?: string;
23
+ /** Account dropdown entries. Takes precedence over the classic profile button. */
18
24
  accountMenu?: AccountMenuItem[];
25
+ /** Show the notifications icon button. */
19
26
  showNotifications?: boolean;
27
+ /** Draw a notification dot on the notifications icon. */
20
28
  hasNotificationDot?: boolean;
29
+ /** Show the theme toggle button. */
21
30
  showThemeToggle?: boolean;
31
+ /** Show the settings button and modal. */
22
32
  showSettings?: boolean;
33
+ /** Built-in SettingsModal configuration. */
23
34
  settingsConfig?: TopBarSettingsConfig;
35
+ /** Show the standalone badge when the plugin is not integrated into the platform. */
24
36
  showStandaloneLabel?: boolean;
37
+ /** Custom standalone badge label. */
25
38
  standaloneLabel?: string;
39
+ /** Show the classic admin shortcut. */
26
40
  showAdmin?: boolean;
41
+ /** Route used by the classic admin shortcut. */
27
42
  adminPath?: string;
43
+ /** Show the classic profile button when accountMenu is not provided. */
28
44
  showProfile?: boolean;
45
+ /** Classic profile display name. */
29
46
  userName?: string;
47
+ /** Explicit classic profile initial. */
30
48
  userInitial?: string;
49
+ /** Classic profile email, used by avatar/account layouts. */
31
50
  userEmail?: string;
32
51
  }
33
52
  declare function __VLS_template(): {
@@ -39,7 +58,9 @@ declare function __VLS_template(): {
39
58
  logo?(_: {}): any;
40
59
  logo?(_: {}): any;
41
60
  logo?(_: {}): any;
42
- 'page-selector-icon'?(_: any): any;
61
+ 'page-selector-icon'?(_: {
62
+ page: PageSelectorItem;
63
+ }): any;
43
64
  'page-selector-item-icon'?(_: {
44
65
  page: PageSelectorItem;
45
66
  }): any;
@@ -47,28 +68,24 @@ declare function __VLS_template(): {
47
68
  center?(_: {}): any;
48
69
  actions?(_: {}): any;
49
70
  'account-menu-items'?(_: {
50
- close: () => boolean;
71
+ close: () => void;
51
72
  }): any;
52
73
  'account-menu-item-icon'?(_: {
53
74
  item: AccountMenuItem;
54
75
  }): any;
55
76
  'settings-appearance'?(_: {}): any;
56
77
  };
57
- refs: {
58
- dropdownRef: HTMLDivElement;
59
- };
78
+ refs: {};
60
79
  rootEl: any;
61
80
  };
62
81
  type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
63
82
  declare const __VLS_component: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
64
83
  "sign-out": () => any;
65
- "page-select": (page: TopBarPage) => any;
66
- "tab-select": (tab: TopBarTab) => any;
67
- "tab-option-select": (option: TopBarTabOption, tab: TopBarTab) => any;
68
84
  "profile-click": () => any;
69
85
  "admin-click": () => any;
70
86
  "page-selector-select": (page: PageSelectorItem) => any;
71
87
  "pill-select": (item: PillNavItem) => any;
88
+ "pill-option-select": (option: PillNavOption, item: PillNavItem) => any;
72
89
  "plugin-switcher-select": (plugin: PluginSwitcherPlugin) => any;
73
90
  "plugin-switcher-install": () => any;
74
91
  "account-menu-select": (item: AccountMenuItem) => any;
@@ -76,13 +93,11 @@ declare const __VLS_component: import('vue').DefineComponent<Props, {}, {}, {},
76
93
  "settings-values-change": (data: Record<string, unknown>) => any;
77
94
  }, string, import('vue').PublicProps, Readonly<Props> & Readonly<{
78
95
  "onSign-out"?: (() => any) | undefined;
79
- "onPage-select"?: ((page: TopBarPage) => any) | undefined;
80
- "onTab-select"?: ((tab: TopBarTab) => any) | undefined;
81
- "onTab-option-select"?: ((option: TopBarTabOption, tab: TopBarTab) => any) | undefined;
82
96
  "onProfile-click"?: (() => any) | undefined;
83
97
  "onAdmin-click"?: (() => any) | undefined;
84
98
  "onPage-selector-select"?: ((page: PageSelectorItem) => any) | undefined;
85
99
  "onPill-select"?: ((item: PillNavItem) => any) | undefined;
100
+ "onPill-option-select"?: ((option: PillNavOption, item: PillNavItem) => any) | undefined;
86
101
  "onPlugin-switcher-select"?: ((plugin: PluginSwitcherPlugin) => any) | undefined;
87
102
  "onPlugin-switcher-install"?: (() => any) | undefined;
88
103
  "onAccount-menu-select"?: ((item: AccountMenuItem) => any) | undefined;
@@ -101,9 +116,7 @@ declare const __VLS_component: import('vue').DefineComponent<Props, {}, {}, {},
101
116
  showAdmin: boolean;
102
117
  adminPath: string;
103
118
  showProfile: boolean;
104
- }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
105
- dropdownRef: HTMLDivElement;
106
- }, any>;
119
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
107
120
  declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
108
121
  export default _default;
109
122
  type __VLS_WithTemplateSlots<T, S> = T & {
@@ -22,10 +22,10 @@ declare const __VLS_component: import('vue').DefineComponent<Props, {}, {}, {},
22
22
  onClick?: ((event: MouseEvent) => any) | undefined;
23
23
  }>, {
24
24
  size: ButtonSize;
25
+ type: "button" | "submit" | "reset";
25
26
  disabled: boolean;
26
27
  variant: ButtonVariant;
27
28
  loading: boolean;
28
- type: "button" | "submit" | "reset";
29
29
  fullWidth: boolean;
30
30
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLButtonElement>;
31
31
  declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
@@ -11,7 +11,7 @@ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, imp
11
11
  "onUpdate:modelValue"?: ((value: boolean) => any) | undefined;
12
12
  }>, {
13
13
  size: "sm" | "md" | "lg";
14
- disabled: boolean;
15
14
  modelValue: boolean;
15
+ disabled: boolean;
16
16
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLLabelElement>;
17
17
  export default _default;
@@ -26,9 +26,9 @@ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, imp
26
26
  onKeydown?: ((event: KeyboardEvent) => any) | undefined;
27
27
  }>, {
28
28
  size: "sm" | "md" | "lg";
29
- error: boolean;
30
- disabled: boolean;
31
29
  type: InputType;
30
+ disabled: boolean;
32
31
  readonly: boolean;
32
+ error: boolean;
33
33
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLInputElement>;
34
34
  export default _default;
@@ -43,10 +43,10 @@ declare const __VLS_component: import('vue').DefineComponent<Props, {}, {}, {},
43
43
  }>, {
44
44
  size: PillSize;
45
45
  disabled: boolean;
46
- variant: PillVariant;
47
46
  color: PillColor;
48
- removable: boolean;
47
+ variant: PillVariant;
49
48
  icon: boolean;
49
+ removable: boolean;
50
50
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLSpanElement>;
51
51
  declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
52
52
  export default _default;
@@ -1,7 +1,7 @@
1
- import { RadioOption } from '../types';
1
+ import { RadioOptionInput } from '../types';
2
2
  interface Props {
3
3
  modelValue?: string | number;
4
- options: RadioOption[];
4
+ options: RadioOptionInput[];
5
5
  name: string;
6
6
  disabled?: boolean;
7
7
  direction?: 'horizontal' | 'vertical';
@@ -15,7 +15,7 @@ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, imp
15
15
  }>, {
16
16
  size: "sm" | "md" | "lg";
17
17
  disabled: boolean;
18
- variant: "list" | "tile";
19
18
  direction: "horizontal" | "vertical";
19
+ variant: "list" | "tile";
20
20
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
21
21
  export default _default;
@@ -1,7 +1,7 @@
1
- import { SelectOption } from '../types';
1
+ import { SelectOptionInput } from '../types';
2
2
  interface Props {
3
3
  modelValue?: string | number;
4
- options: SelectOption<string | number>[];
4
+ options: SelectOptionInput<string | number>[];
5
5
  placeholder?: string;
6
6
  disabled?: boolean;
7
7
  error?: boolean;
@@ -14,7 +14,7 @@ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, imp
14
14
  "onUpdate:modelValue"?: ((value: string | number) => any) | undefined;
15
15
  }>, {
16
16
  size: "sm" | "md" | "lg";
17
- error: boolean;
18
17
  disabled: boolean;
18
+ error: boolean;
19
19
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
20
20
  export default _default;
@@ -1,7 +1,7 @@
1
- import { TabItem } from '../types';
1
+ import { TabItemInput } from '../types';
2
2
  interface Props {
3
3
  modelValue: string;
4
- tabs: TabItem[];
4
+ tabs: TabItemInput[];
5
5
  variant?: 'underline' | 'pills';
6
6
  }
7
7
  declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
@@ -21,9 +21,9 @@ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, imp
21
21
  onBlur?: ((event: FocusEvent) => any) | undefined;
22
22
  }>, {
23
23
  size: "sm" | "md" | "lg";
24
- error: boolean;
25
24
  disabled: boolean;
26
25
  readonly: boolean;
26
+ error: boolean;
27
27
  rows: number;
28
28
  resize: "none" | "vertical" | "horizontal" | "both";
29
29
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLTextAreaElement>;
@@ -13,7 +13,7 @@ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, imp
13
13
  }>, {
14
14
  size: "sm" | "md" | "lg";
15
15
  reverse: boolean;
16
- disabled: boolean;
17
16
  modelValue: boolean;
17
+ disabled: boolean;
18
18
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
19
19
  export default _default;
@@ -0,0 +1,119 @@
1
+ import { toBioTemplateComponentBindingsById, toBioTemplateComponentProps, toBioTemplateComponentPropsByComponent, toBioTemplateComponentPropsById, BioTemplateEnvelope, BioTemplateComponentPropsLookupOptions, TemplateCollectionEnvelope } from '../templates';
2
+ type BioTemplateWorkspaceTarget = BioTemplateEnvelope<unknown> | TemplateCollectionEnvelope;
3
+ type WorkspaceKind = 'template' | 'collection';
4
+ interface TemplateWorkspaceStatus {
5
+ loading?: boolean;
6
+ saving?: boolean;
7
+ error?: string | null;
8
+ hasExperiment?: boolean;
9
+ currentExperimentId?: number;
10
+ lastLoadedAt?: Date | null;
11
+ lastSavedAt?: Date | null;
12
+ }
13
+ interface TemplateWorkspaceActions {
14
+ load?: () => unknown;
15
+ reset?: () => unknown;
16
+ save?: () => unknown;
17
+ }
18
+ interface Props {
19
+ /** Template envelope or template collection shown in BioTemplateRenderer. */
20
+ target: BioTemplateWorkspaceTarget;
21
+ /** Human-readable workspace label. */
22
+ label: string;
23
+ /** Grouped request and current-experiment state for generated plugin pages. */
24
+ status?: TemplateWorkspaceStatus;
25
+ /** Grouped load/reset/save handlers for generated plugin pages. */
26
+ actions?: TemplateWorkspaceActions;
27
+ /** Copy shown in the status banner. */
28
+ message?: string;
29
+ /** Whether the load/save request is active. */
30
+ loading?: boolean;
31
+ /** Current request error. */
32
+ error?: string | null;
33
+ /** Whether a current experiment id is available. */
34
+ hasExperiment?: boolean;
35
+ /** Current experiment id displayed in the footer. */
36
+ currentExperimentId?: number;
37
+ /** Last successful load timestamp. */
38
+ lastLoadedAt?: Date | null;
39
+ /** Last successful save timestamp. */
40
+ lastSavedAt?: Date | null;
41
+ /** Template vs collection copy defaults. */
42
+ kind?: WorkspaceKind;
43
+ /** Compact preview layout. */
44
+ dense?: boolean;
45
+ /** Render preview components in read-only mode. */
46
+ readonly?: boolean;
47
+ /** Show load/save timestamps. */
48
+ showStatus?: boolean;
49
+ /** Show template id/version cards for collection targets. */
50
+ showTemplateSummary?: boolean;
51
+ loadLabel?: string;
52
+ resetLabel?: string;
53
+ saveLabel?: string;
54
+ }
55
+ declare function getComponentProps(component: string, options?: BioTemplateComponentPropsLookupOptions): Record<string, unknown> | undefined;
56
+ interface BioTemplateExperimentWorkspaceBindings {
57
+ renderer: {
58
+ target: BioTemplateWorkspaceTarget;
59
+ };
60
+ componentProps: ReturnType<typeof toBioTemplateComponentProps>;
61
+ componentBindingsById: ReturnType<typeof toBioTemplateComponentBindingsById>;
62
+ componentPropsById: ReturnType<typeof toBioTemplateComponentPropsById>;
63
+ componentPropsByComponent: ReturnType<typeof toBioTemplateComponentPropsByComponent>;
64
+ getComponentProps: typeof getComponentProps;
65
+ }
66
+ interface BioTemplateExperimentWorkspaceSlotProps {
67
+ target: BioTemplateWorkspaceTarget;
68
+ bindings: BioTemplateExperimentWorkspaceBindings;
69
+ componentProps: ReturnType<typeof toBioTemplateComponentProps>;
70
+ componentBindingsById: ReturnType<typeof toBioTemplateComponentBindingsById>;
71
+ componentPropsById: ReturnType<typeof toBioTemplateComponentPropsById>;
72
+ componentPropsByComponent: ReturnType<typeof toBioTemplateComponentPropsByComponent>;
73
+ getComponentProps: typeof getComponentProps;
74
+ }
75
+ declare function __VLS_template(): {
76
+ attrs: Partial<{}>;
77
+ slots: Readonly<{
78
+ default?: (props: BioTemplateExperimentWorkspaceSlotProps) => unknown;
79
+ }> & {
80
+ default?: (props: BioTemplateExperimentWorkspaceSlotProps) => unknown;
81
+ };
82
+ refs: {};
83
+ rootEl: HTMLDivElement;
84
+ };
85
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
86
+ declare const __VLS_component: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
87
+ reset: () => any;
88
+ load: () => any;
89
+ save: () => any;
90
+ }, string, import('vue').PublicProps, Readonly<Props> & Readonly<{
91
+ onReset?: (() => any) | undefined;
92
+ onLoad?: (() => any) | undefined;
93
+ onSave?: (() => any) | undefined;
94
+ }>, {
95
+ readonly: boolean;
96
+ error: string | null;
97
+ message: string;
98
+ status: TemplateWorkspaceStatus;
99
+ loading: boolean;
100
+ actions: TemplateWorkspaceActions;
101
+ dense: boolean;
102
+ currentExperimentId: number;
103
+ kind: WorkspaceKind;
104
+ hasExperiment: boolean;
105
+ lastLoadedAt: Date | null;
106
+ lastSavedAt: Date | null;
107
+ showStatus: boolean;
108
+ showTemplateSummary: boolean;
109
+ loadLabel: string;
110
+ resetLabel: string;
111
+ saveLabel: string;
112
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
113
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
114
+ export default _default;
115
+ type __VLS_WithTemplateSlots<T, S> = T & {
116
+ new (): {
117
+ $slots: S;
118
+ };
119
+ };
@@ -0,0 +1,93 @@
1
+ import { BioTemplateEnvelope, TemplateCollectionEnvelope, TemplatePackId } from '../templates';
2
+ import { UseBioTemplatePackWorkspaceOptions, UseBioTemplatePackWorkspaceReturn } from '../composables/useBioTemplatePackWorkspace';
3
+ interface BioTemplatePackWorkspaceSlotProps {
4
+ workspace: UseBioTemplatePackWorkspaceReturn;
5
+ bindings: UseBioTemplatePackWorkspaceReturn['bindings']['value'];
6
+ pack: UseBioTemplatePackWorkspaceReturn['pack'];
7
+ target: BioTemplateEnvelope<unknown> | TemplateCollectionEnvelope;
8
+ componentBindingsById: UseBioTemplatePackWorkspaceReturn['componentBindingsById']['value'];
9
+ componentProps: UseBioTemplatePackWorkspaceReturn['componentProps']['value'];
10
+ componentPropsById: UseBioTemplatePackWorkspaceReturn['componentPropsById']['value'];
11
+ componentPropsByComponent: UseBioTemplatePackWorkspaceReturn['componentPropsByComponent']['value'];
12
+ getComponentProps: UseBioTemplatePackWorkspaceReturn['getComponentProps'];
13
+ form: UseBioTemplatePackWorkspaceReturn['form']['value'];
14
+ sidebar: UseBioTemplatePackWorkspaceReturn['sidebar']['value'];
15
+ topBar: UseBioTemplatePackWorkspaceReturn['topBar']['value'];
16
+ pillNav: UseBioTemplatePackWorkspaceReturn['pillNav']['value'];
17
+ topBarSettings: UseBioTemplatePackWorkspaceReturn['topBarSettings']['value'];
18
+ }
19
+ interface PackWorkspaceStatus {
20
+ loading?: boolean;
21
+ saving?: boolean;
22
+ error?: string | null;
23
+ hasExperiment?: boolean;
24
+ currentExperimentId?: number;
25
+ lastLoadedAt?: Date | null;
26
+ lastSavedAt?: Date | null;
27
+ }
28
+ interface PackWorkspaceActions {
29
+ load?: () => unknown;
30
+ reset?: () => unknown;
31
+ save?: () => unknown;
32
+ }
33
+ interface Props {
34
+ /** Workspace returned by useBioTemplatePackWorkspace(). Use for full manual control. */
35
+ workspace?: UseBioTemplatePackWorkspaceReturn;
36
+ /** Built-in template pack id or alias used when workspace is not provided. */
37
+ pack?: TemplatePackId | string;
38
+ /** Options passed to the internally generated useBioTemplatePackWorkspace() call. */
39
+ workspaceOptions?: UseBioTemplatePackWorkspaceOptions;
40
+ /** External request state when plugin endpoints handle pack persistence. */
41
+ status?: PackWorkspaceStatus;
42
+ /** External load/reset/save handlers when plugin endpoints handle pack persistence. */
43
+ actions?: PackWorkspaceActions;
44
+ /** Human-readable workspace label. Defaults to the pack catalog label. */
45
+ label?: string;
46
+ /** Copy shown in the status banner. */
47
+ message?: string;
48
+ /** Compact preview layout. */
49
+ dense?: boolean;
50
+ /** Render preview components in read-only mode. */
51
+ readonly?: boolean;
52
+ /** Show load/save timestamps. */
53
+ showStatus?: boolean;
54
+ /** Show template id/version cards for the generated collection. */
55
+ showTemplateSummary?: boolean;
56
+ loadLabel?: string;
57
+ resetLabel?: string;
58
+ saveLabel?: string;
59
+ }
60
+ declare function __VLS_template(): {
61
+ attrs: Partial<{}>;
62
+ slots: Readonly<{
63
+ default?: (props: BioTemplatePackWorkspaceSlotProps) => unknown;
64
+ }> & {
65
+ default?: (props: BioTemplatePackWorkspaceSlotProps) => unknown;
66
+ };
67
+ refs: {};
68
+ rootEl: HTMLDivElement;
69
+ };
70
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
71
+ declare const __VLS_component: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<Props> & Readonly<{}>, {
72
+ readonly: boolean;
73
+ label: string;
74
+ message: string;
75
+ status: PackWorkspaceStatus;
76
+ actions: PackWorkspaceActions;
77
+ dense: boolean;
78
+ workspace: UseBioTemplatePackWorkspaceReturn;
79
+ pack: TemplatePackId | string;
80
+ showStatus: boolean;
81
+ showTemplateSummary: boolean;
82
+ loadLabel: string;
83
+ resetLabel: string;
84
+ saveLabel: string;
85
+ workspaceOptions: UseBioTemplatePackWorkspaceOptions;
86
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
87
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
88
+ export default _default;
89
+ type __VLS_WithTemplateSlots<T, S> = T & {
90
+ new (): {
91
+ $slots: S;
92
+ };
93
+ };