@morscherlab/mint-sdk 1.0.0-alpha.7 → 1.0.0-alpha.9

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
@@ -346,7 +346,7 @@ function handleGroupDragStart(name: string, kind: GroupDragKind, event: DragEven
346
346
  draggingGroupKind.value = kind
347
347
  if (event.dataTransfer) {
348
348
  event.dataTransfer.effectAllowed = 'move'
349
- event.dataTransfer.setData('text/plain', `mld-group:${name}`)
349
+ event.dataTransfer.setData('text/plain', `mint-group:${name}`)
350
350
  }
351
351
  }
352
352
 
@@ -503,32 +503,32 @@ function addNewGroup() {
503
503
  </script>
504
504
 
505
505
  <template>
506
- <div class="mld-sample-selector">
506
+ <div class="mint-sample-selector">
507
507
  <!-- Select All Row -->
508
- <label class="mld-sample-selector__select-all">
508
+ <label class="mint-sample-selector__select-all">
509
509
  <input
510
510
  type="checkbox"
511
511
  :checked="isAllSelected"
512
512
  @change="toggleSelectAll"
513
- class="mld-sample-selector__checkbox"
513
+ class="mint-sample-selector__checkbox"
514
514
  />
515
- <span class="mld-sample-selector__select-all-label">Select All</span>
516
- <span class="mld-sample-selector__select-all-count">{{ samples.length }} samples</span>
515
+ <span class="mint-sample-selector__select-all-label">Select All</span>
516
+ <span class="mint-sample-selector__select-all-count">{{ samples.length }} samples</span>
517
517
  </label>
518
518
 
519
519
  <!-- Action Buttons Row -->
520
- <div v-if="enableGrouping" class="mld-sample-selector__actions">
521
- <div class="mld-sample-selector__actions-row">
520
+ <div v-if="enableGrouping" class="mint-sample-selector__actions">
521
+ <div class="mint-sample-selector__actions-row">
522
522
  <!-- Smart Group Button -->
523
523
  <BaseButton
524
524
  v-if="enableSmartGroup"
525
525
  :variant="groupingEnabled ? 'primary' : 'secondary'"
526
526
  size="sm"
527
527
  :disabled="samples.length === 0"
528
- class="mld-sample-selector__action-btn"
528
+ class="mint-sample-selector__action-btn"
529
529
  @click="showSmartGroupModal = true"
530
530
  >
531
- <svg class="mld-sample-selector__action-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
531
+ <svg class="mint-sample-selector__action-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
532
532
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 10V3L4 14h7v7l9-11h-7z" />
533
533
  </svg>
534
534
  <span>Smart Group</span>
@@ -539,11 +539,11 @@ function addNewGroup() {
539
539
  variant="ghost"
540
540
  size="sm"
541
541
  :disabled="internalGroups.length === 0"
542
- class="mld-sample-selector__action-btn mld-sample-selector__action-btn--reset"
542
+ class="mint-sample-selector__action-btn mint-sample-selector__action-btn--reset"
543
543
  @click="clearGroups"
544
544
  title="Clear all groups"
545
545
  >
546
- <svg class="mld-sample-selector__action-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
546
+ <svg class="mint-sample-selector__action-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
547
547
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15" />
548
548
  </svg>
549
549
  </BaseButton>
@@ -551,18 +551,18 @@ function addNewGroup() {
551
551
  </div>
552
552
 
553
553
  <!-- Grouped View -->
554
- <div v-if="groupingEnabled" class="mld-sample-selector__grouped">
554
+ <div v-if="groupingEnabled" class="mint-sample-selector__grouped">
555
555
  <!-- Groups Header -->
556
- <div class="mld-sample-selector__groups-header">
557
- <span class="mld-sample-selector__groups-title">Groups ({{ internalGroups.length }})</span>
558
- <div class="mld-sample-selector__groups-controls">
559
- <button type="button" class="mld-sample-selector__expand-btn" @click="expandAllGroups" title="Expand all">
560
- <svg class="mld-sample-selector__expand-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
556
+ <div class="mint-sample-selector__groups-header">
557
+ <span class="mint-sample-selector__groups-title">Groups ({{ internalGroups.length }})</span>
558
+ <div class="mint-sample-selector__groups-controls">
559
+ <button type="button" class="mint-sample-selector__expand-btn" @click="expandAllGroups" title="Expand all">
560
+ <svg class="mint-sample-selector__expand-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
561
561
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7" />
562
562
  </svg>
563
563
  </button>
564
- <button type="button" class="mld-sample-selector__expand-btn" @click="collapseAllGroups" title="Collapse all">
565
- <svg class="mld-sample-selector__expand-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
564
+ <button type="button" class="mint-sample-selector__expand-btn" @click="collapseAllGroups" title="Collapse all">
565
+ <svg class="mint-sample-selector__expand-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
566
566
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" />
567
567
  </svg>
568
568
  </button>
@@ -570,21 +570,21 @@ function addNewGroup() {
570
570
  </div>
571
571
 
572
572
  <!-- Hierarchical Tree -->
573
- <div class="mld-sample-selector__tree">
573
+ <div class="mint-sample-selector__tree">
574
574
  <!-- Major Groups (when hierarchy is meaningful) -->
575
575
  <template v-if="showHierarchy">
576
576
  <div
577
577
  v-for="majorGroup in hierarchicalGroups"
578
578
  :key="majorGroup.name"
579
- class="mld-sample-selector__major-group"
579
+ class="mint-sample-selector__major-group"
580
580
  >
581
581
  <!-- Major Group Header -->
582
582
  <div
583
583
  :class="[
584
- 'mld-sample-selector__major-header',
585
- draggingGroup === majorGroup.name && draggingGroupKind === 'major' ? 'mld-sample-selector__header--dragging' : '',
586
- reorderTarget === majorGroup.name && draggingGroupKind === 'major' && reorderPosition === 'before' ? 'mld-sample-selector__header--drag-over-before' : '',
587
- reorderTarget === majorGroup.name && draggingGroupKind === 'major' && reorderPosition === 'after' ? 'mld-sample-selector__header--drag-over-after' : '',
584
+ 'mint-sample-selector__major-header',
585
+ draggingGroup === majorGroup.name && draggingGroupKind === 'major' ? 'mint-sample-selector__header--dragging' : '',
586
+ reorderTarget === majorGroup.name && draggingGroupKind === 'major' && reorderPosition === 'before' ? 'mint-sample-selector__header--drag-over-before' : '',
587
+ reorderTarget === majorGroup.name && draggingGroupKind === 'major' && reorderPosition === 'after' ? 'mint-sample-selector__header--drag-over-after' : '',
588
588
  ]"
589
589
  draggable="true"
590
590
  @click="toggleGroupExpanded(`major:${majorGroup.name}`)"
@@ -596,8 +596,8 @@ function addNewGroup() {
596
596
  >
597
597
  <svg
598
598
  :class="[
599
- 'mld-sample-selector__chevron',
600
- isGroupExpanded(`major:${majorGroup.name}`) ? 'mld-sample-selector__chevron--open' : '',
599
+ 'mint-sample-selector__chevron',
600
+ isGroupExpanded(`major:${majorGroup.name}`) ? 'mint-sample-selector__chevron--open' : '',
601
601
  ]"
602
602
  fill="none" stroke="currentColor" viewBox="0 0 24 24"
603
603
  >
@@ -608,7 +608,7 @@ function addNewGroup() {
608
608
  type="checkbox"
609
609
  :checked="isMajorGroupFullySelected(majorGroup)"
610
610
  :indeterminate="isMajorGroupPartiallySelected(majorGroup)"
611
- class="mld-sample-selector__checkbox"
611
+ class="mint-sample-selector__checkbox"
612
612
  :style="{ accentColor: majorGroup.color }"
613
613
  @click.stop
614
614
  @change="toggleMajorGroupSamples(majorGroup)"
@@ -616,16 +616,16 @@ function addNewGroup() {
616
616
 
617
617
  <button
618
618
  type="button"
619
- class="mld-sample-selector__color-dot mld-sample-selector__color-dot--large mld-sample-selector__color-dot--clickable"
619
+ class="mint-sample-selector__color-dot mint-sample-selector__color-dot--large mint-sample-selector__color-dot--clickable"
620
620
  :style="{ backgroundColor: majorGroup.color }"
621
621
  @click.stop="openMajorGroupColorPicker(majorGroup, $event)"
622
622
  title="Click to change color family"
623
623
  />
624
624
 
625
- <span class="mld-sample-selector__major-name">{{ majorGroup.name }}</span>
625
+ <span class="mint-sample-selector__major-name">{{ majorGroup.name }}</span>
626
626
 
627
627
  <span
628
- class="mld-sample-selector__count-badge"
628
+ class="mint-sample-selector__count-badge"
629
629
  :style="{ backgroundColor: majorGroup.color + '20', color: majorGroup.color }"
630
630
  >
631
631
  {{ majorGroup.allSamples.length }}
@@ -633,7 +633,7 @@ function addNewGroup() {
633
633
 
634
634
  <button
635
635
  type="button"
636
- class="mld-sample-selector__delete-btn mld-sample-selector__delete-btn--hidden"
636
+ class="mint-sample-selector__delete-btn mint-sample-selector__delete-btn--hidden"
637
637
  @click.stop="deleteMajorGroup(majorGroup)"
638
638
  title="Remove major group"
639
639
  >
@@ -644,18 +644,18 @@ function addNewGroup() {
644
644
  </div>
645
645
 
646
646
  <!-- Sub Groups (collapsible) -->
647
- <Transition name="mld-collapse">
647
+ <Transition name="mint-collapse">
648
648
  <div
649
649
  v-if="isGroupExpanded(`major:${majorGroup.name}`)"
650
- class="mld-sample-selector__sub-groups"
650
+ class="mint-sample-selector__sub-groups"
651
651
  :style="{ borderColor: majorGroup.color + '30' }"
652
652
  >
653
653
  <div
654
654
  v-for="subGroup in majorGroup.subGroups"
655
655
  :key="subGroup.name"
656
656
  :class="[
657
- 'mld-sample-selector__sub-group',
658
- dragOverGroup === subGroup.name ? 'mld-sample-selector__sub-group--drag-over' : '',
657
+ 'mint-sample-selector__sub-group',
658
+ dragOverGroup === subGroup.name ? 'mint-sample-selector__sub-group--drag-over' : '',
659
659
  ]"
660
660
  @dragover="handleDragOver(subGroup.name, $event)"
661
661
  @dragleave="handleDragLeave"
@@ -664,10 +664,10 @@ function addNewGroup() {
664
664
  <!-- Sub Group Header -->
665
665
  <div
666
666
  :class="[
667
- 'mld-sample-selector__sub-header',
668
- draggingGroup === subGroup.name && draggingGroupKind === 'sub' ? 'mld-sample-selector__header--dragging' : '',
669
- reorderTarget === subGroup.name && draggingGroupKind === 'sub' && reorderPosition === 'before' ? 'mld-sample-selector__header--drag-over-before' : '',
670
- reorderTarget === subGroup.name && draggingGroupKind === 'sub' && reorderPosition === 'after' ? 'mld-sample-selector__header--drag-over-after' : '',
667
+ 'mint-sample-selector__sub-header',
668
+ draggingGroup === subGroup.name && draggingGroupKind === 'sub' ? 'mint-sample-selector__header--dragging' : '',
669
+ reorderTarget === subGroup.name && draggingGroupKind === 'sub' && reorderPosition === 'before' ? 'mint-sample-selector__header--drag-over-before' : '',
670
+ reorderTarget === subGroup.name && draggingGroupKind === 'sub' && reorderPosition === 'after' ? 'mint-sample-selector__header--drag-over-after' : '',
671
671
  ]"
672
672
  draggable="true"
673
673
  @click="toggleGroupExpanded(subGroup.name)"
@@ -679,8 +679,8 @@ function addNewGroup() {
679
679
  >
680
680
  <svg
681
681
  :class="[
682
- 'mld-sample-selector__chevron mld-sample-selector__chevron--small',
683
- isGroupExpanded(subGroup.name) ? 'mld-sample-selector__chevron--open' : '',
682
+ 'mint-sample-selector__chevron mint-sample-selector__chevron--small',
683
+ isGroupExpanded(subGroup.name) ? 'mint-sample-selector__chevron--open' : '',
684
684
  ]"
685
685
  fill="none" stroke="currentColor" viewBox="0 0 24 24"
686
686
  >
@@ -691,22 +691,22 @@ function addNewGroup() {
691
691
  type="checkbox"
692
692
  :checked="isGroupFullySelected(subGroup.name)"
693
693
  :indeterminate="isGroupPartiallySelected(subGroup.name)"
694
- class="mld-sample-selector__checkbox mld-sample-selector__checkbox--small"
694
+ class="mint-sample-selector__checkbox mint-sample-selector__checkbox--small"
695
695
  :style="{ accentColor: subGroup.displayColor }"
696
696
  @click.stop
697
697
  @change="toggleGroupSamples(subGroup.name)"
698
698
  />
699
699
 
700
700
  <div
701
- class="mld-sample-selector__color-dot"
701
+ class="mint-sample-selector__color-dot"
702
702
  :style="{ backgroundColor: subGroup.displayColor }"
703
703
  aria-hidden="true"
704
704
  />
705
705
 
706
- <span class="mld-sample-selector__sub-name">{{ subGroup.name }}</span>
706
+ <span class="mint-sample-selector__sub-name">{{ subGroup.name }}</span>
707
707
 
708
708
  <span
709
- class="mld-sample-selector__count-badge mld-sample-selector__count-badge--small"
709
+ class="mint-sample-selector__count-badge mint-sample-selector__count-badge--small"
710
710
  :style="{ backgroundColor: subGroup.displayBg, color: subGroup.displayColor }"
711
711
  >
712
712
  {{ subGroup.samples.length }}
@@ -714,7 +714,7 @@ function addNewGroup() {
714
714
 
715
715
  <button
716
716
  type="button"
717
- class="mld-sample-selector__delete-btn mld-sample-selector__delete-btn--hidden"
717
+ class="mint-sample-selector__delete-btn mint-sample-selector__delete-btn--hidden"
718
718
  @click.stop="deleteGroup(subGroup.name)"
719
719
  title="Remove sub group"
720
720
  >
@@ -725,37 +725,37 @@ function addNewGroup() {
725
725
  </div>
726
726
 
727
727
  <!-- Samples (collapsible) -->
728
- <Transition name="mld-collapse">
728
+ <Transition name="mint-collapse">
729
729
  <div
730
730
  v-if="isGroupExpanded(subGroup.name)"
731
- class="mld-sample-selector__samples"
731
+ class="mint-sample-selector__samples"
732
732
  :style="{ borderColor: subGroup.displayBorder }"
733
733
  >
734
734
  <div
735
735
  v-for="sample in subGroup.samples"
736
736
  :key="sample"
737
737
  :class="[
738
- 'mld-sample-selector__sample',
739
- draggingSample === sample ? 'mld-sample-selector__sample--dragging' : '',
738
+ 'mint-sample-selector__sample',
739
+ draggingSample === sample ? 'mint-sample-selector__sample--dragging' : '',
740
740
  ]"
741
741
  draggable="true"
742
742
  @dragstart="handleDragStart(sample, subGroup.name, $event)"
743
743
  @dragend="handleDragEnd"
744
744
  >
745
- <svg class="mld-sample-selector__drag-handle" fill="none" stroke="currentColor" viewBox="0 0 24 24">
745
+ <svg class="mint-sample-selector__drag-handle" fill="none" stroke="currentColor" viewBox="0 0 24 24">
746
746
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 8h16M4 16h16" />
747
747
  </svg>
748
748
  <input
749
749
  type="checkbox"
750
750
  :checked="modelValue.includes(sample)"
751
- class="mld-sample-selector__checkbox mld-sample-selector__checkbox--tiny"
751
+ class="mint-sample-selector__checkbox mint-sample-selector__checkbox--tiny"
752
752
  :style="{ accentColor: subGroup.displayColor }"
753
753
  @change="toggleSample(sample)"
754
754
  />
755
- <span class="mld-sample-selector__sample-name">{{ sample }}</span>
755
+ <span class="mint-sample-selector__sample-name">{{ sample }}</span>
756
756
  <button
757
757
  type="button"
758
- class="mld-sample-selector__remove-btn"
758
+ class="mint-sample-selector__remove-btn"
759
759
  @click="removeSampleFromGroup(sample, subGroup.name)"
760
760
  title="Remove from group"
761
761
  >
@@ -778,8 +778,8 @@ function addNewGroup() {
778
778
  v-for="group in internalGroups"
779
779
  :key="group.name"
780
780
  :class="[
781
- 'mld-sample-selector__sub-group',
782
- dragOverGroup === group.name ? 'mld-sample-selector__sub-group--drag-over' : '',
781
+ 'mint-sample-selector__sub-group',
782
+ dragOverGroup === group.name ? 'mint-sample-selector__sub-group--drag-over' : '',
783
783
  ]"
784
784
  @dragover="handleDragOver(group.name, $event)"
785
785
  @dragleave="handleDragLeave"
@@ -788,10 +788,10 @@ function addNewGroup() {
788
788
  <!-- Group Header -->
789
789
  <div
790
790
  :class="[
791
- 'mld-sample-selector__major-header',
792
- draggingGroup === group.name && draggingGroupKind === 'flat' ? 'mld-sample-selector__header--dragging' : '',
793
- reorderTarget === group.name && draggingGroupKind === 'flat' && reorderPosition === 'before' ? 'mld-sample-selector__header--drag-over-before' : '',
794
- reorderTarget === group.name && draggingGroupKind === 'flat' && reorderPosition === 'after' ? 'mld-sample-selector__header--drag-over-after' : '',
791
+ 'mint-sample-selector__major-header',
792
+ draggingGroup === group.name && draggingGroupKind === 'flat' ? 'mint-sample-selector__header--dragging' : '',
793
+ reorderTarget === group.name && draggingGroupKind === 'flat' && reorderPosition === 'before' ? 'mint-sample-selector__header--drag-over-before' : '',
794
+ reorderTarget === group.name && draggingGroupKind === 'flat' && reorderPosition === 'after' ? 'mint-sample-selector__header--drag-over-after' : '',
795
795
  ]"
796
796
  draggable="true"
797
797
  @click="toggleGroupExpanded(group.name)"
@@ -803,8 +803,8 @@ function addNewGroup() {
803
803
  >
804
804
  <svg
805
805
  :class="[
806
- 'mld-sample-selector__chevron',
807
- isGroupExpanded(group.name) ? 'mld-sample-selector__chevron--open' : '',
806
+ 'mint-sample-selector__chevron',
807
+ isGroupExpanded(group.name) ? 'mint-sample-selector__chevron--open' : '',
808
808
  ]"
809
809
  fill="none" stroke="currentColor" viewBox="0 0 24 24"
810
810
  >
@@ -815,7 +815,7 @@ function addNewGroup() {
815
815
  type="checkbox"
816
816
  :checked="isGroupFullySelected(group.name)"
817
817
  :indeterminate="isGroupPartiallySelected(group.name)"
818
- class="mld-sample-selector__checkbox"
818
+ class="mint-sample-selector__checkbox"
819
819
  :style="{ accentColor: group.color }"
820
820
  @click.stop
821
821
  @change="toggleGroupSamples(group.name)"
@@ -823,16 +823,16 @@ function addNewGroup() {
823
823
 
824
824
  <button
825
825
  type="button"
826
- class="mld-sample-selector__color-dot mld-sample-selector__color-dot--large mld-sample-selector__color-dot--clickable"
826
+ class="mint-sample-selector__color-dot mint-sample-selector__color-dot--large mint-sample-selector__color-dot--clickable"
827
827
  :style="{ backgroundColor: group.color }"
828
828
  @click.stop="openColorPicker(group.name, $event)"
829
829
  title="Click to change color"
830
830
  />
831
831
 
832
- <span class="mld-sample-selector__major-name">{{ group.name }}</span>
832
+ <span class="mint-sample-selector__major-name">{{ group.name }}</span>
833
833
 
834
834
  <span
835
- class="mld-sample-selector__count-badge"
835
+ class="mint-sample-selector__count-badge"
836
836
  :style="{ backgroundColor: group.color + '20', color: group.color }"
837
837
  >
838
838
  {{ group.samples.length }}
@@ -840,7 +840,7 @@ function addNewGroup() {
840
840
 
841
841
  <button
842
842
  type="button"
843
- class="mld-sample-selector__delete-btn mld-sample-selector__delete-btn--hidden"
843
+ class="mint-sample-selector__delete-btn mint-sample-selector__delete-btn--hidden"
844
844
  @click.stop="deleteGroup(group.name)"
845
845
  title="Remove group"
846
846
  >
@@ -851,37 +851,37 @@ function addNewGroup() {
851
851
  </div>
852
852
 
853
853
  <!-- Samples (collapsible) -->
854
- <Transition name="mld-collapse">
854
+ <Transition name="mint-collapse">
855
855
  <div
856
856
  v-if="isGroupExpanded(group.name)"
857
- class="mld-sample-selector__samples"
857
+ class="mint-sample-selector__samples"
858
858
  :style="{ borderColor: group.color + '40' }"
859
859
  >
860
860
  <div
861
861
  v-for="sample in group.samples"
862
862
  :key="sample"
863
863
  :class="[
864
- 'mld-sample-selector__sample',
865
- draggingSample === sample ? 'mld-sample-selector__sample--dragging' : '',
864
+ 'mint-sample-selector__sample',
865
+ draggingSample === sample ? 'mint-sample-selector__sample--dragging' : '',
866
866
  ]"
867
867
  draggable="true"
868
868
  @dragstart="handleDragStart(sample, group.name, $event)"
869
869
  @dragend="handleDragEnd"
870
870
  >
871
- <svg class="mld-sample-selector__drag-handle" fill="none" stroke="currentColor" viewBox="0 0 24 24">
871
+ <svg class="mint-sample-selector__drag-handle" fill="none" stroke="currentColor" viewBox="0 0 24 24">
872
872
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 8h16M4 16h16" />
873
873
  </svg>
874
874
  <input
875
875
  type="checkbox"
876
876
  :checked="modelValue.includes(sample)"
877
- class="mld-sample-selector__checkbox mld-sample-selector__checkbox--tiny"
877
+ class="mint-sample-selector__checkbox mint-sample-selector__checkbox--tiny"
878
878
  :style="{ accentColor: group.color }"
879
879
  @change="toggleSample(sample)"
880
880
  />
881
- <span class="mld-sample-selector__sample-name">{{ sample }}</span>
881
+ <span class="mint-sample-selector__sample-name">{{ sample }}</span>
882
882
  <button
883
883
  type="button"
884
- class="mld-sample-selector__remove-btn"
884
+ class="mint-sample-selector__remove-btn"
885
885
  @click="removeSampleFromGroup(sample, group.name)"
886
886
  title="Remove from group"
887
887
  >
@@ -896,74 +896,74 @@ function addNewGroup() {
896
896
  </template>
897
897
 
898
898
  <!-- Empty state -->
899
- <div v-if="internalGroups.length === 0" class="mld-sample-selector__empty">
899
+ <div v-if="internalGroups.length === 0" class="mint-sample-selector__empty">
900
900
  Click Smart Group to auto-group samples
901
901
  </div>
902
902
  </div>
903
903
 
904
904
  <!-- Ungrouped Samples Section -->
905
- <div v-if="ungroupedSamples.length > 0" class="mld-sample-selector__ungrouped">
905
+ <div v-if="ungroupedSamples.length > 0" class="mint-sample-selector__ungrouped">
906
906
  <div
907
- class="mld-sample-selector__ungrouped-header"
907
+ class="mint-sample-selector__ungrouped-header"
908
908
  @click="toggleGroupExpanded('__ungrouped__')"
909
909
  >
910
910
  <svg
911
911
  :class="[
912
- 'mld-sample-selector__chevron',
913
- isGroupExpanded('__ungrouped__') ? 'mld-sample-selector__chevron--open' : '',
912
+ 'mint-sample-selector__chevron',
913
+ isGroupExpanded('__ungrouped__') ? 'mint-sample-selector__chevron--open' : '',
914
914
  ]"
915
915
  fill="none" stroke="currentColor" viewBox="0 0 24 24"
916
916
  >
917
917
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7" />
918
918
  </svg>
919
- <span class="mld-sample-selector__ungrouped-label">Ungrouped</span>
920
- <span class="mld-sample-selector__ungrouped-count">{{ ungroupedSamples.length }}</span>
919
+ <span class="mint-sample-selector__ungrouped-label">Ungrouped</span>
920
+ <span class="mint-sample-selector__ungrouped-count">{{ ungroupedSamples.length }}</span>
921
921
  </div>
922
922
 
923
- <Transition name="mld-collapse">
923
+ <Transition name="mint-collapse">
924
924
  <div
925
925
  v-if="isGroupExpanded('__ungrouped__')"
926
- class="mld-sample-selector__ungrouped-list"
926
+ class="mint-sample-selector__ungrouped-list"
927
927
  >
928
928
  <div
929
929
  v-for="sample in ungroupedSamples"
930
930
  :key="sample"
931
931
  :class="[
932
- 'mld-sample-selector__sample',
933
- draggingSample === sample ? 'mld-sample-selector__sample--dragging' : '',
932
+ 'mint-sample-selector__sample',
933
+ draggingSample === sample ? 'mint-sample-selector__sample--dragging' : '',
934
934
  ]"
935
935
  draggable="true"
936
936
  @dragstart="handleDragStart(sample, null, $event)"
937
937
  @dragend="handleDragEnd"
938
938
  >
939
- <svg class="mld-sample-selector__drag-handle" fill="none" stroke="currentColor" viewBox="0 0 24 24">
939
+ <svg class="mint-sample-selector__drag-handle" fill="none" stroke="currentColor" viewBox="0 0 24 24">
940
940
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 8h16M4 16h16" />
941
941
  </svg>
942
942
  <input
943
943
  type="checkbox"
944
944
  :checked="modelValue.includes(sample)"
945
- class="mld-sample-selector__checkbox mld-sample-selector__checkbox--small"
945
+ class="mint-sample-selector__checkbox mint-sample-selector__checkbox--small"
946
946
  @change="toggleSample(sample)"
947
947
  />
948
- <span class="mld-sample-selector__sample-name">{{ sample }}</span>
948
+ <span class="mint-sample-selector__sample-name">{{ sample }}</span>
949
949
  </div>
950
950
  </div>
951
951
  </Transition>
952
952
  </div>
953
953
 
954
954
  <!-- New Group Input -->
955
- <div class="mld-sample-selector__new-group">
955
+ <div class="mint-sample-selector__new-group">
956
956
  <BaseInput
957
957
  v-model="newGroupName"
958
958
  placeholder="New group name..."
959
- class="mld-sample-selector__new-group-input"
959
+ class="mint-sample-selector__new-group-input"
960
960
  @keyup.enter="addNewGroup"
961
961
  />
962
962
  <BaseButton
963
963
  variant="ghost"
964
964
  size="sm"
965
965
  :disabled="!newGroupName.trim()"
966
- class="mld-sample-selector__new-group-btn"
966
+ class="mint-sample-selector__new-group-btn"
967
967
  @click="addNewGroup"
968
968
  >
969
969
  Add
@@ -974,44 +974,44 @@ function addNewGroup() {
974
974
  <input
975
975
  ref="colorPickerInput"
976
976
  type="color"
977
- class="mld-sample-selector__color-input"
977
+ class="mint-sample-selector__color-input"
978
978
  :value="colorPickerSeed"
979
979
  @change="handleColorChange"
980
980
  />
981
981
  </div>
982
982
 
983
983
  <!-- Flat View (when no groups) -->
984
- <div v-if="!groupingEnabled" class="mld-sample-selector__flat">
984
+ <div v-if="!groupingEnabled" class="mint-sample-selector__flat">
985
985
  <!-- Search -->
986
- <div class="mld-sample-selector__search">
987
- <svg class="mld-sample-selector__search-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
986
+ <div class="mint-sample-selector__search">
987
+ <svg class="mint-sample-selector__search-icon" fill="none" stroke="currentColor" viewBox="0 0 24 24">
988
988
  <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z" />
989
989
  </svg>
990
990
  <input
991
991
  v-model="searchQuery"
992
992
  type="text"
993
993
  placeholder="Search samples..."
994
- class="mld-sample-selector__search-input"
994
+ class="mint-sample-selector__search-input"
995
995
  />
996
996
  </div>
997
997
 
998
998
  <!-- Flat samples list -->
999
- <div class="mld-sample-selector__flat-list">
999
+ <div class="mint-sample-selector__flat-list">
1000
1000
  <div
1001
1001
  v-for="sample in filteredSamples"
1002
1002
  :key="sample"
1003
- class="mld-sample-selector__flat-item"
1003
+ class="mint-sample-selector__flat-item"
1004
1004
  >
1005
1005
  <input
1006
1006
  type="checkbox"
1007
1007
  :checked="modelValue.includes(sample)"
1008
- class="mld-sample-selector__checkbox"
1008
+ class="mint-sample-selector__checkbox"
1009
1009
  @change="toggleSample(sample)"
1010
1010
  />
1011
- <span class="mld-sample-selector__flat-name">{{ sample }}</span>
1011
+ <span class="mint-sample-selector__flat-name">{{ sample }}</span>
1012
1012
  </div>
1013
1013
 
1014
- <div v-if="filteredSamples.length === 0 && searchQuery.trim()" class="mld-sample-selector__empty">
1014
+ <div v-if="filteredSamples.length === 0 && searchQuery.trim()" class="mint-sample-selector__empty">
1015
1015
  No samples match "{{ searchQuery }}"
1016
1016
  </div>
1017
1017
  </div>