@morscherlab/mint-sdk 1.0.0-alpha.8 → 1.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (217) hide show
  1. package/README.md +15 -15
  2. package/dist/{auth-BYmxZdJl.js → auth-DsI0rQ7_.js} +6 -6
  3. package/dist/auth-DsI0rQ7_.js.map +1 -0
  4. package/dist/components/index.js +2 -2
  5. package/dist/{components-CKf-UpGi.js → components-CzbQQPCb.js} +1429 -1429
  6. package/dist/components-CzbQQPCb.js.map +1 -0
  7. package/dist/composables/index.js +2 -2
  8. package/dist/composables/usePlatformContext.d.ts +3 -3
  9. package/dist/{composables-D0QfFzq1.js → composables-BXklV5ii.js} +3 -3
  10. package/dist/{composables-D0QfFzq1.js.map → composables-BXklV5ii.js.map} +1 -1
  11. package/dist/index.js +4 -4
  12. package/dist/install.d.ts +3 -3
  13. package/dist/install.js +5 -5
  14. package/dist/install.js.map +1 -1
  15. package/dist/stores/auth.d.ts +1 -1
  16. package/dist/stores/index.js +1 -1
  17. package/dist/stores/settings.d.ts +1 -1
  18. package/dist/styles.css +5388 -5388
  19. package/dist/types/platform.d.ts +1 -1
  20. package/dist/{useScheduleDrag-DAJueTbK.js → useScheduleDrag-CxBeqYcu.js} +331 -331
  21. package/dist/useScheduleDrag-CxBeqYcu.js.map +1 -0
  22. package/package.json +2 -2
  23. package/src/__tests__/components/AppLayout.test.ts +23 -23
  24. package/src/__tests__/components/AppSidebar.test.ts +29 -29
  25. package/src/__tests__/components/AppTopBar.test.ts +45 -45
  26. package/src/__tests__/components/BaseInput.test.ts +2 -2
  27. package/src/__tests__/components/BasePill.test.ts +37 -37
  28. package/src/__tests__/components/Calendar.test.ts +52 -52
  29. package/src/__tests__/components/CollapsibleCard.test.ts +81 -81
  30. package/src/__tests__/components/DataFrame.test.ts +80 -80
  31. package/src/__tests__/components/DropdownButton.test.ts +80 -80
  32. package/src/__tests__/composables/usePlatformContext.test.ts +1 -1
  33. package/src/components/AlertBox.story.vue +1 -1
  34. package/src/components/AlertBox.vue +14 -14
  35. package/src/components/AppAvatarMenu.vue +26 -26
  36. package/src/components/AppContainer.vue +3 -3
  37. package/src/components/AppLayout.vue +7 -7
  38. package/src/components/AppPageSelector.vue +30 -30
  39. package/src/components/AppPillNav.vue +10 -10
  40. package/src/components/AppPluginSwitcher.vue +31 -31
  41. package/src/components/AppSidebar.vue +8 -8
  42. package/src/components/AppTopBar.story.vue +7 -7
  43. package/src/components/AppTopBar.vue +102 -102
  44. package/src/components/AuditTrail.vue +19 -19
  45. package/src/components/AutoGroupModal.vue +76 -76
  46. package/src/components/Avatar.vue +6 -6
  47. package/src/components/BaseButton.vue +6 -6
  48. package/src/components/BaseCheckbox.vue +9 -9
  49. package/src/components/BaseInput.vue +4 -4
  50. package/src/components/BaseModal.story.vue +1 -1
  51. package/src/components/BaseModal.vue +14 -14
  52. package/src/components/BasePill.vue +9 -9
  53. package/src/components/BaseRadioGroup.vue +21 -21
  54. package/src/components/BaseSelect.vue +6 -6
  55. package/src/components/BaseSlider.vue +8 -8
  56. package/src/components/BaseTabs.vue +7 -7
  57. package/src/components/BaseTextarea.vue +5 -5
  58. package/src/components/BaseToggle.vue +10 -10
  59. package/src/components/BatchProgressList.vue +25 -25
  60. package/src/components/Breadcrumb.vue +8 -8
  61. package/src/components/Calendar.vue +19 -19
  62. package/src/components/ChartContainer.vue +9 -9
  63. package/src/components/ChemicalFormula.vue +7 -7
  64. package/src/components/CollapsibleCard.vue +20 -20
  65. package/src/components/ColorSlider.vue +6 -6
  66. package/src/components/ConcentrationInput.vue +12 -12
  67. package/src/components/ConfirmDialog.story.vue +1 -1
  68. package/src/components/ConfirmDialog.vue +7 -7
  69. package/src/components/DataFrame.vue +40 -40
  70. package/src/components/DatePicker.vue +29 -29
  71. package/src/components/DateTimePicker.vue +41 -41
  72. package/src/components/Divider.vue +9 -9
  73. package/src/components/DoseCalculator.vue +66 -66
  74. package/src/components/DropdownButton.vue +19 -19
  75. package/src/components/EmptyState.vue +9 -9
  76. package/src/components/ExperimentCodeBadge.vue +3 -3
  77. package/src/components/ExperimentDataViewer.vue +25 -25
  78. package/src/components/ExperimentPopover.vue +35 -35
  79. package/src/components/ExperimentSelectorModal.vue +40 -40
  80. package/src/components/ExperimentTimeline.vue +48 -48
  81. package/src/components/FileUploader.vue +31 -31
  82. package/src/components/FitPanel.vue +9 -9
  83. package/src/components/FormActions.vue +1 -1
  84. package/src/components/FormBuilder.vue +2 -2
  85. package/src/components/FormField.vue +7 -7
  86. package/src/components/FormSection.vue +7 -7
  87. package/src/components/FormulaInput.vue +10 -10
  88. package/src/components/GroupAssigner.vue +40 -40
  89. package/src/components/GroupingModal.vue +45 -45
  90. package/src/components/IconButton.vue +6 -6
  91. package/src/components/LoadingSpinner.vue +5 -5
  92. package/src/components/MoleculeInput.vue +21 -21
  93. package/src/components/MultiSelect.vue +13 -13
  94. package/src/components/NumberInput.vue +13 -13
  95. package/src/components/PlateMapEditor.vue +63 -63
  96. package/src/components/ProgressBar.vue +18 -18
  97. package/src/components/ProtocolStepEditor.vue +57 -57
  98. package/src/components/RackEditor.vue +28 -28
  99. package/src/components/ReagentEditor.vue +61 -61
  100. package/src/components/ReagentList.vue +49 -49
  101. package/src/components/ResourceCard.vue +28 -28
  102. package/src/components/SampleHierarchyTree.vue +13 -13
  103. package/src/components/SampleLegend.vue +12 -12
  104. package/src/components/SampleSelector.vue +104 -104
  105. package/src/components/ScheduleCalendar.vue +42 -42
  106. package/src/components/ScientificNumber.vue +11 -11
  107. package/src/components/SegmentedControl.vue +12 -12
  108. package/src/components/SequenceInput.vue +32 -32
  109. package/src/components/SettingsButton.vue +5 -5
  110. package/src/components/SettingsModal.vue +17 -17
  111. package/src/components/StatusIndicator.vue +5 -5
  112. package/src/components/StepWizard.vue +16 -16
  113. package/src/components/TagsInput.vue +20 -20
  114. package/src/components/ThemeToggle.vue +3 -3
  115. package/src/components/TimePicker.vue +21 -21
  116. package/src/components/TimeRangeInput.vue +5 -5
  117. package/src/components/ToastNotification.vue +8 -8
  118. package/src/components/Tooltip.vue +7 -7
  119. package/src/components/UnitInput.vue +12 -12
  120. package/src/components/WellEditPopup.vue +28 -28
  121. package/src/components/WellPlate.vue +37 -37
  122. package/src/composables/useAppExperiment.ts +1 -1
  123. package/src/composables/usePlatformContext.ts +16 -16
  124. package/src/composables/useProtocolTemplates.ts +1 -1
  125. package/src/install.ts +3 -3
  126. package/src/stores/auth.ts +3 -3
  127. package/src/stores/settings.ts +2 -2
  128. package/src/styles/components/alert-box.css +30 -30
  129. package/src/styles/components/app-avatar-menu.css +23 -23
  130. package/src/styles/components/app-container.css +6 -6
  131. package/src/styles/components/app-layout.css +15 -15
  132. package/src/styles/components/app-page-selector.css +26 -26
  133. package/src/styles/components/app-pill-nav.css +7 -7
  134. package/src/styles/components/app-plugin-switcher.css +27 -27
  135. package/src/styles/components/app-sidebar.css +24 -24
  136. package/src/styles/components/app-top-bar.css +65 -65
  137. package/src/styles/components/audit-trail.css +29 -29
  138. package/src/styles/components/auto-group-modal.css +91 -91
  139. package/src/styles/components/avatar.css +15 -15
  140. package/src/styles/components/batch-progress-list.css +40 -40
  141. package/src/styles/components/breadcrumb.css +8 -8
  142. package/src/styles/components/button.css +31 -31
  143. package/src/styles/components/calendar.css +27 -27
  144. package/src/styles/components/chart-container.css +9 -9
  145. package/src/styles/components/checkbox.css +20 -20
  146. package/src/styles/components/chemical-formula.css +8 -8
  147. package/src/styles/components/collapsible-card.css +35 -35
  148. package/src/styles/components/color-slider.css +8 -8
  149. package/src/styles/components/concentration-input.css +27 -27
  150. package/src/styles/components/confirm-dialog.css +32 -32
  151. package/src/styles/components/dataframe.css +66 -66
  152. package/src/styles/components/date-picker.css +40 -40
  153. package/src/styles/components/datetime-picker.css +37 -37
  154. package/src/styles/components/divider.css +13 -13
  155. package/src/styles/components/dose-calculator.css +43 -43
  156. package/src/styles/components/dropdown-button.css +46 -46
  157. package/src/styles/components/empty-state.css +44 -44
  158. package/src/styles/components/experiment-code-badge.css +8 -8
  159. package/src/styles/components/experiment-data-viewer.css +23 -23
  160. package/src/styles/components/experiment-popover.css +97 -97
  161. package/src/styles/components/experiment-selector-modal.css +39 -39
  162. package/src/styles/components/experiment-timeline.css +98 -98
  163. package/src/styles/components/file-uploader.css +44 -44
  164. package/src/styles/components/fit-panel.css +12 -12
  165. package/src/styles/components/form-builder.css +11 -11
  166. package/src/styles/components/form-field.css +7 -7
  167. package/src/styles/components/formula-input.css +17 -17
  168. package/src/styles/components/group-assigner.css +26 -26
  169. package/src/styles/components/grouping-modal.css +51 -51
  170. package/src/styles/components/icon-button.css +41 -41
  171. package/src/styles/components/input.css +13 -13
  172. package/src/styles/components/loading-spinner.css +12 -12
  173. package/src/styles/components/modal.css +69 -69
  174. package/src/styles/components/molecule-input.css +27 -27
  175. package/src/styles/components/multi-select.css +23 -23
  176. package/src/styles/components/number-input.css +32 -32
  177. package/src/styles/components/pill.css +37 -37
  178. package/src/styles/components/plate-map-editor.css +67 -67
  179. package/src/styles/components/progress-bar.css +41 -41
  180. package/src/styles/components/protocol-step-editor.css +63 -63
  181. package/src/styles/components/rack-editor.css +34 -34
  182. package/src/styles/components/radio-group.css +41 -41
  183. package/src/styles/components/reagent-editor.css +70 -70
  184. package/src/styles/components/reagent-list.css +65 -65
  185. package/src/styles/components/resource-card.css +52 -52
  186. package/src/styles/components/sample-hierarchy-tree.css +56 -56
  187. package/src/styles/components/sample-legend.css +37 -37
  188. package/src/styles/components/sample-selector.css +121 -121
  189. package/src/styles/components/schedule-calendar.css +67 -67
  190. package/src/styles/components/scientific-number.css +11 -11
  191. package/src/styles/components/segmented-control.css +33 -33
  192. package/src/styles/components/select.css +11 -11
  193. package/src/styles/components/sequence-input.css +29 -29
  194. package/src/styles/components/settings-button.css +16 -16
  195. package/src/styles/components/settings-modal.css +14 -14
  196. package/src/styles/components/skeleton.css +2 -2
  197. package/src/styles/components/slider.css +10 -10
  198. package/src/styles/components/status-indicator.css +12 -12
  199. package/src/styles/components/step-wizard.css +32 -32
  200. package/src/styles/components/tabs.css +16 -16
  201. package/src/styles/components/tags-input.css +46 -46
  202. package/src/styles/components/textarea.css +17 -17
  203. package/src/styles/components/theme-toggle.css +13 -13
  204. package/src/styles/components/time-picker.css +28 -28
  205. package/src/styles/components/time-range-input.css +8 -8
  206. package/src/styles/components/toast.css +18 -18
  207. package/src/styles/components/toggle.css +27 -27
  208. package/src/styles/components/tooltip.css +18 -18
  209. package/src/styles/components/unit-input.css +25 -25
  210. package/src/styles/components/well-edit-popup.css +32 -32
  211. package/src/styles/components/well-plate.css +49 -49
  212. package/src/styles/index.css +1 -1
  213. package/src/styles/variables.css +3 -3
  214. package/src/types/platform.ts +6 -6
  215. package/dist/auth-BYmxZdJl.js.map +0 -1
  216. package/dist/components-CKf-UpGi.js.map +0 -1
  217. package/dist/useScheduleDrag-DAJueTbK.js.map +0 -1
@@ -87,14 +87,14 @@ function increment() {
87
87
  <template>
88
88
  <div
89
89
  :class="[
90
- 'mld-number-input',
91
- `mld-number-input--${size}`,
92
- isSliderMode ? 'mld-number-input--slider' : 'mld-number-input--stepper',
93
- error ? 'mld-number-input--error' : '',
94
- disabled ? 'mld-number-input--disabled' : '',
90
+ 'mint-number-input',
91
+ `mint-number-input--${size}`,
92
+ isSliderMode ? 'mint-number-input--slider' : 'mint-number-input--stepper',
93
+ error ? 'mint-number-input--error' : '',
94
+ disabled ? 'mint-number-input--disabled' : '',
95
95
  ]"
96
96
  >
97
- <div class="mld-number-input__field">
97
+ <div class="mint-number-input__field">
98
98
  <input
99
99
  type="number"
100
100
  :value="modelValue"
@@ -104,21 +104,21 @@ function increment() {
104
104
  :disabled="disabled"
105
105
  :placeholder="placeholder"
106
106
  :class="[
107
- 'mld-number-input__input',
108
- `mld-number-input__input--${size}`,
107
+ 'mint-number-input__input',
108
+ `mint-number-input__input--${size}`,
109
109
  ]"
110
110
  @input="handleInput"
111
111
  />
112
112
 
113
- <span v-if="unit" class="mld-number-input__unit">{{ unit }}</span>
113
+ <span v-if="unit" class="mint-number-input__unit">{{ unit }}</span>
114
114
 
115
- <div class="mld-number-input__steppers" aria-hidden="true">
115
+ <div class="mint-number-input__steppers" aria-hidden="true">
116
116
  <button
117
117
  type="button"
118
118
  tabindex="-1"
119
119
  aria-label="Increase value"
120
120
  :disabled="disabled || !canIncrement"
121
- class="mld-number-input__stepper mld-number-input__stepper--up"
121
+ class="mint-number-input__stepper mint-number-input__stepper--up"
122
122
  @click="increment"
123
123
  >
124
124
  <svg viewBox="0 0 10 6" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
@@ -130,7 +130,7 @@ function increment() {
130
130
  tabindex="-1"
131
131
  aria-label="Decrease value"
132
132
  :disabled="disabled || !canDecrement"
133
- class="mld-number-input__stepper mld-number-input__stepper--down"
133
+ class="mint-number-input__stepper mint-number-input__stepper--down"
134
134
  @click="decrement"
135
135
  >
136
136
  <svg viewBox="0 0 10 6" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
@@ -149,7 +149,7 @@ function increment() {
149
149
  :step="step"
150
150
  :disabled="disabled"
151
151
  :style="{ '--mint-slider-fill': `${sliderPercent}%` }"
152
- class="mld-number-input__slider"
152
+ class="mint-number-input__slider"
153
153
  @input="handleSliderInput"
154
154
  />
155
155
  </div>
@@ -231,35 +231,35 @@ onUnmounted(() => {
231
231
  </script>
232
232
 
233
233
  <template>
234
- <div :class="['mld-plate-editor', { 'mld-plate-editor--with-sidebar': showSidebar }]">
234
+ <div :class="['mint-plate-editor', { 'mint-plate-editor--with-sidebar': showSidebar }]">
235
235
  <!-- Main plate area -->
236
- <div class="mld-plate-editor__main">
236
+ <div class="mint-plate-editor__main">
237
237
  <!-- Toolbar -->
238
- <div v-if="showToolbar" class="mld-plate-editor__toolbar">
238
+ <div v-if="showToolbar" class="mint-plate-editor__toolbar">
239
239
  <!-- Plate tabs -->
240
- <div class="mld-plate-editor__tabs">
240
+ <div class="mint-plate-editor__tabs">
241
241
  <button
242
242
  v-for="(plate, index) in editor.plates.value"
243
243
  :key="plate.id"
244
244
  type="button"
245
- :class="['mld-plate-editor__tab', { 'mld-plate-editor__tab--active': plate.id === editor.activePlate.value?.id }]"
245
+ :class="['mint-plate-editor__tab', { 'mint-plate-editor__tab--active': plate.id === editor.activePlate.value?.id }]"
246
246
  @click="editor.setActivePlate(plate.id)"
247
247
  >
248
248
  <span
249
- class="mld-plate-editor__tab-slot"
249
+ class="mint-plate-editor__tab-slot"
250
250
  :style="{ backgroundColor: SLOT_COLORS[getPlateSlot(plate.id, index)] }"
251
251
  />
252
- <span class="mld-plate-editor__tab-name">{{ plate.name }}</span>
252
+ <span class="mint-plate-editor__tab-name">{{ plate.name }}</span>
253
253
  <span
254
254
  v-if="getPlateWellCount(plate.id) > 0"
255
- class="mld-plate-editor__tab-count"
255
+ class="mint-plate-editor__tab-count"
256
256
  >
257
257
  {{ getPlateWellCount(plate.id) }}
258
258
  </span>
259
259
  <button
260
260
  v-if="editor.plates.value.length > 1"
261
261
  type="button"
262
- class="mld-plate-editor__tab-remove"
262
+ class="mint-plate-editor__tab-remove"
263
263
  :aria-label="`Remove ${plate.name}`"
264
264
  @click.stop="handleRemovePlate(plate.id)"
265
265
  >
@@ -272,7 +272,7 @@ onUnmounted(() => {
272
272
  <button
273
273
  v-if="allowAddPlates && editor.plates.value.length < maxPlates"
274
274
  type="button"
275
- class="mld-plate-editor__add-plate"
275
+ class="mint-plate-editor__add-plate"
276
276
  aria-label="Add plate"
277
277
  @click="handleAddPlate"
278
278
  >
@@ -283,14 +283,14 @@ onUnmounted(() => {
283
283
  </button>
284
284
  </div>
285
285
 
286
- <div class="mld-plate-editor__spacer" />
286
+ <div class="mint-plate-editor__spacer" />
287
287
 
288
288
  <!-- Actions -->
289
- <div class="mld-plate-editor__actions">
289
+ <div class="mint-plate-editor__actions">
290
290
  <button
291
291
  type="button"
292
292
  :disabled="!editor.canUndo.value"
293
- class="mld-plate-editor__action-btn"
293
+ class="mint-plate-editor__action-btn"
294
294
  title="Undo (Ctrl+Z)"
295
295
  @click="handleUndo"
296
296
  >
@@ -302,7 +302,7 @@ onUnmounted(() => {
302
302
  <button
303
303
  type="button"
304
304
  :disabled="!editor.canRedo.value"
305
- class="mld-plate-editor__action-btn"
305
+ class="mint-plate-editor__action-btn"
306
306
  title="Redo (Ctrl+Shift+Z)"
307
307
  @click="handleRedo"
308
308
  >
@@ -311,11 +311,11 @@ onUnmounted(() => {
311
311
  </svg>
312
312
  </button>
313
313
 
314
- <div class="mld-plate-editor__divider" />
314
+ <div class="mint-plate-editor__divider" />
315
315
 
316
316
  <button
317
317
  type="button"
318
- class="mld-plate-editor__action-btn"
318
+ class="mint-plate-editor__action-btn"
319
319
  title="Import"
320
320
  @click="showImportModal = true"
321
321
  >
@@ -326,7 +326,7 @@ onUnmounted(() => {
326
326
 
327
327
  <button
328
328
  type="button"
329
- class="mld-plate-editor__action-btn"
329
+ class="mint-plate-editor__action-btn"
330
330
  title="Export JSON"
331
331
  @click="handleExport('json')"
332
332
  >
@@ -353,23 +353,23 @@ onUnmounted(() => {
353
353
  <!-- Selection info bar -->
354
354
  <div
355
355
  v-if="editor.selectedWells.value.length > 0"
356
- class="mld-plate-editor__selection-bar"
356
+ class="mint-plate-editor__selection-bar"
357
357
  >
358
- <span class="mld-plate-editor__selection-count">
358
+ <span class="mint-plate-editor__selection-count">
359
359
  <strong>{{ editor.selectedWells.value.length }}</strong> wells selected
360
360
  </span>
361
- <div class="mld-plate-editor__spacer" />
361
+ <div class="mint-plate-editor__spacer" />
362
362
  <button
363
363
  v-if="editor.activeSampleId.value"
364
364
  type="button"
365
- class="mld-plate-editor__assign-btn"
365
+ class="mint-plate-editor__assign-btn"
366
366
  @click="handleAssignSample"
367
367
  >
368
368
  Assign {{ editor.samples.value.find(s => s.id === editor.activeSampleId.value)?.name }}
369
369
  </button>
370
370
  <button
371
371
  type="button"
372
- class="mld-plate-editor__clear-btn"
372
+ class="mint-plate-editor__clear-btn"
373
373
  @click="handleClearWells"
374
374
  >
375
375
  Clear
@@ -377,26 +377,26 @@ onUnmounted(() => {
377
377
  </div>
378
378
 
379
379
  <!-- Legend -->
380
- <div class="mld-plate-editor__legend">
381
- <div class="mld-plate-editor__legend-items">
382
- <div class="mld-plate-editor__legend-item">
383
- <div class="mld-plate-editor__legend-swatch" style="background-color: rgba(16, 185, 129, 0.15); border: 1px solid rgba(16, 185, 129, 0.4)" />
384
- <span class="mld-plate-editor__legend-label">Sample</span>
380
+ <div class="mint-plate-editor__legend">
381
+ <div class="mint-plate-editor__legend-items">
382
+ <div class="mint-plate-editor__legend-item">
383
+ <div class="mint-plate-editor__legend-swatch" style="background-color: rgba(16, 185, 129, 0.15); border: 1px solid rgba(16, 185, 129, 0.4)" />
384
+ <span class="mint-plate-editor__legend-label">Sample</span>
385
385
  </div>
386
- <div class="mld-plate-editor__legend-item">
387
- <div class="mld-plate-editor__legend-swatch" style="background-color: rgba(59, 130, 246, 0.15); border: 1px solid rgba(59, 130, 246, 0.4)" />
388
- <span class="mld-plate-editor__legend-label">Control</span>
386
+ <div class="mint-plate-editor__legend-item">
387
+ <div class="mint-plate-editor__legend-swatch" style="background-color: rgba(59, 130, 246, 0.15); border: 1px solid rgba(59, 130, 246, 0.4)" />
388
+ <span class="mint-plate-editor__legend-label">Control</span>
389
389
  </div>
390
- <div class="mld-plate-editor__legend-item">
391
- <div class="mld-plate-editor__legend-swatch" style="background-color: rgba(249, 115, 22, 0.15); border: 1px solid rgba(249, 115, 22, 0.4)" />
392
- <span class="mld-plate-editor__legend-label">Blank</span>
390
+ <div class="mint-plate-editor__legend-item">
391
+ <div class="mint-plate-editor__legend-swatch" style="background-color: rgba(249, 115, 22, 0.15); border: 1px solid rgba(249, 115, 22, 0.4)" />
392
+ <span class="mint-plate-editor__legend-label">Blank</span>
393
393
  </div>
394
- <div class="mld-plate-editor__legend-item">
395
- <div class="mld-plate-editor__legend-swatch" style="background-color: rgba(139, 92, 246, 0.15); border: 1px solid rgba(139, 92, 246, 0.4)" />
396
- <span class="mld-plate-editor__legend-label">QC</span>
394
+ <div class="mint-plate-editor__legend-item">
395
+ <div class="mint-plate-editor__legend-swatch" style="background-color: rgba(139, 92, 246, 0.15); border: 1px solid rgba(139, 92, 246, 0.4)" />
396
+ <span class="mint-plate-editor__legend-label">QC</span>
397
397
  </div>
398
398
  </div>
399
- <span class="mld-plate-editor__legend-hint">
399
+ <span class="mint-plate-editor__legend-hint">
400
400
  <svg fill="none" stroke="currentColor" viewBox="0 0 24 24" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
401
401
  <path d="m21.64 3.64-1.28-1.28a1.21 1.21 0 0 0-1.72 0L2.36 18.64a1.21 1.21 0 0 0 0 1.72l1.28 1.28a1.2 1.2 0 0 0 1.72 0L21.64 5.36a1.2 1.2 0 0 0 0-1.72" /><path d="m14 7 3 3" /><path d="M5 6v4" /><path d="M19 14v4" /><path d="M10 2v2" /><path d="M7 8H3" /><path d="M21 16h-4" /><path d="M11 3H9" />
402
402
  </svg>
@@ -406,9 +406,9 @@ onUnmounted(() => {
406
406
  </div>
407
407
 
408
408
  <!-- Sidebar -->
409
- <div v-if="showSidebar" class="mld-plate-editor__sidebar">
410
- <div class="mld-plate-editor__sidebar-panel">
411
- <h3 class="mld-plate-editor__sidebar-title">Sample Types</h3>
409
+ <div v-if="showSidebar" class="mint-plate-editor__sidebar">
410
+ <div class="mint-plate-editor__sidebar-panel">
411
+ <h3 class="mint-plate-editor__sidebar-title">Sample Types</h3>
412
412
 
413
413
  <SampleLegend
414
414
  :model-value="editor.activeSampleId.value"
@@ -421,19 +421,19 @@ onUnmounted(() => {
421
421
  />
422
422
 
423
423
  <!-- Add sample -->
424
- <div v-if="allowAddSamples" class="mld-plate-editor__add-sample">
425
- <div class="mld-plate-editor__add-sample-form">
424
+ <div v-if="allowAddSamples" class="mint-plate-editor__add-sample">
425
+ <div class="mint-plate-editor__add-sample-form">
426
426
  <input
427
427
  v-model="newSampleName"
428
428
  type="text"
429
429
  placeholder="New sample..."
430
- class="mld-plate-editor__add-sample-input"
430
+ class="mint-plate-editor__add-sample-input"
431
431
  @keyup.enter="handleAddSample"
432
432
  />
433
433
  <button
434
434
  type="button"
435
435
  :disabled="!newSampleName.trim()"
436
- class="mld-plate-editor__add-sample-btn"
436
+ class="mint-plate-editor__add-sample-btn"
437
437
  @click="handleAddSample"
438
438
  >
439
439
  Add
@@ -442,13 +442,13 @@ onUnmounted(() => {
442
442
  </div>
443
443
 
444
444
  <!-- Keyboard shortcuts -->
445
- <div class="mld-plate-editor__shortcuts">
446
- <h4 class="mld-plate-editor__shortcuts-title">Shortcuts</h4>
447
- <div class="mld-plate-editor__shortcuts-list">
448
- <div><kbd class="mld-plate-editor__shortcut-key">1-9</kbd> Quick assign</div>
449
- <div><kbd class="mld-plate-editor__shortcut-key">Del</kbd> Clear wells</div>
450
- <div><kbd class="mld-plate-editor__shortcut-key">Ctrl+Z</kbd> Undo</div>
451
- <div><kbd class="mld-plate-editor__shortcut-key">Ctrl+A</kbd> Select all</div>
445
+ <div class="mint-plate-editor__shortcuts">
446
+ <h4 class="mint-plate-editor__shortcuts-title">Shortcuts</h4>
447
+ <div class="mint-plate-editor__shortcuts-list">
448
+ <div><kbd class="mint-plate-editor__shortcut-key">1-9</kbd> Quick assign</div>
449
+ <div><kbd class="mint-plate-editor__shortcut-key">Del</kbd> Clear wells</div>
450
+ <div><kbd class="mint-plate-editor__shortcut-key">Ctrl+Z</kbd> Undo</div>
451
+ <div><kbd class="mint-plate-editor__shortcut-key">Ctrl+A</kbd> Select all</div>
452
452
  </div>
453
453
  </div>
454
454
  </div>
@@ -458,37 +458,37 @@ onUnmounted(() => {
458
458
  <Teleport to="body">
459
459
  <div
460
460
  v-if="showImportModal"
461
- class="mld-plate-editor__modal-overlay"
461
+ class="mint-plate-editor__modal-overlay"
462
462
  @click.self="showImportModal = false"
463
463
  >
464
- <div class="mld-plate-editor__modal">
465
- <h3 class="mld-plate-editor__modal-title">Import Plate Map</h3>
464
+ <div class="mint-plate-editor__modal">
465
+ <h3 class="mint-plate-editor__modal-title">Import Plate Map</h3>
466
466
 
467
- <div class="mld-plate-editor__modal-field">
468
- <label class="mld-plate-editor__modal-label">Format</label>
467
+ <div class="mint-plate-editor__modal-field">
468
+ <label class="mint-plate-editor__modal-label">Format</label>
469
469
  <select
470
470
  v-model="importFormat"
471
- class="mld-plate-editor__modal-select"
471
+ class="mint-plate-editor__modal-select"
472
472
  >
473
473
  <option value="json">JSON</option>
474
474
  <option value="csv">CSV</option>
475
475
  </select>
476
476
  </div>
477
477
 
478
- <div class="mld-plate-editor__modal-field">
479
- <label class="mld-plate-editor__modal-label">Data</label>
478
+ <div class="mint-plate-editor__modal-field">
479
+ <label class="mint-plate-editor__modal-label">Data</label>
480
480
  <textarea
481
481
  v-model="importText"
482
482
  rows="8"
483
- class="mld-plate-editor__modal-textarea"
483
+ class="mint-plate-editor__modal-textarea"
484
484
  placeholder="Paste your data here..."
485
485
  />
486
486
  </div>
487
487
 
488
- <div class="mld-plate-editor__modal-actions">
488
+ <div class="mint-plate-editor__modal-actions">
489
489
  <button
490
490
  type="button"
491
- class="mld-plate-editor__modal-cancel"
491
+ class="mint-plate-editor__modal-cancel"
492
492
  @click="showImportModal = false"
493
493
  >
494
494
  Cancel
@@ -496,7 +496,7 @@ onUnmounted(() => {
496
496
  <button
497
497
  type="button"
498
498
  :disabled="!importText.trim()"
499
- class="mld-plate-editor__modal-submit"
499
+ class="mint-plate-editor__modal-submit"
500
500
  @click="handleImport"
501
501
  >
502
502
  Import
@@ -37,22 +37,22 @@ const segmentCount = computed(() => props.steps.length || 0)
37
37
  </script>
38
38
 
39
39
  <template>
40
- <div class="mld-progress" :class="`mld-progress--${variant}`">
40
+ <div class="mint-progress" :class="`mint-progress--${variant}`">
41
41
  <div
42
42
  v-if="label || showValue"
43
- class="mld-progress__header"
43
+ class="mint-progress__header"
44
44
  >
45
- <span v-if="label" class="mld-progress__label">{{ label }}</span>
46
- <span v-if="showValue && !indeterminate && variant === 'rail'" class="mld-progress__value">{{ clampedValue }}%</span>
47
- <span v-if="showValue && variant === 'segmented' && segmentCount" class="mld-progress__value">{{ currentStep }} / {{ segmentCount }}</span>
45
+ <span v-if="label" class="mint-progress__label">{{ label }}</span>
46
+ <span v-if="showValue && !indeterminate && variant === 'rail'" class="mint-progress__value">{{ clampedValue }}%</span>
47
+ <span v-if="showValue && variant === 'segmented' && segmentCount" class="mint-progress__value">{{ currentStep }} / {{ segmentCount }}</span>
48
48
  </div>
49
49
 
50
50
  <!-- Rail variant: single filled track -->
51
51
  <div
52
52
  v-if="variant === 'rail'"
53
53
  :class="[
54
- 'mld-progress__track',
55
- `mld-progress__track--${size}`,
54
+ 'mint-progress__track',
55
+ `mint-progress__track--${size}`,
56
56
  ]"
57
57
  role="progressbar"
58
58
  :aria-valuenow="indeterminate ? undefined : clampedValue"
@@ -61,9 +61,9 @@ const segmentCount = computed(() => props.steps.length || 0)
61
61
  >
62
62
  <div
63
63
  :class="[
64
- 'mld-progress__bar',
65
- `mld-progress__bar--${color}`,
66
- indeterminate ? 'mld-progress__bar--indeterminate' : '',
64
+ 'mint-progress__bar',
65
+ `mint-progress__bar--${color}`,
66
+ indeterminate ? 'mint-progress__bar--indeterminate' : '',
67
67
  ]"
68
68
  :style="barStyle"
69
69
  />
@@ -72,7 +72,7 @@ const segmentCount = computed(() => props.steps.length || 0)
72
72
  <!-- Segmented variant: discrete step segments -->
73
73
  <div
74
74
  v-else
75
- :class="['mld-progress__segments', `mld-progress__segments--${size}`]"
75
+ :class="['mint-progress__segments', `mint-progress__segments--${size}`]"
76
76
  role="progressbar"
77
77
  :aria-valuenow="currentStep"
78
78
  :aria-valuemin="0"
@@ -82,9 +82,9 @@ const segmentCount = computed(() => props.steps.length || 0)
82
82
  v-for="(_step, i) in steps"
83
83
  :key="i"
84
84
  :class="[
85
- 'mld-progress__segment',
86
- i < currentStep ? `mld-progress__segment--done mld-progress__segment--${color}` : '',
87
- i === currentStep ? `mld-progress__segment--active mld-progress__segment--${color}` : '',
85
+ 'mint-progress__segment',
86
+ i < currentStep ? `mint-progress__segment--done mint-progress__segment--${color}` : '',
87
+ i === currentStep ? `mint-progress__segment--active mint-progress__segment--${color}` : '',
88
88
  ]"
89
89
  />
90
90
  </div>
@@ -92,15 +92,15 @@ const segmentCount = computed(() => props.steps.length || 0)
92
92
  <!-- Segmented step labels -->
93
93
  <div
94
94
  v-if="variant === 'segmented' && steps.length"
95
- class="mld-progress__step-labels"
95
+ class="mint-progress__step-labels"
96
96
  >
97
97
  <span
98
98
  v-for="(step, i) in steps"
99
99
  :key="i"
100
100
  :class="[
101
- 'mld-progress__step-label',
102
- i === currentStep ? 'mld-progress__step-label--active' : '',
103
- i < currentStep ? 'mld-progress__step-label--done' : '',
101
+ 'mint-progress__step-label',
102
+ i === currentStep ? 'mint-progress__step-label--active' : '',
103
+ i < currentStep ? 'mint-progress__step-label--done' : '',
104
104
  ]"
105
105
  >
106
106
  {{ step }}