@morscherlab/mint-sdk 1.2.1 → 1.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{SettingsModal-DOcCf0Vo.js → SettingsModal-DELMkUFR.js} +3 -3
- package/dist/{SettingsModal-DOcCf0Vo.js.map → SettingsModal-DELMkUFR.js.map} +1 -1
- package/dist/__tests__/components/ChartContainer.test.d.ts +1 -0
- package/dist/__tests__/components/ChemicalFormula.test.d.ts +1 -0
- package/dist/__tests__/components/LayoutResizeHandle.test.d.ts +1 -0
- package/dist/__tests__/components/SearchableSelect.test.d.ts +1 -0
- package/dist/__tests__/components/WellPlate.decoration.test.d.ts +1 -0
- package/dist/__tests__/composables/useManualLayoutResize.test.d.ts +1 -0
- package/dist/components/AdductText.vue.d.ts +17 -0
- package/dist/components/ChartContainer.vue.d.ts +19 -5
- package/dist/components/ChemicalFormula.vue.d.ts +28 -2
- package/dist/components/DataFrame.vue.d.ts +1 -1
- package/dist/components/LayoutResizeHandle.vue.d.ts +23 -0
- package/dist/components/PlotlyChart.vue.d.ts +34 -6
- package/dist/components/SearchableSelect.vue.d.ts +57 -0
- package/dist/components/WellPlate.vue.d.ts +5 -1
- package/dist/components/index.d.ts +3 -1
- package/dist/components/index.js +4 -4
- package/dist/{components-Cp8DcNrU.js → components-CxQVQCpP.js} +773 -317
- package/dist/components-CxQVQCpP.js.map +1 -0
- package/dist/composables/index.d.ts +1 -0
- package/dist/composables/index.js +6 -6
- package/dist/composables/useManualLayoutResize.d.ts +56 -0
- package/dist/{composables-D_4qqOlp.js → composables-DAqOU8Aq.js} +96 -7
- package/dist/composables-DAqOU8Aq.js.map +1 -0
- package/dist/index.js +8 -8
- package/dist/install.js +2 -2
- package/dist/styles.css +294 -16
- package/dist/templates/index.js +2 -2
- package/dist/{templates-Dd9bBSs6.js → templates-NuaNHohp.js} +2 -2
- package/dist/{templates-Dd9bBSs6.js.map → templates-NuaNHohp.js.map} +1 -1
- package/dist/types/componentLabTypes.d.ts +3 -0
- package/dist/types/components.d.ts +5 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/{useControlSchema-BB2GRPhW.js → useControlSchema-vLiRPUmj.js} +37 -7
- package/dist/useControlSchema-vLiRPUmj.js.map +1 -0
- package/dist/{useFormBuilder-BnGSdSRG.js → useFormBuilder-D37ajgS8.js} +2 -2
- package/dist/{useFormBuilder-BnGSdSRG.js.map → useFormBuilder-D37ajgS8.js.map} +1 -1
- package/dist/{validation-CTxuzLIX.js → validation-ChMyixAf.js} +3 -3
- package/dist/{validation-CTxuzLIX.js.map → validation-ChMyixAf.js.map} +1 -1
- package/package.json +1 -1
- package/src/__tests__/components/ChartContainer.test.ts +24 -0
- package/src/__tests__/components/ChemicalFormula.test.ts +27 -0
- package/src/__tests__/components/LayoutResizeHandle.test.ts +19 -0
- package/src/__tests__/components/NumberInput.test.ts +45 -1
- package/src/__tests__/components/PlotlyChart.test.ts +48 -0
- package/src/__tests__/components/RackEditor.test.ts +9 -0
- package/src/__tests__/components/SearchableSelect.test.ts +61 -0
- package/src/__tests__/components/WellPlate.decoration.test.ts +28 -0
- package/src/__tests__/composables/useManualLayoutResize.test.ts +21 -0
- package/src/components/AdductText.story.vue +15 -0
- package/src/components/AdductText.vue +40 -0
- package/src/components/ChartContainer.story.vue +21 -0
- package/src/components/ChartContainer.vue +27 -6
- package/src/components/ChemicalFormula.story.vue +7 -0
- package/src/components/ChemicalFormula.vue +40 -11
- package/src/components/LayoutResizeHandle.story.vue +26 -0
- package/src/components/LayoutResizeHandle.vue +62 -0
- package/src/components/NumberInput.story.vue +1 -1
- package/src/components/NumberInput.vue +37 -9
- package/src/components/PlotlyChart.vue +77 -11
- package/src/components/RackEditor.vue +38 -32
- package/src/components/SearchableSelect.story.vue +24 -0
- package/src/components/SearchableSelect.vue +223 -0
- package/src/components/WellPlate.story.vue +16 -0
- package/src/components/WellPlate.vue +17 -8
- package/src/components/index.ts +3 -1
- package/src/composables/index.ts +10 -0
- package/src/composables/useManualLayoutResize.ts +165 -0
- package/src/styles/components/adduct-text.css +45 -0
- package/src/styles/components/chart-container.css +92 -0
- package/src/styles/components/chemical-formula.css +34 -4
- package/src/styles/components/layout-resize-handle.css +60 -0
- package/src/styles/components/number-input.css +2 -0
- package/src/styles/components/rack-editor.css +31 -9
- package/src/styles/components/searchable-select.css +63 -0
- package/src/styles/components/well-plate.css +9 -0
- package/src/styles/index.css +3 -0
- package/src/types/componentLabTypes.ts +6 -0
- package/src/types/components.ts +7 -0
- package/src/types/index.ts +3 -0
- package/dist/components-Cp8DcNrU.js.map +0 -1
- package/dist/composables-D_4qqOlp.js.map +0 -1
- package/dist/useControlSchema-BB2GRPhW.js.map +0 -1
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
.mint-searchable-select { position: relative; min-width: 0; }
|
|
2
|
+
|
|
3
|
+
.mint-searchable-select__trigger {
|
|
4
|
+
display: flex;
|
|
5
|
+
align-items: center;
|
|
6
|
+
width: 100%;
|
|
7
|
+
min-height: var(--form-height-md);
|
|
8
|
+
gap: 0.5rem;
|
|
9
|
+
padding: 0.5rem 0.75rem;
|
|
10
|
+
border: 1px solid var(--border-color);
|
|
11
|
+
border-radius: var(--radius-md);
|
|
12
|
+
background: var(--bg-secondary);
|
|
13
|
+
color: var(--text-primary);
|
|
14
|
+
font: inherit;
|
|
15
|
+
font-size: 0.8125rem;
|
|
16
|
+
cursor: pointer;
|
|
17
|
+
transition: border-color 150ms ease, box-shadow 150ms ease;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.mint-searchable-select--sm .mint-searchable-select__trigger { min-height: var(--form-height-sm); padding: 0.3rem 0.5rem; font-size: 0.75rem; }
|
|
21
|
+
.mint-searchable-select--lg .mint-searchable-select__trigger { min-height: var(--form-height-lg); padding: 0.75rem 1rem; font-size: 1rem; }
|
|
22
|
+
.mint-searchable-select__trigger:focus-visible { outline: none; border-color: transparent; box-shadow: var(--focus-ring); }
|
|
23
|
+
.mint-searchable-select__trigger:disabled { background: var(--bg-tertiary); cursor: not-allowed; opacity: var(--mint-disabled-opacity); }
|
|
24
|
+
.mint-searchable-select__trigger svg { width: 1rem; height: 1rem; flex: none; color: var(--text-muted); }
|
|
25
|
+
.mint-searchable-select__value { flex: 1; min-width: 0; overflow: hidden; text-align: left; text-overflow: ellipsis; white-space: nowrap; }
|
|
26
|
+
.mint-searchable-select__value--placeholder { color: var(--text-muted); }
|
|
27
|
+
|
|
28
|
+
.mint-searchable-select__panel {
|
|
29
|
+
position: absolute;
|
|
30
|
+
top: calc(100% + 0.25rem);
|
|
31
|
+
right: 0;
|
|
32
|
+
left: 0;
|
|
33
|
+
z-index: 30;
|
|
34
|
+
display: flex;
|
|
35
|
+
max-height: min(38rem, 80vh);
|
|
36
|
+
flex-direction: column;
|
|
37
|
+
overflow: hidden;
|
|
38
|
+
border: 1px solid var(--border-color);
|
|
39
|
+
border-radius: var(--radius-md);
|
|
40
|
+
background: var(--bg-card);
|
|
41
|
+
box-shadow: var(--shadow-lg);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.mint-searchable-select__search-wrap { position: relative; padding: 0.5rem; border-bottom: 1px solid var(--border-color); }
|
|
45
|
+
.mint-searchable-select__search-wrap svg { position: absolute; top: 50%; left: 1rem; width: 0.875rem; height: 0.875rem; color: var(--text-muted); transform: translateY(-50%); pointer-events: none; }
|
|
46
|
+
.mint-searchable-select__search { width: 100%; min-height: var(--form-height-sm); padding: 0.375rem 0.625rem 0.375rem 1.75rem; border: 1px solid var(--border-color); border-radius: var(--radius-md); background: var(--bg-primary); color: var(--text-primary); font: inherit; font-size: 0.8125rem; box-sizing: border-box; }
|
|
47
|
+
.mint-searchable-select__search:focus-visible { outline: none; border-color: transparent; box-shadow: var(--focus-ring); }
|
|
48
|
+
.mint-searchable-select__list { min-height: 0; margin: 0; padding: 0.25rem; overflow-y: auto; list-style: none; }
|
|
49
|
+
.mint-searchable-select__option { display: flex; align-items: center; gap: 0.5rem; padding: 0.375rem 0.5rem; border-radius: var(--radius-sm); color: var(--text-primary); cursor: pointer; }
|
|
50
|
+
.mint-searchable-select__option--active { background: var(--bg-tertiary); }
|
|
51
|
+
.mint-searchable-select__option--selected { background: var(--color-primary-soft); color: var(--text-primary); }
|
|
52
|
+
.mint-searchable-select__option--disabled { cursor: not-allowed; opacity: 0.5; }
|
|
53
|
+
.mint-searchable-select__option-text { display: flex; min-width: 0; flex: 1; flex-direction: column; }
|
|
54
|
+
.mint-searchable-select__option-label { overflow: hidden; font-size: 0.75rem; font-weight: 500; text-overflow: ellipsis; white-space: nowrap; }
|
|
55
|
+
.mint-searchable-select__option-description { font-size: 0.625rem; line-height: 1.35; color: var(--text-muted); }
|
|
56
|
+
.mint-searchable-select__option-meta { flex: none; padding: 0.0625rem 0.3125rem; border-radius: var(--radius-sm); background: var(--bg-secondary); color: var(--text-muted); font-family: var(--font-mono); font-size: 0.5625rem; letter-spacing: 0.04em; text-transform: uppercase; }
|
|
57
|
+
.mint-searchable-select__check { width: 1rem; height: 1rem; flex: none; }
|
|
58
|
+
.mint-searchable-select__empty { padding: 1rem; text-align: center; color: var(--text-muted); font-size: 0.75rem; }
|
|
59
|
+
.mint-searchable-select__footer { padding: 0.625rem; border-top: 1px solid var(--border-color); color: var(--text-secondary); font-size: 0.6875rem; }
|
|
60
|
+
|
|
61
|
+
@media (prefers-reduced-motion: reduce) {
|
|
62
|
+
.mint-searchable-select__trigger { transition: none; }
|
|
63
|
+
}
|
|
@@ -127,6 +127,15 @@
|
|
|
127
127
|
background-color: rgba(16, 185, 129, 0.2);
|
|
128
128
|
}
|
|
129
129
|
|
|
130
|
+
/* Optional semantic classes for `wellClass` callbacks. */
|
|
131
|
+
.mint-well-plate__well--outlier {
|
|
132
|
+
box-shadow: inset 0 0 0 1.6px var(--mint-warning);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.mint-well-plate__well--conflict {
|
|
136
|
+
box-shadow: inset 0 0 0 1.6px var(--mint-error);
|
|
137
|
+
}
|
|
138
|
+
|
|
130
139
|
/* Draggable well — explicit -webkit-user-drag for Chrome inside <table> cells */
|
|
131
140
|
.mint-well-plate__well--draggable {
|
|
132
141
|
cursor: grab;
|
package/src/styles/index.css
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
/* Component styles - alphabetically ordered */
|
|
9
9
|
@import './components/action-menu.css';
|
|
10
|
+
@import './components/adduct-text.css';
|
|
10
11
|
@import './components/alert-box.css';
|
|
11
12
|
@import './components/app-container.css';
|
|
12
13
|
@import './components/app-layout.css';
|
|
@@ -23,6 +24,7 @@
|
|
|
23
24
|
@import './components/icon-button.css';
|
|
24
25
|
@import './components/instrument-monitor.css';
|
|
25
26
|
@import './components/jobs-status-tray.css';
|
|
27
|
+
@import './components/layout-resize-handle.css';
|
|
26
28
|
@import './components/input.css';
|
|
27
29
|
@import './components/modal.css';
|
|
28
30
|
@import './components/number-input.css';
|
|
@@ -32,6 +34,7 @@
|
|
|
32
34
|
@import './components/section-card.css';
|
|
33
35
|
@import './components/secret-input.css';
|
|
34
36
|
@import './components/select.css';
|
|
37
|
+
@import './components/searchable-select.css';
|
|
35
38
|
@import './components/skeleton.css';
|
|
36
39
|
@import './components/slider.css';
|
|
37
40
|
@import './components/tabs.css';
|
|
@@ -15,6 +15,12 @@ export interface Well {
|
|
|
15
15
|
metadata?: Record<string, unknown>
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
+
export type WellClassValue = string | string[] | Record<string, boolean>
|
|
19
|
+
export type WellClassResolver = (well: Well) => WellClassValue | undefined
|
|
20
|
+
export type WellStyleResolver = (
|
|
21
|
+
well: Well,
|
|
22
|
+
) => Record<string, string | number | undefined> | undefined
|
|
23
|
+
|
|
18
24
|
export type HeatmapColorScale = 'viridis' | 'plasma' | 'turbo' | 'custom'
|
|
19
25
|
|
|
20
26
|
export interface HeatmapConfig {
|
package/src/types/components.ts
CHANGED
|
@@ -103,6 +103,10 @@ export interface SelectOption<T = string> {
|
|
|
103
103
|
label: string
|
|
104
104
|
disabled?: boolean
|
|
105
105
|
description?: string
|
|
106
|
+
/** Short trailing classification, count, or status. */
|
|
107
|
+
meta?: string
|
|
108
|
+
/** Explanation shown for an unavailable option. */
|
|
109
|
+
disabledReason?: string
|
|
106
110
|
}
|
|
107
111
|
|
|
108
112
|
export type SelectOptionInput<T extends OptionPrimitive = OptionPrimitive> = SelectOption<T> | T
|
|
@@ -281,6 +285,9 @@ export type {
|
|
|
281
285
|
WellPlateSize,
|
|
282
286
|
WellShape,
|
|
283
287
|
Well,
|
|
288
|
+
WellClassValue,
|
|
289
|
+
WellClassResolver,
|
|
290
|
+
WellStyleResolver,
|
|
284
291
|
HeatmapColorScale,
|
|
285
292
|
HeatmapConfig,
|
|
286
293
|
SlotPosition,
|