@morscherlab/mint-sdk 1.2.0-beta.1 → 1.2.0-beta.11
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 +35 -5
- package/dist/{ExperimentPopover-tLwJ7XF4.js → ExperimentPopover-oL0fg_A0.js} +6 -4
- package/dist/ExperimentPopover-oL0fg_A0.js.map +1 -0
- package/dist/{ExperimentSelectorModal-DyPAUCLw.js → ExperimentSelectorModal-BeEOomw_.js} +5 -5
- package/dist/ExperimentSelectorModal-BeEOomw_.js.map +1 -0
- package/dist/{SettingsModal-BgKY93zh.js → SettingsModal-Dphh3RrI.js} +5 -8
- package/dist/SettingsModal-Dphh3RrI.js.map +1 -0
- package/dist/{EmptyState-p90quq8Z.js → Skeleton-DxtwJ5gt.js} +111 -93
- package/dist/Skeleton-DxtwJ5gt.js.map +1 -0
- package/dist/__tests__/components/ExperimentTimeline.test.d.ts +1 -0
- package/dist/__tests__/components/PluginWorkspaceView.internal.test.d.ts +1 -0
- package/dist/__tests__/components/SecretInput.test.d.ts +1 -0
- package/dist/__tests__/components/WellEditPopupInternal.test.d.ts +1 -0
- package/dist/__tests__/composables/useListReorder.test.d.ts +1 -0
- package/dist/__tests__/composables/usePluginConfig.test.d.ts +15 -0
- package/dist/__tests__/styles/cssTokens.test.d.ts +1 -0
- package/dist/components/ActionMenu.vue.d.ts +1 -1
- package/dist/components/AppAvatarMenu.vue.d.ts +4 -0
- package/dist/components/AppPluginSwitcher.vue.d.ts +2 -0
- package/dist/components/AppSidebar.vue.d.ts +1 -1
- package/dist/components/AuditTrail.vue.d.ts +13 -0
- package/dist/components/AutoGroupModal.vue.d.ts +1 -1
- package/dist/components/BatchProgressList.vue.d.ts +17 -0
- package/dist/components/BioTemplateExperimentWorkspaceView.vue.d.ts +2 -2
- package/dist/components/DataFrame.vue.d.ts +14 -2
- package/dist/components/DatePicker.vue.d.ts +1 -1
- package/dist/components/DateTimePicker.vue.d.ts +2 -0
- package/dist/components/DropdownButton.vue.d.ts +2 -0
- package/dist/components/ExperimentDataViewer.vue.d.ts +26 -1
- package/dist/components/ExperimentPopover.vue.d.ts +1 -0
- package/dist/components/ExperimentTimeline.vue.d.ts +29 -1
- package/dist/components/FitPanel.vue.d.ts +1 -1
- package/dist/components/JobsStatusTray.vue.d.ts +9 -2
- package/dist/components/LcmsSequenceTable.vue.d.ts +29 -1
- package/dist/components/PluginWorkspaceView.props.d.ts +29 -1
- package/dist/components/PluginWorkspaceView.vue.d.ts +5 -5
- package/dist/components/ProgressBar.vue.d.ts +1 -1
- package/dist/components/ProtocolStepEditor.vue.d.ts +1 -0
- package/dist/components/ReagentList.vue.d.ts +29 -1
- package/dist/components/SampleHierarchyTree.vue.d.ts +29 -1
- package/dist/components/SampleLegend.vue.d.ts +1 -1
- package/dist/components/SampleSelector.drag.d.ts +13 -0
- package/dist/components/SampleSelector.tree.d.ts +2 -0
- package/dist/components/SampleSelector.vue.d.ts +35 -2
- package/dist/components/ScheduleCalendar.vue.d.ts +20 -0
- package/dist/components/SecretInput.vue.d.ts +28 -0
- package/dist/components/SettingsModal.vue.d.ts +1 -1
- package/dist/components/SmartGroupFieldRecipe.vue.d.ts +2 -1
- package/dist/components/TimePicker.vue.d.ts +1 -0
- package/dist/components/WellPlate.geometry.d.ts +15 -0
- package/dist/components/WellPlate.interaction.d.ts +13 -0
- package/dist/components/WellPlate.vue.d.ts +29 -0
- package/dist/components/index.d.ts +9 -0
- package/dist/components/index.js +8 -8
- package/dist/components/internal/AppTopBarPageSelectorInternal.vue.d.ts +2 -0
- package/dist/components/internal/DataStateInternal.vue.d.ts +43 -0
- package/dist/components/internal/WellEditPopupInternal.vue.d.ts +3 -1
- package/dist/components/internal/WorkspaceControlsInternal.vue.d.ts +23 -0
- package/dist/components/internal/WorkspaceShellInternal.vue.d.ts +70 -0
- package/dist/components/internal/WorkspaceSidebarInternal.vue.d.ts +43 -0
- package/dist/{components-DkHddRMl.js → components-CgAUzF8F.js} +2497 -2235
- package/dist/components-CgAUzF8F.js.map +1 -0
- package/dist/composables/controlSchemaTypes.d.ts +34 -0
- package/dist/composables/flattenWorkspaceBindings.d.ts +61 -0
- package/dist/composables/index.d.ts +9 -2
- package/dist/composables/index.js +10 -10
- package/dist/composables/pluginWorkspaceModel.d.ts +164 -0
- package/dist/composables/useAsync.d.ts +5 -1
- package/dist/composables/useBioTemplateWorkspace.d.ts +4 -20
- package/dist/composables/useCommandHistory.d.ts +5 -1
- package/dist/composables/useDropdownState.d.ts +18 -2
- package/dist/composables/useEventStream.d.ts +9 -0
- package/dist/composables/useFocusTrap.d.ts +21 -0
- package/dist/composables/useGeneratedAnalysis.d.ts +3 -1
- package/dist/composables/useJobsStatusTray.d.ts +25 -1
- package/dist/composables/useListReorder.d.ts +90 -0
- package/dist/composables/useMenuKeyboard.d.ts +29 -0
- package/dist/composables/useOptimisticMutation.d.ts +5 -1
- package/dist/composables/usePluginClient.d.ts +2 -0
- package/dist/composables/usePluginConfig.d.ts +27 -0
- package/dist/composables/usePluginWorkspace.d.ts +51 -0
- package/dist/composables/useRequestSyncState.d.ts +42 -2
- package/dist/composables/useResourceCrud.d.ts +5 -1
- package/dist/composables/useRovingFocus.d.ts +24 -0
- package/dist/composables/useScheduleDrag.d.ts +1 -0
- package/dist/composables/useWellPainting.d.ts +5 -1
- package/dist/composables/useWellPlateAdapter.d.ts +5 -1
- package/dist/composables/useWellPlateValidation.d.ts +5 -1
- package/dist/composables/workspaceRecipes.d.ts +188 -0
- package/dist/{composables-C_i90sGS.js → composables-B_pia3hO.js} +209 -82
- package/dist/composables-B_pia3hO.js.map +1 -0
- package/dist/{useApi-J6zFkHmn.js → errors-_W0-LbA6.js} +103 -3
- package/dist/errors-_W0-LbA6.js.map +1 -0
- package/dist/{experiment-Cq145oEW.js → experiment-Cwl9AYxw.js} +3 -8
- package/dist/experiment-Cwl9AYxw.js.map +1 -0
- package/dist/{experiment-utils-CLnzPPq5.js → experiment-utils-DV3DrvE_.js} +70 -51
- package/dist/experiment-utils-DV3DrvE_.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +15 -15
- package/dist/install.js +2 -7
- package/dist/install.js.map +1 -1
- package/dist/permissions.d.ts +42 -1
- package/dist/permissions.js +20 -10
- package/dist/permissions.js.map +1 -1
- package/dist/stores/auth.d.ts +6 -0
- package/dist/stores/index.d.ts +1 -1
- package/dist/stores/index.js +3 -3
- package/dist/stores/settings.d.ts +31 -1
- package/dist/styles.css +11247 -29501
- package/dist/templates/builderReadUtils.d.ts +1 -1
- package/dist/templates/index.js +2 -4
- package/dist/{templates-DsP51i-S.js → templates-Qq113pyZ.js} +303 -106
- package/dist/templates-Qq113pyZ.js.map +1 -0
- package/dist/types/auth.d.ts +1 -0
- package/dist/types/form-builder.d.ts +1 -1
- package/dist/{useControlSchema-BDx2Olha.js → useControlSchema-aMZlb4Sc.js} +462 -1130
- package/dist/useControlSchema-aMZlb4Sc.js.map +1 -0
- package/dist/{useDropdownState-DSb3BC3N.js → useDropdownState-DitCtrTT.js} +22 -6
- package/dist/useDropdownState-DitCtrTT.js.map +1 -0
- package/dist/{useExperimentSelector-CV4iNfMS.js → useExperimentSelector-I8HC8hUu.js} +4 -4
- package/dist/{useExperimentSelector-CV4iNfMS.js.map → useExperimentSelector-I8HC8hUu.js.map} +1 -1
- package/dist/{useFormBuilder-BLxG3BOX.js → useFormBuilder-TCxNnqeb.js} +2 -2
- package/dist/{useFormBuilder-BLxG3BOX.js.map → useFormBuilder-TCxNnqeb.js.map} +1 -1
- package/dist/{useProtocolTemplates-CS_SQl6U.js → useProtocolTemplates-BmX_iVBR.js} +766 -212
- package/dist/useProtocolTemplates-BmX_iVBR.js.map +1 -0
- package/dist/utils/color.d.ts +13 -0
- package/dist/utils/errors.d.ts +9 -0
- package/dist/utils/pluginSecrets.d.ts +53 -0
- package/dist/utils/records.d.ts +4 -0
- package/package.json +1 -1
- package/src/__tests__/components/ActionMenu.test.ts +94 -0
- package/src/__tests__/components/AppAvatarMenu.test.ts +123 -0
- package/src/__tests__/components/BaseTabs.test.ts +67 -0
- package/src/__tests__/components/DataFrame.test.ts +183 -11
- package/src/__tests__/components/DataStates.test.ts +176 -0
- package/src/__tests__/components/DatePicker.test.ts +76 -0
- package/src/__tests__/components/DateTimePicker.test.ts +36 -0
- package/src/__tests__/components/DropdownButton.test.ts +134 -0
- package/src/__tests__/components/ExperimentTimeline.test.ts +63 -0
- package/src/__tests__/components/GroupAssigner.test.ts +53 -0
- package/src/__tests__/components/LcmsSequenceTable.test.ts +22 -0
- package/src/__tests__/components/PluginWorkspaceView.internal.test.ts +230 -0
- package/src/__tests__/components/RackEditor.test.ts +35 -0
- package/src/__tests__/components/ReagentList.test.ts +64 -2
- package/src/__tests__/components/RetiredStyles.test.ts +31 -0
- package/src/__tests__/components/SampleSelector.drag.test.ts +51 -1
- package/src/__tests__/components/ScheduleCalendar.test.ts +63 -0
- package/src/__tests__/components/SecretInput.test.ts +87 -0
- package/src/__tests__/components/SegmentedControl.test.ts +88 -0
- package/src/__tests__/components/TimePicker.test.ts +61 -0
- package/src/__tests__/components/WellEditPopupInternal.test.ts +108 -0
- package/src/__tests__/components/WellPlate.interaction.test.ts +59 -0
- package/src/__tests__/composables/useAuth.test.ts +2 -0
- package/src/__tests__/composables/useDropdownState.test.ts +58 -1
- package/src/__tests__/composables/useListReorder.test.ts +145 -0
- package/src/__tests__/composables/usePluginClient.test.ts +140 -0
- package/src/__tests__/composables/usePluginConfig.test.ts +497 -0
- package/src/__tests__/composables/useRequestSyncState.test.ts +140 -0
- package/src/__tests__/docs/frontendDocsCatalog.test.ts +39 -7
- package/src/__tests__/stores/settings.test.ts +71 -1
- package/src/__tests__/styles/cssTokens.test.ts +131 -0
- package/src/__tests__/utils/permissions.test.ts +68 -0
- package/src/components/ActionMenu.vue +45 -88
- package/src/components/AlertBox.vue +0 -4
- package/src/components/AppAvatarMenu.vue +26 -7
- package/src/components/AppLayout.vue +0 -4
- package/src/components/AppPluginSwitcher.story.vue +87 -0
- package/src/components/AppPluginSwitcher.vue +2 -5
- package/src/components/AppSidebar.vue +0 -4
- package/src/components/AppToastContainer.vue +6 -8
- package/src/components/AppTopBar.vue +0 -4
- package/src/components/ArtifactSaveDialog.vue +0 -4
- package/src/components/ArtifactSelectorModal.vue +0 -4
- package/src/components/AuditTrail.story.vue +18 -0
- package/src/components/AuditTrail.vue +27 -7
- package/src/components/AutoGroupModal.vue +0 -4
- package/src/components/Avatar.vue +0 -4
- package/src/components/BaseButton.vue +0 -4
- package/src/components/BaseCheckbox.vue +0 -4
- package/src/components/BaseInput.vue +0 -4
- package/src/components/BaseModal.vue +8 -60
- package/src/components/BasePill.vue +0 -4
- package/src/components/BaseRadioGroup.vue +0 -4
- package/src/components/BaseSelect.vue +0 -4
- package/src/components/BaseSlider.vue +0 -4
- package/src/components/BaseTabs.vue +26 -5
- package/src/components/BaseTextarea.vue +0 -4
- package/src/components/BaseToggle.vue +0 -4
- package/src/components/BatchProgressList.story.vue +18 -0
- package/src/components/BatchProgressList.vue +32 -4
- package/src/components/BioTemplateExperimentWorkspaceView.vue +10 -21
- package/src/components/BioTemplatePackWorkspaceView.vue +11 -15
- package/src/components/BioTemplatePresetWorkspaceView.vue +8 -13
- package/src/components/Breadcrumb.vue +0 -4
- package/src/components/Calendar.vue +0 -4
- package/src/components/ChartContainer.story.vue +1 -1
- package/src/components/ChartContainer.vue +0 -4
- package/src/components/ChemicalFormula.vue +0 -4
- package/src/components/CollapsibleCard.vue +0 -4
- package/src/components/ColorSlider.vue +0 -4
- package/src/components/ComponentBindingRenderer.vue +1 -3
- package/src/components/ConcentrationInput.vue +0 -4
- package/src/components/ConfirmDialog.vue +0 -4
- package/src/components/ControlWorkspaceView.vue +11 -22
- package/src/components/DataFrame.story.vue +14 -0
- package/src/components/DataFrame.vue +97 -23
- package/src/components/DatePicker.vue +73 -27
- package/src/components/DateTimePicker.vue +45 -17
- package/src/components/Divider.vue +0 -4
- package/src/components/DoseCalculator.vue +0 -4
- package/src/components/DoseDesignWorkspaceView.vue +6 -25
- package/src/components/DropdownButton.vue +24 -6
- package/src/components/EmptyState.vue +0 -4
- package/src/components/ExperimentCodeBadge.vue +0 -4
- package/src/components/ExperimentDataViewer.story.vue +3 -0
- package/src/components/ExperimentDataViewer.vue +33 -13
- package/src/components/ExperimentPopover.vue +2 -5
- package/src/components/ExperimentSelectorModal.vue +0 -4
- package/src/components/ExperimentTimeline.story.vue +18 -0
- package/src/components/ExperimentTimeline.vue +81 -75
- package/src/components/FileUploader.vue +0 -4
- package/src/components/FitPanel.vue +0 -4
- package/src/components/FormActions.story.vue +96 -0
- package/src/components/FormActions.vue +0 -4
- package/src/components/FormBuilder.vue +0 -4
- package/src/components/FormField.vue +0 -4
- package/src/components/FormulaInput.vue +0 -4
- package/src/components/GeneratedPathInput.story.vue +68 -0
- package/src/components/GeneratedPlotlyResult.story.vue +96 -0
- package/src/components/GeneratedPlotlyResult.vue +3 -3
- package/src/components/GeneratedPluginView.story.vue +145 -0
- package/src/components/GeneratedPluginView.vue +10 -10
- package/src/components/GeneratedResultRenderer.story.vue +117 -0
- package/src/components/GeneratedResultRenderer.vue +4 -4
- package/src/components/GroupAssigner.vue +67 -5
- package/src/components/IconButton.vue +0 -4
- package/src/components/InstrumentAlertLog.vue +0 -4
- package/src/components/InstrumentStateBadge.vue +0 -4
- package/src/components/InstrumentStatusCard.vue +0 -4
- package/src/components/JobsStatusTray.vue +16 -5
- package/src/components/LcmsSequenceTable.vue +81 -50
- package/src/components/LoadingSpinner.vue +0 -4
- package/src/components/MobileSupportGate.vue +0 -4
- package/src/components/MoleculeInput.vue +0 -4
- package/src/components/MultiSelect.vue +0 -4
- package/src/components/NumberInput.vue +0 -4
- package/src/components/PlateMapEditor.vue +3 -14
- package/src/components/PluginIcon.vue +0 -4
- package/src/components/PluginWorkspaceView.props.ts +38 -0
- package/src/components/PluginWorkspaceView.vue +53 -224
- package/src/components/ProgressBar.vue +0 -4
- package/src/components/ProtocolStepEditor.vue +2 -4
- package/src/components/RackEditor.vue +51 -70
- package/src/components/ReagentEditor.vue +0 -4
- package/src/components/ReagentList.story.vue +18 -0
- package/src/components/ReagentList.vue +127 -82
- package/src/components/ResourceCard.vue +0 -4
- package/src/components/RuntimeUpdateNotice.story.vue +49 -0
- package/src/components/RuntimeUpdateNotice.vue +4 -4
- package/src/components/SampleHierarchyTree.story.vue +18 -0
- package/src/components/SampleHierarchyTree.vue +32 -9
- package/src/components/SampleLegend.vue +2 -8
- package/src/components/SampleSelector.drag.ts +51 -0
- package/src/components/SampleSelector.story.vue +6 -0
- package/src/components/SampleSelector.tree.ts +2 -0
- package/src/components/SampleSelector.vue +49 -10
- package/src/components/SampleSelectorGroupNode.vue +19 -0
- package/src/components/ScheduleCalendar.story.vue +6 -0
- package/src/components/ScheduleCalendar.vue +82 -7
- package/src/components/ScientificNumber.vue +0 -4
- package/src/components/SecretInput.story.vue +79 -0
- package/src/components/SecretInput.vue +150 -0
- package/src/components/SectionCard.vue +0 -4
- package/src/components/SegmentedControl.vue +48 -5
- package/src/components/SequenceInput.vue +0 -4
- package/src/components/SequenceProgressBar.story.vue +110 -0
- package/src/components/SequenceProgressBar.vue +0 -4
- package/src/components/SettingsModal.vue +0 -4
- package/src/components/Skeleton.vue +0 -4
- package/src/components/SmartGroupFieldRecipe.vue +8 -6
- package/src/components/SmartGroupManual.vue +0 -4
- package/src/components/StatusIndicator.vue +0 -4
- package/src/components/StepWizard.vue +0 -4
- package/src/components/TagsInput.vue +4 -6
- package/src/components/ThemeToggle.vue +0 -4
- package/src/components/TimePicker.vue +36 -7
- package/src/components/TimeRangeInput.vue +0 -4
- package/src/components/Tooltip.story.vue +3 -3
- package/src/components/Tooltip.vue +0 -4
- package/src/components/UnitInput.vue +0 -4
- package/src/components/WellPlate.geometry.ts +60 -1
- package/src/components/WellPlate.interaction.ts +44 -0
- package/src/components/WellPlate.story.vue +8 -0
- package/src/components/WellPlate.vue +53 -7
- package/src/components/index.ts +9 -0
- package/src/components/internal/AppTopBarPageSelectorInternal.vue +2 -5
- package/src/components/internal/AppTopBarPillNavInternal.vue +0 -4
- package/src/components/internal/DataStateInternal.vue +74 -0
- package/src/components/internal/FormSectionRenderer.vue +0 -4
- package/src/components/internal/WellEditPopupInternal.vue +20 -5
- package/src/components/internal/WorkspaceControlsInternal.vue +20 -0
- package/src/components/internal/WorkspaceShellInternal.vue +125 -0
- package/src/components/internal/WorkspaceSidebarInternal.vue +82 -0
- package/src/composables/controlSchemaTypes.ts +34 -0
- package/src/composables/experimentDesignData.ts +1 -3
- package/src/composables/flattenWorkspaceBindings.ts +104 -0
- package/src/composables/formBuilderRegistry.ts +5 -0
- package/src/composables/index.ts +43 -0
- package/src/composables/pluginWorkspaceModel.ts +182 -0
- package/src/composables/useAsync.ts +5 -1
- package/src/composables/useAuth.ts +3 -0
- package/src/composables/useBioTemplatePackWorkspace.ts +15 -9
- package/src/composables/useBioTemplatePresetWorkspace.ts +14 -15
- package/src/composables/useBioTemplateWorkspace.ts +18 -43
- package/src/composables/useCommandHistory.ts +5 -1
- package/src/composables/useDropdownState.ts +35 -5
- package/src/composables/useEventStream.ts +14 -2
- package/src/composables/useFileImport.ts +2 -7
- package/src/composables/useFocusTrap.ts +91 -0
- package/src/composables/useGeneratedAnalysis.ts +22 -10
- package/src/composables/useJobsStatusTray.ts +184 -17
- package/src/composables/useListReorder.story.vue +143 -0
- package/src/composables/useListReorder.ts +242 -0
- package/src/composables/useMenuKeyboard.ts +90 -0
- package/src/composables/useOptimisticMutation.ts +6 -16
- package/src/composables/usePluginClient.ts +47 -4
- package/src/composables/usePluginConfig.ts +252 -0
- package/src/composables/usePluginWorkspace.ts +208 -0
- package/src/composables/useRackEditor.ts +2 -11
- package/src/composables/useRequestSyncState.ts +98 -28
- package/src/composables/useResourceCrud.ts +6 -16
- package/src/composables/useRovingFocus.ts +66 -0
- package/src/composables/useScheduleDrag.ts +37 -0
- package/src/composables/useWellPainting.ts +10 -30
- package/src/composables/useWellPlateAdapter.ts +5 -1
- package/src/composables/useWellPlateEditor.ts +1 -11
- package/src/composables/useWellPlateValidation.ts +5 -1
- package/src/composables/workspaceRecipes.ts +267 -0
- package/src/index.ts +16 -0
- package/src/permissions.ts +48 -9
- package/src/stores/auth.ts +1 -0
- package/src/stores/experiment.ts +2 -7
- package/src/stores/index.ts +9 -1
- package/src/stores/settings.ts +93 -1
- package/src/styles/components/audit-trail.css +5 -5
- package/src/styles/components/batch-progress-list.css +7 -0
- package/src/styles/components/color-slider.css +2 -2
- package/src/styles/components/data-state.css +30 -0
- package/src/styles/components/dataframe.css +29 -35
- package/src/styles/components/experiment-data-viewer.css +4 -4
- package/src/styles/components/experiment-timeline.css +3 -30
- package/src/styles/components/form-builder.css +5 -5
- package/src/styles/components/lcms-sequence-table.css +16 -1
- package/src/styles/components/multi-select.css +1 -1
- package/src/styles/components/reagent-list.css +38 -31
- package/src/styles/components/sample-hierarchy-tree.css +5 -19
- package/src/styles/components/sample-selector.css +9 -2
- package/src/styles/components/schedule-calendar.css +8 -0
- package/src/styles/components/scientific-number.css +1 -1
- package/src/styles/components/secret-input.css +60 -0
- package/src/styles/components/well-plate.css +8 -0
- package/src/styles/index.css +9 -0
- package/src/styles/variables.css +29 -0
- package/src/templates/builderPresetControls.ts +1 -1
- package/src/templates/builderReadUtils.ts +1 -3
- package/src/templates/componentPlateHelpers.ts +3 -1
- package/src/templates/componentTargetResolvers.ts +1 -3
- package/src/templates/controlSchemaTargets.ts +1 -3
- package/src/templates/doseResponseAdapters.ts +2 -13
- package/src/templates/elisaAssayCollectionBuilder.ts +2 -2
- package/src/templates/plateMapBuilder.ts +2 -2
- package/src/templates/qpcrPlateBuilder.ts +1 -1
- package/src/templates/templateValidators.ts +1 -1
- package/src/templates/timeCourseBuilder.ts +2 -2
- package/src/templates/wellPlateScreenCollectionBuilder.ts +2 -2
- package/src/types/auth.ts +1 -0
- package/src/types/form-builder.ts +1 -0
- package/src/utils/color.ts +51 -0
- package/src/utils/errors.ts +29 -0
- package/src/utils/formModelSync.ts +1 -3
- package/src/utils/pluginIcon.ts +1 -3
- package/src/utils/pluginSecrets.ts +102 -0
- package/src/utils/records.ts +9 -0
- package/dist/EmptyState-p90quq8Z.js.map +0 -1
- package/dist/ExperimentPopover-tLwJ7XF4.js.map +0 -1
- package/dist/ExperimentSelectorModal-DyPAUCLw.js.map +0 -1
- package/dist/SettingsModal-BgKY93zh.js.map +0 -1
- package/dist/components-DkHddRMl.js.map +0 -1
- package/dist/composables/autoGroupConstants.d.ts +0 -1
- package/dist/composables/autoGroupGrouping.d.ts +0 -3
- package/dist/composables/useAutoGroupInputSources.d.ts +0 -32
- package/dist/composables-C_i90sGS.js.map +0 -1
- package/dist/experiment-Cq145oEW.js.map +0 -1
- package/dist/experiment-utils-CLnzPPq5.js.map +0 -1
- package/dist/templates/builderDefaults.d.ts +0 -1
- package/dist/templates/plateGeometry.d.ts +0 -4
- package/dist/templates-DsP51i-S.js.map +0 -1
- package/dist/useApi-J6zFkHmn.js.map +0 -1
- package/dist/useControlSchema-BDx2Olha.js.map +0 -1
- package/dist/useDropdownState-DSb3BC3N.js.map +0 -1
- package/dist/useProtocolTemplates-CS_SQl6U.js.map +0 -1
- package/src/__tests__/composables/useAutoGroupInputSources.test.ts +0 -127
- package/src/composables/autoGroupConstants.ts +0 -4
- package/src/composables/autoGroupGrouping.ts +0 -148
- package/src/composables/useAutoGroupInputSources.ts +0 -147
- package/src/templates/builderDefaults.ts +0 -11
- package/src/templates/plateGeometry.ts +0 -62
- /package/dist/__tests__/{composables/useAutoGroupInputSources.test.d.ts → components/DataStates.test.d.ts} +0 -0
package/src/stores/index.ts
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
1
|
export { useAuthStore } from './auth'
|
|
2
|
-
export {
|
|
2
|
+
export {
|
|
3
|
+
useSettingsStore,
|
|
4
|
+
tryUseSettingsStore,
|
|
5
|
+
colorPalettes,
|
|
6
|
+
paletteCssVariables,
|
|
7
|
+
tableDensityToSize,
|
|
8
|
+
PALETTE_CSS_VARIABLES,
|
|
9
|
+
type SettingsState,
|
|
10
|
+
} from './settings'
|
|
3
11
|
export { useExperimentStore } from './experiment'
|
package/src/stores/settings.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { defineStore } from 'pinia'
|
|
1
|
+
import { defineStore, getActivePinia } from 'pinia'
|
|
2
2
|
import { ref, watch } from 'vue'
|
|
3
3
|
import type { ThemeMode, ColorPalette, TableDensity } from '../types'
|
|
4
4
|
|
|
@@ -62,6 +62,46 @@ export const colorPalettes: Record<ColorPalette, { name: string; hues: [number,
|
|
|
62
62
|
pastel: { name: 'Pastel', hues: [200, 340] },
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
+
/**
|
|
66
|
+
* Custom properties a non-default palette overrides on `<html>`.
|
|
67
|
+
*
|
|
68
|
+
* The saturation/lightness pairs are lifted from the canonical indigo/orange
|
|
69
|
+
* tokens in `styles/variables.css` so only the hue moves; the `default`
|
|
70
|
+
* palette writes nothing at all and the stylesheet values stand.
|
|
71
|
+
*/
|
|
72
|
+
export const PALETTE_CSS_VARIABLES = [
|
|
73
|
+
'--color-primary',
|
|
74
|
+
'--color-primary-hover',
|
|
75
|
+
'--color-primary-soft',
|
|
76
|
+
'--color-cta',
|
|
77
|
+
'--color-cta-hover',
|
|
78
|
+
] as const
|
|
79
|
+
|
|
80
|
+
/** Build the `<html>` custom-property overrides for a palette. */
|
|
81
|
+
export function paletteCssVariables(palette: ColorPalette): Record<string, string> {
|
|
82
|
+
if (palette === 'default') return {}
|
|
83
|
+
const [primaryHue, accentHue] = colorPalettes[palette].hues
|
|
84
|
+
return {
|
|
85
|
+
'--color-primary': `hsl(${primaryHue} 84% 67%)`,
|
|
86
|
+
'--color-primary-hover': `hsl(${primaryHue} 75% 59%)`,
|
|
87
|
+
'--color-primary-soft': `hsl(${primaryHue} 84% 67% / 0.12)`,
|
|
88
|
+
'--color-cta': `hsl(${accentHue} 95% 53%)`,
|
|
89
|
+
'--color-cta-hover': `hsl(${accentHue} 90% 48%)`,
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/** `DataFrame`-style size that each table density maps onto. */
|
|
94
|
+
const DENSITY_TABLE_SIZE: Record<TableDensity, 'sm' | 'md' | 'lg'> = {
|
|
95
|
+
compact: 'sm',
|
|
96
|
+
normal: 'md',
|
|
97
|
+
comfortable: 'lg',
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/** Map a table density onto the `size` prop shared by the SDK table components. */
|
|
101
|
+
export function tableDensityToSize(density: TableDensity): 'sm' | 'md' | 'lg' {
|
|
102
|
+
return DENSITY_TABLE_SIZE[density]
|
|
103
|
+
}
|
|
104
|
+
|
|
65
105
|
function loadSettings(): SettingsState {
|
|
66
106
|
try {
|
|
67
107
|
const stored = localStorage.getItem(STORAGE_KEY)
|
|
@@ -152,6 +192,8 @@ export const useSettingsStore = defineStore('mint-settings', () => {
|
|
|
152
192
|
tableDensity.value = loaded.tableDensity
|
|
153
193
|
|
|
154
194
|
applyTheme()
|
|
195
|
+
applyPalette()
|
|
196
|
+
applyDensity()
|
|
155
197
|
}
|
|
156
198
|
|
|
157
199
|
function applyTheme() {
|
|
@@ -160,11 +202,36 @@ export const useSettingsStore = defineStore('mint-settings', () => {
|
|
|
160
202
|
document.documentElement.classList.toggle('dark', dark)
|
|
161
203
|
}
|
|
162
204
|
|
|
205
|
+
/**
|
|
206
|
+
* Write the selected palette's hues onto `<html>` as custom-property
|
|
207
|
+
* overrides. The `default` palette clears them so `styles/variables.css`
|
|
208
|
+
* keeps ownership of the brand colors.
|
|
209
|
+
*/
|
|
210
|
+
function applyPalette() {
|
|
211
|
+
if (typeof document === 'undefined') return
|
|
212
|
+
const style = document.documentElement.style
|
|
213
|
+
const overrides = paletteCssVariables(colorPalette.value)
|
|
214
|
+
for (const name of PALETTE_CSS_VARIABLES) {
|
|
215
|
+
const value = overrides[name]
|
|
216
|
+
if (value) style.setProperty(name, value)
|
|
217
|
+
else style.removeProperty(name)
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
/** Mirror the table density onto `<html data-density>` for CSS consumers. */
|
|
222
|
+
function applyDensity() {
|
|
223
|
+
if (typeof document === 'undefined') return
|
|
224
|
+
document.documentElement.dataset.density = tableDensity.value
|
|
225
|
+
}
|
|
226
|
+
|
|
163
227
|
watch(theme, () => {
|
|
164
228
|
applyTheme()
|
|
165
229
|
persistSettings()
|
|
166
230
|
})
|
|
167
231
|
|
|
232
|
+
watch(colorPalette, applyPalette)
|
|
233
|
+
watch(tableDensity, applyDensity)
|
|
234
|
+
|
|
168
235
|
if (typeof window !== 'undefined' && typeof window.matchMedia === 'function') {
|
|
169
236
|
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', (event) => {
|
|
170
237
|
systemPrefersDark.value = event.matches
|
|
@@ -206,6 +273,11 @@ export const useSettingsStore = defineStore('mint-settings', () => {
|
|
|
206
273
|
return colorPalettes[colorPalette.value].hues
|
|
207
274
|
}
|
|
208
275
|
|
|
276
|
+
/** The `size` the SDK table components default to for the current density. */
|
|
277
|
+
function getTableSize(): 'sm' | 'md' | 'lg' {
|
|
278
|
+
return tableDensityToSize(tableDensity.value)
|
|
279
|
+
}
|
|
280
|
+
|
|
209
281
|
function isDark(): boolean {
|
|
210
282
|
return theme.value === 'system' ? systemPrefersDark.value : theme.value === 'dark'
|
|
211
283
|
}
|
|
@@ -222,11 +294,31 @@ export const useSettingsStore = defineStore('mint-settings', () => {
|
|
|
222
294
|
tableDensity,
|
|
223
295
|
initialize,
|
|
224
296
|
applyTheme,
|
|
297
|
+
applyPalette,
|
|
298
|
+
applyDensity,
|
|
225
299
|
persistSettings,
|
|
226
300
|
resetToDefaults,
|
|
227
301
|
getPaletteHues,
|
|
302
|
+
getTableSize,
|
|
228
303
|
isDark,
|
|
229
304
|
getApiBaseUrl,
|
|
230
305
|
getWsBaseUrl,
|
|
231
306
|
}
|
|
232
307
|
})
|
|
308
|
+
|
|
309
|
+
/**
|
|
310
|
+
* Read the settings store without requiring Pinia to be installed.
|
|
311
|
+
*
|
|
312
|
+
* SDK components are mounted standalone (unit tests, Histoire stories, plugin
|
|
313
|
+
* previews) where no Pinia instance exists. They use this to pick up a user's
|
|
314
|
+
* preferences when the platform is running and fall back to their own defaults
|
|
315
|
+
* otherwise, instead of throwing.
|
|
316
|
+
*/
|
|
317
|
+
export function tryUseSettingsStore(): ReturnType<typeof useSettingsStore> | null {
|
|
318
|
+
if (!getActivePinia()) return null
|
|
319
|
+
try {
|
|
320
|
+
return useSettingsStore()
|
|
321
|
+
} catch {
|
|
322
|
+
return null
|
|
323
|
+
}
|
|
324
|
+
}
|
|
@@ -126,11 +126,11 @@
|
|
|
126
126
|
margin-right: 0.125rem;
|
|
127
127
|
}
|
|
128
128
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
129
|
+
/* Empty / loading / error placeholder host (content comes from EmptyState) */
|
|
130
|
+
.mint-audit-trail__state {
|
|
131
|
+
display: flex;
|
|
132
|
+
align-items: center;
|
|
133
|
+
justify-content: center;
|
|
134
134
|
}
|
|
135
135
|
|
|
136
136
|
/* Size variants */
|
|
@@ -194,3 +194,10 @@
|
|
|
194
194
|
background-color: var(--bg-hover);
|
|
195
195
|
color: var(--text-primary);
|
|
196
196
|
}
|
|
197
|
+
|
|
198
|
+
/* Empty / loading / error placeholder host (content comes from EmptyState) */
|
|
199
|
+
.mint-batch-progress__state {
|
|
200
|
+
display: flex;
|
|
201
|
+
align-items: center;
|
|
202
|
+
justify-content: center;
|
|
203
|
+
}
|
|
@@ -61,7 +61,7 @@
|
|
|
61
61
|
border-radius: 50%;
|
|
62
62
|
background: white;
|
|
63
63
|
cursor: pointer;
|
|
64
|
-
border: 2px solid var(--
|
|
64
|
+
border: 2px solid var(--color-primary);
|
|
65
65
|
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
|
|
66
66
|
transition: transform 0.15s ease;
|
|
67
67
|
}
|
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
border-radius: 50%;
|
|
81
81
|
background: white;
|
|
82
82
|
cursor: pointer;
|
|
83
|
-
border: 2px solid var(--
|
|
83
|
+
border: 2px solid var(--color-primary);
|
|
84
84
|
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
|
|
85
85
|
transition: transform 0.15s ease;
|
|
86
86
|
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/* DataStateInternal — shared loading / error / empty presentation for data components */
|
|
2
|
+
|
|
3
|
+
.mint-data-state {
|
|
4
|
+
display: flex;
|
|
5
|
+
flex-direction: column;
|
|
6
|
+
align-items: center;
|
|
7
|
+
justify-content: center;
|
|
8
|
+
background-color: var(--bg-primary);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
.mint-data-state--loading {
|
|
12
|
+
gap: 0.75rem;
|
|
13
|
+
padding: 2.5rem 2rem;
|
|
14
|
+
color: var(--text-muted);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
.mint-data-state--loading.mint-data-state--sm {
|
|
18
|
+
padding: 1.25rem 1rem;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.mint-data-state--loading.mint-data-state--lg {
|
|
22
|
+
padding: 3.5rem 2rem;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
.mint-data-state__loading-text {
|
|
26
|
+
font-size: 0.875rem;
|
|
27
|
+
color: var(--text-muted);
|
|
28
|
+
margin: 0 !important;
|
|
29
|
+
padding: 0 !important;
|
|
30
|
+
}
|
|
@@ -187,6 +187,23 @@
|
|
|
187
187
|
text-align: center;
|
|
188
188
|
}
|
|
189
189
|
|
|
190
|
+
/* Sortable headers are real buttons; strip the native chrome so the cell keeps
|
|
191
|
+
its table-header appearance while staying keyboard-operable. */
|
|
192
|
+
.mint-dataframe__th-button {
|
|
193
|
+
display: block;
|
|
194
|
+
width: 100%;
|
|
195
|
+
margin: 0;
|
|
196
|
+
padding: 0;
|
|
197
|
+
border: 0;
|
|
198
|
+
background: none;
|
|
199
|
+
color: inherit;
|
|
200
|
+
font: inherit;
|
|
201
|
+
letter-spacing: inherit;
|
|
202
|
+
text-transform: inherit;
|
|
203
|
+
text-align: inherit;
|
|
204
|
+
cursor: inherit;
|
|
205
|
+
}
|
|
206
|
+
|
|
190
207
|
.mint-dataframe__th-content {
|
|
191
208
|
display: inline-flex;
|
|
192
209
|
align-items: center;
|
|
@@ -308,7 +325,7 @@
|
|
|
308
325
|
}
|
|
309
326
|
|
|
310
327
|
.mint-dataframe__row--clickable:focus-visible {
|
|
311
|
-
outline: 2px solid var(--
|
|
328
|
+
outline: 2px solid var(--color-primary);
|
|
312
329
|
outline-offset: -2px;
|
|
313
330
|
}
|
|
314
331
|
|
|
@@ -352,32 +369,15 @@ html.dark .mint-dataframe__row--selected > .mint-dataframe__td {
|
|
|
352
369
|
border-bottom: none;
|
|
353
370
|
}
|
|
354
371
|
|
|
355
|
-
/* Empty
|
|
356
|
-
.mint-
|
|
372
|
+
/* Empty / error placeholder host (content comes from EmptyState) */
|
|
373
|
+
.mint-dataframe__state {
|
|
357
374
|
display: flex;
|
|
358
|
-
flex-direction: column;
|
|
359
375
|
align-items: center;
|
|
360
376
|
justify-content: center;
|
|
361
377
|
min-height: 12rem;
|
|
362
|
-
padding: 2.5rem 2rem;
|
|
363
|
-
color: var(--text-muted);
|
|
364
378
|
background-color: var(--bg-primary);
|
|
365
379
|
}
|
|
366
380
|
|
|
367
|
-
.mint-dataframe__empty-icon {
|
|
368
|
-
width: 2.5rem;
|
|
369
|
-
height: 2.5rem;
|
|
370
|
-
opacity: 0.5;
|
|
371
|
-
margin-bottom: 0.5rem;
|
|
372
|
-
}
|
|
373
|
-
|
|
374
|
-
.mint-dataframe__empty-text {
|
|
375
|
-
font-size: 0.875rem;
|
|
376
|
-
margin-top: 0 !important;
|
|
377
|
-
margin-bottom: 0 !important;
|
|
378
|
-
padding: 0 !important;
|
|
379
|
-
}
|
|
380
|
-
|
|
381
381
|
/* Loading overlay */
|
|
382
382
|
.mint-dataframe__loading {
|
|
383
383
|
position: absolute;
|
|
@@ -395,18 +395,6 @@ html.dark .mint-dataframe__loading {
|
|
|
395
395
|
background-color: rgba(0, 0, 0, 0.4);
|
|
396
396
|
}
|
|
397
397
|
|
|
398
|
-
.mint-dataframe__loading-spinner {
|
|
399
|
-
width: 1.5rem;
|
|
400
|
-
height: 1.5rem;
|
|
401
|
-
color: var(--color-primary);
|
|
402
|
-
animation: mint-dataframe-spin 1s linear infinite;
|
|
403
|
-
}
|
|
404
|
-
|
|
405
|
-
@keyframes mint-dataframe-spin {
|
|
406
|
-
from { transform: rotate(0deg); }
|
|
407
|
-
to { transform: rotate(360deg); }
|
|
408
|
-
}
|
|
409
|
-
|
|
410
398
|
/* Footer / Pagination */
|
|
411
399
|
.mint-dataframe__footer {
|
|
412
400
|
display: flex;
|
|
@@ -502,11 +490,17 @@ html.dark .mint-dataframe__loading {
|
|
|
502
490
|
transition: background-color 0.15s ease;
|
|
503
491
|
}
|
|
504
492
|
|
|
505
|
-
.mint-dataframe__resize-handle:hover::after
|
|
493
|
+
.mint-dataframe__resize-handle:hover::after,
|
|
494
|
+
.mint-dataframe__resize-handle:focus-visible::after {
|
|
506
495
|
width: 2px;
|
|
507
496
|
background-color: var(--color-primary);
|
|
508
497
|
}
|
|
509
498
|
|
|
499
|
+
.mint-dataframe__resize-handle:focus-visible {
|
|
500
|
+
outline: none;
|
|
501
|
+
box-shadow: var(--focus-ring);
|
|
502
|
+
}
|
|
503
|
+
|
|
510
504
|
/* Row delete action column */
|
|
511
505
|
.mint-dataframe__th--actions,
|
|
512
506
|
.mint-dataframe__td--actions {
|
|
@@ -539,8 +533,8 @@ html.dark .mint-dataframe__loading {
|
|
|
539
533
|
}
|
|
540
534
|
|
|
541
535
|
.mint-dataframe__delete-btn:hover {
|
|
542
|
-
background-color: color-mix(in srgb, var(--
|
|
543
|
-
color: var(--
|
|
536
|
+
background-color: color-mix(in srgb, var(--mint-error) 14%, transparent);
|
|
537
|
+
color: var(--mint-error);
|
|
544
538
|
}
|
|
545
539
|
|
|
546
540
|
.mint-dataframe__delete-btn:focus-visible {
|
|
@@ -27,10 +27,10 @@
|
|
|
27
27
|
flex-direction: column;
|
|
28
28
|
gap: 12px;
|
|
29
29
|
}
|
|
30
|
-
.mint-data-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
30
|
+
.mint-data-viewer__state {
|
|
31
|
+
display: flex;
|
|
32
|
+
align-items: center;
|
|
33
|
+
justify-content: center;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
36
|
/* Summary view */
|
|
@@ -291,7 +291,7 @@
|
|
|
291
291
|
.mint-timeline__expanded {
|
|
292
292
|
margin-top: 0.75rem;
|
|
293
293
|
padding-top: 0.75rem;
|
|
294
|
-
border-top: 1px solid
|
|
294
|
+
border-top: 1px solid color-mix(in srgb, var(--border-color) 50%, transparent);
|
|
295
295
|
}
|
|
296
296
|
|
|
297
297
|
.mint-timeline__description {
|
|
@@ -434,42 +434,15 @@
|
|
|
434
434
|
width: 2rem;
|
|
435
435
|
}
|
|
436
436
|
|
|
437
|
-
/* Empty
|
|
438
|
-
.mint-
|
|
437
|
+
/* Empty / loading / error placeholder host (content comes from EmptyState) */
|
|
438
|
+
.mint-timeline__state {
|
|
439
439
|
display: flex;
|
|
440
440
|
align-items: center;
|
|
441
441
|
justify-content: center;
|
|
442
|
-
padding: 2rem;
|
|
443
442
|
border: 2px dashed var(--border-color);
|
|
444
443
|
border-radius: var(--radius-md);
|
|
445
444
|
}
|
|
446
445
|
|
|
447
|
-
.mint-timeline__empty-content {
|
|
448
|
-
text-align: center;
|
|
449
|
-
}
|
|
450
|
-
|
|
451
|
-
.mint-timeline__empty-text {
|
|
452
|
-
color: var(--text-muted);
|
|
453
|
-
margin-top: 0 !important;
|
|
454
|
-
margin-bottom: 0.5rem !important;
|
|
455
|
-
padding: 0 !important;
|
|
456
|
-
}
|
|
457
|
-
|
|
458
|
-
.mint-timeline__empty-btn {
|
|
459
|
-
padding: 0.375rem 0.75rem;
|
|
460
|
-
font-size: 0.875rem;
|
|
461
|
-
background-color: var(--color-primary);
|
|
462
|
-
color: white;
|
|
463
|
-
border: none;
|
|
464
|
-
border-radius: var(--radius-md);
|
|
465
|
-
cursor: pointer;
|
|
466
|
-
transition: background-color 0.15s ease;
|
|
467
|
-
}
|
|
468
|
-
|
|
469
|
-
.mint-timeline__empty-btn:hover {
|
|
470
|
-
opacity: 0.9;
|
|
471
|
-
}
|
|
472
|
-
|
|
473
446
|
/* Add step button (end) */
|
|
474
447
|
.mint-timeline__add-end {
|
|
475
448
|
display: flex;
|
|
@@ -40,16 +40,16 @@
|
|
|
40
40
|
}
|
|
41
41
|
|
|
42
42
|
.mint-form-section__title {
|
|
43
|
-
font-size:
|
|
43
|
+
font-size: 0.9375rem;
|
|
44
44
|
font-weight: 600;
|
|
45
|
-
color: var(--
|
|
45
|
+
color: var(--text-primary);
|
|
46
46
|
margin: 0;
|
|
47
47
|
line-height: 1.4;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
50
|
.mint-form-section__description {
|
|
51
|
-
font-size:
|
|
52
|
-
color: var(--
|
|
51
|
+
font-size: 0.8125rem;
|
|
52
|
+
color: var(--text-secondary);
|
|
53
53
|
margin: 0;
|
|
54
54
|
line-height: 1.5;
|
|
55
55
|
}
|
|
@@ -65,5 +65,5 @@
|
|
|
65
65
|
align-items: center;
|
|
66
66
|
gap: 0.75rem;
|
|
67
67
|
padding-top: 1rem;
|
|
68
|
-
border-top: 1px solid var(--color
|
|
68
|
+
border-top: 1px solid var(--border-color);
|
|
69
69
|
}
|
|
@@ -64,7 +64,11 @@
|
|
|
64
64
|
padding-right: 0.25rem;
|
|
65
65
|
}
|
|
66
66
|
|
|
67
|
+
/* The handle is a button so it can also take Alt+Arrow keyboard reordering. */
|
|
67
68
|
.mint-lcms-sequence-table__drag-handle {
|
|
69
|
+
padding: 0;
|
|
70
|
+
border: 0;
|
|
71
|
+
background: none;
|
|
68
72
|
color: var(--text-muted, #64748b);
|
|
69
73
|
cursor: grab;
|
|
70
74
|
font-family: var(--font-mono, 'Fira Code', monospace);
|
|
@@ -72,6 +76,11 @@
|
|
|
72
76
|
letter-spacing: -0.08em;
|
|
73
77
|
}
|
|
74
78
|
|
|
79
|
+
.mint-lcms-sequence-table__drag-handle:focus-visible {
|
|
80
|
+
outline: none;
|
|
81
|
+
box-shadow: var(--focus-ring);
|
|
82
|
+
}
|
|
83
|
+
|
|
75
84
|
.mint-lcms-sequence-table__td {
|
|
76
85
|
min-width: 0;
|
|
77
86
|
color: var(--text-primary, #0f172a);
|
|
@@ -168,7 +177,6 @@
|
|
|
168
177
|
background: color-mix(in srgb, var(--mint-error, #ef4444) 10%, transparent);
|
|
169
178
|
}
|
|
170
179
|
|
|
171
|
-
.mint-lcms-sequence-table__empty,
|
|
172
180
|
.mint-lcms-sequence-table__more {
|
|
173
181
|
color: var(--text-muted, #64748b);
|
|
174
182
|
font-size: 0.875rem;
|
|
@@ -176,6 +184,13 @@
|
|
|
176
184
|
text-align: center;
|
|
177
185
|
}
|
|
178
186
|
|
|
187
|
+
/* Empty / loading / error placeholder host (content comes from EmptyState) */
|
|
188
|
+
.mint-lcms-sequence-table__state {
|
|
189
|
+
display: flex;
|
|
190
|
+
align-items: center;
|
|
191
|
+
justify-content: center;
|
|
192
|
+
}
|
|
193
|
+
|
|
179
194
|
.mint-lcms-sequence-table__more {
|
|
180
195
|
border-top: 1px solid var(--border-color, #e2e8f0);
|
|
181
196
|
padding: 0.625rem 1rem;
|
|
@@ -138,6 +138,24 @@
|
|
|
138
138
|
color: var(--text-secondary);
|
|
139
139
|
}
|
|
140
140
|
|
|
141
|
+
/* Sortable headers are real buttons; strip the native chrome so the cell keeps
|
|
142
|
+
its table-header look while staying keyboard-operable. */
|
|
143
|
+
.mint-reagent-list__sort-btn {
|
|
144
|
+
display: inline-flex;
|
|
145
|
+
align-items: center;
|
|
146
|
+
width: 100%;
|
|
147
|
+
margin: 0;
|
|
148
|
+
padding: 0;
|
|
149
|
+
border: 0;
|
|
150
|
+
background: none;
|
|
151
|
+
color: inherit;
|
|
152
|
+
font: inherit;
|
|
153
|
+
letter-spacing: inherit;
|
|
154
|
+
text-transform: inherit;
|
|
155
|
+
text-align: inherit;
|
|
156
|
+
cursor: inherit;
|
|
157
|
+
}
|
|
158
|
+
|
|
141
159
|
.mint-reagent-list__sort-icon {
|
|
142
160
|
display: inline-block;
|
|
143
161
|
width: 0.75rem;
|
|
@@ -332,45 +350,34 @@
|
|
|
332
350
|
height: 1rem;
|
|
333
351
|
}
|
|
334
352
|
|
|
335
|
-
/* Empty
|
|
336
|
-
.mint-reagent-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
.mint-reagent-list__empty-icon {
|
|
342
|
-
width: 2.5rem;
|
|
343
|
-
height: 2.5rem;
|
|
344
|
-
margin: 0 auto 0.75rem;
|
|
345
|
-
color: var(--text-muted);
|
|
346
|
-
opacity: 0.5;
|
|
353
|
+
/* Empty / loading / error placeholder host (content comes from EmptyState) */
|
|
354
|
+
.mint-reagent-list__state {
|
|
355
|
+
display: flex;
|
|
356
|
+
align-items: center;
|
|
357
|
+
justify-content: center;
|
|
347
358
|
}
|
|
348
359
|
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
padding: 0
|
|
360
|
+
/* Drag handle */
|
|
361
|
+
/* The drag handle doubles as the keyboard reorder target (Alt+Arrow). */
|
|
362
|
+
.mint-reagent-list__drag-handle-btn {
|
|
363
|
+
display: inline-flex;
|
|
364
|
+
align-items: center;
|
|
365
|
+
padding: 0;
|
|
366
|
+
border: 0;
|
|
367
|
+
background: none;
|
|
368
|
+
color: inherit;
|
|
369
|
+
cursor: grab;
|
|
355
370
|
}
|
|
356
371
|
|
|
357
|
-
.mint-reagent-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
font-weight: 500;
|
|
361
|
-
color: white;
|
|
362
|
-
background-color: var(--color-primary);
|
|
363
|
-
border: none;
|
|
364
|
-
border-radius: var(--radius);
|
|
365
|
-
cursor: pointer;
|
|
366
|
-
transition: background-color 0.15s ease;
|
|
372
|
+
.mint-reagent-list__drag-handle-btn:focus-visible {
|
|
373
|
+
outline: none;
|
|
374
|
+
box-shadow: var(--focus-ring);
|
|
367
375
|
}
|
|
368
376
|
|
|
369
|
-
.mint-reagent-
|
|
370
|
-
|
|
377
|
+
.mint-reagent-list__drag-handle-btn:focus-visible .mint-reagent-list__drag-handle {
|
|
378
|
+
opacity: 1;
|
|
371
379
|
}
|
|
372
380
|
|
|
373
|
-
/* Drag handle */
|
|
374
381
|
.mint-reagent-list__drag-handle {
|
|
375
382
|
width: 1rem;
|
|
376
383
|
color: var(--text-muted);
|
|
@@ -288,23 +288,9 @@
|
|
|
288
288
|
}
|
|
289
289
|
}
|
|
290
290
|
|
|
291
|
-
/* Empty
|
|
292
|
-
.mint-sample-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
.mint-sample-tree__empty-icon {
|
|
299
|
-
width: 2rem;
|
|
300
|
-
height: 2rem;
|
|
301
|
-
margin: 0 auto 0.5rem;
|
|
302
|
-
opacity: 0.5;
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
.mint-sample-tree__empty-text {
|
|
306
|
-
font-size: 0.875rem;
|
|
307
|
-
margin-top: 0 !important;
|
|
308
|
-
margin-bottom: 0 !important;
|
|
309
|
-
padding: 0 !important;
|
|
291
|
+
/* Empty / loading / error placeholder host (content comes from EmptyState) */
|
|
292
|
+
.mint-sample-tree__state {
|
|
293
|
+
display: flex;
|
|
294
|
+
align-items: center;
|
|
295
|
+
justify-content: center;
|
|
310
296
|
}
|
|
@@ -468,14 +468,21 @@
|
|
|
468
468
|
height: 0.625rem;
|
|
469
469
|
}
|
|
470
470
|
|
|
471
|
-
/*
|
|
472
|
-
.mint-sample-
|
|
471
|
+
/* Inline hint shown inside the grouped/flat sub-lists */
|
|
472
|
+
.mint-sample-selector__hint {
|
|
473
473
|
text-align: center;
|
|
474
474
|
padding: 1rem;
|
|
475
475
|
font-size: 0.875rem;
|
|
476
476
|
color: var(--text-muted);
|
|
477
477
|
}
|
|
478
478
|
|
|
479
|
+
/* Empty / loading / error placeholder host (content comes from EmptyState) */
|
|
480
|
+
.mint-sample-selector__state {
|
|
481
|
+
display: flex;
|
|
482
|
+
align-items: center;
|
|
483
|
+
justify-content: center;
|
|
484
|
+
}
|
|
485
|
+
|
|
479
486
|
/* Ungrouped Section */
|
|
480
487
|
.mint-sample-selector__ungrouped {
|
|
481
488
|
margin-top: 0.75rem;
|
|
@@ -470,3 +470,11 @@
|
|
|
470
470
|
.mint-schedule__month-more:hover {
|
|
471
471
|
text-decoration: underline;
|
|
472
472
|
}
|
|
473
|
+
|
|
474
|
+
/* Empty / loading / error placeholder host (content comes from EmptyState) */
|
|
475
|
+
.mint-schedule__state {
|
|
476
|
+
display: flex;
|
|
477
|
+
align-items: center;
|
|
478
|
+
justify-content: center;
|
|
479
|
+
min-height: 12rem;
|
|
480
|
+
}
|