@morscherlab/mint-sdk 1.0.0-beta.2 → 1.0.0-beta.3
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.
- package/README.md +218 -6
- package/dist/__tests__/components/ActionItem.test.d.ts +1 -0
- package/dist/__tests__/components/AppAvatarMenu.test.d.ts +1 -0
- package/dist/__tests__/components/AppPageSelector.test.d.ts +1 -0
- package/dist/__tests__/components/AppPillNav.test.d.ts +1 -0
- package/dist/__tests__/components/AppPluginSwitcher.test.d.ts +1 -0
- package/dist/__tests__/components/AppToastContainer.test.d.ts +1 -0
- package/dist/__tests__/components/BaseRadioGroup.test.d.ts +1 -0
- package/dist/__tests__/components/BaseSelect.test.d.ts +1 -0
- package/dist/__tests__/components/BaseTabs.test.d.ts +1 -0
- package/dist/__tests__/components/BatchProgressList.test.d.ts +1 -0
- package/dist/__tests__/components/BioTemplateExperimentWorkspaceView.test.d.ts +1 -0
- package/dist/__tests__/components/BioTemplatePackWorkspaceView.test.d.ts +1 -0
- package/dist/__tests__/components/BioTemplatePresetWorkspaceView.test.d.ts +1 -0
- package/dist/__tests__/components/BioTemplateRenderer.test.d.ts +1 -0
- package/dist/__tests__/components/Breadcrumb.test.d.ts +1 -0
- package/dist/__tests__/components/CalendarGridPanel.test.d.ts +1 -0
- package/dist/__tests__/components/ConcentrationInput.test.d.ts +1 -0
- package/dist/__tests__/components/ControlWorkspaceView.test.d.ts +1 -0
- package/dist/__tests__/components/DatePicker.test.d.ts +1 -0
- package/dist/__tests__/components/DateTimePicker.test.d.ts +1 -0
- package/dist/__tests__/components/EmptyState.test.d.ts +1 -0
- package/dist/__tests__/components/ExperimentPopover.test.d.ts +1 -0
- package/dist/__tests__/components/FormBuilder.test.d.ts +1 -0
- package/dist/__tests__/components/FormCompatibility.test.d.ts +1 -0
- package/dist/__tests__/components/GroupAssigner.test.d.ts +1 -0
- package/dist/__tests__/components/GroupingModal.test.d.ts +1 -0
- package/dist/__tests__/components/MultiSelect.test.d.ts +1 -0
- package/dist/__tests__/components/ProtocolStepEditor.test.d.ts +1 -0
- package/dist/__tests__/components/ReagentList.test.d.ts +1 -0
- package/dist/__tests__/components/SampleHierarchyTree.test.d.ts +1 -0
- package/dist/__tests__/components/SampleSelector.test.d.ts +1 -0
- package/dist/__tests__/components/SegmentedControl.test.d.ts +1 -0
- package/dist/__tests__/components/SettingsButton.test.d.ts +1 -0
- package/dist/__tests__/components/SettingsModal.test.d.ts +1 -0
- package/dist/__tests__/components/TagsInput.test.d.ts +1 -0
- package/dist/__tests__/components/ThemeToggle.test.d.ts +1 -0
- package/dist/__tests__/components/TimePicker.test.d.ts +1 -0
- package/dist/__tests__/composables/useBioTemplatePackWorkspace.test.d.ts +1 -0
- package/dist/__tests__/composables/useBioTemplatePresetWorkspace.test.d.ts +1 -0
- package/dist/__tests__/composables/useBioTemplateWorkspace.test.d.ts +1 -0
- package/dist/__tests__/composables/useCalendarGrid.test.d.ts +1 -0
- package/dist/__tests__/composables/useControlSchema.test.d.ts +1 -0
- package/dist/__tests__/composables/useDebouncedWatch.test.d.ts +1 -0
- package/dist/__tests__/composables/useDropdownState.test.d.ts +1 -0
- package/dist/__tests__/composables/useEventListener.test.d.ts +1 -0
- package/dist/__tests__/composables/useExpansionSet.test.d.ts +1 -0
- package/dist/__tests__/composables/useExperimentData.test.d.ts +1 -0
- package/dist/__tests__/composables/useExperimentSelector.test.d.ts +1 -0
- package/dist/__tests__/composables/useGroupAssignment.test.d.ts +1 -0
- package/dist/__tests__/composables/useListSelection.test.d.ts +1 -0
- package/dist/__tests__/composables/usePluginClient.test.d.ts +1 -0
- package/dist/__tests__/composables/usePluginConfig.test.d.ts +1 -0
- package/dist/__tests__/composables/useRequestSyncState.test.d.ts +1 -0
- package/dist/__tests__/composables/useSampleGroups.test.d.ts +1 -0
- package/dist/__tests__/composables/useSelectionLimit.test.d.ts +1 -0
- package/dist/__tests__/composables/useSortedItems.test.d.ts +1 -0
- package/dist/__tests__/composables/useTemplateCollection.test.d.ts +1 -0
- package/dist/__tests__/composables/useTextSearch.test.d.ts +1 -0
- package/dist/__tests__/composables/useTheme.test.d.ts +1 -0
- package/dist/__tests__/composables/useTimeUtils.test.d.ts +1 -0
- package/dist/__tests__/docs/frontendDocsCatalog.test.d.ts +1 -0
- package/dist/__tests__/templates/templates.test.d.ts +1 -0
- package/dist/{auth-DsI0rQ7_.js → auth-QQj2kkze.js} +12 -5
- package/dist/auth-QQj2kkze.js.map +1 -0
- package/dist/components/ActionItem.vue.d.ts +32 -0
- package/dist/components/AppAvatarMenu.vue.d.ts +2 -7
- package/dist/components/AppPageSelector.vue.d.ts +3 -6
- package/dist/components/AppPillNav.vue.d.ts +2 -2
- package/dist/components/AppSidebar.vue.d.ts +56 -3
- package/dist/components/AppToastContainer.vue.d.ts +2 -0
- package/dist/components/AppTopBar.vue.d.ts +41 -10
- package/dist/components/BaseButton.vue.d.ts +1 -1
- package/dist/components/BaseCheckbox.vue.d.ts +1 -1
- package/dist/components/BaseInput.vue.d.ts +2 -2
- package/dist/components/BasePill.vue.d.ts +2 -2
- package/dist/components/BaseRadioGroup.vue.d.ts +3 -3
- package/dist/components/BaseSelect.vue.d.ts +3 -3
- package/dist/components/BaseTabs.vue.d.ts +2 -2
- package/dist/components/BaseTextarea.vue.d.ts +1 -1
- package/dist/components/BaseToggle.vue.d.ts +1 -1
- package/dist/components/BioTemplateExperimentWorkspaceView.vue.d.ts +117 -0
- package/dist/components/BioTemplatePackWorkspaceView.vue.d.ts +92 -0
- package/dist/components/BioTemplatePresetWorkspaceView.vue.d.ts +82 -0
- package/dist/components/BioTemplateRenderer.vue.d.ts +29 -0
- package/dist/components/Breadcrumb.vue.d.ts +2 -2
- package/dist/components/Calendar.vue.d.ts +1 -1
- package/dist/components/CalendarGridPanel.vue.d.ts +25 -0
- package/dist/components/CollapsibleCard.vue.d.ts +1 -1
- package/dist/components/ConcentrationInput.vue.d.ts +2 -2
- package/dist/components/ConfirmDialog.vue.d.ts +2 -2
- package/dist/components/ControlWorkspaceView.vue.d.ts +130 -0
- package/dist/components/DatePicker.vue.d.ts +1 -1
- package/dist/components/DateTimePicker.vue.d.ts +3 -3
- package/dist/components/Divider.vue.d.ts +1 -1
- package/dist/components/DropdownButton.vue.d.ts +3 -3
- package/dist/components/EmptyState.vue.d.ts +1 -2
- package/dist/components/ExperimentDataViewer.vue.d.ts +1 -1
- package/dist/components/ExperimentTimeline.vue.d.ts +2 -2
- package/dist/components/FileUploader.vue.d.ts +1 -1
- package/dist/components/FitPanel.vue.d.ts +1 -1
- package/dist/components/FormActions.vue.d.ts +4 -4
- package/dist/components/FormBuilder.vue.d.ts +22 -8
- package/dist/components/FormFieldRenderer.vue.d.ts +7 -10
- package/dist/components/FormSection.vue.d.ts +11 -24
- package/dist/components/FormulaInput.vue.d.ts +2 -2
- package/dist/components/MoleculeInput.vue.d.ts +2 -2
- package/dist/components/MultiSelect.vue.d.ts +3 -3
- package/dist/components/NumberInput.vue.d.ts +1 -1
- package/dist/components/ProgressBar.vue.d.ts +1 -1
- package/dist/components/ProtocolStepEditor.vue.d.ts +3 -1
- package/dist/components/RackEditor.vue.d.ts +2 -2
- package/dist/components/SampleLegend.vue.d.ts +2 -2
- package/dist/components/ScheduleCalendar.vue.d.ts +2 -2
- package/dist/components/SegmentedControl.vue.d.ts +2 -2
- package/dist/components/SequenceInput.vue.d.ts +3 -3
- package/dist/components/SettingsButton.vue.d.ts +2 -2
- package/dist/components/SettingsModal.vue.d.ts +13 -5
- package/dist/components/StatusIndicator.vue.d.ts +1 -1
- package/dist/components/TagsInput.vue.d.ts +3 -2
- package/dist/components/TimePicker.vue.d.ts +3 -3
- package/dist/components/TimeRangeInput.vue.d.ts +1 -1
- package/dist/components/UnitInput.vue.d.ts +2 -2
- package/dist/components/WellPlate.vue.d.ts +8 -8
- package/dist/components/index.d.ts +11 -1
- package/dist/components/index.js +3 -3
- package/dist/components/internal/FormFieldRendererInternal.vue.d.ts +31 -0
- package/dist/components/internal/FormSectionRenderer.vue.d.ts +43 -0
- package/dist/{components-_XqPEhP9.js → components-D_Sr0adg.js} +7290 -6518
- package/dist/components-D_Sr0adg.js.map +1 -0
- package/dist/composables/index.d.ts +21 -2
- package/dist/composables/index.js +4 -3
- package/dist/composables/platformContextHelpers.d.ts +14 -0
- package/dist/composables/useBioTemplateComponents.d.ts +20 -0
- package/dist/composables/useBioTemplateControls.d.ts +6 -0
- package/dist/composables/useBioTemplatePackWorkspace.d.ts +45 -0
- package/dist/composables/useBioTemplatePresetWorkspace.d.ts +74 -0
- package/dist/composables/useBioTemplateWorkspace.d.ts +50 -0
- package/dist/composables/useCalendarGrid.d.ts +26 -0
- package/dist/composables/useControlSchema.d.ts +321 -0
- package/dist/composables/useDebouncedWatch.d.ts +20 -0
- package/dist/composables/useDropdownState.d.ts +19 -0
- package/dist/composables/useEventListener.d.ts +13 -0
- package/dist/composables/useExpansionSet.d.ts +21 -0
- package/dist/composables/useExperimentData.d.ts +10 -0
- package/dist/composables/useExperimentSave.d.ts +31 -2
- package/dist/composables/useExperimentSelector.d.ts +20 -0
- package/dist/composables/useForm.d.ts +2 -0
- package/dist/composables/useGroupAssignment.d.ts +31 -0
- package/dist/composables/useListSelection.d.ts +35 -0
- package/dist/composables/usePlatformContext.d.ts +21 -3
- package/dist/composables/usePluginApi.d.ts +7 -14
- package/dist/composables/usePluginClient.d.ts +109 -0
- package/dist/composables/usePluginConfig.d.ts +12 -0
- package/dist/composables/useRequestSyncState.d.ts +34 -0
- package/dist/composables/useSampleGroups.d.ts +32 -0
- package/dist/composables/useSelectionLimit.d.ts +17 -0
- package/dist/composables/useSortedItems.d.ts +32 -0
- package/dist/composables/useTemplateCollection.d.ts +58 -0
- package/dist/composables/useTextSearch.d.ts +18 -0
- package/dist/composables/useTimeUtils.d.ts +8 -0
- package/dist/{composables-tiZqLu1M.js → composables-C3dpXQN5.js} +228 -146
- package/dist/composables-C3dpXQN5.js.map +1 -0
- package/dist/index.d.ts +12 -3
- package/dist/index.js +6 -5
- package/dist/install.d.ts +7 -2
- package/dist/install.js +2 -2
- package/dist/install.js.map +1 -1
- package/dist/stores/index.js +1 -1
- package/dist/stores/settings.d.ts +4 -1
- package/dist/styles.css +5235 -5977
- package/dist/templates/adapters.d.ts +43 -0
- package/dist/templates/builders.d.ts +63 -0
- package/dist/templates/catalog.d.ts +188 -0
- package/dist/templates/componentBindings.d.ts +58 -0
- package/dist/templates/controlSchemas.d.ts +25 -0
- package/dist/templates/index.d.ts +15 -0
- package/dist/templates/index.js +2 -0
- package/dist/templates/lookup.d.ts +4 -0
- package/dist/templates/packs.d.ts +18 -0
- package/dist/templates/presets.d.ts +90 -0
- package/dist/templates/types.d.ts +531 -0
- package/dist/templates-50NPjaxL.js +9333 -0
- package/dist/templates-50NPjaxL.js.map +1 -0
- package/dist/types/components.d.ts +26 -4
- package/dist/types/form-builder.d.ts +6 -8
- package/dist/types/index.d.ts +2 -2
- package/dist/types/platform.d.ts +7 -1
- package/dist/useScheduleDrag-D4oWdh41.js +4371 -0
- package/dist/useScheduleDrag-D4oWdh41.js.map +1 -0
- package/dist/utils/formModelSync.d.ts +5 -0
- package/dist/utils/items.d.ts +8 -0
- package/dist/utils/options.d.ts +6 -0
- package/dist/utils/pluginIcon.d.ts +9 -0
- package/package.json +7 -2
- package/src/__tests__/components/ActionItem.test.ts +99 -0
- package/src/__tests__/components/AppAvatarMenu.test.ts +27 -0
- package/src/__tests__/components/AppPageSelector.test.ts +134 -0
- package/src/__tests__/components/AppPillNav.test.ts +78 -0
- package/src/__tests__/components/AppPluginSwitcher.test.ts +44 -0
- package/src/__tests__/components/AppSidebar.test.ts +370 -0
- package/src/__tests__/components/AppToastContainer.test.ts +48 -0
- package/src/__tests__/components/AppTopBar.test.ts +383 -0
- package/src/__tests__/components/BaseRadioGroup.test.ts +25 -0
- package/src/__tests__/components/BaseSelect.test.ts +21 -0
- package/src/__tests__/components/BaseTabs.test.ts +25 -0
- package/src/__tests__/components/BatchProgressList.test.ts +52 -0
- package/src/__tests__/components/BioTemplateExperimentWorkspaceView.test.ts +153 -0
- package/src/__tests__/components/BioTemplatePackWorkspaceView.test.ts +161 -0
- package/src/__tests__/components/BioTemplatePresetWorkspaceView.test.ts +281 -0
- package/src/__tests__/components/BioTemplateRenderer.test.ts +71 -0
- package/src/__tests__/components/Breadcrumb.test.ts +23 -0
- package/src/__tests__/components/CalendarGridPanel.test.ts +36 -0
- package/src/__tests__/components/ConcentrationInput.test.ts +45 -0
- package/src/__tests__/components/ControlWorkspaceView.test.ts +1031 -0
- package/src/__tests__/components/DataFrame.test.ts +11 -0
- package/src/__tests__/components/DatePicker.test.ts +45 -0
- package/src/__tests__/components/DateTimePicker.test.ts +48 -0
- package/src/__tests__/components/DropdownButton.test.ts +23 -0
- package/src/__tests__/components/EmptyState.test.ts +23 -0
- package/src/__tests__/components/ExperimentPopover.test.ts +56 -0
- package/src/__tests__/components/FormBuilder.test.ts +296 -0
- package/src/__tests__/components/FormCompatibility.test.ts +94 -0
- package/src/__tests__/components/GroupAssigner.test.ts +30 -0
- package/src/__tests__/components/GroupingModal.test.ts +73 -0
- package/src/__tests__/components/MultiSelect.test.ts +48 -0
- package/src/__tests__/components/ProtocolStepEditor.test.ts +33 -0
- package/src/__tests__/components/ReagentList.test.ts +82 -0
- package/src/__tests__/components/SampleHierarchyTree.test.ts +53 -0
- package/src/__tests__/components/SampleSelector.test.ts +60 -0
- package/src/__tests__/components/SegmentedControl.test.ts +24 -0
- package/src/__tests__/components/SettingsButton.test.ts +44 -0
- package/src/__tests__/components/SettingsModal.test.ts +296 -0
- package/src/__tests__/components/TagsInput.test.ts +75 -0
- package/src/__tests__/components/ThemeToggle.test.ts +47 -0
- package/src/__tests__/components/TimePicker.test.ts +38 -0
- package/src/__tests__/composables/useBioTemplatePackWorkspace.test.ts +122 -0
- package/src/__tests__/composables/useBioTemplatePresetWorkspace.test.ts +199 -0
- package/src/__tests__/composables/useBioTemplateWorkspace.test.ts +99 -0
- package/src/__tests__/composables/useCalendarGrid.test.ts +38 -0
- package/src/__tests__/composables/useControlSchema.test.ts +919 -0
- package/src/__tests__/composables/useDebouncedWatch.test.ts +93 -0
- package/src/__tests__/composables/useDropdownState.test.ts +95 -0
- package/src/__tests__/composables/useEventListener.test.ts +116 -0
- package/src/__tests__/composables/useExpansionSet.test.ts +62 -0
- package/src/__tests__/composables/useExperimentData.test.ts +4 -0
- package/src/__tests__/composables/useExperimentSave.test.ts +203 -8
- package/src/__tests__/composables/useExperimentSelector.test.ts +164 -0
- package/src/__tests__/composables/useForm.test.ts +58 -0
- package/src/__tests__/composables/useFormBuilder.test.ts +77 -0
- package/src/__tests__/composables/useGroupAssignment.test.ts +73 -0
- package/src/__tests__/composables/useListSelection.test.ts +66 -0
- package/src/__tests__/composables/usePluginClient.test.ts +444 -0
- package/src/__tests__/composables/usePluginConfig.test.ts +5 -0
- package/src/__tests__/composables/useRequestSyncState.test.ts +92 -0
- package/src/__tests__/composables/useSampleGroups.test.ts +66 -0
- package/src/__tests__/composables/useSelectionLimit.test.ts +41 -0
- package/src/__tests__/composables/useSortedItems.test.ts +87 -0
- package/src/__tests__/composables/useTemplateCollection.test.ts +147 -0
- package/src/__tests__/composables/useTextSearch.test.ts +55 -0
- package/src/__tests__/composables/useTheme.test.ts +91 -0
- package/src/__tests__/composables/useTimeUtils.test.ts +35 -0
- package/src/__tests__/docs/frontendDocsCatalog.test.ts +229 -0
- package/src/__tests__/fixtures/templates/dose-response.json +81 -0
- package/src/__tests__/fixtures/templates/plate-map.json +54 -0
- package/src/__tests__/fixtures/templates/qpcr-plate.json +96 -0
- package/src/__tests__/fixtures/templates/sample-sheet.json +71 -0
- package/src/__tests__/templates/templates.test.ts +1043 -0
- package/src/components/ActionItem.vue +82 -0
- package/src/components/AppAvatarMenu.vue +15 -69
- package/src/components/AppLayout.story.vue +25 -25
- package/src/components/AppPageSelector.vue +63 -94
- package/src/components/AppPillNav.vue +44 -39
- package/src/components/AppPluginSwitcher.vue +41 -145
- package/src/components/AppSidebar.story.vue +94 -0
- package/src/components/AppSidebar.vue +187 -12
- package/src/components/{ToastNotification.story.vue → AppToastContainer.story.vue} +6 -6
- package/src/components/AppToastContainer.vue +62 -0
- package/src/components/AppTopBar.story.vue +7 -30
- package/src/components/AppTopBar.vue +251 -57
- package/src/components/BaseModal.vue +3 -5
- package/src/components/BaseRadioGroup.vue +7 -3
- package/src/components/BaseSelect.vue +11 -7
- package/src/components/BaseTabs.vue +6 -4
- package/src/components/BatchProgressList.vue +5 -8
- package/src/components/BioTemplateExperimentWorkspaceView.story.vue +123 -0
- package/src/components/BioTemplateExperimentWorkspaceView.vue +337 -0
- package/src/components/BioTemplatePackWorkspaceView.story.vue +107 -0
- package/src/components/BioTemplatePackWorkspaceView.vue +176 -0
- package/src/components/BioTemplatePresetWorkspaceView.story.vue +151 -0
- package/src/components/BioTemplatePresetWorkspaceView.vue +392 -0
- package/src/components/BioTemplateRenderer.story.vue +57 -0
- package/src/components/BioTemplateRenderer.vue +269 -0
- package/src/components/Breadcrumb.vue +14 -8
- package/src/components/CalendarGridPanel.vue +120 -0
- package/src/components/ConcentrationInput.vue +27 -64
- package/src/components/ControlWorkspaceView.story.vue +336 -0
- package/src/components/ControlWorkspaceView.vue +347 -0
- package/src/components/DataFrame.vue +34 -50
- package/src/components/DatePicker.vue +59 -192
- package/src/components/DateTimePicker.vue +50 -171
- package/src/components/DropdownButton.vue +14 -32
- package/src/components/EmptyState.vue +4 -2
- package/src/components/ExperimentPopover.vue +5 -22
- package/src/components/FormBuilder.vue +124 -27
- package/src/components/FormFieldRenderer.vue +15 -38
- package/src/components/FormSection.vue +20 -73
- package/src/components/GroupAssigner.vue +24 -56
- package/src/components/GroupingModal.story.vue +3 -3
- package/src/components/GroupingModal.vue +30 -391
- package/src/components/MultiSelect.vue +17 -12
- package/src/components/PlateMapEditor.vue +3 -8
- package/src/components/PluginIcon.vue +2 -22
- package/src/components/ProtocolStepEditor.vue +13 -22
- package/src/components/ReagentList.vue +25 -33
- package/src/components/SampleHierarchyTree.vue +12 -23
- package/src/components/SampleSelector.vue +42 -122
- package/src/components/SegmentedControl.vue +7 -3
- package/src/components/SettingsButton.story.vue +1 -1
- package/src/components/SettingsButton.vue +15 -27
- package/src/components/SettingsModal.story.vue +1 -1
- package/src/components/SettingsModal.vue +120 -29
- package/src/components/TagsInput.vue +29 -14
- package/src/components/ThemeToggle.vue +9 -7
- package/src/components/TimePicker.vue +19 -41
- package/src/components/ToastNotification.vue +4 -57
- package/src/components/Tooltip.vue +7 -12
- package/src/components/WellEditPopup.vue +3 -8
- package/src/components/WellPlate.vue +4 -10
- package/src/components/index.ts +11 -1
- package/src/components/internal/FormFieldRendererInternal.vue +50 -0
- package/src/components/internal/FormSectionRenderer.vue +78 -0
- package/src/composables/index.ts +212 -0
- package/src/composables/platformContextHelpers.ts +74 -0
- package/src/composables/useBioTemplateComponents.ts +93 -0
- package/src/composables/useBioTemplateControls.ts +41 -0
- package/src/composables/useBioTemplatePackWorkspace.ts +181 -0
- package/src/composables/useBioTemplatePresetWorkspace.ts +337 -0
- package/src/composables/useBioTemplateWorkspace.ts +139 -0
- package/src/composables/useCalendarGrid.ts +140 -0
- package/src/composables/useControlSchema.ts +1274 -0
- package/src/composables/useDebouncedWatch.ts +119 -0
- package/src/composables/useDropdownState.ts +83 -0
- package/src/composables/useEventListener.ts +111 -0
- package/src/composables/useExpansionSet.ts +117 -0
- package/src/composables/useExperimentData.ts +20 -11
- package/src/composables/useExperimentSave.ts +202 -50
- package/src/composables/useExperimentSelector.ts +86 -72
- package/src/composables/useForm.ts +49 -4
- package/src/composables/useFormBuilder.ts +93 -42
- package/src/composables/useGroupAssignment.ts +148 -0
- package/src/composables/useListSelection.ts +158 -0
- package/src/composables/usePluginApi.ts +7 -14
- package/src/composables/usePluginClient.ts +425 -0
- package/src/composables/usePluginConfig.ts +34 -13
- package/src/composables/useRequestSyncState.ts +126 -0
- package/src/composables/useSampleGroups.ts +126 -0
- package/src/composables/useSelectionLimit.ts +57 -0
- package/src/composables/useSortedItems.ts +118 -0
- package/src/composables/useTemplateCollection.ts +229 -0
- package/src/composables/useTextSearch.ts +60 -0
- package/src/composables/useTheme.ts +2 -28
- package/src/composables/useTimeUtils.ts +26 -2
- package/src/composables/useWellPlateEditor.ts +13 -9
- package/src/index.ts +224 -4
- package/src/install.ts +11 -4
- package/src/stores/settings.ts +13 -9
- package/src/styles/components/app-page-selector.css +23 -0
- package/src/styles/components/app-pill-nav.css +7 -0
- package/src/styles/components/app-top-bar.css +34 -0
- package/src/styles/components/concentration-input.css +3 -142
- package/src/styles/components/empty-state.css +0 -16
- package/src/styles/components/settings-button.css +3 -66
- package/src/styles/components/theme-toggle.css +3 -66
- package/src/styles/index.css +0 -1
- package/src/templates/adapters.ts +785 -0
- package/src/templates/builders.ts +2149 -0
- package/src/templates/catalog.ts +245 -0
- package/src/templates/componentBindings.ts +615 -0
- package/src/templates/controlSchemas.ts +718 -0
- package/src/templates/index.ts +314 -0
- package/src/templates/lookup.ts +18 -0
- package/src/templates/packs.ts +156 -0
- package/src/templates/presets.ts +146 -0
- package/src/templates/types.ts +668 -0
- package/src/types/components.ts +41 -4
- package/src/types/form-builder.ts +7 -2
- package/src/types/index.ts +14 -0
- package/src/types/platform.ts +7 -1
- package/src/utils/formModelSync.ts +52 -0
- package/src/utils/items.ts +28 -0
- package/src/utils/options.ts +23 -0
- package/src/utils/pluginIcon.ts +30 -0
- package/dist/auth-DsI0rQ7_.js.map +0 -1
- package/dist/components-_XqPEhP9.js.map +0 -1
- package/dist/composables-tiZqLu1M.js.map +0 -1
- package/dist/useScheduleDrag-CA9sGNJG.js +0 -7181
- package/dist/useScheduleDrag-CA9sGNJG.js.map +0 -1
- package/src/styles/components/grouping-modal.css +0 -323
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ref, computed, type ComputedRef } from 'vue'
|
|
1
|
+
import { ref, computed, toRaw, type ComputedRef } from 'vue'
|
|
2
2
|
import type {
|
|
3
3
|
PlateMapEditorState,
|
|
4
4
|
PlateMap,
|
|
@@ -73,6 +73,10 @@ function generateSampleId(): string {
|
|
|
73
73
|
return `sample-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`
|
|
74
74
|
}
|
|
75
75
|
|
|
76
|
+
function cloneValue<T>(value: T): T {
|
|
77
|
+
return structuredClone(toRaw(value))
|
|
78
|
+
}
|
|
79
|
+
|
|
76
80
|
/** Manages multi-plate well-plate state with sample assignment, selection, and undo/redo history. */
|
|
77
81
|
export function useWellPlateEditor(
|
|
78
82
|
initialState?: Partial<PlateMapEditorState>,
|
|
@@ -107,8 +111,8 @@ export function useWellPlateEditor(
|
|
|
107
111
|
|
|
108
112
|
function saveToHistory() {
|
|
109
113
|
const entry: HistoryEntry = {
|
|
110
|
-
plates:
|
|
111
|
-
samples:
|
|
114
|
+
plates: cloneValue(internalState.value.plates),
|
|
115
|
+
samples: cloneValue(internalState.value.samples),
|
|
112
116
|
}
|
|
113
117
|
|
|
114
118
|
if (historyIndex.value < history.value.length - 1) {
|
|
@@ -255,8 +259,8 @@ export function useWellPlateEditor(
|
|
|
255
259
|
const entry = history.value[historyIndex.value]
|
|
256
260
|
historyIndex.value--
|
|
257
261
|
|
|
258
|
-
internalState.value.plates =
|
|
259
|
-
internalState.value.samples =
|
|
262
|
+
internalState.value.plates = cloneValue(entry.plates)
|
|
263
|
+
internalState.value.samples = cloneValue(entry.samples)
|
|
260
264
|
|
|
261
265
|
const activePlateExists = internalState.value.plates.some(p => p.id === internalState.value.activePlateId)
|
|
262
266
|
if (!activePlateExists) {
|
|
@@ -271,8 +275,8 @@ export function useWellPlateEditor(
|
|
|
271
275
|
historyIndex.value++
|
|
272
276
|
const entry = history.value[historyIndex.value]
|
|
273
277
|
|
|
274
|
-
internalState.value.plates =
|
|
275
|
-
internalState.value.samples =
|
|
278
|
+
internalState.value.plates = cloneValue(entry.plates)
|
|
279
|
+
internalState.value.samples = cloneValue(entry.samples)
|
|
276
280
|
internalState.value.selectedWells = []
|
|
277
281
|
}
|
|
278
282
|
|
|
@@ -369,11 +373,11 @@ export function useWellPlateEditor(
|
|
|
369
373
|
function loadState(state: Partial<PlateMapEditorState>) {
|
|
370
374
|
saveToHistory()
|
|
371
375
|
if (state.plates && state.plates.length > 0) {
|
|
372
|
-
internalState.value.plates =
|
|
376
|
+
internalState.value.plates = cloneValue(state.plates)
|
|
373
377
|
internalState.value.activePlateId = state.activePlateId ?? state.plates[0].id
|
|
374
378
|
}
|
|
375
379
|
if (state.samples) {
|
|
376
|
-
internalState.value.samples =
|
|
380
|
+
internalState.value.samples = cloneValue(state.samples)
|
|
377
381
|
}
|
|
378
382
|
internalState.value.selectedWells = state.selectedWells ?? []
|
|
379
383
|
internalState.value.activeSampleId = state.activeSampleId
|
package/src/index.ts
CHANGED
|
@@ -17,6 +17,7 @@ export {
|
|
|
17
17
|
ColorSlider,
|
|
18
18
|
BaseTabs,
|
|
19
19
|
BaseModal,
|
|
20
|
+
FormBuilder,
|
|
20
21
|
FormField,
|
|
21
22
|
DatePicker,
|
|
22
23
|
TimePicker,
|
|
@@ -24,11 +25,9 @@ export {
|
|
|
24
25
|
NumberInput,
|
|
25
26
|
FileUploader,
|
|
26
27
|
AlertBox,
|
|
27
|
-
ToastNotification,
|
|
28
28
|
AppToastContainer,
|
|
29
29
|
IconButton,
|
|
30
30
|
ThemeToggle,
|
|
31
|
-
SettingsButton,
|
|
32
31
|
CollapsibleCard,
|
|
33
32
|
AppTopBar,
|
|
34
33
|
AppPageSelector,
|
|
@@ -37,6 +36,7 @@ export {
|
|
|
37
36
|
AppPluginSwitcher,
|
|
38
37
|
AppSidebar,
|
|
39
38
|
AppLayout,
|
|
39
|
+
ControlWorkspaceView,
|
|
40
40
|
AppContainer,
|
|
41
41
|
PluginIcon,
|
|
42
42
|
Skeleton,
|
|
@@ -48,7 +48,6 @@ export {
|
|
|
48
48
|
ExperimentTimeline,
|
|
49
49
|
// Sample management components
|
|
50
50
|
SampleSelector,
|
|
51
|
-
GroupingModal,
|
|
52
51
|
AutoGroupModal,
|
|
53
52
|
GroupAssigner,
|
|
54
53
|
// Lab/Experiment components
|
|
@@ -101,8 +100,21 @@ export {
|
|
|
101
100
|
ExperimentSelectorModal,
|
|
102
101
|
ExperimentPopover,
|
|
103
102
|
FitPanel,
|
|
103
|
+
BioTemplateRenderer,
|
|
104
|
+
BioTemplateExperimentWorkspaceView,
|
|
105
|
+
BioTemplatePackWorkspaceView,
|
|
106
|
+
BioTemplatePresetWorkspaceView,
|
|
104
107
|
} from './components'
|
|
105
108
|
|
|
109
|
+
/** @deprecated Use AppToastContainer instead. */
|
|
110
|
+
export { ToastNotification } from './components'
|
|
111
|
+
|
|
112
|
+
/** @deprecated Use AppTopBar settingsConfig or SettingsModal instead. */
|
|
113
|
+
export { SettingsButton } from './components'
|
|
114
|
+
|
|
115
|
+
/** @deprecated Use AutoGroupModal instead. */
|
|
116
|
+
export { GroupingModal } from './components'
|
|
117
|
+
|
|
106
118
|
// Composables
|
|
107
119
|
export {
|
|
108
120
|
useApi,
|
|
@@ -128,6 +140,14 @@ export {
|
|
|
128
140
|
type ConcentrationUnit,
|
|
129
141
|
type VolumeValue,
|
|
130
142
|
type VolumeUnit,
|
|
143
|
+
type DilutionParams,
|
|
144
|
+
type DilutionResult,
|
|
145
|
+
type SerialDilutionParams,
|
|
146
|
+
type SerialDilutionStep,
|
|
147
|
+
type SerialDilutionResult,
|
|
148
|
+
type ConversionResult,
|
|
149
|
+
type WellConcentration,
|
|
150
|
+
type UseDoseCalculatorReturn,
|
|
131
151
|
type StepTemplate,
|
|
132
152
|
type FormulaParseResult,
|
|
133
153
|
type FormulaPart,
|
|
@@ -147,6 +167,16 @@ export {
|
|
|
147
167
|
compareTime,
|
|
148
168
|
// Schedule drag
|
|
149
169
|
useScheduleDrag,
|
|
170
|
+
// DOM events
|
|
171
|
+
useEventListener,
|
|
172
|
+
type EventListenerEnabled,
|
|
173
|
+
type EventFor,
|
|
174
|
+
type EventListenerStop,
|
|
175
|
+
type EventMapFor,
|
|
176
|
+
type EventTargetGetter,
|
|
177
|
+
type EventTargetLike,
|
|
178
|
+
type UseEventListenerObjectOptions,
|
|
179
|
+
type UseEventListenerOptions,
|
|
150
180
|
// Plugin config
|
|
151
181
|
usePluginConfig,
|
|
152
182
|
type UsePluginConfigReturn,
|
|
@@ -178,7 +208,169 @@ export {
|
|
|
178
208
|
useExperimentSave,
|
|
179
209
|
type UseExperimentSaveOptions,
|
|
180
210
|
type UseExperimentSaveReturn,
|
|
181
|
-
//
|
|
211
|
+
// Template collection persistence
|
|
212
|
+
useTemplateCollection,
|
|
213
|
+
type TemplateCollectionInput,
|
|
214
|
+
type UseTemplateCollectionOptions,
|
|
215
|
+
type UseTemplateCollectionReturn,
|
|
216
|
+
useRequestSyncState,
|
|
217
|
+
type RequestSyncRunOptions,
|
|
218
|
+
type RequestSyncSuccessKind,
|
|
219
|
+
type UseRequestSyncStateReturn,
|
|
220
|
+
useSelectionLimit,
|
|
221
|
+
type SelectionLimitSource,
|
|
222
|
+
type UseSelectionLimitOptions,
|
|
223
|
+
type UseSelectionLimitReturn,
|
|
224
|
+
useListSelection,
|
|
225
|
+
type ListSelectionSource,
|
|
226
|
+
type ListSelectionValue,
|
|
227
|
+
type UseListSelectionOptions,
|
|
228
|
+
type UseListSelectionReturn,
|
|
229
|
+
type WidenListSelectionValue,
|
|
230
|
+
useGroupAssignment,
|
|
231
|
+
type GroupAssignmentSource,
|
|
232
|
+
type GroupAssignmentState,
|
|
233
|
+
type GroupAssignmentZone,
|
|
234
|
+
type UseGroupAssignmentOptions,
|
|
235
|
+
type UseGroupAssignmentReturn,
|
|
236
|
+
useSampleGroups,
|
|
237
|
+
type DisplaySampleSubGroup,
|
|
238
|
+
type SampleGroupSource,
|
|
239
|
+
type SampleMajorGroup,
|
|
240
|
+
type UseSampleGroupsOptions,
|
|
241
|
+
type UseSampleGroupsReturn,
|
|
242
|
+
useExpansionSet,
|
|
243
|
+
type ExpansionSetSource,
|
|
244
|
+
type UseExpansionSetOptions,
|
|
245
|
+
type UseExpansionSetReturn,
|
|
246
|
+
compareSortValues,
|
|
247
|
+
useSortedItems,
|
|
248
|
+
type CompareSortValuesOptions,
|
|
249
|
+
type SortComparator,
|
|
250
|
+
type SortComparatorContext,
|
|
251
|
+
type SortDescriptor,
|
|
252
|
+
type SortedItemsSource,
|
|
253
|
+
type SortOrder,
|
|
254
|
+
type UseSortedItemsOptions,
|
|
255
|
+
type UseSortedItemsReturn,
|
|
256
|
+
candidateMatchesSearch,
|
|
257
|
+
normalizeSearchQuery,
|
|
258
|
+
useTextSearch,
|
|
259
|
+
type TextSearchCandidate,
|
|
260
|
+
type TextSearchSource,
|
|
261
|
+
type UseTextSearchOptions,
|
|
262
|
+
type UseTextSearchReturn,
|
|
263
|
+
// Schema-driven controls
|
|
264
|
+
controlsToFormSchema,
|
|
265
|
+
controlsToSectionFormSchema,
|
|
266
|
+
controlsToSectionFormSchemas,
|
|
267
|
+
controlsToSidebarPanels,
|
|
268
|
+
controlsToSettingsSchema,
|
|
269
|
+
controlsToTopBarSettingsConfig,
|
|
270
|
+
controlsToTopBarTabs,
|
|
271
|
+
controlsToViewIds,
|
|
272
|
+
controlsToViewItems,
|
|
273
|
+
controlValuesToComponentProps,
|
|
274
|
+
defineControlModel,
|
|
275
|
+
defineDoseDesignControlModel,
|
|
276
|
+
defineDoseCalculatorControlProps,
|
|
277
|
+
defineControls,
|
|
278
|
+
defineWellPlateControlProps,
|
|
279
|
+
defineWellPlateDoseControlProps,
|
|
280
|
+
getDefaultControlView,
|
|
281
|
+
getControlDefaults,
|
|
282
|
+
useControlSchema,
|
|
283
|
+
useControlWorkspace,
|
|
284
|
+
type ControlDefinition,
|
|
285
|
+
type ControlWorkspaceAppTopBarPillBinding,
|
|
286
|
+
type ControlWorkspaceAppTopBarTabsBinding,
|
|
287
|
+
type ControlWorkspaceComponentBindings,
|
|
288
|
+
type ControlComponentPropSource,
|
|
289
|
+
type ControlComponentPropsByIdMap,
|
|
290
|
+
type ControlComponentPropsMap,
|
|
291
|
+
type DoseDesignControlModelOptions,
|
|
292
|
+
type DoseCalculatorControlPropsOptions,
|
|
293
|
+
type ControlFormSchema,
|
|
294
|
+
type ControlInput,
|
|
295
|
+
type ControlModel,
|
|
296
|
+
type ControlModelBinding,
|
|
297
|
+
type ControlModelSectionConfig,
|
|
298
|
+
type ControlModelViewConfig,
|
|
299
|
+
type ControlOption,
|
|
300
|
+
type ControlOptionValue,
|
|
301
|
+
type ControlPrimitive,
|
|
302
|
+
type ControlSchema,
|
|
303
|
+
type ControlSchemaOptions,
|
|
304
|
+
type ControlShorthand,
|
|
305
|
+
type ControlWorkspaceOptions,
|
|
306
|
+
type ControlFormBinding,
|
|
307
|
+
type ControlSettingsBinding,
|
|
308
|
+
type ControlSidebarBinding,
|
|
309
|
+
type ControlSectionConfig,
|
|
310
|
+
type ControlSidebarConfig,
|
|
311
|
+
type ControlTopBarSettingsBinding,
|
|
312
|
+
type ControlViewConfig,
|
|
313
|
+
type ControlValues,
|
|
314
|
+
type UseControlSchemaReturn,
|
|
315
|
+
type ControlWorkspaceFormBinding,
|
|
316
|
+
type ControlWorkspacePillNavBinding,
|
|
317
|
+
type ControlWorkspaceSidebarBinding,
|
|
318
|
+
type ControlWorkspaceTopBarBinding,
|
|
319
|
+
type ControlWorkspaceTopBarSettingsBinding,
|
|
320
|
+
type UseControlWorkspaceReturn,
|
|
321
|
+
type WellPlateControlPropsOptions,
|
|
322
|
+
type WellPlateDoseControlPropsOptions,
|
|
323
|
+
useBioTemplateControls,
|
|
324
|
+
getBioTemplateControlSchema,
|
|
325
|
+
requireBioTemplateControlSchema,
|
|
326
|
+
type BioTemplateControlSchema,
|
|
327
|
+
type BioTemplateControlTarget,
|
|
328
|
+
useBioTemplateComponents,
|
|
329
|
+
getBioTemplateComponentProps,
|
|
330
|
+
getBioTemplateComponentBindings,
|
|
331
|
+
toBioTemplateComponentProps,
|
|
332
|
+
toBioTemplateComponentPropsByComponent,
|
|
333
|
+
toBioTemplateComponentPropsById,
|
|
334
|
+
type BioTemplateComponentBinding,
|
|
335
|
+
type BioTemplateComponentPropsByComponent,
|
|
336
|
+
type BioTemplateComponentPropsBinding,
|
|
337
|
+
type BioTemplateComponentPropsById,
|
|
338
|
+
type BioTemplateComponentPropsLookupOptions,
|
|
339
|
+
type BioTemplateComponentTarget,
|
|
340
|
+
type UseBioTemplateComponentsReturn,
|
|
341
|
+
useBioTemplateWorkspace,
|
|
342
|
+
type BioTemplateRendererBinding,
|
|
343
|
+
type BioTemplateWorkspaceBindings,
|
|
344
|
+
type BioTemplateWorkspaceTarget,
|
|
345
|
+
type UseBioTemplateWorkspaceReturn,
|
|
346
|
+
useBioTemplatePresetWorkspace,
|
|
347
|
+
type BioTemplatePresetWorkspaceBindings,
|
|
348
|
+
type UseBioTemplatePresetWorkspaceOptions,
|
|
349
|
+
type UseBioTemplatePresetWorkspaceReturn,
|
|
350
|
+
useBioTemplatePackWorkspace,
|
|
351
|
+
type UseBioTemplatePackWorkspaceOptions,
|
|
352
|
+
type UseBioTemplatePackWorkspaceReturn,
|
|
353
|
+
// Generated plugin clients
|
|
354
|
+
buildPluginEndpointUrl,
|
|
355
|
+
createPluginClient,
|
|
356
|
+
resolvePluginBaseUrl,
|
|
357
|
+
usePluginClient,
|
|
358
|
+
usePluginSettings,
|
|
359
|
+
useCurrentExperiment,
|
|
360
|
+
type BuildPluginEndpointUrlOptions,
|
|
361
|
+
type PluginContract,
|
|
362
|
+
type PluginEndpointContract,
|
|
363
|
+
type PluginEndpointDefinition,
|
|
364
|
+
type PluginHttpMethod,
|
|
365
|
+
type PluginNavItemContract,
|
|
366
|
+
type CreatePluginClientOptions,
|
|
367
|
+
type UseCurrentExperimentOptions,
|
|
368
|
+
type UseCurrentExperimentReturn,
|
|
369
|
+
} from './composables'
|
|
370
|
+
|
|
371
|
+
// Legacy plugin API compatibility
|
|
372
|
+
/** @deprecated Use generated plugin clients from `mint sdk generate` instead. */
|
|
373
|
+
export {
|
|
182
374
|
usePluginApi,
|
|
183
375
|
type UsePluginApiOptions,
|
|
184
376
|
} from './composables'
|
|
@@ -199,6 +391,9 @@ export {
|
|
|
199
391
|
type Hsl,
|
|
200
392
|
} from './utils/color'
|
|
201
393
|
|
|
394
|
+
// Biology data templates
|
|
395
|
+
export * from './templates'
|
|
396
|
+
|
|
202
397
|
// Types
|
|
203
398
|
export type {
|
|
204
399
|
// Component types
|
|
@@ -210,18 +405,27 @@ export type {
|
|
|
210
405
|
AlertType,
|
|
211
406
|
Toast,
|
|
212
407
|
TabItem,
|
|
408
|
+
TabItemInput,
|
|
409
|
+
OptionPrimitive,
|
|
213
410
|
SelectOption,
|
|
411
|
+
SelectOptionInput,
|
|
214
412
|
RadioOption,
|
|
413
|
+
RadioOptionInput,
|
|
215
414
|
FormFieldProps,
|
|
216
415
|
SidebarToolSection,
|
|
217
416
|
CollapsibleState,
|
|
218
417
|
TopBarVariant,
|
|
219
418
|
TopBarPage,
|
|
419
|
+
TopBarPageInput,
|
|
220
420
|
TopBarTab,
|
|
421
|
+
TopBarTabInput,
|
|
221
422
|
TopBarTabOption,
|
|
423
|
+
TopBarTabOptionInput,
|
|
222
424
|
TopBarSettingsConfig,
|
|
223
425
|
PillNavItem,
|
|
426
|
+
PillNavItemInput,
|
|
224
427
|
PageSelectorItem,
|
|
428
|
+
PageSelectorItemInput,
|
|
225
429
|
PluginSwitcherPlugin,
|
|
226
430
|
PluginSwitcherInfo,
|
|
227
431
|
AccountMenuItem,
|
|
@@ -262,10 +466,12 @@ export type {
|
|
|
262
466
|
FileUploaderMode,
|
|
263
467
|
// SegmentedControl types
|
|
264
468
|
SegmentedOption,
|
|
469
|
+
SegmentedOptionInput,
|
|
265
470
|
SegmentedControlVariant,
|
|
266
471
|
SegmentedControlSize,
|
|
267
472
|
// MultiSelect types
|
|
268
473
|
MultiSelectOption,
|
|
474
|
+
MultiSelectOptionInput,
|
|
269
475
|
MultiSelectSize,
|
|
270
476
|
// Pill types
|
|
271
477
|
PillVariant,
|
|
@@ -296,15 +502,29 @@ export type {
|
|
|
296
502
|
EmptyStateSize,
|
|
297
503
|
// Breadcrumb types
|
|
298
504
|
BreadcrumbItem,
|
|
505
|
+
BreadcrumbItemInput,
|
|
299
506
|
// Tooltip types
|
|
300
507
|
TooltipPosition,
|
|
301
508
|
// ConfirmDialog types
|
|
302
509
|
ConfirmVariant,
|
|
303
510
|
// SettingsModal types
|
|
304
511
|
SettingsTab,
|
|
512
|
+
SettingsTabInput,
|
|
305
513
|
SettingsModalLayout,
|
|
306
514
|
SettingsGroup,
|
|
307
515
|
SettingsModalSchema,
|
|
516
|
+
// FormBuilder types
|
|
517
|
+
FormFieldType,
|
|
518
|
+
FieldCondition,
|
|
519
|
+
FieldValidation,
|
|
520
|
+
FormFieldSchema,
|
|
521
|
+
FormOptionInput,
|
|
522
|
+
FormSectionSchema,
|
|
523
|
+
FormStepSchema,
|
|
524
|
+
FormSchema,
|
|
525
|
+
FieldEnhancement,
|
|
526
|
+
FormEnhancements,
|
|
527
|
+
UseFormBuilderReturn,
|
|
308
528
|
// ScientificNumber types
|
|
309
529
|
NumberNotation,
|
|
310
530
|
// TimePicker types
|
package/src/install.ts
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
|
-
import type { App, Plugin } from 'vue'
|
|
2
1
|
import * as components from './components'
|
|
3
2
|
|
|
3
|
+
type ComponentRegistryApp = {
|
|
4
|
+
component: (name: string, component: any) => unknown
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export interface MINTSdkPlugin {
|
|
8
|
+
install(app: ComponentRegistryApp): void
|
|
9
|
+
}
|
|
10
|
+
|
|
4
11
|
/**
|
|
5
12
|
* Vue plugin that registers all MINT SDK components globally.
|
|
6
13
|
*
|
|
@@ -14,8 +21,8 @@ import * as components from './components'
|
|
|
14
21
|
* app.use(MINTSdk)
|
|
15
22
|
* ```
|
|
16
23
|
*/
|
|
17
|
-
export const MINTSdk:
|
|
18
|
-
install(app
|
|
24
|
+
export const MINTSdk: MINTSdkPlugin = {
|
|
25
|
+
install(app) {
|
|
19
26
|
for (const [name, component] of Object.entries(components)) {
|
|
20
27
|
// Check if it's a valid Vue component (has setup, render, or template)
|
|
21
28
|
if (
|
|
@@ -23,7 +30,7 @@ export const MINTSdk: Plugin = {
|
|
|
23
30
|
typeof component === 'object' &&
|
|
24
31
|
('setup' in component || 'render' in component || '__name' in component)
|
|
25
32
|
) {
|
|
26
|
-
app.component(name, component
|
|
33
|
+
app.component(name, component)
|
|
27
34
|
}
|
|
28
35
|
}
|
|
29
36
|
},
|
package/src/stores/settings.ts
CHANGED
|
@@ -82,6 +82,11 @@ function saveSettings(settings: SettingsState): void {
|
|
|
82
82
|
}
|
|
83
83
|
}
|
|
84
84
|
|
|
85
|
+
function getSystemPrefersDark(): boolean {
|
|
86
|
+
if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') return false
|
|
87
|
+
return window.matchMedia('(prefers-color-scheme: dark)').matches
|
|
88
|
+
}
|
|
89
|
+
|
|
85
90
|
export const useSettingsStore = defineStore('mint-settings', () => {
|
|
86
91
|
// State
|
|
87
92
|
const serverHost = ref(defaultSettings.serverHost)
|
|
@@ -90,6 +95,7 @@ export const useSettingsStore = defineStore('mint-settings', () => {
|
|
|
90
95
|
const wsAutoReconnect = ref(defaultSettings.wsAutoReconnect)
|
|
91
96
|
const wsReconnectInterval = ref(defaultSettings.wsReconnectInterval)
|
|
92
97
|
const theme = ref<ThemeMode>(defaultSettings.theme)
|
|
98
|
+
const systemPrefersDark = ref(getSystemPrefersDark())
|
|
93
99
|
const colorPalette = ref<ColorPalette>(defaultSettings.colorPalette)
|
|
94
100
|
const tableDensity = ref<TableDensity>(defaultSettings.tableDensity)
|
|
95
101
|
|
|
@@ -139,9 +145,8 @@ export const useSettingsStore = defineStore('mint-settings', () => {
|
|
|
139
145
|
}
|
|
140
146
|
|
|
141
147
|
function applyTheme() {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
: theme.value === 'dark'
|
|
148
|
+
if (typeof document === 'undefined') return
|
|
149
|
+
const dark = theme.value === 'system' ? systemPrefersDark.value : theme.value === 'dark'
|
|
145
150
|
document.documentElement.classList.toggle('dark', dark)
|
|
146
151
|
}
|
|
147
152
|
|
|
@@ -150,8 +155,9 @@ export const useSettingsStore = defineStore('mint-settings', () => {
|
|
|
150
155
|
persistSettings()
|
|
151
156
|
})
|
|
152
157
|
|
|
153
|
-
if (typeof window !== 'undefined') {
|
|
154
|
-
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', () => {
|
|
158
|
+
if (typeof window !== 'undefined' && typeof window.matchMedia === 'function') {
|
|
159
|
+
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (event) => {
|
|
160
|
+
systemPrefersDark.value = event.matches
|
|
155
161
|
if (theme.value === 'system') {
|
|
156
162
|
applyTheme()
|
|
157
163
|
}
|
|
@@ -191,10 +197,7 @@ export const useSettingsStore = defineStore('mint-settings', () => {
|
|
|
191
197
|
}
|
|
192
198
|
|
|
193
199
|
function isDark(): boolean {
|
|
194
|
-
|
|
195
|
-
return window.matchMedia('(prefers-color-scheme: dark)').matches
|
|
196
|
-
}
|
|
197
|
-
return theme.value === 'dark'
|
|
200
|
+
return theme.value === 'system' ? systemPrefersDark.value : theme.value === 'dark'
|
|
198
201
|
}
|
|
199
202
|
|
|
200
203
|
return {
|
|
@@ -204,6 +207,7 @@ export const useSettingsStore = defineStore('mint-settings', () => {
|
|
|
204
207
|
wsAutoReconnect,
|
|
205
208
|
wsReconnectInterval,
|
|
206
209
|
theme,
|
|
210
|
+
systemPrefersDark,
|
|
207
211
|
colorPalette,
|
|
208
212
|
tableDensity,
|
|
209
213
|
initialize,
|
|
@@ -69,6 +69,17 @@
|
|
|
69
69
|
height: 0.875rem;
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
+
.mint-page-selector__icon--metadata {
|
|
73
|
+
background: transparent;
|
|
74
|
+
color: inherit;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.mint-page-selector__trigger-metadata-icon.mint-plugin-icon--sm {
|
|
78
|
+
width: 1.5rem;
|
|
79
|
+
height: 1.5rem;
|
|
80
|
+
border-radius: 0.375rem;
|
|
81
|
+
}
|
|
82
|
+
|
|
72
83
|
.mint-page-selector__icon-fallback {
|
|
73
84
|
font-size: 0.6875rem;
|
|
74
85
|
font-weight: 600;
|
|
@@ -175,11 +186,23 @@
|
|
|
175
186
|
color: var(--color-primary);
|
|
176
187
|
}
|
|
177
188
|
|
|
189
|
+
.mint-page-selector__item-icon--metadata,
|
|
190
|
+
.mint-page-selector__item--active .mint-page-selector__item-icon--metadata {
|
|
191
|
+
background: transparent;
|
|
192
|
+
color: inherit;
|
|
193
|
+
}
|
|
194
|
+
|
|
178
195
|
.mint-page-selector__item-icon svg {
|
|
179
196
|
width: 0.8125rem;
|
|
180
197
|
height: 0.8125rem;
|
|
181
198
|
}
|
|
182
199
|
|
|
200
|
+
.mint-page-selector__metadata-icon.mint-plugin-icon--sm {
|
|
201
|
+
width: 1.375rem;
|
|
202
|
+
height: 1.375rem;
|
|
203
|
+
border-radius: 0.3125rem;
|
|
204
|
+
}
|
|
205
|
+
|
|
183
206
|
.mint-page-selector__item-label {
|
|
184
207
|
flex: 1;
|
|
185
208
|
}
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
.mint-pill-nav__item {
|
|
13
13
|
display: inline-flex;
|
|
14
14
|
align-items: center;
|
|
15
|
+
gap: 0.375rem;
|
|
15
16
|
border: 0;
|
|
16
17
|
padding: 0.375rem 0.875rem;
|
|
17
18
|
border-radius: 9999px;
|
|
@@ -54,3 +55,9 @@
|
|
|
54
55
|
outline: none;
|
|
55
56
|
box-shadow: var(--focus-ring);
|
|
56
57
|
}
|
|
58
|
+
|
|
59
|
+
.mint-pill-nav__icon {
|
|
60
|
+
width: 0.875rem;
|
|
61
|
+
height: 0.875rem;
|
|
62
|
+
flex-shrink: 0;
|
|
63
|
+
}
|
|
@@ -255,6 +255,34 @@
|
|
|
255
255
|
cursor: not-allowed;
|
|
256
256
|
}
|
|
257
257
|
|
|
258
|
+
.mint-topbar-dropdown-item__page {
|
|
259
|
+
display: flex;
|
|
260
|
+
align-items: flex-start;
|
|
261
|
+
gap: 0.625rem;
|
|
262
|
+
width: 100%;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
.mint-topbar-dropdown-item__icon {
|
|
266
|
+
width: 1rem;
|
|
267
|
+
height: 1rem;
|
|
268
|
+
flex-shrink: 0;
|
|
269
|
+
margin-top: 0.125rem;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
.mint-topbar-dropdown-item__icon.mint-plugin-icon--sm {
|
|
273
|
+
width: 1.375rem;
|
|
274
|
+
height: 1.375rem;
|
|
275
|
+
border-radius: 0.3125rem;
|
|
276
|
+
margin-top: -0.0625rem;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
.mint-topbar-dropdown-item__copy {
|
|
280
|
+
display: flex;
|
|
281
|
+
min-width: 0;
|
|
282
|
+
flex-direction: column;
|
|
283
|
+
align-items: flex-start;
|
|
284
|
+
}
|
|
285
|
+
|
|
258
286
|
.mint-topbar-dropdown-item__label {
|
|
259
287
|
font-weight: 500;
|
|
260
288
|
}
|
|
@@ -320,6 +348,12 @@
|
|
|
320
348
|
transition: transform 0.15s ease;
|
|
321
349
|
}
|
|
322
350
|
|
|
351
|
+
.mint-topbar-tab-icon {
|
|
352
|
+
width: 0.875rem;
|
|
353
|
+
height: 0.875rem;
|
|
354
|
+
flex-shrink: 0;
|
|
355
|
+
}
|
|
356
|
+
|
|
323
357
|
.mint-topbar-tab-chevron--open {
|
|
324
358
|
transform: rotate(180deg);
|
|
325
359
|
}
|