@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
@@ -21,13 +21,13 @@ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, imp
21
21
  onBack?: (() => any) | undefined;
22
22
  }>, {
23
23
  disabled: boolean;
24
- loading: boolean;
24
+ submitLabel: string;
25
25
  cancelLabel: string;
26
- canProceed: boolean;
26
+ showCancel: boolean;
27
+ loading: boolean;
27
28
  isWizard: boolean;
28
29
  isFirst: boolean;
29
30
  isLast: boolean;
30
- submitLabel: string;
31
- showCancel: boolean;
31
+ canProceed: boolean;
32
32
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
33
33
  export default _default;
@@ -1,19 +1,29 @@
1
1
  import { FormSchema, FormEnhancements, UseFormBuilderReturn } from '../types/form-builder';
2
2
  import { WizardStep } from '../types';
3
+ import { ControlModel, ControlModelBinding, ControlSchema, ControlWorkspaceOptions } from '../composables/useControlSchema';
3
4
  interface Props {
4
- schema: FormSchema;
5
+ /** Full form or wizard schema. Takes precedence when `controls` is also provided. */
6
+ schema?: FormSchema;
7
+ /** Model returned by defineControlModel(), or a raw nested ControlModel for one-step form generation. */
8
+ model?: ControlModel | ControlModelBinding;
9
+ /** Compact control schema used to generate a flat FormSchema. */
10
+ controls?: ControlSchema;
11
+ /** Options passed to compact control schema generation, including shared initialValues. */
12
+ controlOptions?: ControlWorkspaceOptions;
5
13
  modelValue?: Record<string, unknown>;
6
14
  enhancements?: FormEnhancements<Record<string, unknown>>;
7
15
  loading?: boolean;
8
16
  disabled?: boolean;
9
17
  size?: 'sm' | 'md' | 'lg';
10
18
  readonly?: boolean;
19
+ /** Show the default or slotted form actions. */
20
+ showActions?: boolean;
11
21
  }
12
22
  declare function __VLS_template(): {
13
23
  attrs: Partial<{}>;
14
24
  slots: Partial<Record<`field:${string}`, (_: {
15
- field: import('../types').FormFieldSchema;
16
- form: import('../composables').UseFormReturn<Record<string, unknown>>;
25
+ field: import('..').FormFieldSchema;
26
+ form: import('..').UseFormReturn<Record<string, unknown>>;
17
27
  fieldProps: {
18
28
  modelValue: unknown;
19
29
  'onUpdate:modelValue': (value: unknown) => void;
@@ -21,13 +31,13 @@ declare function __VLS_template(): {
21
31
  error: string | null;
22
32
  };
23
33
  }) => any>> & Partial<Record<`section:${string}`, (_: {
24
- section: import('../types').FormSectionSchema;
25
- form: import('../composables').UseFormReturn<Record<string, unknown>>;
34
+ section: import('..').FormSectionSchema;
35
+ form: import('..').UseFormReturn<Record<string, unknown>>;
26
36
  }) => any>> & Partial<Record<`section:${string}:after`, (_: {
27
- form: import('../composables').UseFormReturn<Record<string, unknown>>;
37
+ form: import('..').UseFormReturn<Record<string, unknown>>;
28
38
  }) => any>> & Partial<Record<`field:${string}`, (_: {
29
- field: import('../types').FormFieldSchema;
30
- form: import('../composables').UseFormReturn<Record<string, unknown>>;
39
+ field: import('..').FormFieldSchema;
40
+ form: import('..').UseFormReturn<Record<string, unknown>>;
31
41
  fieldProps: {
32
42
  modelValue: unknown;
33
43
  'onUpdate:modelValue': (value: unknown) => void;
@@ -35,17 +45,17 @@ declare function __VLS_template(): {
35
45
  error: string | null;
36
46
  };
37
47
  }) => any>> & Partial<Record<`section:${string}`, (_: {
38
- section: import('../types').FormSectionSchema;
39
- form: import('../composables').UseFormReturn<Record<string, unknown>>;
48
+ section: import('..').FormSectionSchema;
49
+ form: import('..').UseFormReturn<Record<string, unknown>>;
40
50
  }) => any>> & Partial<Record<`section:${string}:after`, (_: {
41
- form: import('../composables').UseFormReturn<Record<string, unknown>>;
51
+ form: import('..').UseFormReturn<Record<string, unknown>>;
42
52
  }) => any>> & {
43
53
  actions?(_: {
44
- form: import('../composables').UseFormReturn<Record<string, unknown>>;
54
+ form: import('..').UseFormReturn<Record<string, unknown>>;
45
55
  builder: UseFormBuilderReturn<Record<string, unknown>>;
46
56
  }): any;
47
57
  actions?(_: {
48
- form: import('../composables').UseFormReturn<Record<string, unknown>>;
58
+ form: import('..').UseFormReturn<Record<string, unknown>>;
49
59
  builder: UseFormBuilderReturn<Record<string, unknown>>;
50
60
  }): any;
51
61
  };
@@ -156,25 +166,29 @@ declare function __VLS_template(): {
156
166
  };
157
167
  type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
158
168
  declare const __VLS_component: import('vue').DefineComponent<Props, {
159
- form: import('../composables').UseFormReturn<Record<string, unknown>>;
169
+ form: import('..').UseFormReturn<Record<string, unknown>>;
160
170
  validate: () => boolean;
161
171
  reset: (values?: Partial<Record<string, unknown>> | undefined) => void;
172
+ updateSchema: (schema: FormSchema, values?: Partial<Record<string, unknown>> | undefined) => void;
162
173
  goNext: () => boolean;
163
174
  goBack: () => void;
164
175
  goToStep: (index: number) => void;
165
176
  builder: UseFormBuilderReturn<Record<string, unknown>>;
166
177
  }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
167
- submit: (data: Record<string, unknown>) => any;
168
178
  "update:modelValue": (data: Record<string, unknown>) => any;
179
+ submit: (data: Record<string, unknown>) => any;
169
180
  cancel: () => any;
170
181
  }, string, import('vue').PublicProps, Readonly<Props> & Readonly<{
171
- onSubmit?: ((data: Record<string, unknown>) => any) | undefined;
172
182
  "onUpdate:modelValue"?: ((data: Record<string, unknown>) => any) | undefined;
183
+ onSubmit?: ((data: Record<string, unknown>) => any) | undefined;
173
184
  onCancel?: (() => any) | undefined;
174
185
  }>, {
175
186
  disabled: boolean;
176
- loading: boolean;
177
187
  readonly: boolean;
188
+ controlOptions: ControlWorkspaceOptions;
189
+ model: ControlModel | ControlModelBinding;
190
+ loading: boolean;
191
+ showActions: boolean;
178
192
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
179
193
  wizardRef: ({
180
194
  $: import('vue').ComponentInternalInstance;
@@ -15,10 +15,10 @@ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, imp
15
15
  onMw?: ((mw: number | null) => any) | undefined;
16
16
  }>, {
17
17
  size: "sm" | "md" | "lg";
18
- error: boolean;
19
- disabled: boolean;
20
18
  modelValue: string;
21
19
  placeholder: string;
20
+ disabled: boolean;
21
+ error: boolean;
22
22
  showPreview: boolean;
23
23
  showMW: boolean;
24
24
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
@@ -15,10 +15,10 @@ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, imp
15
15
  onError?: ((message: string) => any) | undefined;
16
16
  "onUpdate:modelValue"?: ((data: MoleculeData | undefined) => any) | undefined;
17
17
  }>, {
18
- error: boolean;
19
- disabled: boolean;
20
18
  placeholder: string;
19
+ disabled: boolean;
21
20
  readonly: boolean;
21
+ error: boolean;
22
22
  height: number;
23
23
  showSmiles: boolean;
24
24
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
@@ -1,7 +1,7 @@
1
- import { MultiSelectOption, MultiSelectSize } from '../types';
1
+ import { MultiSelectOptionInput, MultiSelectSize } from '../types';
2
2
  interface Props {
3
3
  modelValue: (string | number)[];
4
- options: MultiSelectOption[];
4
+ options: MultiSelectOptionInput[];
5
5
  placeholder?: string;
6
6
  disabled?: boolean;
7
7
  maxSelections?: number;
@@ -13,7 +13,7 @@ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, imp
13
13
  "onUpdate:modelValue"?: ((value: (string | number)[]) => any) | undefined;
14
14
  }>, {
15
15
  size: MultiSelectSize;
16
- disabled: boolean;
17
16
  placeholder: string;
17
+ disabled: boolean;
18
18
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
19
19
  export default _default;
@@ -15,8 +15,8 @@ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, imp
15
15
  "onUpdate:modelValue"?: ((value: number | undefined) => any) | undefined;
16
16
  }>, {
17
17
  size: "sm" | "md" | "lg";
18
- error: boolean;
19
18
  disabled: boolean;
19
+ error: boolean;
20
20
  step: number;
21
21
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
22
22
  export default _default;
@@ -41,9 +41,9 @@ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, imp
41
41
  modelValue: PlateMapEditorState;
42
42
  format: WellPlateFormat;
43
43
  samples: SampleType[];
44
+ showSidebar: boolean;
44
45
  maxPlates: number;
45
46
  showToolbar: boolean;
46
- showSidebar: boolean;
47
47
  allowAddPlates: boolean;
48
48
  allowAddSamples: boolean;
49
49
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
@@ -0,0 +1,310 @@
1
+ import { AccountMenuItem, ExperimentSummary, PageSelectorItem, PageSelectorItemInput, PillNavItem, PillNavItemInput, PluginSwitcherInfo, PluginSwitcherPlugin, SidebarToolSection, TopBarSettingsConfig, PillNavOption, TopBarVariant } from '../types';
2
+ import { FormEnhancements, FormSchema } from '../types/form-builder';
3
+ import { ControlComponentBinding, ControlComponentBindingsById, ControlComponentBindingsConfig, ControlComponentPropsByIdMap, ControlComponentPropsMap, ControlModel, ControlModelBinding, ControlSchema, ControlWorkspaceOptions } from '../composables/useControlSchema';
4
+ import { AppExperimentRecord } from '../composables/useAppExperiment';
5
+ type SidebarVariant = 'default' | 'analysis';
6
+ interface Props {
7
+ /** App or plugin title shown in the top bar. */
8
+ title?: string;
9
+ /** Secondary copy shown under the title. */
10
+ subtitle?: string;
11
+ /** Top bar visual treatment. */
12
+ topBarVariant?: TopBarVariant;
13
+ /** Home link used by the top bar brand icon. */
14
+ homePath?: string;
15
+ /** Show the default MINT logo when no icon/logo slot is provided. */
16
+ showLogo?: boolean;
17
+ /** Preferred route-level page selector entries. */
18
+ pageSelector?: PageSelectorItemInput[];
19
+ /** Active page selector id. Defaults to activeView. */
20
+ currentPageSelectorId?: string;
21
+ /** Optional plugin switcher shown in the left navigation position. */
22
+ pluginSwitcher?: PluginSwitcherInfo;
23
+ /** Preferred centered navigation for local modes inside the current route. */
24
+ pillNav?: PillNavItemInput[];
25
+ /** Active centered pill id. Defaults to activeView. */
26
+ currentPillId?: string;
27
+ /** Show the theme toggle button. */
28
+ showThemeToggle?: boolean;
29
+ /** Show the settings button and modal. */
30
+ showSettings?: boolean;
31
+ /** Built-in settings modal configuration. */
32
+ settingsConfig?: TopBarSettingsConfig;
33
+ /** Show the standalone badge when not integrated into the platform. */
34
+ showStandaloneLabel?: boolean;
35
+ /** Custom standalone badge label. */
36
+ standaloneLabel?: string;
37
+ /** Account dropdown entries. */
38
+ accountMenu?: AccountMenuItem[];
39
+ /** Show the notifications icon button. */
40
+ showNotifications?: boolean;
41
+ /** Draw a notification dot on the notifications icon. */
42
+ hasNotificationDot?: boolean;
43
+ /** Show the classic admin shortcut. */
44
+ showAdmin?: boolean;
45
+ /** Route used by the classic admin shortcut. */
46
+ adminPath?: string;
47
+ /** Show the classic profile button when accountMenu is not provided. */
48
+ showProfile?: boolean;
49
+ /** Classic profile display name. */
50
+ userName?: string;
51
+ /** Explicit classic profile initial. */
52
+ userInitial?: string;
53
+ /** Classic profile email. */
54
+ userEmail?: string;
55
+ /** Enable the built-in AppTopBar experiment popover and selector flow. */
56
+ experimentShell?: boolean;
57
+ /** Current experiment mirrored into the AppTopBar experiment chip when experimentShell is enabled. */
58
+ experiment?: AppExperimentRecord | null;
59
+ /** Save handler used by the AppTopBar experiment chip. Return a message to flash success. */
60
+ experimentSave?: () => string | null | Promise<string | null>;
61
+ /** Disable the experiment save action. */
62
+ experimentSaveDisabled?: boolean;
63
+ /** Tooltip shown when the experiment save action is disabled. */
64
+ experimentSaveDisabledMessage?: string;
65
+ /** Active workspace view used by top bar navigation and sidebar panels. */
66
+ activeView?: string;
67
+ /** Initial active view when activeView is uncontrolled. */
68
+ defaultActiveView?: string;
69
+ /** Map of view IDs to sidebar tool sections. */
70
+ panels?: Record<string, SidebarToolSection[]>;
71
+ /** Optional FormBuilder schemas keyed by section ID. */
72
+ forms?: Record<string, FormSchema>;
73
+ /** Sidebar chrome title. */
74
+ sidebarTitle?: string;
75
+ /** Sidebar chrome subtitle. */
76
+ sidebarSubtitle?: string;
77
+ /** Optional compact badge/count rendered in the sidebar header. */
78
+ sidebarBadge?: string | number;
79
+ /** AppSidebar visual preset. `analysis` matches the LEAF-style MINT analysis sidebar language. */
80
+ sidebarVariant?: SidebarVariant;
81
+ /** Sidebar CSS width. Defaults to AppSidebar's variant width. */
82
+ sidebarWidth?: string;
83
+ /** Sidebar position in AppLayout. */
84
+ sidebarPosition?: 'left' | 'right';
85
+ /** Convert the sidebar into an SDK-owned mobile overlay below the AppLayout breakpoint. */
86
+ responsiveSidebar?: boolean;
87
+ /** Render the sidebar shell even when no panel matches the active view. */
88
+ showSidebarWhenEmpty?: boolean;
89
+ /** Disable the built-in sidebar surface entirely. */
90
+ showSidebar?: boolean;
91
+ /** DOM id for the AppSidebar scrollable content area. Use with route/tab-owned Teleport sidebars. */
92
+ sidebarContentId?: string;
93
+ /** Compact AppSidebar density. */
94
+ dense?: boolean;
95
+ /** Show a built-in collapse/expand button in the sidebar chrome. Defaults to AppSidebar's variant behavior. */
96
+ sidebarCollapsible?: boolean;
97
+ /** Sidebar width when collapsed. */
98
+ sidebarCollapsedWidth?: string;
99
+ /** Accessible label for the sidebar collapse action. */
100
+ sidebarCollapseButtonLabel?: string;
101
+ /** Accessible label for the sidebar expand action. */
102
+ sidebarExpandButtonLabel?: string;
103
+ /** Floating AppLayout style. */
104
+ floating?: boolean;
105
+ /** Optional compact control model for generated sidebar forms. */
106
+ model?: ControlModel | ControlModelBinding;
107
+ /** Compact control schema for generated sidebar forms. */
108
+ controls?: ControlSchema;
109
+ /** Options passed to compact control schema generation. */
110
+ controlOptions?: ControlWorkspaceOptions;
111
+ /** Optional SDK component bindings exposed to the default slot with resolved props. */
112
+ componentBindings?: ControlComponentBindingsConfig;
113
+ /** Optional mapping from workspace values to component props exposed to the default slot. */
114
+ componentProps?: ControlComponentPropsMap;
115
+ /** Optional named mappings from workspace values to component props exposed to the default slot. */
116
+ componentPropsById?: ControlComponentPropsByIdMap;
117
+ /** Shared values for auto-rendered sidebar forms. Supports default v-model. */
118
+ modelValue?: Record<string, unknown>;
119
+ /** Shared values for auto-rendered sidebar forms. */
120
+ values?: Record<string, unknown>;
121
+ /** Runtime FormBuilder enhancements for auto-rendered sidebar forms. */
122
+ formEnhancements?: FormEnhancements<Record<string, unknown>>;
123
+ /** Show submit/cancel actions inside auto-rendered sidebar forms. */
124
+ showFormActions?: boolean;
125
+ /** Loading/saving state for auto-rendered sidebar forms. */
126
+ formLoading?: boolean;
127
+ /** Disabled state for auto-rendered sidebar forms. */
128
+ formDisabled?: boolean;
129
+ /** Readonly state for auto-rendered sidebar forms. */
130
+ formReadonly?: boolean;
131
+ /** Size passed to auto-rendered sidebar forms. */
132
+ formSize?: 'sm' | 'md' | 'lg';
133
+ /** Controlled sidebar collapsed state. */
134
+ sidebarCollapsed?: boolean;
135
+ /** Initial sidebar collapsed state when uncontrolled. */
136
+ defaultSidebarCollapsed?: boolean;
137
+ /** Accessible label for the mobile sidebar toggle. */
138
+ sidebarToggleLabel?: string;
139
+ /** Accessible label used when the mobile sidebar is open. */
140
+ sidebarCloseLabel?: string;
141
+ }
142
+ interface PluginWorkspaceSlotProps {
143
+ activeView: string;
144
+ setActiveView: (viewId: string) => void;
145
+ values: Record<string, unknown>;
146
+ componentBindings: ControlComponentBinding[];
147
+ componentBindingsById: ControlComponentBindingsById;
148
+ componentProps: Record<string, unknown>;
149
+ componentPropsById: Record<string, Record<string, unknown>>;
150
+ }
151
+ type ForwardedSlotProps = Record<string, unknown>;
152
+ declare function __VLS_template(): {
153
+ attrs: Partial<{}>;
154
+ slots: Readonly<{
155
+ default?: (props: PluginWorkspaceSlotProps) => unknown;
156
+ topbar?: (props: PluginWorkspaceSlotProps) => unknown;
157
+ sidebar?: (props: PluginWorkspaceSlotProps) => unknown;
158
+ icon?: (props: ForwardedSlotProps) => unknown;
159
+ logo?: (props: ForwardedSlotProps) => unknown;
160
+ 'page-selector-icon'?: (props: ForwardedSlotProps) => unknown;
161
+ 'page-selector-item-icon'?: (props: ForwardedSlotProps) => unknown;
162
+ nav?: (props: ForwardedSlotProps) => unknown;
163
+ center?: (props: ForwardedSlotProps) => unknown;
164
+ actions?: (props: ForwardedSlotProps) => unknown;
165
+ 'account-menu-items'?: (props: ForwardedSlotProps) => unknown;
166
+ 'account-menu-item-icon'?: (props: ForwardedSlotProps) => unknown;
167
+ 'settings-appearance'?: (props: ForwardedSlotProps) => unknown;
168
+ header?: (props: ForwardedSlotProps) => unknown;
169
+ collapsed?: (props: ForwardedSlotProps) => unknown;
170
+ footer?: (props: ForwardedSlotProps) => unknown;
171
+ }> & {
172
+ default?: (props: PluginWorkspaceSlotProps) => unknown;
173
+ topbar?: (props: PluginWorkspaceSlotProps) => unknown;
174
+ sidebar?: (props: PluginWorkspaceSlotProps) => unknown;
175
+ icon?: (props: ForwardedSlotProps) => unknown;
176
+ logo?: (props: ForwardedSlotProps) => unknown;
177
+ 'page-selector-icon'?: (props: ForwardedSlotProps) => unknown;
178
+ 'page-selector-item-icon'?: (props: ForwardedSlotProps) => unknown;
179
+ nav?: (props: ForwardedSlotProps) => unknown;
180
+ center?: (props: ForwardedSlotProps) => unknown;
181
+ actions?: (props: ForwardedSlotProps) => unknown;
182
+ 'account-menu-items'?: (props: ForwardedSlotProps) => unknown;
183
+ 'account-menu-item-icon'?: (props: ForwardedSlotProps) => unknown;
184
+ 'settings-appearance'?: (props: ForwardedSlotProps) => unknown;
185
+ header?: (props: ForwardedSlotProps) => unknown;
186
+ collapsed?: (props: ForwardedSlotProps) => unknown;
187
+ footer?: (props: ForwardedSlotProps) => unknown;
188
+ };
189
+ refs: {};
190
+ rootEl: HTMLDivElement;
191
+ };
192
+ type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
193
+ declare const __VLS_component: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
194
+ "update:modelValue": (values: Record<string, unknown>) => any;
195
+ "update:values": (values: Record<string, unknown>) => any;
196
+ "sign-out": () => any;
197
+ "profile-click": () => any;
198
+ "admin-click": () => any;
199
+ "page-selector-select": (page: PageSelectorItem) => any;
200
+ "pill-select": (item: PillNavItem) => any;
201
+ "pill-option-select": (option: PillNavOption, item: PillNavItem) => any;
202
+ "plugin-switcher-select": (plugin: PluginSwitcherPlugin) => any;
203
+ "plugin-switcher-install": () => any;
204
+ "account-menu-select": (item: AccountMenuItem) => any;
205
+ "notifications-click": () => any;
206
+ "settings-values-change": (data: Record<string, unknown>) => any;
207
+ "update:toggle": (sectionId: string, value: boolean) => any;
208
+ "form-submit": (sectionId: string, values: Record<string, unknown>) => any;
209
+ "form-cancel": (sectionId: string) => any;
210
+ "update:activeView": (value: string) => any;
211
+ "experiment-select": (experiment: ExperimentSummary) => any;
212
+ "experiment-detach": () => any;
213
+ "update:sidebarCollapsed": (value: boolean) => any;
214
+ }, string, import('vue').PublicProps, Readonly<Props> & Readonly<{
215
+ "onUpdate:modelValue"?: ((values: Record<string, unknown>) => any) | undefined;
216
+ "onUpdate:values"?: ((values: Record<string, unknown>) => any) | undefined;
217
+ "onSign-out"?: (() => any) | undefined;
218
+ "onProfile-click"?: (() => any) | undefined;
219
+ "onAdmin-click"?: (() => any) | undefined;
220
+ "onPage-selector-select"?: ((page: PageSelectorItem) => any) | undefined;
221
+ "onPill-select"?: ((item: PillNavItem) => any) | undefined;
222
+ "onPill-option-select"?: ((option: PillNavOption, item: PillNavItem) => any) | undefined;
223
+ "onPlugin-switcher-select"?: ((plugin: PluginSwitcherPlugin) => any) | undefined;
224
+ "onPlugin-switcher-install"?: (() => any) | undefined;
225
+ "onAccount-menu-select"?: ((item: AccountMenuItem) => any) | undefined;
226
+ "onNotifications-click"?: (() => any) | undefined;
227
+ "onSettings-values-change"?: ((data: Record<string, unknown>) => any) | undefined;
228
+ "onUpdate:toggle"?: ((sectionId: string, value: boolean) => any) | undefined;
229
+ "onForm-submit"?: ((sectionId: string, values: Record<string, unknown>) => any) | undefined;
230
+ "onForm-cancel"?: ((sectionId: string) => any) | undefined;
231
+ "onUpdate:activeView"?: ((value: string) => any) | undefined;
232
+ "onExperiment-select"?: ((experiment: ExperimentSummary) => any) | undefined;
233
+ "onExperiment-detach"?: (() => any) | undefined;
234
+ "onUpdate:sidebarCollapsed"?: ((value: boolean) => any) | undefined;
235
+ }>, {
236
+ values: Record<string, unknown>;
237
+ modelValue: Record<string, unknown>;
238
+ title: string;
239
+ subtitle: string;
240
+ controls: ControlSchema;
241
+ controlOptions: ControlWorkspaceOptions;
242
+ model: ControlModel | ControlModelBinding;
243
+ componentBindings: ControlComponentBindingsConfig;
244
+ componentProps: ControlComponentPropsMap;
245
+ componentPropsById: ControlComponentPropsByIdMap;
246
+ activeView: string;
247
+ panels: Record<string, SidebarToolSection[]>;
248
+ forms: Record<string, FormSchema>;
249
+ experiment: AppExperimentRecord | null;
250
+ dense: boolean;
251
+ userName: string;
252
+ userInitial: string;
253
+ userEmail: string;
254
+ showLogo: boolean;
255
+ homePath: string;
256
+ pageSelector: PageSelectorItemInput[];
257
+ currentPageSelectorId: string;
258
+ pluginSwitcher: PluginSwitcherInfo;
259
+ pillNav: PillNavItemInput[];
260
+ currentPillId: string;
261
+ accountMenu: AccountMenuItem[];
262
+ showNotifications: boolean;
263
+ hasNotificationDot: boolean;
264
+ showThemeToggle: boolean;
265
+ showSettings: boolean;
266
+ settingsConfig: TopBarSettingsConfig;
267
+ showStandaloneLabel: boolean;
268
+ standaloneLabel: string;
269
+ showAdmin: boolean;
270
+ adminPath: string;
271
+ showProfile: boolean;
272
+ floating: boolean;
273
+ formEnhancements: FormEnhancements<Record<string, unknown>>;
274
+ showFormActions: boolean;
275
+ formLoading: boolean;
276
+ formDisabled: boolean;
277
+ formReadonly: boolean;
278
+ formSize: "sm" | "md" | "lg";
279
+ sidebarPosition: "left" | "right";
280
+ sidebarWidth: string;
281
+ responsiveSidebar: boolean;
282
+ sidebarToggleLabel: string;
283
+ sidebarCloseLabel: string;
284
+ topBarVariant: TopBarVariant;
285
+ experimentShell: boolean;
286
+ experimentSave: () => string | null | Promise<string | null>;
287
+ experimentSaveDisabled: boolean;
288
+ experimentSaveDisabledMessage: string;
289
+ defaultActiveView: string;
290
+ sidebarTitle: string;
291
+ sidebarSubtitle: string;
292
+ sidebarBadge: string | number;
293
+ sidebarVariant: SidebarVariant;
294
+ showSidebarWhenEmpty: boolean;
295
+ showSidebar: boolean;
296
+ sidebarContentId: string;
297
+ sidebarCollapsible: boolean;
298
+ sidebarCollapsedWidth: string;
299
+ sidebarCollapseButtonLabel: string;
300
+ sidebarExpandButtonLabel: string;
301
+ sidebarCollapsed: boolean;
302
+ defaultSidebarCollapsed: boolean;
303
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
304
+ declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
305
+ export default _default;
306
+ type __VLS_WithTemplateSlots<T, S> = T & {
307
+ new (): {
308
+ $slots: S;
309
+ };
310
+ };
@@ -12,9 +12,9 @@ interface Props {
12
12
  declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<Props> & Readonly<{}>, {
13
13
  size: "sm" | "md" | "lg";
14
14
  label: string;
15
- variant: "rail" | "segmented";
16
15
  color: "primary" | "success" | "warning" | "error" | "info";
17
16
  value: number;
17
+ variant: "rail" | "segmented";
18
18
  showValue: boolean;
19
19
  indeterminate: boolean;
20
20
  steps: string[];
@@ -20,5 +20,7 @@ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, imp
20
20
  }>, {
21
21
  mode: "create" | "edit";
22
22
  showPreview: boolean;
23
- }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
23
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
24
+ templateDropdownRef: HTMLDivElement;
25
+ }, HTMLDivElement>;
24
26
  export default _default;
@@ -28,9 +28,9 @@ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, imp
28
28
  }>, {
29
29
  modelValue: Rack[];
30
30
  readonly: boolean;
31
- showBadges: boolean;
32
- editable: boolean;
33
31
  showLegend: boolean;
32
+ editable: boolean;
33
+ showBadges: boolean;
34
34
  activeRackId: string;
35
35
  maxRacks: number;
36
36
  minRacks: number;
@@ -24,9 +24,9 @@ declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, imp
24
24
  size: "sm" | "md" | "lg";
25
25
  modelValue: string;
26
26
  colorPalette: string[];
27
- editable: boolean;
28
27
  samples: SampleType[];
29
- showCounts: boolean;
30
28
  orientation: "vertical" | "horizontal";
29
+ editable: boolean;
30
+ showCounts: boolean;
31
31
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
32
32
  export default _default;
@@ -86,11 +86,11 @@ declare const __VLS_component: import('vue').DefineComponent<Props, {}, {}, {},
86
86
  minute: number;
87
87
  }) => any) | undefined;
88
88
  }>, {
89
- view: ScheduleView;
90
89
  readonly: boolean;
90
+ view: ScheduleView;
91
+ locale: string;
91
92
  weekStartsOn: 0 | 1;
92
93
  showNavigation: boolean;
93
- locale: string;
94
94
  events: ScheduleEvent[];
95
95
  dayStartHour: number;
96
96
  dayEndHour: number;
@@ -1,7 +1,7 @@
1
- import { SegmentedOption, SegmentedControlVariant, SegmentedControlSize } from '../types';
1
+ import { SegmentedOptionInput, SegmentedControlVariant, SegmentedControlSize } from '../types';
2
2
  interface Props {
3
3
  modelValue: string | number;
4
- options: SegmentedOption[];
4
+ options: SegmentedOptionInput[];
5
5
  variant?: SegmentedControlVariant;
6
6
  size?: SegmentedControlSize;
7
7
  fullWidth?: boolean;
@@ -35,12 +35,12 @@ declare const __VLS_component: import('vue').DefineComponent<Props, {}, {}, {},
35
35
  }, string, import('vue').PublicProps, Readonly<Props> & Readonly<{
36
36
  "onUpdate:modelValue"?: ((value: string) => any) | undefined;
37
37
  }>, {
38
- error: boolean;
39
- disabled: boolean;
40
- type: SequenceType;
41
38
  modelValue: string;
39
+ type: SequenceType;
42
40
  placeholder: string;
41
+ disabled: boolean;
43
42
  readonly: boolean;
43
+ error: boolean;
44
44
  rows: number;
45
45
  showStats: boolean;
46
46
  showTools: boolean;
@@ -1,15 +1,22 @@
1
- import { SettingsTab, SettingsModalLayout, SettingsModalSchema, FormEnhancements } from '../types';
1
+ import { ControlModel, ControlModelBinding, ControlSchema, ControlWorkspaceOptions } from '../composables/useControlSchema';
2
+ import { SettingsTabInput, SettingsModalLayout, SettingsModalSchema, FormEnhancements } from '../types';
2
3
  interface Props {
3
4
  modelValue: boolean;
4
5
  title?: string;
5
6
  /** Manual tab descriptors. Ignored when `schema` is set (groups become tabs). */
6
- tabs?: SettingsTab[];
7
+ tabs?: SettingsTabInput[];
7
8
  showAppearance?: boolean;
8
9
  size?: 'md' | 'lg' | 'xl';
9
10
  layout?: SettingsModalLayout;
10
11
  /** Declarative schema — fields auto-render via SDK form components. */
11
12
  schema?: SettingsModalSchema;
12
- /** Two-way bound values when `schema` is set. */
13
+ /** Model returned by defineControlModel(), or a raw nested ControlModel for one-step settings generation. */
14
+ model?: ControlModel | ControlModelBinding;
15
+ /** Compact controls model — converted to `schema` when `schema` is not set. */
16
+ controls?: ControlSchema;
17
+ /** Conversion options for `controls`, such as section labels, columns, and shared initialValues. */
18
+ controlOptions?: ControlWorkspaceOptions;
19
+ /** Two-way bound values when `schema`, `model`, or `controls` is set. */
13
20
  values?: Record<string, unknown>;
14
21
  /** Optional dynamic enhancements (validators, dynamic options, callbacks). */
15
22
  enhancements?: FormEnhancements<Record<string, unknown>>;
@@ -17,8 +24,8 @@ interface Props {
17
24
  declare function __VLS_template(): {
18
25
  attrs: Partial<{}>;
19
26
  slots: Partial<Record<`field:${string}`, (_: {
20
- field: import('../types').FormFieldSchema;
21
- form: import('../composables').UseFormReturn<Record<string, unknown>>;
27
+ field: import('..').FormFieldSchema;
28
+ form: import('..').UseFormReturn<Record<string, unknown>>;
22
29
  fieldProps: {
23
30
  modelValue: unknown;
24
31
  'onUpdate:modelValue': (value: unknown) => void;
@@ -43,9 +50,10 @@ declare const __VLS_component: import('vue').DefineComponent<Props, {}, {}, {},
43
50
  }>, {
44
51
  size: "md" | "lg" | "xl";
45
52
  title: string;
46
- tabs: SettingsTab[];
53
+ tabs: SettingsTabInput[];
47
54
  showAppearance: boolean;
48
55
  layout: SettingsModalLayout;
56
+ model: ControlModel | ControlModelBinding;
49
57
  }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
50
58
  declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
51
59
  export default _default;