@morscherlab/mint-sdk 1.0.0-alpha.2
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 +326 -0
- package/dist/__stories__/experiment-helpers.d.ts +25 -0
- package/dist/__tests__/components/AppLayout.test.d.ts +1 -0
- package/dist/__tests__/components/AppSidebar.test.d.ts +1 -0
- package/dist/__tests__/components/AppTopBar.test.d.ts +1 -0
- package/dist/__tests__/components/BaseInput.test.d.ts +1 -0
- package/dist/__tests__/components/BasePill.test.d.ts +1 -0
- package/dist/__tests__/components/Calendar.test.d.ts +1 -0
- package/dist/__tests__/components/CollapsibleCard.test.d.ts +1 -0
- package/dist/__tests__/components/DataFrame.test.d.ts +1 -0
- package/dist/__tests__/components/DropdownButton.test.d.ts +1 -0
- package/dist/__tests__/composables/formBuilderRegistry.test.d.ts +1 -0
- package/dist/__tests__/composables/useAppExperiment.test.d.ts +1 -0
- package/dist/__tests__/composables/useAuth.test.d.ts +1 -0
- package/dist/__tests__/composables/useAutoGroup.test.d.ts +1 -0
- package/dist/__tests__/composables/useExperimentData.test.d.ts +13 -0
- package/dist/__tests__/composables/useExperimentSave.test.d.ts +1 -0
- package/dist/__tests__/composables/useForm.test.d.ts +1 -0
- package/dist/__tests__/composables/useFormBuilder.test.d.ts +1 -0
- package/dist/__tests__/composables/usePlatformContext.test.d.ts +1 -0
- package/dist/__tests__/composables/usePluginApi.test.d.ts +13 -0
- package/dist/__tests__/composables/usePluginConfig.test.d.ts +14 -0
- package/dist/__tests__/utils/color.test.d.ts +1 -0
- package/dist/auth-BYmxZdJl.js +297 -0
- package/dist/auth-BYmxZdJl.js.map +1 -0
- package/dist/components/AlertBox.vue.d.ts +34 -0
- package/dist/components/AppAvatarMenu.vue.d.ts +58 -0
- package/dist/components/AppContainer.vue.d.ts +28 -0
- package/dist/components/AppLayout.vue.d.ts +31 -0
- package/dist/components/AppPageSelector.vue.d.ts +43 -0
- package/dist/components/AppPillNav.vue.d.ts +11 -0
- package/dist/components/AppPluginSwitcher.vue.d.ts +38 -0
- package/dist/components/AppSidebar.vue.d.ts +47 -0
- package/dist/components/AppTopBar.vue.d.ts +111 -0
- package/dist/components/AuditTrail.vue.d.ts +38 -0
- package/dist/components/AutoGroupModal.vue.d.ts +124 -0
- package/dist/components/Avatar.vue.d.ts +14 -0
- package/dist/components/BaseButton.vue.d.ts +37 -0
- package/dist/components/BaseCheckbox.vue.d.ts +17 -0
- package/dist/components/BaseInput.vue.d.ts +34 -0
- package/dist/components/BaseModal.vue.d.ts +46 -0
- package/dist/components/BasePill.vue.d.ts +57 -0
- package/dist/components/BaseRadioGroup.vue.d.ts +21 -0
- package/dist/components/BaseSelect.vue.d.ts +20 -0
- package/dist/components/BaseSlider.vue.d.ts +22 -0
- package/dist/components/BaseTabs.vue.d.ts +14 -0
- package/dist/components/BaseTextarea.vue.d.ts +30 -0
- package/dist/components/BaseToggle.vue.d.ts +19 -0
- package/dist/components/BatchProgressList.vue.d.ts +43 -0
- package/dist/components/Breadcrumb.vue.d.ts +33 -0
- package/dist/components/Calendar.vue.d.ts +107 -0
- package/dist/components/ChartContainer.vue.d.ts +31 -0
- package/dist/components/ChemicalFormula.vue.d.ts +8 -0
- package/dist/components/CollapsibleCard.vue.d.ts +41 -0
- package/dist/components/ColorSlider.vue.d.ts +34 -0
- package/dist/components/ConcentrationInput.vue.d.ts +25 -0
- package/dist/components/ConfirmDialog.vue.d.ts +42 -0
- package/dist/components/DataFrame.vue.d.ts +107 -0
- package/dist/components/DatePicker.vue.d.ts +25 -0
- package/dist/components/DateTimePicker.vue.d.ts +30 -0
- package/dist/components/Divider.vue.d.ts +14 -0
- package/dist/components/DoseCalculator.vue.d.ts +19 -0
- package/dist/components/DropdownButton.vue.d.ts +47 -0
- package/dist/components/EmptyState.vue.d.ts +36 -0
- package/dist/components/ExperimentCodeBadge.vue.d.ts +14 -0
- package/dist/components/ExperimentDataViewer.vue.d.ts +29 -0
- package/dist/components/ExperimentPopover.vue.d.ts +32 -0
- package/dist/components/ExperimentSelectorModal.vue.d.ts +28 -0
- package/dist/components/ExperimentTimeline.vue.d.ts +44 -0
- package/dist/components/FileUploader.vue.d.ts +40 -0
- package/dist/components/FitPanel.vue.d.ts +46 -0
- package/dist/components/FormActions.vue.d.ts +33 -0
- package/dist/components/FormBuilder.vue.d.ts +287 -0
- package/dist/components/FormField.vue.d.ts +28 -0
- package/dist/components/FormFieldRenderer.vue.d.ts +31 -0
- package/dist/components/FormSection.vue.d.ts +43 -0
- package/dist/components/FormulaInput.vue.d.ts +25 -0
- package/dist/components/GroupAssigner.vue.d.ts +25 -0
- package/dist/components/GroupingModal.vue.d.ts +12 -0
- package/dist/components/IconButton.vue.d.ts +34 -0
- package/dist/components/LoadingSpinner.vue.d.ts +12 -0
- package/dist/components/MoleculeInput.vue.d.ts +27 -0
- package/dist/components/MultiSelect.vue.d.ts +19 -0
- package/dist/components/NumberInput.vue.d.ts +22 -0
- package/dist/components/PlateMapEditor.vue.d.ts +50 -0
- package/dist/components/ProgressBar.vue.d.ts +23 -0
- package/dist/components/ProtocolStepEditor.vue.d.ts +24 -0
- package/dist/components/RackEditor.vue.d.ts +40 -0
- package/dist/components/ReagentEditor.vue.d.ts +30 -0
- package/dist/components/ReagentList.vue.d.ts +32 -0
- package/dist/components/ResourceCard.vue.d.ts +50 -0
- package/dist/components/SampleHierarchyTree.vue.d.ts +26 -0
- package/dist/components/SampleLegend.vue.d.ts +32 -0
- package/dist/components/SampleSelector.vue.d.ts +29 -0
- package/dist/components/ScheduleCalendar.vue.d.ts +110 -0
- package/dist/components/ScientificNumber.vue.d.ts +14 -0
- package/dist/components/SegmentedControl.vue.d.ts +20 -0
- package/dist/components/SequenceInput.vue.d.ts +54 -0
- package/dist/components/SettingsButton.vue.d.ts +30 -0
- package/dist/components/SettingsModal.vue.d.ts +36 -0
- package/dist/components/Skeleton.vue.d.ts +11 -0
- package/dist/components/StatusIndicator.vue.d.ts +13 -0
- package/dist/components/StepWizard.vue.d.ts +65 -0
- package/dist/components/TagsInput.vue.d.ts +39 -0
- package/dist/components/ThemeToggle.vue.d.ts +7 -0
- package/dist/components/TimePicker.vue.d.ts +29 -0
- package/dist/components/TimeRangeInput.vue.d.ts +27 -0
- package/dist/components/ToastNotification.vue.d.ts +2 -0
- package/dist/components/Tooltip.vue.d.ts +35 -0
- package/dist/components/UnitInput.vue.d.ts +39 -0
- package/dist/components/WellEditPopup.vue.d.ts +25 -0
- package/dist/components/WellPlate.vue.d.ts +73 -0
- package/dist/components/index.d.ts +87 -0
- package/dist/components/index.js +3 -0
- package/dist/components-CKf-UpGi.js +15089 -0
- package/dist/components-CKf-UpGi.js.map +1 -0
- package/dist/composables/experiment-utils.d.ts +8 -0
- package/dist/composables/formBuilderRegistry.d.ts +13 -0
- package/dist/composables/index.d.ts +28 -0
- package/dist/composables/index.js +3 -0
- package/dist/composables/useApi.d.ts +20 -0
- package/dist/composables/useAppExperiment.d.ts +37 -0
- package/dist/composables/useAsync.d.ts +128 -0
- package/dist/composables/useAuth.d.ts +47 -0
- package/dist/composables/useAutoGroup.d.ts +106 -0
- package/dist/composables/useChemicalFormula.d.ts +21 -0
- package/dist/composables/useConcentrationUnits.d.ts +29 -0
- package/dist/composables/useDoseCalculator.d.ts +58 -0
- package/dist/composables/useExperimentData.d.ts +18 -0
- package/dist/composables/useExperimentSave.d.ts +36 -0
- package/dist/composables/useExperimentSelector.d.ts +30 -0
- package/dist/composables/useForm.d.ts +92 -0
- package/dist/composables/useFormBuilder.d.ts +24 -0
- package/dist/composables/usePasskey.d.ts +10 -0
- package/dist/composables/usePlatformContext.d.ts +131 -0
- package/dist/composables/usePluginApi.d.ts +29 -0
- package/dist/composables/usePluginConfig.d.ts +13 -0
- package/dist/composables/useProtocolTemplates.d.ts +44 -0
- package/dist/composables/useRackEditor.d.ts +31 -0
- package/dist/composables/useReagentSeries.d.ts +23 -0
- package/dist/composables/useScheduleDrag.d.ts +78 -0
- package/dist/composables/useSequenceUtils.d.ts +14 -0
- package/dist/composables/useTheme.d.ts +8 -0
- package/dist/composables/useTimeUtils.d.ts +29 -0
- package/dist/composables/useToast.d.ts +22 -0
- package/dist/composables/useWellPlateEditor.d.ts +33 -0
- package/dist/composables-D0QfFzq1.js +805 -0
- package/dist/composables-D0QfFzq1.js.map +1 -0
- package/dist/histoire.setup.d.ts +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +7 -0
- package/dist/install.d.ts +16 -0
- package/dist/install.js +23 -0
- package/dist/install.js.map +1 -0
- package/dist/stores/auth.d.ts +146 -0
- package/dist/stores/index.d.ts +2 -0
- package/dist/stores/index.js +2 -0
- package/dist/stores/settings.d.ts +75 -0
- package/dist/styles.css +29728 -0
- package/dist/tailwind.preset.d.ts +58 -0
- package/dist/tailwind.preset.js +66 -0
- package/dist/tailwind.preset.js.map +1 -0
- package/dist/types/auth.d.ts +42 -0
- package/dist/types/auto-group.d.ts +34 -0
- package/dist/types/components.d.ts +528 -0
- package/dist/types/form-builder.d.ts +167 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.js +0 -0
- package/dist/types/platform.d.ts +75 -0
- package/dist/useScheduleDrag-DAJueTbK.js +7181 -0
- package/dist/useScheduleDrag-DAJueTbK.js.map +1 -0
- package/dist/utils/color.d.ts +24 -0
- package/package.json +114 -0
- package/src/__stories__/experiment-helpers.ts +83 -0
- package/src/__tests__/components/AppLayout.test.ts +163 -0
- package/src/__tests__/components/AppSidebar.test.ts +292 -0
- package/src/__tests__/components/AppTopBar.test.ts +683 -0
- package/src/__tests__/components/BaseInput.test.ts +99 -0
- package/src/__tests__/components/BasePill.test.ts +291 -0
- package/src/__tests__/components/Calendar.test.ts +566 -0
- package/src/__tests__/components/CollapsibleCard.test.ts +524 -0
- package/src/__tests__/components/DataFrame.test.ts +767 -0
- package/src/__tests__/components/DropdownButton.test.ts +471 -0
- package/src/__tests__/composables/formBuilderRegistry.test.ts +187 -0
- package/src/__tests__/composables/useAppExperiment.test.ts +560 -0
- package/src/__tests__/composables/useAuth.test.ts +188 -0
- package/src/__tests__/composables/useAutoGroup.test.ts +860 -0
- package/src/__tests__/composables/useExperimentData.test.ts +127 -0
- package/src/__tests__/composables/useExperimentSave.test.ts +347 -0
- package/src/__tests__/composables/useForm.test.ts +205 -0
- package/src/__tests__/composables/useFormBuilder.test.ts +917 -0
- package/src/__tests__/composables/usePlatformContext.test.ts +116 -0
- package/src/__tests__/composables/usePluginApi.test.ts +81 -0
- package/src/__tests__/composables/usePluginConfig.test.ts +176 -0
- package/src/__tests__/utils/color.test.ts +96 -0
- package/src/components/AlertBox.story.vue +204 -0
- package/src/components/AlertBox.vue +88 -0
- package/src/components/AppAvatarMenu.story.vue +155 -0
- package/src/components/AppAvatarMenu.vue +184 -0
- package/src/components/AppContainer.story.vue +104 -0
- package/src/components/AppContainer.vue +34 -0
- package/src/components/AppLayout.story.vue +292 -0
- package/src/components/AppLayout.vue +75 -0
- package/src/components/AppPageSelector.vue +159 -0
- package/src/components/AppPillNav.vue +66 -0
- package/src/components/AppPluginSwitcher.vue +241 -0
- package/src/components/AppSidebar.story.vue +309 -0
- package/src/components/AppSidebar.vue +119 -0
- package/src/components/AppTopBar.story.vue +304 -0
- package/src/components/AppTopBar.vue +661 -0
- package/src/components/AuditTrail.story.vue +163 -0
- package/src/components/AuditTrail.vue +151 -0
- package/src/components/AutoGroupModal.story.vue +273 -0
- package/src/components/AutoGroupModal.vue +566 -0
- package/src/components/Avatar.story.vue +115 -0
- package/src/components/Avatar.vue +79 -0
- package/src/components/BaseButton.story.vue +96 -0
- package/src/components/BaseButton.vue +73 -0
- package/src/components/BaseCheckbox.story.vue +73 -0
- package/src/components/BaseCheckbox.vue +69 -0
- package/src/components/BaseInput.story.vue +98 -0
- package/src/components/BaseInput.vue +74 -0
- package/src/components/BaseModal.story.vue +237 -0
- package/src/components/BaseModal.vue +182 -0
- package/src/components/BasePill.story.vue +142 -0
- package/src/components/BasePill.vue +89 -0
- package/src/components/BaseRadioGroup.story.vue +145 -0
- package/src/components/BaseRadioGroup.vue +124 -0
- package/src/components/BaseSelect.story.vue +120 -0
- package/src/components/BaseSelect.vue +71 -0
- package/src/components/BaseSlider.story.vue +122 -0
- package/src/components/BaseSlider.vue +126 -0
- package/src/components/BaseTabs.story.vue +127 -0
- package/src/components/BaseTabs.vue +59 -0
- package/src/components/BaseTextarea.story.vue +91 -0
- package/src/components/BaseTextarea.vue +62 -0
- package/src/components/BaseToggle.story.vue +81 -0
- package/src/components/BaseToggle.vue +76 -0
- package/src/components/BatchProgressList.story.vue +92 -0
- package/src/components/BatchProgressList.vue +184 -0
- package/src/components/Breadcrumb.story.vue +106 -0
- package/src/components/Breadcrumb.vue +75 -0
- package/src/components/Calendar.story.vue +106 -0
- package/src/components/Calendar.vue +363 -0
- package/src/components/ChartContainer.story.vue +113 -0
- package/src/components/ChartContainer.vue +64 -0
- package/src/components/ChemicalFormula.story.vue +102 -0
- package/src/components/ChemicalFormula.vue +39 -0
- package/src/components/CollapsibleCard.story.vue +135 -0
- package/src/components/CollapsibleCard.vue +167 -0
- package/src/components/ColorSlider.story.vue +120 -0
- package/src/components/ColorSlider.vue +164 -0
- package/src/components/ConcentrationInput.story.vue +77 -0
- package/src/components/ConcentrationInput.vue +185 -0
- package/src/components/ConfirmDialog.story.vue +248 -0
- package/src/components/ConfirmDialog.vue +93 -0
- package/src/components/DataFrame.story.vue +148 -0
- package/src/components/DataFrame.vue +419 -0
- package/src/components/DatePicker.story.vue +119 -0
- package/src/components/DatePicker.vue +330 -0
- package/src/components/DateTimePicker.story.vue +112 -0
- package/src/components/DateTimePicker.vue +392 -0
- package/src/components/Divider.story.vue +80 -0
- package/src/components/Divider.vue +49 -0
- package/src/components/DoseCalculator.story.vue +68 -0
- package/src/components/DoseCalculator.vue +476 -0
- package/src/components/DropdownButton.story.vue +102 -0
- package/src/components/DropdownButton.vue +181 -0
- package/src/components/EmptyState.story.vue +135 -0
- package/src/components/EmptyState.vue +69 -0
- package/src/components/ExperimentCodeBadge.story.vue +77 -0
- package/src/components/ExperimentCodeBadge.vue +64 -0
- package/src/components/ExperimentDataViewer.story.vue +174 -0
- package/src/components/ExperimentDataViewer.vue +288 -0
- package/src/components/ExperimentPopover.story.vue +384 -0
- package/src/components/ExperimentPopover.vue +241 -0
- package/src/components/ExperimentSelectorModal.story.vue +391 -0
- package/src/components/ExperimentSelectorModal.vue +387 -0
- package/src/components/ExperimentTimeline.story.vue +161 -0
- package/src/components/ExperimentTimeline.vue +382 -0
- package/src/components/FileUploader.story.vue +107 -0
- package/src/components/FileUploader.vue +386 -0
- package/src/components/FitPanel.story.vue +125 -0
- package/src/components/FitPanel.vue +120 -0
- package/src/components/FormActions.vue +92 -0
- package/src/components/FormBuilder.vue +214 -0
- package/src/components/FormField.story.vue +132 -0
- package/src/components/FormField.vue +59 -0
- package/src/components/FormFieldRenderer.vue +58 -0
- package/src/components/FormSection.vue +90 -0
- package/src/components/FormulaInput.story.vue +96 -0
- package/src/components/FormulaInput.vue +125 -0
- package/src/components/GroupAssigner.story.vue +83 -0
- package/src/components/GroupAssigner.vue +284 -0
- package/src/components/GroupingModal.story.vue +52 -0
- package/src/components/GroupingModal.vue +422 -0
- package/src/components/IconButton.story.vue +135 -0
- package/src/components/IconButton.vue +73 -0
- package/src/components/LoadingSpinner.story.vue +70 -0
- package/src/components/LoadingSpinner.vue +50 -0
- package/src/components/MoleculeInput.story.vue +66 -0
- package/src/components/MoleculeInput.vue +426 -0
- package/src/components/MultiSelect.story.vue +132 -0
- package/src/components/MultiSelect.vue +118 -0
- package/src/components/NumberInput.story.vue +122 -0
- package/src/components/NumberInput.vue +160 -0
- package/src/components/PlateMapEditor.story.vue +92 -0
- package/src/components/PlateMapEditor.vue +513 -0
- package/src/components/ProgressBar.story.vue +148 -0
- package/src/components/ProgressBar.vue +114 -0
- package/src/components/ProtocolStepEditor.story.vue +69 -0
- package/src/components/ProtocolStepEditor.vue +522 -0
- package/src/components/RackEditor.story.vue +100 -0
- package/src/components/RackEditor.vue +371 -0
- package/src/components/ReagentEditor.story.vue +153 -0
- package/src/components/ReagentEditor.vue +418 -0
- package/src/components/ReagentList.story.vue +137 -0
- package/src/components/ReagentList.vue +463 -0
- package/src/components/ResourceCard.story.vue +150 -0
- package/src/components/ResourceCard.vue +161 -0
- package/src/components/SampleHierarchyTree.story.vue +161 -0
- package/src/components/SampleHierarchyTree.vue +256 -0
- package/src/components/SampleLegend.story.vue +91 -0
- package/src/components/SampleLegend.vue +119 -0
- package/src/components/SampleSelector.story.vue +111 -0
- package/src/components/SampleSelector.vue +1033 -0
- package/src/components/ScheduleCalendar.story.vue +195 -0
- package/src/components/ScheduleCalendar.vue +569 -0
- package/src/components/ScientificNumber.story.vue +127 -0
- package/src/components/ScientificNumber.vue +197 -0
- package/src/components/SegmentedControl.story.vue +132 -0
- package/src/components/SegmentedControl.vue +79 -0
- package/src/components/SequenceInput.story.vue +119 -0
- package/src/components/SequenceInput.vue +209 -0
- package/src/components/SettingsButton.story.vue +58 -0
- package/src/components/SettingsButton.vue +76 -0
- package/src/components/SettingsModal.story.vue +145 -0
- package/src/components/SettingsModal.vue +146 -0
- package/src/components/Skeleton.story.vue +141 -0
- package/src/components/Skeleton.vue +74 -0
- package/src/components/StatusIndicator.story.vue +99 -0
- package/src/components/StatusIndicator.vue +40 -0
- package/src/components/StepWizard.story.vue +155 -0
- package/src/components/StepWizard.vue +223 -0
- package/src/components/TagsInput.story.vue +155 -0
- package/src/components/TagsInput.vue +265 -0
- package/src/components/ThemeToggle.story.vue +36 -0
- package/src/components/ThemeToggle.vue +54 -0
- package/src/components/TimePicker.story.vue +96 -0
- package/src/components/TimePicker.vue +273 -0
- package/src/components/TimeRangeInput.story.vue +104 -0
- package/src/components/TimeRangeInput.vue +122 -0
- package/src/components/ToastNotification.story.vue +157 -0
- package/src/components/ToastNotification.vue +62 -0
- package/src/components/Tooltip.story.vue +138 -0
- package/src/components/Tooltip.vue +119 -0
- package/src/components/UnitInput.story.vue +194 -0
- package/src/components/UnitInput.vue +213 -0
- package/src/components/WellEditPopup.vue +234 -0
- package/src/components/WellPlate.story.vue +282 -0
- package/src/components/WellPlate.vue +830 -0
- package/src/components/index.ts +118 -0
- package/src/composables/experiment-utils.ts +57 -0
- package/src/composables/formBuilderRegistry.ts +79 -0
- package/src/composables/index.ts +140 -0
- package/src/composables/useApi.ts +167 -0
- package/src/composables/useAppExperiment.ts +159 -0
- package/src/composables/useAsync.ts +323 -0
- package/src/composables/useAuth.ts +445 -0
- package/src/composables/useAutoGroup.ts +641 -0
- package/src/composables/useChemicalFormula.ts +275 -0
- package/src/composables/useConcentrationUnits.ts +246 -0
- package/src/composables/useDoseCalculator.ts +370 -0
- package/src/composables/useExperimentData.ts +86 -0
- package/src/composables/useExperimentSave.ts +192 -0
- package/src/composables/useExperimentSelector.ts +292 -0
- package/src/composables/useForm.ts +416 -0
- package/src/composables/useFormBuilder.ts +383 -0
- package/src/composables/usePasskey.ts +216 -0
- package/src/composables/usePlatformContext.ts +299 -0
- package/src/composables/usePluginApi.ts +39 -0
- package/src/composables/usePluginConfig.ts +93 -0
- package/src/composables/useProtocolTemplates.ts +518 -0
- package/src/composables/useRackEditor.ts +222 -0
- package/src/composables/useReagentSeries.ts +91 -0
- package/src/composables/useScheduleDrag.ts +245 -0
- package/src/composables/useSequenceUtils.ts +105 -0
- package/src/composables/useTheme.ts +58 -0
- package/src/composables/useTimeUtils.ts +131 -0
- package/src/composables/useToast.ts +40 -0
- package/src/composables/useWellPlateEditor.ts +421 -0
- package/src/histoire.setup.ts +17 -0
- package/src/index.ts +367 -0
- package/src/install.ts +32 -0
- package/src/stores/auth.ts +152 -0
- package/src/stores/index.ts +2 -0
- package/src/stores/settings.ts +218 -0
- package/src/styles/components/alert-box.css +150 -0
- package/src/styles/components/app-avatar-menu.css +155 -0
- package/src/styles/components/app-container.css +33 -0
- package/src/styles/components/app-layout.css +98 -0
- package/src/styles/components/app-page-selector.css +191 -0
- package/src/styles/components/app-pill-nav.css +57 -0
- package/src/styles/components/app-plugin-switcher.css +209 -0
- package/src/styles/components/app-sidebar.css +145 -0
- package/src/styles/components/app-top-bar.css +492 -0
- package/src/styles/components/audit-trail.css +143 -0
- package/src/styles/components/auto-group-modal.css +644 -0
- package/src/styles/components/avatar.css +73 -0
- package/src/styles/components/batch-progress-list.css +196 -0
- package/src/styles/components/breadcrumb.css +64 -0
- package/src/styles/components/button.css +188 -0
- package/src/styles/components/calendar.css +192 -0
- package/src/styles/components/chart-container.css +69 -0
- package/src/styles/components/checkbox.css +123 -0
- package/src/styles/components/chemical-formula.css +46 -0
- package/src/styles/components/collapsible-card.css +253 -0
- package/src/styles/components/color-slider.css +110 -0
- package/src/styles/components/concentration-input.css +156 -0
- package/src/styles/components/confirm-dialog.css +183 -0
- package/src/styles/components/dataframe.css +382 -0
- package/src/styles/components/date-picker.css +243 -0
- package/src/styles/components/datetime-picker.css +229 -0
- package/src/styles/components/divider.css +63 -0
- package/src/styles/components/dose-calculator.css +301 -0
- package/src/styles/components/dropdown-button.css +280 -0
- package/src/styles/components/empty-state.css +151 -0
- package/src/styles/components/experiment-code-badge.css +33 -0
- package/src/styles/components/experiment-data-viewer.css +138 -0
- package/src/styles/components/experiment-popover.css +562 -0
- package/src/styles/components/experiment-selector-modal.css +285 -0
- package/src/styles/components/experiment-timeline.css +529 -0
- package/src/styles/components/file-uploader.css +310 -0
- package/src/styles/components/fit-panel.css +67 -0
- package/src/styles/components/form-builder.css +69 -0
- package/src/styles/components/form-field.css +48 -0
- package/src/styles/components/formula-input.css +103 -0
- package/src/styles/components/group-assigner.css +200 -0
- package/src/styles/components/grouping-modal.css +323 -0
- package/src/styles/components/icon-button.css +192 -0
- package/src/styles/components/input.css +66 -0
- package/src/styles/components/loading-spinner.css +67 -0
- package/src/styles/components/modal.css +350 -0
- package/src/styles/components/molecule-input.css +186 -0
- package/src/styles/components/multi-select.css +131 -0
- package/src/styles/components/number-input.css +199 -0
- package/src/styles/components/pill.css +188 -0
- package/src/styles/components/plate-map-editor.css +464 -0
- package/src/styles/components/progress-bar.css +133 -0
- package/src/styles/components/protocol-step-editor.css +449 -0
- package/src/styles/components/rack-editor.css +265 -0
- package/src/styles/components/radio-group.css +240 -0
- package/src/styles/components/reagent-editor.css +510 -0
- package/src/styles/components/reagent-list.css +407 -0
- package/src/styles/components/resource-card.css +360 -0
- package/src/styles/components/sample-hierarchy-tree.css +314 -0
- package/src/styles/components/sample-legend.css +201 -0
- package/src/styles/components/sample-selector.css +751 -0
- package/src/styles/components/schedule-calendar.css +478 -0
- package/src/styles/components/scientific-number.css +63 -0
- package/src/styles/components/segmented-control.css +197 -0
- package/src/styles/components/select.css +77 -0
- package/src/styles/components/sequence-input.css +184 -0
- package/src/styles/components/settings-button.css +94 -0
- package/src/styles/components/settings-modal.css +95 -0
- package/src/styles/components/skeleton.css +49 -0
- package/src/styles/components/slider.css +74 -0
- package/src/styles/components/status-indicator.css +66 -0
- package/src/styles/components/step-wizard.css +192 -0
- package/src/styles/components/tabs.css +95 -0
- package/src/styles/components/tags-input.css +195 -0
- package/src/styles/components/textarea.css +82 -0
- package/src/styles/components/theme-toggle.css +69 -0
- package/src/styles/components/time-picker.css +171 -0
- package/src/styles/components/time-range-input.css +42 -0
- package/src/styles/components/toast.css +91 -0
- package/src/styles/components/toggle.css +146 -0
- package/src/styles/components/tooltip.css +91 -0
- package/src/styles/components/unit-input.css +123 -0
- package/src/styles/components/well-edit-popup.css +252 -0
- package/src/styles/components/well-plate.css +307 -0
- package/src/styles/index.css +87 -0
- package/src/styles/variables.css +1117 -0
- package/src/tailwind.preset.ts +61 -0
- package/src/types/auth.ts +55 -0
- package/src/types/auto-group.ts +40 -0
- package/src/types/components.ts +710 -0
- package/src/types/form-builder.ts +197 -0
- package/src/types/index.ts +207 -0
- package/src/types/platform.ts +116 -0
- package/src/utils/color.ts +96 -0
|
@@ -0,0 +1,528 @@
|
|
|
1
|
+
import { UserSummary } from './platform';
|
|
2
|
+
export type ContainerDirection = 'row' | 'column';
|
|
3
|
+
export type ButtonVariant = 'primary' | 'secondary' | 'cta' | 'danger' | 'success' | 'ghost';
|
|
4
|
+
export type ButtonSize = 'sm' | 'md' | 'lg';
|
|
5
|
+
export type InputType = 'text' | 'password' | 'email' | 'number' | 'search' | 'tel' | 'url';
|
|
6
|
+
export type ModalSize = 'sm' | 'md' | 'lg' | 'xl' | 'full';
|
|
7
|
+
export type ModalVariant = 'centered' | 'drawer' | 'sheet';
|
|
8
|
+
export type AlertType = 'success' | 'error' | 'warning' | 'info';
|
|
9
|
+
export interface Toast {
|
|
10
|
+
id: number;
|
|
11
|
+
message: string;
|
|
12
|
+
type: 'success' | 'error' | 'warning' | 'info';
|
|
13
|
+
duration?: number;
|
|
14
|
+
}
|
|
15
|
+
export interface TabItem {
|
|
16
|
+
id: string;
|
|
17
|
+
label: string;
|
|
18
|
+
icon?: string;
|
|
19
|
+
disabled?: boolean;
|
|
20
|
+
badge?: string | number;
|
|
21
|
+
}
|
|
22
|
+
export interface SelectOption<T = string> {
|
|
23
|
+
value: T;
|
|
24
|
+
label: string;
|
|
25
|
+
disabled?: boolean;
|
|
26
|
+
description?: string;
|
|
27
|
+
}
|
|
28
|
+
export interface RadioOption {
|
|
29
|
+
value: string | number;
|
|
30
|
+
label: string;
|
|
31
|
+
disabled?: boolean;
|
|
32
|
+
description?: string;
|
|
33
|
+
}
|
|
34
|
+
export interface FormFieldProps {
|
|
35
|
+
label?: string;
|
|
36
|
+
error?: string;
|
|
37
|
+
hint?: string;
|
|
38
|
+
required?: boolean;
|
|
39
|
+
}
|
|
40
|
+
export interface SidebarToolSection {
|
|
41
|
+
id: string;
|
|
42
|
+
label: string;
|
|
43
|
+
subtitle?: string;
|
|
44
|
+
icon?: string | string[];
|
|
45
|
+
iconColor?: string;
|
|
46
|
+
iconBg?: string;
|
|
47
|
+
defaultOpen?: boolean;
|
|
48
|
+
showToggle?: boolean;
|
|
49
|
+
}
|
|
50
|
+
export interface CollapsibleState {
|
|
51
|
+
isOpen: boolean;
|
|
52
|
+
toggle: () => void;
|
|
53
|
+
open: () => void;
|
|
54
|
+
close: () => void;
|
|
55
|
+
}
|
|
56
|
+
export type TopBarVariant = 'card' | 'default';
|
|
57
|
+
export interface TopBarPage {
|
|
58
|
+
id: string;
|
|
59
|
+
label: string;
|
|
60
|
+
to?: string;
|
|
61
|
+
href?: string;
|
|
62
|
+
icon?: string;
|
|
63
|
+
description?: string;
|
|
64
|
+
disabled?: boolean;
|
|
65
|
+
}
|
|
66
|
+
export interface TopBarTab {
|
|
67
|
+
id: string;
|
|
68
|
+
label: string;
|
|
69
|
+
to?: string;
|
|
70
|
+
href?: string;
|
|
71
|
+
icon?: string;
|
|
72
|
+
disabled?: boolean;
|
|
73
|
+
children?: TopBarTabOption[];
|
|
74
|
+
}
|
|
75
|
+
export interface TopBarTabOption {
|
|
76
|
+
id: string;
|
|
77
|
+
label: string;
|
|
78
|
+
to?: string;
|
|
79
|
+
href?: string;
|
|
80
|
+
description?: string;
|
|
81
|
+
disabled?: boolean;
|
|
82
|
+
}
|
|
83
|
+
export interface TopBarSettingsConfig {
|
|
84
|
+
title?: string;
|
|
85
|
+
tabs?: SettingsTab[];
|
|
86
|
+
showAppearance?: boolean;
|
|
87
|
+
size?: 'md' | 'lg' | 'xl';
|
|
88
|
+
}
|
|
89
|
+
export interface PillNavItem {
|
|
90
|
+
id: string;
|
|
91
|
+
label: string;
|
|
92
|
+
to?: string;
|
|
93
|
+
href?: string;
|
|
94
|
+
disabled?: boolean;
|
|
95
|
+
}
|
|
96
|
+
export interface PageSelectorItem {
|
|
97
|
+
id: string;
|
|
98
|
+
label: string;
|
|
99
|
+
icon?: string;
|
|
100
|
+
hint?: string;
|
|
101
|
+
to?: string;
|
|
102
|
+
href?: string;
|
|
103
|
+
disabled?: boolean;
|
|
104
|
+
}
|
|
105
|
+
export interface PluginSwitcherPlugin {
|
|
106
|
+
id: string;
|
|
107
|
+
label: string;
|
|
108
|
+
color?: string;
|
|
109
|
+
version?: string;
|
|
110
|
+
to?: string;
|
|
111
|
+
href?: string;
|
|
112
|
+
}
|
|
113
|
+
export interface PluginSwitcherInfo {
|
|
114
|
+
current: PluginSwitcherPlugin;
|
|
115
|
+
plugins?: PluginSwitcherPlugin[];
|
|
116
|
+
installHref?: string;
|
|
117
|
+
installTo?: string;
|
|
118
|
+
}
|
|
119
|
+
export interface AccountMenuItem {
|
|
120
|
+
id: string;
|
|
121
|
+
label: string;
|
|
122
|
+
icon?: string;
|
|
123
|
+
rightLabel?: string;
|
|
124
|
+
to?: string;
|
|
125
|
+
href?: string;
|
|
126
|
+
danger?: boolean;
|
|
127
|
+
divider?: boolean;
|
|
128
|
+
}
|
|
129
|
+
export type WellPlateFormat = 6 | 12 | 24 | 48 | 54 | 96 | 384;
|
|
130
|
+
export type WellState = 'empty' | 'filled' | 'selected' | 'disabled';
|
|
131
|
+
export type WellPlateSelectionMode = 'none' | 'single' | 'multiple' | 'rectangle' | 'drag';
|
|
132
|
+
export type WellPlateSize = 'sm' | 'md' | 'lg' | 'xl' | 'fill';
|
|
133
|
+
export type WellShape = 'circle' | 'rounded';
|
|
134
|
+
export interface Well {
|
|
135
|
+
id: string;
|
|
136
|
+
row: number;
|
|
137
|
+
col: number;
|
|
138
|
+
state: WellState;
|
|
139
|
+
sampleType?: string;
|
|
140
|
+
value?: number;
|
|
141
|
+
metadata?: Record<string, unknown>;
|
|
142
|
+
}
|
|
143
|
+
export type HeatmapColorScale = 'viridis' | 'plasma' | 'turbo' | 'custom';
|
|
144
|
+
export interface HeatmapConfig {
|
|
145
|
+
enabled: boolean;
|
|
146
|
+
min?: number;
|
|
147
|
+
max?: number;
|
|
148
|
+
colorScale?: HeatmapColorScale;
|
|
149
|
+
customColors?: string[];
|
|
150
|
+
showLegend?: boolean;
|
|
151
|
+
}
|
|
152
|
+
export type SlotPosition = 'R' | 'G' | 'B' | 'Y';
|
|
153
|
+
export interface WellExtendedData {
|
|
154
|
+
label?: string;
|
|
155
|
+
injectionVolume?: number;
|
|
156
|
+
injectionCount?: number;
|
|
157
|
+
customMethod?: string | null;
|
|
158
|
+
}
|
|
159
|
+
export interface WellEditData {
|
|
160
|
+
wellId: string;
|
|
161
|
+
label: string;
|
|
162
|
+
sampleType: string;
|
|
163
|
+
injectionVolume: number;
|
|
164
|
+
injectionCount: number;
|
|
165
|
+
customMethod: string;
|
|
166
|
+
}
|
|
167
|
+
export type WellEditField = 'label' | 'sampleType' | 'injectionVolume' | 'injectionCount' | 'customMethod';
|
|
168
|
+
export interface WellLegendItem {
|
|
169
|
+
type: string;
|
|
170
|
+
label: string;
|
|
171
|
+
color: string;
|
|
172
|
+
}
|
|
173
|
+
export interface PlateCondition {
|
|
174
|
+
label: string;
|
|
175
|
+
color: string;
|
|
176
|
+
concentrations: number[];
|
|
177
|
+
unit?: string;
|
|
178
|
+
}
|
|
179
|
+
export interface ColumnCondition extends PlateCondition {
|
|
180
|
+
cols: number[];
|
|
181
|
+
}
|
|
182
|
+
export interface RowCondition extends PlateCondition {
|
|
183
|
+
rows: string[];
|
|
184
|
+
}
|
|
185
|
+
export interface Rack {
|
|
186
|
+
id: string;
|
|
187
|
+
name: string;
|
|
188
|
+
format: WellPlateFormat;
|
|
189
|
+
slot: SlotPosition;
|
|
190
|
+
injectionVolume: number;
|
|
191
|
+
wells: Record<string, Partial<Well>>;
|
|
192
|
+
}
|
|
193
|
+
export interface SampleType {
|
|
194
|
+
id: string;
|
|
195
|
+
name: string;
|
|
196
|
+
color?: string;
|
|
197
|
+
count?: number;
|
|
198
|
+
description?: string;
|
|
199
|
+
}
|
|
200
|
+
export interface PlateMap {
|
|
201
|
+
id: string;
|
|
202
|
+
name: string;
|
|
203
|
+
format: WellPlateFormat;
|
|
204
|
+
wells: Record<string, Well>;
|
|
205
|
+
}
|
|
206
|
+
export interface PlateMapEditorState {
|
|
207
|
+
plates: PlateMap[];
|
|
208
|
+
activePlateId: string;
|
|
209
|
+
samples: SampleType[];
|
|
210
|
+
selectedWells: string[];
|
|
211
|
+
activeSampleId?: string;
|
|
212
|
+
}
|
|
213
|
+
export type ProtocolStepType = 'incubation' | 'wash' | 'addition' | 'measurement' | 'transfer' | 'centrifuge' | 'mix' | 'custom';
|
|
214
|
+
export type ProtocolStepStatus = 'pending' | 'in_progress' | 'completed' | 'failed' | 'skipped';
|
|
215
|
+
export interface ProtocolStep {
|
|
216
|
+
id: string;
|
|
217
|
+
type: ProtocolStepType;
|
|
218
|
+
name: string;
|
|
219
|
+
description?: string;
|
|
220
|
+
duration?: number;
|
|
221
|
+
status: ProtocolStepStatus;
|
|
222
|
+
parameters?: Record<string, unknown>;
|
|
223
|
+
order: number;
|
|
224
|
+
}
|
|
225
|
+
export interface SampleGroup {
|
|
226
|
+
name: string;
|
|
227
|
+
color: string;
|
|
228
|
+
samples: string[];
|
|
229
|
+
}
|
|
230
|
+
export interface GroupItem {
|
|
231
|
+
name: string;
|
|
232
|
+
color: string;
|
|
233
|
+
count: number;
|
|
234
|
+
}
|
|
235
|
+
export type FileUploaderMode = 'file' | 'folder';
|
|
236
|
+
export interface MoleculeData {
|
|
237
|
+
smiles: string;
|
|
238
|
+
molfile: string;
|
|
239
|
+
}
|
|
240
|
+
export type StorageCondition = 'RT' | '4C' | '-20C' | '-80C';
|
|
241
|
+
export type ReagentColumn = 'name' | 'catalog' | 'lot' | 'expiry' | 'storage' | 'location' | 'stock' | 'supplier';
|
|
242
|
+
export interface Reagent {
|
|
243
|
+
id: string;
|
|
244
|
+
name: string;
|
|
245
|
+
catalogNumber?: string;
|
|
246
|
+
lotNumber?: string;
|
|
247
|
+
expiryDate?: Date | string;
|
|
248
|
+
storageCondition?: StorageCondition;
|
|
249
|
+
location?: string;
|
|
250
|
+
stockLevel?: number;
|
|
251
|
+
stockUnit?: string;
|
|
252
|
+
supplier?: string;
|
|
253
|
+
url?: string;
|
|
254
|
+
}
|
|
255
|
+
export type TreeNodeType = 'study' | 'experiment' | 'plate' | 'sample' | 'cell_line' | 'passage' | 'clone' | 'treatment' | 'folder' | 'custom';
|
|
256
|
+
export type BadgeVariant = 'default' | 'success' | 'warning' | 'error';
|
|
257
|
+
export interface TreeNode {
|
|
258
|
+
id: string;
|
|
259
|
+
label: string;
|
|
260
|
+
type?: TreeNodeType;
|
|
261
|
+
icon?: string;
|
|
262
|
+
children?: TreeNode[];
|
|
263
|
+
metadata?: Record<string, unknown>;
|
|
264
|
+
badge?: string | number;
|
|
265
|
+
badgeVariant?: BadgeVariant;
|
|
266
|
+
}
|
|
267
|
+
export interface SegmentedOption {
|
|
268
|
+
value: string | number;
|
|
269
|
+
label: string;
|
|
270
|
+
description?: string;
|
|
271
|
+
disabled?: boolean;
|
|
272
|
+
}
|
|
273
|
+
export type SegmentedControlVariant = 'simple' | 'card';
|
|
274
|
+
export type SegmentedControlSize = 'sm' | 'md' | 'lg';
|
|
275
|
+
export interface MultiSelectOption {
|
|
276
|
+
value: string | number;
|
|
277
|
+
label: string;
|
|
278
|
+
disabled?: boolean;
|
|
279
|
+
}
|
|
280
|
+
export type MultiSelectSize = 'sm' | 'md' | 'lg';
|
|
281
|
+
/** Visual style variant for pill/badge components */
|
|
282
|
+
export type PillVariant = 'default' | 'primary' | 'success' | 'warning' | 'error' | 'info' | 'outline';
|
|
283
|
+
/** Semantic color modifier for pill components — combine with variant="outline" for colored outlines */
|
|
284
|
+
export type PillColor = 'neutral' | 'primary' | 'success' | 'warning' | 'error' | 'info';
|
|
285
|
+
/** Size variant for pill components */
|
|
286
|
+
export type PillSize = 'sm' | 'md' | 'lg';
|
|
287
|
+
/** Date selection behavior for calendar component */
|
|
288
|
+
export type CalendarSelectionMode = 'none' | 'single' | 'range' | 'multiple';
|
|
289
|
+
/** Visual marker displayed on a calendar date */
|
|
290
|
+
export interface CalendarMarker {
|
|
291
|
+
/** Date to mark */
|
|
292
|
+
date: Date | string;
|
|
293
|
+
/** Marker color (CSS color value) */
|
|
294
|
+
color?: string;
|
|
295
|
+
/** Tooltip/label for the marker */
|
|
296
|
+
label?: string;
|
|
297
|
+
/** Visual style of the marker */
|
|
298
|
+
type?: 'dot' | 'bar' | 'highlight';
|
|
299
|
+
/** Additional custom data */
|
|
300
|
+
customData?: Record<string, unknown>;
|
|
301
|
+
}
|
|
302
|
+
/** Context object for a calendar day cell */
|
|
303
|
+
export interface CalendarDayContext {
|
|
304
|
+
/** The date for this day */
|
|
305
|
+
date: Date;
|
|
306
|
+
/** Day of month (1-31) */
|
|
307
|
+
dayOfMonth: number;
|
|
308
|
+
/** True if this is today's date */
|
|
309
|
+
isToday: boolean;
|
|
310
|
+
/** True if this date is currently selected */
|
|
311
|
+
isSelected: boolean;
|
|
312
|
+
/** True if this date is within a selected range */
|
|
313
|
+
isInRange: boolean;
|
|
314
|
+
/** True if this date cannot be selected */
|
|
315
|
+
isDisabled: boolean;
|
|
316
|
+
/** True if this date is from an adjacent month */
|
|
317
|
+
isOutsideMonth: boolean;
|
|
318
|
+
/** Markers configured for this date */
|
|
319
|
+
markers: CalendarMarker[];
|
|
320
|
+
}
|
|
321
|
+
/** Sort direction (null means unsorted) */
|
|
322
|
+
export type SortDirection = 'asc' | 'desc' | null;
|
|
323
|
+
/** Current sort state for a table column */
|
|
324
|
+
export interface SortState {
|
|
325
|
+
/** Column key being sorted */
|
|
326
|
+
key: string;
|
|
327
|
+
/** Sort direction */
|
|
328
|
+
direction: SortDirection;
|
|
329
|
+
}
|
|
330
|
+
/** Column configuration for DataFrame component */
|
|
331
|
+
export interface DataFrameColumn<T = Record<string, unknown>> {
|
|
332
|
+
/** Unique column key (supports nested keys like 'user.name') */
|
|
333
|
+
key: string;
|
|
334
|
+
/** Display label for column header */
|
|
335
|
+
label: string;
|
|
336
|
+
/** Enable sorting for this column */
|
|
337
|
+
sortable?: boolean;
|
|
338
|
+
/** Text alignment */
|
|
339
|
+
align?: 'left' | 'center' | 'right';
|
|
340
|
+
/** Fixed column width */
|
|
341
|
+
width?: string | number;
|
|
342
|
+
/** Minimum column width */
|
|
343
|
+
minWidth?: string | number;
|
|
344
|
+
/** Truncate overflow text with ellipsis */
|
|
345
|
+
ellipsis?: boolean;
|
|
346
|
+
/** Custom formatter for cell values */
|
|
347
|
+
formatter?: (value: unknown, row: T, index: number) => string;
|
|
348
|
+
}
|
|
349
|
+
/** Pagination state for table data */
|
|
350
|
+
export interface PaginationState {
|
|
351
|
+
/** Current page (1-indexed) */
|
|
352
|
+
page: number;
|
|
353
|
+
/** Number of rows per page */
|
|
354
|
+
pageSize: number;
|
|
355
|
+
/** Total number of rows across all pages */
|
|
356
|
+
total: number;
|
|
357
|
+
}
|
|
358
|
+
export type SpinnerSize = 'xs' | 'sm' | 'md' | 'lg';
|
|
359
|
+
export type SpinnerVariant = 'primary' | 'cta' | 'muted';
|
|
360
|
+
export type DividerSpacing = 'sm' | 'md' | 'lg';
|
|
361
|
+
export type StatusType = 'success' | 'warning' | 'error' | 'info' | 'muted';
|
|
362
|
+
export type ProgressVariant = 'rail' | 'segmented';
|
|
363
|
+
export type ProgressColor = 'primary' | 'success' | 'warning' | 'error' | 'info';
|
|
364
|
+
export type ProgressSize = 'sm' | 'md' | 'lg';
|
|
365
|
+
export type AvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
366
|
+
export type EmptyStateColor = 'primary' | 'cta' | 'success' | 'warning' | 'error' | 'muted';
|
|
367
|
+
export type EmptyStateSize = 'sm' | 'md' | 'lg';
|
|
368
|
+
export interface BreadcrumbItem {
|
|
369
|
+
label: string;
|
|
370
|
+
to?: string;
|
|
371
|
+
href?: string;
|
|
372
|
+
}
|
|
373
|
+
export type TooltipPosition = 'top' | 'bottom' | 'left' | 'right';
|
|
374
|
+
export type ConfirmVariant = 'danger' | 'warning' | 'info';
|
|
375
|
+
export interface SettingsTab {
|
|
376
|
+
id: string;
|
|
377
|
+
label: string;
|
|
378
|
+
icon?: string;
|
|
379
|
+
}
|
|
380
|
+
export type NumberNotation = 'auto' | 'scientific' | 'engineering' | 'compact';
|
|
381
|
+
export interface UnitOption {
|
|
382
|
+
value: string;
|
|
383
|
+
label: string;
|
|
384
|
+
factor?: number;
|
|
385
|
+
group?: string;
|
|
386
|
+
}
|
|
387
|
+
export interface WizardStep {
|
|
388
|
+
id: string;
|
|
389
|
+
label: string;
|
|
390
|
+
description?: string;
|
|
391
|
+
icon?: string;
|
|
392
|
+
optional?: boolean;
|
|
393
|
+
}
|
|
394
|
+
export type WizardStepState = 'pending' | 'active' | 'completed' | 'disabled';
|
|
395
|
+
export type AuditEntryType = 'create' | 'update' | 'delete' | 'system';
|
|
396
|
+
export interface AuditEntry {
|
|
397
|
+
id: string;
|
|
398
|
+
type: AuditEntryType;
|
|
399
|
+
action: string;
|
|
400
|
+
detail?: string;
|
|
401
|
+
user?: string;
|
|
402
|
+
timestamp: Date | string;
|
|
403
|
+
metadata?: Record<string, unknown>;
|
|
404
|
+
}
|
|
405
|
+
export type BatchItemStatus = 'pending' | 'processing' | 'completed' | 'error' | 'skipped';
|
|
406
|
+
export interface BatchItem {
|
|
407
|
+
id: string;
|
|
408
|
+
label: string;
|
|
409
|
+
status: BatchItemStatus;
|
|
410
|
+
progress?: number;
|
|
411
|
+
message?: string;
|
|
412
|
+
}
|
|
413
|
+
export interface BatchSummary {
|
|
414
|
+
total: number;
|
|
415
|
+
completed: number;
|
|
416
|
+
processing: number;
|
|
417
|
+
error: number;
|
|
418
|
+
pending: number;
|
|
419
|
+
skipped: number;
|
|
420
|
+
percent: number;
|
|
421
|
+
}
|
|
422
|
+
export type TimePickerFormat = '12h' | '24h';
|
|
423
|
+
export interface TimeRange {
|
|
424
|
+
start: string;
|
|
425
|
+
end: string;
|
|
426
|
+
}
|
|
427
|
+
export type ScheduleView = 'day' | 'week' | 'month';
|
|
428
|
+
export type ScheduleEventStatus = 'confirmed' | 'pending' | 'cancelled' | 'in-progress';
|
|
429
|
+
export interface ScheduleEvent {
|
|
430
|
+
id: string;
|
|
431
|
+
start: string;
|
|
432
|
+
end: string;
|
|
433
|
+
title: string;
|
|
434
|
+
color?: string;
|
|
435
|
+
status?: ScheduleEventStatus;
|
|
436
|
+
draggable?: boolean;
|
|
437
|
+
resizable?: boolean;
|
|
438
|
+
metadata?: Record<string, unknown>;
|
|
439
|
+
}
|
|
440
|
+
export interface ScheduleBlockedSlot {
|
|
441
|
+
start: string;
|
|
442
|
+
end: string;
|
|
443
|
+
label?: string;
|
|
444
|
+
}
|
|
445
|
+
export interface ScheduleSlotContext {
|
|
446
|
+
date: Date;
|
|
447
|
+
hour: number;
|
|
448
|
+
minute: number;
|
|
449
|
+
}
|
|
450
|
+
export interface ScheduleEventCreateContext {
|
|
451
|
+
start: Date;
|
|
452
|
+
end: Date;
|
|
453
|
+
}
|
|
454
|
+
export interface ScheduleEventUpdateContext {
|
|
455
|
+
event: ScheduleEvent;
|
|
456
|
+
newStart: Date;
|
|
457
|
+
newEnd: Date;
|
|
458
|
+
}
|
|
459
|
+
export interface SummarySectionItem {
|
|
460
|
+
label: string;
|
|
461
|
+
metadata?: Record<string, unknown>;
|
|
462
|
+
item_count: number;
|
|
463
|
+
item_key: string;
|
|
464
|
+
columns: string[];
|
|
465
|
+
rows: Record<string, unknown>[];
|
|
466
|
+
}
|
|
467
|
+
export interface SummarySection {
|
|
468
|
+
key: string;
|
|
469
|
+
label: string;
|
|
470
|
+
type: 'table' | 'group';
|
|
471
|
+
/** Group sections: list of group items with embedded tables */
|
|
472
|
+
items?: SummarySectionItem[];
|
|
473
|
+
/** Table sections: flat table columns and rows */
|
|
474
|
+
columns?: string[];
|
|
475
|
+
rows?: Record<string, unknown>[];
|
|
476
|
+
row_count?: number;
|
|
477
|
+
}
|
|
478
|
+
export interface SummaryData {
|
|
479
|
+
metadata: Record<string, unknown>;
|
|
480
|
+
sections: SummarySection[];
|
|
481
|
+
}
|
|
482
|
+
export type ResourceStatus = 'available' | 'in-use' | 'maintenance' | 'offline';
|
|
483
|
+
export interface ResourceSpec {
|
|
484
|
+
label: string;
|
|
485
|
+
value: string;
|
|
486
|
+
}
|
|
487
|
+
export type ExperimentStatus = 'planned' | 'ongoing' | 'completed' | 'cancelled';
|
|
488
|
+
export type DatePreset = 'last_7_days' | 'last_30_days' | 'last_90_days';
|
|
489
|
+
export type ExperimentSortField = 'created_at' | 'updated_at' | 'name' | 'status';
|
|
490
|
+
export interface ExperimentTypeOption {
|
|
491
|
+
value: string;
|
|
492
|
+
label: string;
|
|
493
|
+
color?: string;
|
|
494
|
+
}
|
|
495
|
+
export interface ExperimentSummary {
|
|
496
|
+
id: number;
|
|
497
|
+
experiment_code?: string;
|
|
498
|
+
name: string;
|
|
499
|
+
status: ExperimentStatus;
|
|
500
|
+
experiment_type: string;
|
|
501
|
+
project?: string;
|
|
502
|
+
project_id?: number;
|
|
503
|
+
project_name?: string;
|
|
504
|
+
notes?: string;
|
|
505
|
+
tags?: Record<string, unknown>;
|
|
506
|
+
created_at: string;
|
|
507
|
+
updated_at: string;
|
|
508
|
+
created_by?: number;
|
|
509
|
+
created_by_user?: UserSummary;
|
|
510
|
+
has_design_data: boolean;
|
|
511
|
+
}
|
|
512
|
+
export interface ExperimentListResponse {
|
|
513
|
+
experiments: ExperimentSummary[];
|
|
514
|
+
total: number;
|
|
515
|
+
}
|
|
516
|
+
export interface ExperimentFilters {
|
|
517
|
+
search?: string;
|
|
518
|
+
status?: ExperimentStatus | null;
|
|
519
|
+
project?: string | null;
|
|
520
|
+
experimentType?: string | null;
|
|
521
|
+
datePreset?: DatePreset | null;
|
|
522
|
+
}
|
|
523
|
+
export type FitState = 'idle' | 'running' | 'completed' | 'error';
|
|
524
|
+
export interface FitResultSummary {
|
|
525
|
+
label: string;
|
|
526
|
+
value: string | number;
|
|
527
|
+
variant?: 'default' | 'success' | 'warning' | 'error';
|
|
528
|
+
}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { FieldRules } from '../composables/useForm';
|
|
2
|
+
/** All supported field types that map to SDK components. */
|
|
3
|
+
export type FormFieldType = 'text' | 'email' | 'password' | 'number' | 'tel' | 'url' | 'search' | 'textarea' | 'select' | 'multiselect' | 'checkbox' | 'toggle' | 'radio' | 'slider' | 'tags' | 'date' | 'time' | 'datetime' | 'file' | 'formula' | 'sequence' | 'molecule' | 'concentration' | 'unit';
|
|
4
|
+
export type FieldCondition = {
|
|
5
|
+
field: string;
|
|
6
|
+
eq: unknown;
|
|
7
|
+
} | {
|
|
8
|
+
field: string;
|
|
9
|
+
neq: unknown;
|
|
10
|
+
} | {
|
|
11
|
+
field: string;
|
|
12
|
+
gt: number;
|
|
13
|
+
} | {
|
|
14
|
+
field: string;
|
|
15
|
+
lt: number;
|
|
16
|
+
} | {
|
|
17
|
+
field: string;
|
|
18
|
+
gte: number;
|
|
19
|
+
} | {
|
|
20
|
+
field: string;
|
|
21
|
+
lte: number;
|
|
22
|
+
} | {
|
|
23
|
+
field: string;
|
|
24
|
+
in: unknown[];
|
|
25
|
+
} | {
|
|
26
|
+
field: string;
|
|
27
|
+
notIn: unknown[];
|
|
28
|
+
} | {
|
|
29
|
+
field: string;
|
|
30
|
+
truthy: true;
|
|
31
|
+
} | {
|
|
32
|
+
field: string;
|
|
33
|
+
falsy: true;
|
|
34
|
+
} | {
|
|
35
|
+
field: string;
|
|
36
|
+
contains: string;
|
|
37
|
+
} | {
|
|
38
|
+
and: FieldCondition[];
|
|
39
|
+
} | {
|
|
40
|
+
or: FieldCondition[];
|
|
41
|
+
} | {
|
|
42
|
+
not: FieldCondition;
|
|
43
|
+
};
|
|
44
|
+
export interface FieldValidation {
|
|
45
|
+
required?: boolean | string;
|
|
46
|
+
minLength?: number | {
|
|
47
|
+
value: number;
|
|
48
|
+
message: string;
|
|
49
|
+
};
|
|
50
|
+
maxLength?: number | {
|
|
51
|
+
value: number;
|
|
52
|
+
message: string;
|
|
53
|
+
};
|
|
54
|
+
min?: number | {
|
|
55
|
+
value: number;
|
|
56
|
+
message: string;
|
|
57
|
+
};
|
|
58
|
+
max?: number | {
|
|
59
|
+
value: number;
|
|
60
|
+
message: string;
|
|
61
|
+
};
|
|
62
|
+
/** Pattern as a string (converted to RegExp at runtime). */
|
|
63
|
+
pattern?: string | {
|
|
64
|
+
value: string;
|
|
65
|
+
message: string;
|
|
66
|
+
};
|
|
67
|
+
email?: boolean | string;
|
|
68
|
+
}
|
|
69
|
+
export interface FormFieldSchema {
|
|
70
|
+
name: string;
|
|
71
|
+
label: string;
|
|
72
|
+
type: FormFieldType;
|
|
73
|
+
defaultValue?: unknown;
|
|
74
|
+
placeholder?: string;
|
|
75
|
+
hint?: string;
|
|
76
|
+
size?: 'sm' | 'md' | 'lg';
|
|
77
|
+
disabled?: boolean;
|
|
78
|
+
readonly?: boolean;
|
|
79
|
+
validation?: FieldValidation;
|
|
80
|
+
condition?: FieldCondition;
|
|
81
|
+
/** Grid column span (1-3). Defaults to 1. */
|
|
82
|
+
colSpan?: number;
|
|
83
|
+
/** Extra props passed directly to the underlying component. */
|
|
84
|
+
props?: Record<string, unknown>;
|
|
85
|
+
}
|
|
86
|
+
export interface FormSectionSchema {
|
|
87
|
+
id: string;
|
|
88
|
+
title: string;
|
|
89
|
+
description?: string;
|
|
90
|
+
collapsible?: boolean;
|
|
91
|
+
defaultOpen?: boolean;
|
|
92
|
+
/** Number of grid columns (1-3). Defaults to 1. */
|
|
93
|
+
columns?: 1 | 2 | 3;
|
|
94
|
+
fields: FormFieldSchema[];
|
|
95
|
+
condition?: FieldCondition;
|
|
96
|
+
}
|
|
97
|
+
export interface FormStepSchema {
|
|
98
|
+
id: string;
|
|
99
|
+
label: string;
|
|
100
|
+
description?: string;
|
|
101
|
+
icon?: string;
|
|
102
|
+
optional?: boolean;
|
|
103
|
+
sections: FormSectionSchema[];
|
|
104
|
+
}
|
|
105
|
+
export type FormSchema = {
|
|
106
|
+
sections: FormSectionSchema[];
|
|
107
|
+
steps?: never;
|
|
108
|
+
submitLabel?: string;
|
|
109
|
+
cancelLabel?: string;
|
|
110
|
+
showCancel?: boolean;
|
|
111
|
+
} | {
|
|
112
|
+
sections?: never;
|
|
113
|
+
steps: FormStepSchema[];
|
|
114
|
+
submitLabel?: string;
|
|
115
|
+
cancelLabel?: string;
|
|
116
|
+
showCancel?: boolean;
|
|
117
|
+
};
|
|
118
|
+
export interface FieldEnhancement<T extends Record<string, unknown> = Record<string, unknown>> {
|
|
119
|
+
/** Custom validator appended to the field's rules. */
|
|
120
|
+
validate?: (value: unknown, data: T) => string | undefined | null;
|
|
121
|
+
/** Dynamic visibility (overrides schema condition if both present). */
|
|
122
|
+
visible?: (data: T) => boolean;
|
|
123
|
+
/** Dynamic options for select/multiselect/radio fields. */
|
|
124
|
+
options?: (data: T) => {
|
|
125
|
+
label: string;
|
|
126
|
+
value: unknown;
|
|
127
|
+
}[];
|
|
128
|
+
/** Dynamic extra props merged into the component. */
|
|
129
|
+
props?: (data: T) => Record<string, unknown>;
|
|
130
|
+
}
|
|
131
|
+
export interface FormEnhancements<T extends Record<string, unknown> = Record<string, unknown>> {
|
|
132
|
+
/** Per-field enhancements keyed by field name. */
|
|
133
|
+
fields?: Partial<Record<keyof T, FieldEnhancement<T>>>;
|
|
134
|
+
/** Called on successful submit. */
|
|
135
|
+
onSubmit?: (data: T) => Promise<void> | void;
|
|
136
|
+
/** Transform data before submit (return transformed copy). */
|
|
137
|
+
transform?: (data: T) => T | Record<string, unknown>;
|
|
138
|
+
/** Called when any field value changes. */
|
|
139
|
+
onFieldChange?: (field: keyof T, value: unknown, data: T) => void;
|
|
140
|
+
}
|
|
141
|
+
export interface UseFormBuilderReturn<T extends Record<string, unknown>> {
|
|
142
|
+
/** Underlying useForm return. */
|
|
143
|
+
form: import('../composables/useForm').UseFormReturn<T>;
|
|
144
|
+
/** Validation rules derived from schema + enhancements. */
|
|
145
|
+
rules: Partial<Record<keyof T, FieldRules>>;
|
|
146
|
+
/** Whether a field is currently visible. */
|
|
147
|
+
isFieldVisible: (name: string) => boolean;
|
|
148
|
+
/** Whether a section is currently visible. */
|
|
149
|
+
isSectionVisible: (id: string) => boolean;
|
|
150
|
+
/** All flattened field schemas. */
|
|
151
|
+
fields: FormFieldSchema[];
|
|
152
|
+
/** Resolve final component props for a field. */
|
|
153
|
+
getResolvedFieldProps: (field: FormFieldSchema) => Record<string, unknown>;
|
|
154
|
+
/** Get options for a select/radio/multiselect field. */
|
|
155
|
+
getFieldOptions: (name: string) => {
|
|
156
|
+
label: string;
|
|
157
|
+
value: unknown;
|
|
158
|
+
}[] | undefined;
|
|
159
|
+
currentStep: import('vue').Ref<number>;
|
|
160
|
+
isCurrentStepValid: import('vue').ComputedRef<boolean>;
|
|
161
|
+
goNext: () => boolean;
|
|
162
|
+
goBack: () => void;
|
|
163
|
+
goToStep: (index: number) => void;
|
|
164
|
+
validate: () => boolean;
|
|
165
|
+
reset: (values?: Partial<T>) => void;
|
|
166
|
+
submit: () => Promise<void>;
|
|
167
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export type { ContainerDirection, ButtonVariant, ButtonSize, InputType, ModalSize, ModalVariant, AlertType, Toast, TabItem, SelectOption, RadioOption, FormFieldProps, SidebarToolSection, CollapsibleState, TopBarVariant, TopBarPage, TopBarTab, TopBarTabOption, TopBarSettingsConfig, PillNavItem, PageSelectorItem, PluginSwitcherPlugin, PluginSwitcherInfo, AccountMenuItem, WellPlateFormat, WellState, WellPlateSelectionMode, WellPlateSize, WellShape, Well, HeatmapColorScale, HeatmapConfig, SlotPosition, WellExtendedData, WellEditData, WellEditField, WellLegendItem, PlateCondition, ColumnCondition, RowCondition, Rack, SampleType, PlateMap, PlateMapEditorState, ProtocolStepType, ProtocolStepStatus, ProtocolStep, SampleGroup, GroupItem, FileUploaderMode, SegmentedOption, SegmentedControlVariant, SegmentedControlSize, MultiSelectOption, MultiSelectSize, PillVariant, PillColor, PillSize, CalendarSelectionMode, CalendarMarker, CalendarDayContext, SortDirection, SortState, DataFrameColumn, PaginationState, SpinnerSize, SpinnerVariant, DividerSpacing, StatusType, ProgressVariant, ProgressSize, AvatarSize, EmptyStateColor, EmptyStateSize, BreadcrumbItem, TooltipPosition, ConfirmVariant, SettingsTab, NumberNotation, UnitOption, WizardStep, WizardStepState, AuditEntryType, AuditEntry, BatchItemStatus, BatchItem, BatchSummary, TimePickerFormat, TimeRange, ScheduleView, ScheduleEventStatus, ScheduleEvent, ScheduleBlockedSlot, ScheduleSlotContext, ScheduleEventCreateContext, ScheduleEventUpdateContext, SummarySectionItem, SummarySection, SummaryData, ResourceStatus, ResourceSpec, MoleculeData, ExperimentStatus, DatePreset, ExperimentSortField, ExperimentTypeOption, ExperimentSummary, ExperimentListResponse, ExperimentFilters, FitState, FitResultSummary, StorageCondition, ReagentColumn, Reagent, TreeNodeType, BadgeVariant, TreeNode, } from './components';
|
|
2
|
+
export type { FormFieldType, FieldCondition, FieldValidation, FormFieldSchema, FormSectionSchema, FormStepSchema, FormSchema, FieldEnhancement, FormEnhancements, UseFormBuilderReturn, } from './form-builder';
|
|
3
|
+
export type { OutlierAction, InputMode, OutlierInfo, ColumnInfo, MetadataRow, AutoGroupResult, ParsedCsvData, } from './auto-group';
|
|
4
|
+
export type { AuthConfig, UserInfo, LoginResponse, TokenVerifyResponse, RegisterRequest, UpdateProfileRequest, CredentialInfo, } from './auth';
|
|
5
|
+
export type { PluginInfo, PluginNavItem, PluginSettings, PluginSettingField, PlatformContext, PlatformContextOptions, PlatformEventType, PlatformEvent, ThemeMode, ColorPalette, TableDensity, UserSummary, } from './platform';
|
|
File without changes
|