@morscherlab/mint-sdk 1.0.0-alpha.8 → 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
@@ -15,36 +15,36 @@ describe('DropdownButton', () => {
15
15
  const wrapper = mount(DropdownButton, {
16
16
  props: { options: mockOptions },
17
17
  })
18
- expect(wrapper.find('.mld-dropdown-button').exists()).toBe(true)
19
- expect(wrapper.find('.mld-dropdown-button__trigger').exists()).toBe(true)
18
+ expect(wrapper.find('.mint-dropdown-button').exists()).toBe(true)
19
+ expect(wrapper.find('.mint-dropdown-button__trigger').exists()).toBe(true)
20
20
  })
21
21
 
22
22
  it('should show placeholder when no value is selected', () => {
23
23
  const wrapper = mount(DropdownButton, {
24
24
  props: { options: mockOptions },
25
25
  })
26
- expect(wrapper.find('.mld-dropdown-button__label').text()).toBe('Select...')
26
+ expect(wrapper.find('.mint-dropdown-button__label').text()).toBe('Select...')
27
27
  })
28
28
 
29
29
  it('should show custom placeholder', () => {
30
30
  const wrapper = mount(DropdownButton, {
31
31
  props: { options: mockOptions, placeholder: 'Choose an option' },
32
32
  })
33
- expect(wrapper.find('.mld-dropdown-button__label').text()).toBe('Choose an option')
33
+ expect(wrapper.find('.mint-dropdown-button__label').text()).toBe('Choose an option')
34
34
  })
35
35
 
36
36
  it('should be closed by default', () => {
37
37
  const wrapper = mount(DropdownButton, {
38
38
  props: { options: mockOptions },
39
39
  })
40
- expect(wrapper.find('.mld-dropdown-button__menu').exists()).toBe(false)
40
+ expect(wrapper.find('.mint-dropdown-button__menu').exists()).toBe(false)
41
41
  })
42
42
 
43
43
  it('should have chevron icon', () => {
44
44
  const wrapper = mount(DropdownButton, {
45
45
  props: { options: mockOptions },
46
46
  })
47
- expect(wrapper.find('.mld-dropdown-button__chevron').exists()).toBe(true)
47
+ expect(wrapper.find('.mint-dropdown-button__chevron').exists()).toBe(true)
48
48
  })
49
49
  })
50
50
 
@@ -53,22 +53,22 @@ describe('DropdownButton', () => {
53
53
  const wrapper = mount(DropdownButton, {
54
54
  props: { options: mockOptions, modelValue: 'b' },
55
55
  })
56
- expect(wrapper.find('.mld-dropdown-button__label').text()).toBe('Option B')
56
+ expect(wrapper.find('.mint-dropdown-button__label').text()).toBe('Option B')
57
57
  })
58
58
 
59
59
  it('should fallback to value when option not found', () => {
60
60
  const wrapper = mount(DropdownButton, {
61
61
  props: { options: mockOptions, modelValue: 'unknown' },
62
62
  })
63
- expect(wrapper.find('.mld-dropdown-button__label').text()).toBe('unknown')
63
+ expect(wrapper.find('.mint-dropdown-button__label').text()).toBe('unknown')
64
64
  })
65
65
 
66
66
  it('should emit update:modelValue when option is selected', async () => {
67
67
  const wrapper = mount(DropdownButton, {
68
68
  props: { options: mockOptions },
69
69
  })
70
- await wrapper.find('.mld-dropdown-button__trigger').trigger('click')
71
- await wrapper.findAll('.mld-dropdown-button__option')[0].trigger('click')
70
+ await wrapper.find('.mint-dropdown-button__trigger').trigger('click')
71
+ await wrapper.findAll('.mint-dropdown-button__option')[0].trigger('click')
72
72
 
73
73
  expect(wrapper.emitted('update:modelValue')).toHaveLength(1)
74
74
  expect(wrapper.emitted('update:modelValue')?.[0]).toEqual(['a'])
@@ -78,8 +78,8 @@ describe('DropdownButton', () => {
78
78
  const wrapper = mount(DropdownButton, {
79
79
  props: { options: mockOptions },
80
80
  })
81
- await wrapper.find('.mld-dropdown-button__trigger').trigger('click')
82
- await wrapper.findAll('.mld-dropdown-button__option')[1].trigger('click')
81
+ await wrapper.find('.mint-dropdown-button__trigger').trigger('click')
82
+ await wrapper.findAll('.mint-dropdown-button__option')[1].trigger('click')
83
83
 
84
84
  expect(wrapper.emitted('select')).toHaveLength(1)
85
85
  expect(wrapper.emitted('select')?.[0]).toEqual([mockOptions[1]])
@@ -91,46 +91,46 @@ describe('DropdownButton', () => {
91
91
  const wrapper = mount(DropdownButton, {
92
92
  props: { options: mockOptions },
93
93
  })
94
- await wrapper.find('.mld-dropdown-button__trigger').trigger('click')
95
- expect(wrapper.find('.mld-dropdown-button__menu').exists()).toBe(true)
94
+ await wrapper.find('.mint-dropdown-button__trigger').trigger('click')
95
+ expect(wrapper.find('.mint-dropdown-button__menu').exists()).toBe(true)
96
96
  })
97
97
 
98
98
  it('should close menu when trigger is clicked again', async () => {
99
99
  const wrapper = mount(DropdownButton, {
100
100
  props: { options: mockOptions },
101
101
  })
102
- const trigger = wrapper.find('.mld-dropdown-button__trigger')
102
+ const trigger = wrapper.find('.mint-dropdown-button__trigger')
103
103
  await trigger.trigger('click')
104
- expect(wrapper.find('.mld-dropdown-button__menu').exists()).toBe(true)
104
+ expect(wrapper.find('.mint-dropdown-button__menu').exists()).toBe(true)
105
105
  await trigger.trigger('click')
106
- expect(wrapper.find('.mld-dropdown-button__menu').exists()).toBe(false)
106
+ expect(wrapper.find('.mint-dropdown-button__menu').exists()).toBe(false)
107
107
  })
108
108
 
109
109
  it('should apply open class to trigger when menu is open', async () => {
110
110
  const wrapper = mount(DropdownButton, {
111
111
  props: { options: mockOptions },
112
112
  })
113
- await wrapper.find('.mld-dropdown-button__trigger').trigger('click')
114
- expect(wrapper.find('.mld-dropdown-button__trigger--open').exists()).toBe(true)
113
+ await wrapper.find('.mint-dropdown-button__trigger').trigger('click')
114
+ expect(wrapper.find('.mint-dropdown-button__trigger--open').exists()).toBe(true)
115
115
  })
116
116
 
117
117
  it('should rotate chevron when open', async () => {
118
118
  const wrapper = mount(DropdownButton, {
119
119
  props: { options: mockOptions },
120
120
  })
121
- await wrapper.find('.mld-dropdown-button__trigger').trigger('click')
122
- expect(wrapper.find('.mld-dropdown-button__chevron--open').exists()).toBe(true)
121
+ await wrapper.find('.mint-dropdown-button__trigger').trigger('click')
122
+ expect(wrapper.find('.mint-dropdown-button__chevron--open').exists()).toBe(true)
123
123
  })
124
124
 
125
125
  it('should close menu after selecting an option', async () => {
126
126
  const wrapper = mount(DropdownButton, {
127
127
  props: { options: mockOptions },
128
128
  })
129
- await wrapper.find('.mld-dropdown-button__trigger').trigger('click')
130
- expect(wrapper.find('.mld-dropdown-button__menu').exists()).toBe(true)
129
+ await wrapper.find('.mint-dropdown-button__trigger').trigger('click')
130
+ expect(wrapper.find('.mint-dropdown-button__menu').exists()).toBe(true)
131
131
 
132
- await wrapper.findAll('.mld-dropdown-button__option')[0].trigger('click')
133
- expect(wrapper.find('.mld-dropdown-button__menu').exists()).toBe(false)
132
+ await wrapper.findAll('.mint-dropdown-button__option')[0].trigger('click')
133
+ expect(wrapper.find('.mint-dropdown-button__menu').exists()).toBe(false)
134
134
  })
135
135
  })
136
136
 
@@ -139,9 +139,9 @@ describe('DropdownButton', () => {
139
139
  const wrapper = mount(DropdownButton, {
140
140
  props: { options: mockOptions },
141
141
  })
142
- await wrapper.find('.mld-dropdown-button__trigger').trigger('click')
142
+ await wrapper.find('.mint-dropdown-button__trigger').trigger('click')
143
143
 
144
- const options = wrapper.findAll('.mld-dropdown-button__option')
144
+ const options = wrapper.findAll('.mint-dropdown-button__option')
145
145
  expect(options).toHaveLength(3)
146
146
  })
147
147
 
@@ -149,9 +149,9 @@ describe('DropdownButton', () => {
149
149
  const wrapper = mount(DropdownButton, {
150
150
  props: { options: mockOptions },
151
151
  })
152
- await wrapper.find('.mld-dropdown-button__trigger').trigger('click')
152
+ await wrapper.find('.mint-dropdown-button__trigger').trigger('click')
153
153
 
154
- const labels = wrapper.findAll('.mld-dropdown-button__option-label')
154
+ const labels = wrapper.findAll('.mint-dropdown-button__option-label')
155
155
  expect(labels[0].text()).toBe('Option A')
156
156
  expect(labels[1].text()).toBe('Option B')
157
157
  expect(labels[2].text()).toBe('Option C')
@@ -161,9 +161,9 @@ describe('DropdownButton', () => {
161
161
  const wrapper = mount(DropdownButton, {
162
162
  props: { options: mockOptions },
163
163
  })
164
- await wrapper.find('.mld-dropdown-button__trigger').trigger('click')
164
+ await wrapper.find('.mint-dropdown-button__trigger').trigger('click')
165
165
 
166
- const descriptions = wrapper.findAll('.mld-dropdown-button__option-description')
166
+ const descriptions = wrapper.findAll('.mint-dropdown-button__option-description')
167
167
  expect(descriptions).toHaveLength(1)
168
168
  expect(descriptions[0].text()).toBe('Description for B')
169
169
  })
@@ -172,9 +172,9 @@ describe('DropdownButton', () => {
172
172
  const wrapper = mount(DropdownButton, {
173
173
  props: { options: mockOptions, modelValue: 'a' },
174
174
  })
175
- await wrapper.find('.mld-dropdown-button__trigger').trigger('click')
175
+ await wrapper.find('.mint-dropdown-button__trigger').trigger('click')
176
176
 
177
- const selectedOption = wrapper.find('.mld-dropdown-button__option--selected')
177
+ const selectedOption = wrapper.find('.mint-dropdown-button__option--selected')
178
178
  expect(selectedOption.exists()).toBe(true)
179
179
  })
180
180
 
@@ -182,10 +182,10 @@ describe('DropdownButton', () => {
182
182
  const wrapper = mount(DropdownButton, {
183
183
  props: { options: mockOptions, modelValue: 'b' },
184
184
  })
185
- await wrapper.find('.mld-dropdown-button__trigger').trigger('click')
185
+ await wrapper.find('.mint-dropdown-button__trigger').trigger('click')
186
186
 
187
- const options = wrapper.findAll('.mld-dropdown-button__option')
188
- const checkmark = options[1].find('.mld-dropdown-button__option-check')
187
+ const options = wrapper.findAll('.mint-dropdown-button__option')
188
+ const checkmark = options[1].find('.mint-dropdown-button__option-check')
189
189
  expect(checkmark.exists()).toBe(true)
190
190
  })
191
191
 
@@ -193,19 +193,19 @@ describe('DropdownButton', () => {
193
193
  const wrapper = mount(DropdownButton, {
194
194
  props: { options: mockOptions },
195
195
  })
196
- await wrapper.find('.mld-dropdown-button__trigger').trigger('click')
196
+ await wrapper.find('.mint-dropdown-button__trigger').trigger('click')
197
197
 
198
- const options = wrapper.findAll('.mld-dropdown-button__option')
199
- expect(options[2].classes()).toContain('mld-dropdown-button__option--disabled')
198
+ const options = wrapper.findAll('.mint-dropdown-button__option')
199
+ expect(options[2].classes()).toContain('mint-dropdown-button__option--disabled')
200
200
  })
201
201
 
202
202
  it('should not select disabled options', async () => {
203
203
  const wrapper = mount(DropdownButton, {
204
204
  props: { options: mockOptions },
205
205
  })
206
- await wrapper.find('.mld-dropdown-button__trigger').trigger('click')
206
+ await wrapper.find('.mint-dropdown-button__trigger').trigger('click')
207
207
 
208
- const disabledOption = wrapper.findAll('.mld-dropdown-button__option')[2]
208
+ const disabledOption = wrapper.findAll('.mint-dropdown-button__option')[2]
209
209
  await disabledOption.trigger('click')
210
210
 
211
211
  expect(wrapper.emitted('update:modelValue')).toBeUndefined()
@@ -217,21 +217,21 @@ describe('DropdownButton', () => {
217
217
  const wrapper = mount(DropdownButton, {
218
218
  props: { options: mockOptions },
219
219
  })
220
- expect(wrapper.find('.mld-dropdown-button__trigger--secondary').exists()).toBe(true)
220
+ expect(wrapper.find('.mint-dropdown-button__trigger--secondary').exists()).toBe(true)
221
221
  })
222
222
 
223
223
  it('should apply primary variant', () => {
224
224
  const wrapper = mount(DropdownButton, {
225
225
  props: { options: mockOptions, variant: 'primary' },
226
226
  })
227
- expect(wrapper.find('.mld-dropdown-button__trigger--primary').exists()).toBe(true)
227
+ expect(wrapper.find('.mint-dropdown-button__trigger--primary').exists()).toBe(true)
228
228
  })
229
229
 
230
230
  it('should apply danger variant', () => {
231
231
  const wrapper = mount(DropdownButton, {
232
232
  props: { options: mockOptions, variant: 'danger' },
233
233
  })
234
- expect(wrapper.find('.mld-dropdown-button__trigger--danger').exists()).toBe(true)
234
+ expect(wrapper.find('.mint-dropdown-button__trigger--danger').exists()).toBe(true)
235
235
  })
236
236
  })
237
237
 
@@ -240,21 +240,21 @@ describe('DropdownButton', () => {
240
240
  const wrapper = mount(DropdownButton, {
241
241
  props: { options: mockOptions },
242
242
  })
243
- expect(wrapper.find('.mld-dropdown-button__trigger--md').exists()).toBe(true)
243
+ expect(wrapper.find('.mint-dropdown-button__trigger--md').exists()).toBe(true)
244
244
  })
245
245
 
246
246
  it('should apply small size', () => {
247
247
  const wrapper = mount(DropdownButton, {
248
248
  props: { options: mockOptions, size: 'sm' },
249
249
  })
250
- expect(wrapper.find('.mld-dropdown-button__trigger--sm').exists()).toBe(true)
250
+ expect(wrapper.find('.mint-dropdown-button__trigger--sm').exists()).toBe(true)
251
251
  })
252
252
 
253
253
  it('should apply large size', () => {
254
254
  const wrapper = mount(DropdownButton, {
255
255
  props: { options: mockOptions, size: 'lg' },
256
256
  })
257
- expect(wrapper.find('.mld-dropdown-button__trigger--lg').exists()).toBe(true)
257
+ expect(wrapper.find('.mint-dropdown-button__trigger--lg').exists()).toBe(true)
258
258
  })
259
259
  })
260
260
 
@@ -263,7 +263,7 @@ describe('DropdownButton', () => {
263
263
  const wrapper = mount(DropdownButton, {
264
264
  props: { options: mockOptions, disabled: true },
265
265
  })
266
- const trigger = wrapper.find('.mld-dropdown-button__trigger')
266
+ const trigger = wrapper.find('.mint-dropdown-button__trigger')
267
267
  expect(trigger.attributes('disabled')).toBeDefined()
268
268
  })
269
269
 
@@ -271,15 +271,15 @@ describe('DropdownButton', () => {
271
271
  const wrapper = mount(DropdownButton, {
272
272
  props: { options: mockOptions, disabled: true },
273
273
  })
274
- expect(wrapper.find('.mld-dropdown-button__trigger--disabled').exists()).toBe(true)
274
+ expect(wrapper.find('.mint-dropdown-button__trigger--disabled').exists()).toBe(true)
275
275
  })
276
276
 
277
277
  it('should not open menu when disabled', async () => {
278
278
  const wrapper = mount(DropdownButton, {
279
279
  props: { options: mockOptions, disabled: true },
280
280
  })
281
- await wrapper.find('.mld-dropdown-button__trigger').trigger('click')
282
- expect(wrapper.find('.mld-dropdown-button__menu').exists()).toBe(false)
281
+ await wrapper.find('.mint-dropdown-button__trigger').trigger('click')
282
+ expect(wrapper.find('.mint-dropdown-button__menu').exists()).toBe(false)
283
283
  })
284
284
  })
285
285
 
@@ -288,14 +288,14 @@ describe('DropdownButton', () => {
288
288
  const wrapper = mount(DropdownButton, {
289
289
  props: { options: mockOptions, loading: true },
290
290
  })
291
- expect(wrapper.find('.mld-dropdown-button__spinner').exists()).toBe(true)
291
+ expect(wrapper.find('.mint-dropdown-button__spinner').exists()).toBe(true)
292
292
  })
293
293
 
294
294
  it('should disable button when loading', () => {
295
295
  const wrapper = mount(DropdownButton, {
296
296
  props: { options: mockOptions, loading: true },
297
297
  })
298
- const trigger = wrapper.find('.mld-dropdown-button__trigger')
298
+ const trigger = wrapper.find('.mint-dropdown-button__trigger')
299
299
  expect(trigger.attributes('disabled')).toBeDefined()
300
300
  })
301
301
 
@@ -303,8 +303,8 @@ describe('DropdownButton', () => {
303
303
  const wrapper = mount(DropdownButton, {
304
304
  props: { options: mockOptions, loading: true },
305
305
  })
306
- await wrapper.find('.mld-dropdown-button__trigger').trigger('click')
307
- expect(wrapper.find('.mld-dropdown-button__menu').exists()).toBe(false)
306
+ await wrapper.find('.mint-dropdown-button__trigger').trigger('click')
307
+ expect(wrapper.find('.mint-dropdown-button__menu').exists()).toBe(false)
308
308
  })
309
309
  })
310
310
 
@@ -323,14 +323,14 @@ describe('DropdownButton', () => {
323
323
  attachTo: document.body,
324
324
  })
325
325
 
326
- await wrapper.find('.mld-dropdown-button__trigger').trigger('click')
327
- expect(wrapper.find('.mld-dropdown-button__menu').exists()).toBe(true)
326
+ await wrapper.find('.mint-dropdown-button__trigger').trigger('click')
327
+ expect(wrapper.find('.mint-dropdown-button__menu').exists()).toBe(true)
328
328
 
329
329
  // Simulate click outside
330
330
  document.body.click()
331
331
  await wrapper.vm.$nextTick()
332
332
 
333
- expect(wrapper.find('.mld-dropdown-button__menu').exists()).toBe(false)
333
+ expect(wrapper.find('.mint-dropdown-button__menu').exists()).toBe(false)
334
334
  wrapper.unmount()
335
335
  })
336
336
 
@@ -339,12 +339,12 @@ describe('DropdownButton', () => {
339
339
  props: { options: mockOptions },
340
340
  })
341
341
 
342
- await wrapper.find('.mld-dropdown-button__trigger').trigger('click')
343
- expect(wrapper.find('.mld-dropdown-button__menu').exists()).toBe(true)
342
+ await wrapper.find('.mint-dropdown-button__trigger').trigger('click')
343
+ expect(wrapper.find('.mint-dropdown-button__menu').exists()).toBe(true)
344
344
 
345
345
  // Click on the container itself
346
- await wrapper.find('.mld-dropdown-button').trigger('click')
347
- expect(wrapper.find('.mld-dropdown-button__menu').exists()).toBe(true)
346
+ await wrapper.find('.mint-dropdown-button').trigger('click')
347
+ expect(wrapper.find('.mint-dropdown-button__menu').exists()).toBe(true)
348
348
  })
349
349
  })
350
350
 
@@ -355,15 +355,15 @@ describe('DropdownButton', () => {
355
355
  attachTo: document.body,
356
356
  })
357
357
 
358
- await wrapper.find('.mld-dropdown-button__trigger').trigger('click')
359
- expect(wrapper.find('.mld-dropdown-button__menu').exists()).toBe(true)
358
+ await wrapper.find('.mint-dropdown-button__trigger').trigger('click')
359
+ expect(wrapper.find('.mint-dropdown-button__menu').exists()).toBe(true)
360
360
 
361
361
  // Simulate Escape key press
362
362
  const event = new KeyboardEvent('keydown', { key: 'Escape' })
363
363
  document.dispatchEvent(event)
364
364
  await wrapper.vm.$nextTick()
365
365
 
366
- expect(wrapper.find('.mld-dropdown-button__menu').exists()).toBe(false)
366
+ expect(wrapper.find('.mint-dropdown-button__menu').exists()).toBe(false)
367
367
  wrapper.unmount()
368
368
  })
369
369
  })
@@ -373,14 +373,14 @@ describe('DropdownButton', () => {
373
373
  const wrapper = mount(DropdownButton, {
374
374
  props: { options: mockOptions },
375
375
  })
376
- expect(wrapper.find('.mld-dropdown-button__trigger').attributes('type')).toBe('button')
376
+ expect(wrapper.find('.mint-dropdown-button__trigger').attributes('type')).toBe('button')
377
377
  })
378
378
 
379
379
  it('should have aria-expanded attribute', async () => {
380
380
  const wrapper = mount(DropdownButton, {
381
381
  props: { options: mockOptions },
382
382
  })
383
- const trigger = wrapper.find('.mld-dropdown-button__trigger')
383
+ const trigger = wrapper.find('.mint-dropdown-button__trigger')
384
384
  expect(trigger.attributes('aria-expanded')).toBe('false')
385
385
 
386
386
  await trigger.trigger('click')
@@ -391,23 +391,23 @@ describe('DropdownButton', () => {
391
391
  const wrapper = mount(DropdownButton, {
392
392
  props: { options: mockOptions },
393
393
  })
394
- expect(wrapper.find('.mld-dropdown-button__trigger').attributes('aria-haspopup')).toBe('listbox')
394
+ expect(wrapper.find('.mint-dropdown-button__trigger').attributes('aria-haspopup')).toBe('listbox')
395
395
  })
396
396
 
397
397
  it('should have role="listbox" on menu', async () => {
398
398
  const wrapper = mount(DropdownButton, {
399
399
  props: { options: mockOptions },
400
400
  })
401
- await wrapper.find('.mld-dropdown-button__trigger').trigger('click')
402
- expect(wrapper.find('.mld-dropdown-button__menu').attributes('role')).toBe('listbox')
401
+ await wrapper.find('.mint-dropdown-button__trigger').trigger('click')
402
+ expect(wrapper.find('.mint-dropdown-button__menu').attributes('role')).toBe('listbox')
403
403
  })
404
404
 
405
405
  it('should have role="option" on options', async () => {
406
406
  const wrapper = mount(DropdownButton, {
407
407
  props: { options: mockOptions },
408
408
  })
409
- await wrapper.find('.mld-dropdown-button__trigger').trigger('click')
410
- const options = wrapper.findAll('.mld-dropdown-button__option')
409
+ await wrapper.find('.mint-dropdown-button__trigger').trigger('click')
410
+ const options = wrapper.findAll('.mint-dropdown-button__option')
411
411
  options.forEach(opt => {
412
412
  expect(opt.attributes('role')).toBe('option')
413
413
  })
@@ -417,9 +417,9 @@ describe('DropdownButton', () => {
417
417
  const wrapper = mount(DropdownButton, {
418
418
  props: { options: mockOptions, modelValue: 'a' },
419
419
  })
420
- await wrapper.find('.mld-dropdown-button__trigger').trigger('click')
420
+ await wrapper.find('.mint-dropdown-button__trigger').trigger('click')
421
421
 
422
- const options = wrapper.findAll('.mld-dropdown-button__option')
422
+ const options = wrapper.findAll('.mint-dropdown-button__option')
423
423
  expect(options[0].attributes('aria-selected')).toBe('true')
424
424
  expect(options[1].attributes('aria-selected')).toBe('false')
425
425
  })
@@ -428,9 +428,9 @@ describe('DropdownButton', () => {
428
428
  const wrapper = mount(DropdownButton, {
429
429
  props: { options: mockOptions },
430
430
  })
431
- await wrapper.find('.mld-dropdown-button__trigger').trigger('click')
431
+ await wrapper.find('.mint-dropdown-button__trigger').trigger('click')
432
432
 
433
- const disabledOption = wrapper.findAll('.mld-dropdown-button__option')[2]
433
+ const disabledOption = wrapper.findAll('.mint-dropdown-button__option')[2]
434
434
  expect(disabledOption.attributes('aria-disabled')).toBe('true')
435
435
  })
436
436
  })
@@ -440,7 +440,7 @@ describe('DropdownButton', () => {
440
440
  const wrapper = mount(DropdownButton, {
441
441
  props: { options: [] },
442
442
  })
443
- expect(wrapper.find('.mld-dropdown-button').exists()).toBe(true)
443
+ expect(wrapper.find('.mint-dropdown-button').exists()).toBe(true)
444
444
  })
445
445
 
446
446
  it('should handle numeric option values', async () => {
@@ -451,7 +451,7 @@ describe('DropdownButton', () => {
451
451
  const wrapper = mount(DropdownButton, {
452
452
  props: { options: numericOptions, modelValue: 1 },
453
453
  })
454
- expect(wrapper.find('.mld-dropdown-button__label').text()).toBe('One')
454
+ expect(wrapper.find('.mint-dropdown-button__label').text()).toBe('One')
455
455
  })
456
456
 
457
457
  it('should handle options with same labels', async () => {
@@ -462,9 +462,9 @@ describe('DropdownButton', () => {
462
462
  const wrapper = mount(DropdownButton, {
463
463
  props: { options: duplicateLabels },
464
464
  })
465
- await wrapper.find('.mld-dropdown-button__trigger').trigger('click')
465
+ await wrapper.find('.mint-dropdown-button__trigger').trigger('click')
466
466
 
467
- const options = wrapper.findAll('.mld-dropdown-button__option')
467
+ const options = wrapper.findAll('.mint-dropdown-button__option')
468
468
  expect(options).toHaveLength(2)
469
469
  })
470
470
  })
@@ -27,7 +27,7 @@ function sendThemeMessage(origin: string, theme: 'light' | 'dark' | 'system'): v
27
27
  source: window.parent,
28
28
  origin,
29
29
  data: {
30
- type: 'mld:theme-changed',
30
+ type: 'mint:theme-changed',
31
31
  payload: theme,
32
32
  },
33
33
  } as MessageEvent)
@@ -122,7 +122,7 @@ function handleAction(label: string) {
122
122
  <div style="padding: 2rem; max-width: 600px; margin: 0 auto;">
123
123
  <AlertBox type="error" title="Plugin conflict detected">
124
124
  <template #default>
125
- mld-plugin-drp requires numpy &gt;=2.0 but the current environment has numpy 1.26.4.
125
+ mint-plugin-drp requires numpy &gt;=2.0 but the current environment has numpy 1.26.4.
126
126
  </template>
127
127
  <template #actions>
128
128
  <button
@@ -26,42 +26,42 @@ const hasActions = () => !!props.actionLabel || !!slots.actions
26
26
 
27
27
  <template>
28
28
  <div
29
- class="mld-alert"
30
- :class="`mld-alert--${props.type}`"
29
+ class="mint-alert"
30
+ :class="`mint-alert--${props.type}`"
31
31
  role="alert"
32
32
  >
33
33
  <!-- Lucide circle-check -->
34
- <svg v-if="props.type === 'success'" class="mld-alert__icon mld-alert__icon--success" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
34
+ <svg v-if="props.type === 'success'" class="mint-alert__icon mint-alert__icon--success" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
35
35
  <circle cx="12" cy="12" r="10" /><path d="m9 12 2 2 4-4" />
36
36
  </svg>
37
37
  <!-- Lucide circle-x -->
38
- <svg v-else-if="props.type === 'error'" class="mld-alert__icon mld-alert__icon--error" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
38
+ <svg v-else-if="props.type === 'error'" class="mint-alert__icon mint-alert__icon--error" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
39
39
  <circle cx="12" cy="12" r="10" /><path d="m15 9-6 6" /><path d="m9 9 6 6" />
40
40
  </svg>
41
41
  <!-- Lucide triangle-alert -->
42
- <svg v-else-if="props.type === 'warning'" class="mld-alert__icon mld-alert__icon--warning" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
42
+ <svg v-else-if="props.type === 'warning'" class="mint-alert__icon mint-alert__icon--warning" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
43
43
  <path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3" /><path d="M12 9v4" /><path d="M12 17h.01" />
44
44
  </svg>
45
45
  <!-- Lucide info -->
46
- <svg v-else class="mld-alert__icon mld-alert__icon--info" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
46
+ <svg v-else class="mint-alert__icon mint-alert__icon--info" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
47
47
  <circle cx="12" cy="12" r="10" /><path d="M12 16v-4" /><path d="M12 8h.01" />
48
48
  </svg>
49
49
 
50
- <div class="mld-alert__content">
51
- <h4 v-if="props.title" class="mld-alert__title">
50
+ <div class="mint-alert__content">
51
+ <h4 v-if="props.title" class="mint-alert__title">
52
52
  {{ props.title }}
53
53
  </h4>
54
- <div class="mld-alert__message">
54
+ <div class="mint-alert__message">
55
55
  <slot />
56
56
  </div>
57
57
  </div>
58
58
 
59
- <div v-if="hasActions()" class="mld-alert__actions">
59
+ <div v-if="hasActions()" class="mint-alert__actions">
60
60
  <slot name="actions">
61
61
  <button
62
62
  type="button"
63
- class="mld-alert__action-btn"
64
- :class="`mld-alert__action-btn--${props.type}`"
63
+ class="mint-alert__action-btn"
64
+ :class="`mint-alert__action-btn--${props.type}`"
65
65
  @click="emit('action')"
66
66
  >
67
67
  {{ props.actionLabel }}
@@ -72,11 +72,11 @@ const hasActions = () => !!props.actionLabel || !!slots.actions
72
72
  <button
73
73
  v-if="props.dismissible"
74
74
  type="button"
75
- class="mld-alert__dismiss"
75
+ class="mint-alert__dismiss"
76
76
  aria-label="Dismiss"
77
77
  @click="emit('dismiss')"
78
78
  >
79
- <svg class="mld-alert__dismiss-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
79
+ <svg class="mint-alert__dismiss-icon" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
80
80
  <path d="M18 6 6 18" /><path d="m6 6 12 12" />
81
81
  </svg>
82
82
  </button>