@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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@morscherlab/mint-sdk",
3
- "version": "1.0.0-alpha.8",
3
+ "version": "1.0.0-alpha.9",
4
4
  "description": "MINT Platform SDK — Vue 3 components, composables, and types for plugin development. MINT = Mass-spec INtegrated Toolkit.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -92,7 +92,7 @@
92
92
  },
93
93
  "repository": {
94
94
  "type": "git",
95
- "url": "https://github.com/MorscherLab/mld",
95
+ "url": "https://github.com/MorscherLab/MINT",
96
96
  "directory": "packages/sdk-frontend"
97
97
  },
98
98
  "keywords": [
@@ -6,14 +6,14 @@ describe('AppLayout', () => {
6
6
  describe('rendering with default props', () => {
7
7
  it('should render layout with default classes', () => {
8
8
  const wrapper = mount(AppLayout)
9
- expect(wrapper.find('.mld-layout').exists()).toBe(true)
10
- expect(wrapper.find('.mld-layout--sidebar-right').exists()).toBe(false)
11
- expect(wrapper.find('.mld-layout--floating').exists()).toBe(false)
9
+ expect(wrapper.find('.mint-layout').exists()).toBe(true)
10
+ expect(wrapper.find('.mint-layout--sidebar-right').exists()).toBe(false)
11
+ expect(wrapper.find('.mint-layout--floating').exists()).toBe(false)
12
12
  })
13
13
 
14
14
  it('should render body container', () => {
15
15
  const wrapper = mount(AppLayout)
16
- expect(wrapper.find('.mld-layout__body').exists()).toBe(true)
16
+ expect(wrapper.find('.mint-layout__body').exists()).toBe(true)
17
17
  })
18
18
 
19
19
  it('should render main content slot', () => {
@@ -22,8 +22,8 @@ describe('AppLayout', () => {
22
22
  default: '<p>Main content</p>',
23
23
  },
24
24
  })
25
- expect(wrapper.find('.mld-layout__main').exists()).toBe(true)
26
- expect(wrapper.find('.mld-layout__main').text()).toBe('Main content')
25
+ expect(wrapper.find('.mint-layout__main').exists()).toBe(true)
26
+ expect(wrapper.find('.mint-layout__main').text()).toBe('Main content')
27
27
  })
28
28
  })
29
29
 
@@ -34,13 +34,13 @@ describe('AppLayout', () => {
34
34
  topbar: '<div class="custom-topbar">Topbar</div>',
35
35
  },
36
36
  })
37
- expect(wrapper.find('.mld-layout__topbar').exists()).toBe(true)
37
+ expect(wrapper.find('.mint-layout__topbar').exists()).toBe(true)
38
38
  expect(wrapper.find('.custom-topbar').text()).toBe('Topbar')
39
39
  })
40
40
 
41
41
  it('should not render topbar when slot is not provided', () => {
42
42
  const wrapper = mount(AppLayout)
43
- expect(wrapper.find('.mld-layout__topbar').exists()).toBe(false)
43
+ expect(wrapper.find('.mint-layout__topbar').exists()).toBe(false)
44
44
  })
45
45
  })
46
46
 
@@ -51,48 +51,48 @@ describe('AppLayout', () => {
51
51
  sidebar: '<div class="custom-sidebar">Sidebar</div>',
52
52
  },
53
53
  })
54
- expect(wrapper.find('.mld-layout__sidebar').exists()).toBe(true)
54
+ expect(wrapper.find('.mint-layout__sidebar').exists()).toBe(true)
55
55
  expect(wrapper.find('.custom-sidebar').text()).toBe('Sidebar')
56
56
  })
57
57
 
58
58
  it('should not render sidebar when slot is not provided', () => {
59
59
  const wrapper = mount(AppLayout)
60
- expect(wrapper.find('.mld-layout__sidebar').exists()).toBe(false)
60
+ expect(wrapper.find('.mint-layout__sidebar').exists()).toBe(false)
61
61
  })
62
62
  })
63
63
 
64
64
  describe('sidebarPosition prop', () => {
65
65
  it('should default to left position', () => {
66
66
  const wrapper = mount(AppLayout)
67
- expect(wrapper.find('.mld-layout--sidebar-right').exists()).toBe(false)
67
+ expect(wrapper.find('.mint-layout--sidebar-right').exists()).toBe(false)
68
68
  })
69
69
 
70
70
  it('should add right class when sidebarPosition is right', () => {
71
71
  const wrapper = mount(AppLayout, {
72
72
  props: { sidebarPosition: 'right' },
73
73
  })
74
- expect(wrapper.find('.mld-layout--sidebar-right').exists()).toBe(true)
74
+ expect(wrapper.find('.mint-layout--sidebar-right').exists()).toBe(true)
75
75
  })
76
76
 
77
77
  it('should not add right class when sidebarPosition is left', () => {
78
78
  const wrapper = mount(AppLayout, {
79
79
  props: { sidebarPosition: 'left' },
80
80
  })
81
- expect(wrapper.find('.mld-layout--sidebar-right').exists()).toBe(false)
81
+ expect(wrapper.find('.mint-layout--sidebar-right').exists()).toBe(false)
82
82
  })
83
83
  })
84
84
 
85
85
  describe('floating prop', () => {
86
86
  it('should not add floating class by default', () => {
87
87
  const wrapper = mount(AppLayout)
88
- expect(wrapper.find('.mld-layout--floating').exists()).toBe(false)
88
+ expect(wrapper.find('.mint-layout--floating').exists()).toBe(false)
89
89
  })
90
90
 
91
91
  it('should add floating class when floating is true', () => {
92
92
  const wrapper = mount(AppLayout, {
93
93
  props: { floating: true },
94
94
  })
95
- expect(wrapper.find('.mld-layout--floating').exists()).toBe(true)
95
+ expect(wrapper.find('.mint-layout--floating').exists()).toBe(true)
96
96
  })
97
97
  })
98
98
 
@@ -101,7 +101,7 @@ describe('AppLayout', () => {
101
101
  const wrapper = mount(AppLayout, {
102
102
  slots: { sidebar: '<div>Sidebar</div>' },
103
103
  })
104
- const sidebar = wrapper.find('.mld-layout__sidebar')
104
+ const sidebar = wrapper.find('.mint-layout__sidebar')
105
105
  expect(sidebar.attributes('style')).toBeUndefined()
106
106
  })
107
107
 
@@ -110,7 +110,7 @@ describe('AppLayout', () => {
110
110
  props: { sidebarWidth: '300px' },
111
111
  slots: { sidebar: '<div>Sidebar</div>' },
112
112
  })
113
- const sidebar = wrapper.find('.mld-layout__sidebar')
113
+ const sidebar = wrapper.find('.mint-layout__sidebar')
114
114
  expect(sidebar.attributes('style')).toContain('width: 300px')
115
115
  })
116
116
 
@@ -119,7 +119,7 @@ describe('AppLayout', () => {
119
119
  props: { sidebarWidth: '20rem' },
120
120
  slots: { sidebar: '<div>Sidebar</div>' },
121
121
  })
122
- const sidebar = wrapper.find('.mld-layout__sidebar')
122
+ const sidebar = wrapper.find('.mint-layout__sidebar')
123
123
  expect(sidebar.attributes('style')).toContain('width: 20rem')
124
124
  })
125
125
  })
@@ -147,17 +147,17 @@ describe('AppLayout', () => {
147
147
  },
148
148
  })
149
149
 
150
- const layout = wrapper.find('.mld-layout')
151
- expect(layout.classes()).toContain('mld-layout--sidebar-right')
152
- expect(layout.classes()).toContain('mld-layout--floating')
150
+ const layout = wrapper.find('.mint-layout')
151
+ expect(layout.classes()).toContain('mint-layout--sidebar-right')
152
+ expect(layout.classes()).toContain('mint-layout--floating')
153
153
  })
154
154
  })
155
155
 
156
156
  describe('edge cases', () => {
157
157
  it('should handle empty default slot', () => {
158
158
  const wrapper = mount(AppLayout)
159
- expect(wrapper.find('.mld-layout__main').exists()).toBe(true)
160
- expect(wrapper.find('.mld-layout__main').text()).toBe('')
159
+ expect(wrapper.find('.mint-layout__main').exists()).toBe(true)
160
+ expect(wrapper.find('.mint-layout__main').text()).toBe('')
161
161
  })
162
162
  })
163
163
  })
@@ -18,60 +18,60 @@ describe('AppSidebar', () => {
18
18
  describe('rendering with default props', () => {
19
19
  it('should render sidebar with default classes', () => {
20
20
  const wrapper = mount(AppSidebar)
21
- expect(wrapper.find('.mld-sidebar').exists()).toBe(true)
22
- expect(wrapper.find('.mld-sidebar--left').exists()).toBe(true)
23
- expect(wrapper.find('.mld-sidebar--floating').exists()).toBe(true)
21
+ expect(wrapper.find('.mint-sidebar').exists()).toBe(true)
22
+ expect(wrapper.find('.mint-sidebar--left').exists()).toBe(true)
23
+ expect(wrapper.find('.mint-sidebar--floating').exists()).toBe(true)
24
24
  })
25
25
 
26
26
  it('should apply default width', () => {
27
27
  const wrapper = mount(AppSidebar, {
28
28
  props: { panels: samplePanels, activeView: 'analysis' },
29
29
  })
30
- expect(wrapper.find('.mld-sidebar').attributes('style')).toContain('width: 280px')
30
+ expect(wrapper.find('.mint-sidebar').attributes('style')).toContain('width: 280px')
31
31
  })
32
32
 
33
33
  it('should be hidden when no panels match active view', () => {
34
34
  const wrapper = mount(AppSidebar, {
35
35
  props: { panels: samplePanels, activeView: 'settings' },
36
36
  })
37
- expect(wrapper.find('.mld-sidebar--hidden').exists()).toBe(true)
37
+ expect(wrapper.find('.mint-sidebar--hidden').exists()).toBe(true)
38
38
  })
39
39
 
40
40
  it('should be hidden when activeView is empty', () => {
41
41
  const wrapper = mount(AppSidebar)
42
- expect(wrapper.find('.mld-sidebar--hidden').exists()).toBe(true)
42
+ expect(wrapper.find('.mint-sidebar--hidden').exists()).toBe(true)
43
43
  })
44
44
  })
45
45
 
46
46
  describe('side prop', () => {
47
47
  it('should default to left side', () => {
48
48
  const wrapper = mount(AppSidebar)
49
- expect(wrapper.find('.mld-sidebar--left').exists()).toBe(true)
50
- expect(wrapper.find('.mld-sidebar--right').exists()).toBe(false)
49
+ expect(wrapper.find('.mint-sidebar--left').exists()).toBe(true)
50
+ expect(wrapper.find('.mint-sidebar--right').exists()).toBe(false)
51
51
  })
52
52
 
53
53
  it('should apply right side class', () => {
54
54
  const wrapper = mount(AppSidebar, {
55
55
  props: { side: 'right' },
56
56
  })
57
- expect(wrapper.find('.mld-sidebar--right').exists()).toBe(true)
58
- expect(wrapper.find('.mld-sidebar--left').exists()).toBe(false)
57
+ expect(wrapper.find('.mint-sidebar--right').exists()).toBe(true)
58
+ expect(wrapper.find('.mint-sidebar--left').exists()).toBe(false)
59
59
  })
60
60
  })
61
61
 
62
62
  describe('floating prop', () => {
63
63
  it('should apply floating class by default', () => {
64
64
  const wrapper = mount(AppSidebar)
65
- expect(wrapper.find('.mld-sidebar--floating').exists()).toBe(true)
66
- expect(wrapper.find('.mld-sidebar--static').exists()).toBe(false)
65
+ expect(wrapper.find('.mint-sidebar--floating').exists()).toBe(true)
66
+ expect(wrapper.find('.mint-sidebar--static').exists()).toBe(false)
67
67
  })
68
68
 
69
69
  it('should apply static class when floating is false', () => {
70
70
  const wrapper = mount(AppSidebar, {
71
71
  props: { floating: false },
72
72
  })
73
- expect(wrapper.find('.mld-sidebar--static').exists()).toBe(true)
74
- expect(wrapper.find('.mld-sidebar--floating').exists()).toBe(false)
73
+ expect(wrapper.find('.mint-sidebar--static').exists()).toBe(true)
74
+ expect(wrapper.find('.mint-sidebar--floating').exists()).toBe(false)
75
75
  })
76
76
  })
77
77
 
@@ -84,7 +84,7 @@ describe('AppSidebar', () => {
84
84
  width: '300px',
85
85
  },
86
86
  })
87
- expect(wrapper.find('.mld-sidebar').attributes('style')).toContain('width: 300px')
87
+ expect(wrapper.find('.mint-sidebar').attributes('style')).toContain('width: 300px')
88
88
  })
89
89
 
90
90
  it('should handle different CSS units', () => {
@@ -95,7 +95,7 @@ describe('AppSidebar', () => {
95
95
  width: '20rem',
96
96
  },
97
97
  })
98
- expect(wrapper.find('.mld-sidebar').attributes('style')).toContain('width: 20rem')
98
+ expect(wrapper.find('.mint-sidebar').attributes('style')).toContain('width: 20rem')
99
99
  })
100
100
  })
101
101
 
@@ -163,10 +163,10 @@ describe('AppSidebar', () => {
163
163
  props: { panels: samplePanels, activeView: 'analysis' },
164
164
  global: { components: { CollapsibleCard } },
165
165
  })
166
- expect(wrapper.find('.mld-sidebar--hidden').exists()).toBe(false)
166
+ expect(wrapper.find('.mint-sidebar--hidden').exists()).toBe(false)
167
167
 
168
168
  await wrapper.setProps({ activeView: 'settings' })
169
- expect(wrapper.find('.mld-sidebar--hidden').exists()).toBe(true)
169
+ expect(wrapper.find('.mint-sidebar--hidden').exists()).toBe(true)
170
170
  })
171
171
  })
172
172
 
@@ -206,7 +206,7 @@ describe('AppSidebar', () => {
206
206
  header: '<div class="custom-header">Header</div>',
207
207
  },
208
208
  })
209
- expect(wrapper.find('.mld-sidebar__header').exists()).toBe(true)
209
+ expect(wrapper.find('.mint-sidebar__header').exists()).toBe(true)
210
210
  expect(wrapper.find('.custom-header').text()).toBe('Header')
211
211
  })
212
212
 
@@ -217,7 +217,7 @@ describe('AppSidebar', () => {
217
217
  footer: '<div class="custom-footer">Footer</div>',
218
218
  },
219
219
  })
220
- expect(wrapper.find('.mld-sidebar__footer').exists()).toBe(true)
220
+ expect(wrapper.find('.mint-sidebar__footer').exists()).toBe(true)
221
221
  expect(wrapper.find('.custom-footer').text()).toBe('Footer')
222
222
  })
223
223
 
@@ -225,14 +225,14 @@ describe('AppSidebar', () => {
225
225
  const wrapper = mount(AppSidebar, {
226
226
  props: { panels: samplePanels, activeView: 'analysis' },
227
227
  })
228
- expect(wrapper.find('.mld-sidebar__header').exists()).toBe(false)
228
+ expect(wrapper.find('.mint-sidebar__header').exists()).toBe(false)
229
229
  })
230
230
 
231
231
  it('should not render footer when slot is not provided', () => {
232
232
  const wrapper = mount(AppSidebar, {
233
233
  props: { panels: samplePanels, activeView: 'analysis' },
234
234
  })
235
- expect(wrapper.find('.mld-sidebar__footer').exists()).toBe(false)
235
+ expect(wrapper.find('.mint-sidebar__footer').exists()).toBe(false)
236
236
  })
237
237
  })
238
238
 
@@ -241,21 +241,21 @@ describe('AppSidebar', () => {
241
241
  const wrapper = mount(AppSidebar, {
242
242
  props: { panels: {}, activeView: 'analysis' },
243
243
  })
244
- expect(wrapper.find('.mld-sidebar--hidden').exists()).toBe(true)
244
+ expect(wrapper.find('.mint-sidebar--hidden').exists()).toBe(true)
245
245
  })
246
246
 
247
247
  it('should handle view with empty sections array', () => {
248
248
  const wrapper = mount(AppSidebar, {
249
249
  props: { panels: { empty: [] }, activeView: 'empty' },
250
250
  })
251
- expect(wrapper.find('.mld-sidebar--hidden').exists()).toBe(true)
251
+ expect(wrapper.find('.mint-sidebar--hidden').exists()).toBe(true)
252
252
  })
253
253
 
254
254
  it('should handle undefined activeView', () => {
255
255
  const wrapper = mount(AppSidebar, {
256
256
  props: { panels: samplePanels },
257
257
  })
258
- expect(wrapper.find('.mld-sidebar--hidden').exists()).toBe(true)
258
+ expect(wrapper.find('.mint-sidebar--hidden').exists()).toBe(true)
259
259
  })
260
260
  })
261
261
 
@@ -268,9 +268,9 @@ describe('AppSidebar', () => {
268
268
  },
269
269
  })
270
270
 
271
- const sidebar = wrapper.find('.mld-sidebar')
272
- expect(sidebar.classes()).toContain('mld-sidebar--left')
273
- expect(sidebar.classes()).toContain('mld-sidebar--static')
271
+ const sidebar = wrapper.find('.mint-sidebar')
272
+ expect(sidebar.classes()).toContain('mint-sidebar--left')
273
+ expect(sidebar.classes()).toContain('mint-sidebar--static')
274
274
  })
275
275
 
276
276
  it('should render all slots with sections', () => {
@@ -286,7 +286,7 @@ describe('AppSidebar', () => {
286
286
 
287
287
  expect(wrapper.find('.header').exists()).toBe(true)
288
288
  expect(wrapper.find('.footer').exists()).toBe(true)
289
- expect(wrapper.find('.mld-sidebar__sections').exists()).toBe(true)
289
+ expect(wrapper.find('.mint-sidebar__sections').exists()).toBe(true)
290
290
  })
291
291
  })
292
292
  })
@@ -65,7 +65,7 @@ describe('AppTopBar', () => {
65
65
 
66
66
  it('should render without settings button by default', () => {
67
67
  const wrapper = createWrapper({ title: 'Test App' })
68
- expect(wrapper.find('.mld-topbar__settings-btn').exists()).toBe(false)
68
+ expect(wrapper.find('.mint-topbar__settings-btn').exists()).toBe(false)
69
69
  })
70
70
 
71
71
  it('should render without SettingsModal by default', () => {
@@ -75,8 +75,8 @@ describe('AppTopBar', () => {
75
75
 
76
76
  it('should show standalone badge by default when not integrated', () => {
77
77
  const wrapper = createWrapper({ title: 'Test App' })
78
- expect(wrapper.find('.mld-topbar__standalone-badge').exists()).toBe(true)
79
- expect(wrapper.find('.mld-topbar__standalone-badge').text()).toBe('Standalone')
78
+ expect(wrapper.find('.mint-topbar__standalone-badge').exists()).toBe(true)
79
+ expect(wrapper.find('.mint-topbar__standalone-badge').text()).toBe('Standalone')
80
80
  })
81
81
  })
82
82
 
@@ -112,7 +112,7 @@ describe('AppTopBar', () => {
112
112
  title: 'Test App',
113
113
  showThemeToggle: true,
114
114
  })
115
- const rightSection = wrapper.find('.mld-topbar__right')
115
+ const rightSection = wrapper.find('.mint-topbar__right')
116
116
  expect(rightSection.findComponent(ThemeToggle).exists()).toBe(true)
117
117
  })
118
118
  })
@@ -123,7 +123,7 @@ describe('AppTopBar', () => {
123
123
  title: 'Test App',
124
124
  showSettings: false,
125
125
  })
126
- expect(wrapper.find('.mld-topbar__settings-btn').exists()).toBe(false)
126
+ expect(wrapper.find('.mint-topbar__settings-btn').exists()).toBe(false)
127
127
  })
128
128
 
129
129
  it('should render settings button when showSettings is true', () => {
@@ -131,7 +131,7 @@ describe('AppTopBar', () => {
131
131
  title: 'Test App',
132
132
  showSettings: true,
133
133
  })
134
- const settingsBtn = wrapper.find('.mld-topbar__settings-btn')
134
+ const settingsBtn = wrapper.find('.mint-topbar__settings-btn')
135
135
  expect(settingsBtn.exists()).toBe(true)
136
136
  })
137
137
 
@@ -148,7 +148,7 @@ describe('AppTopBar', () => {
148
148
  title: 'Test App',
149
149
  showSettings: true,
150
150
  })
151
- const settingsBtn = wrapper.find('.mld-topbar__settings-btn')
151
+ const settingsBtn = wrapper.find('.mint-topbar__settings-btn')
152
152
  expect(settingsBtn.attributes('aria-label')).toBe('Open settings')
153
153
  })
154
154
 
@@ -157,8 +157,8 @@ describe('AppTopBar', () => {
157
157
  title: 'Test App',
158
158
  showSettings: true,
159
159
  })
160
- const settingsBtn = wrapper.find('.mld-topbar__settings-btn')
161
- const icon = settingsBtn.find('.mld-topbar__settings-icon')
160
+ const settingsBtn = wrapper.find('.mint-topbar__settings-btn')
161
+ const icon = settingsBtn.find('.mint-topbar__settings-icon')
162
162
  expect(icon.exists()).toBe(true)
163
163
  expect(icon.element.tagName.toLowerCase()).toBe('svg')
164
164
  })
@@ -171,7 +171,7 @@ describe('AppTopBar', () => {
171
171
  showSettings: true,
172
172
  })
173
173
 
174
- const settingsBtn = wrapper.find('.mld-topbar__settings-btn')
174
+ const settingsBtn = wrapper.find('.mint-topbar__settings-btn')
175
175
  await settingsBtn.trigger('click')
176
176
 
177
177
  const settingsModal = wrapper.findComponent(SettingsModal)
@@ -335,7 +335,7 @@ describe('AppTopBar', () => {
335
335
  title: 'Test App',
336
336
  showStandaloneLabel: true,
337
337
  })
338
- expect(wrapper.find('.mld-topbar__standalone-badge').exists()).toBe(true)
338
+ expect(wrapper.find('.mint-topbar__standalone-badge').exists()).toBe(true)
339
339
  })
340
340
 
341
341
  it('should hide standalone badge when showStandaloneLabel is false', () => {
@@ -343,7 +343,7 @@ describe('AppTopBar', () => {
343
343
  title: 'Test App',
344
344
  showStandaloneLabel: false,
345
345
  })
346
- expect(wrapper.find('.mld-topbar__standalone-badge').exists()).toBe(false)
346
+ expect(wrapper.find('.mint-topbar__standalone-badge').exists()).toBe(false)
347
347
  })
348
348
  })
349
349
 
@@ -352,7 +352,7 @@ describe('AppTopBar', () => {
352
352
  const wrapper = createWrapper({
353
353
  title: 'Test App',
354
354
  })
355
- const badge = wrapper.find('.mld-topbar__standalone-badge')
355
+ const badge = wrapper.find('.mint-topbar__standalone-badge')
356
356
  expect(badge.text()).toBe('Standalone')
357
357
  })
358
358
 
@@ -361,7 +361,7 @@ describe('AppTopBar', () => {
361
361
  title: 'Test App',
362
362
  standaloneLabel: 'Demo Mode',
363
363
  })
364
- const badge = wrapper.find('.mld-topbar__standalone-badge')
364
+ const badge = wrapper.find('.mint-topbar__standalone-badge')
365
365
  expect(badge.text()).toBe('Demo Mode')
366
366
  })
367
367
 
@@ -370,7 +370,7 @@ describe('AppTopBar', () => {
370
370
  title: 'Test App',
371
371
  standaloneLabel: '',
372
372
  })
373
- const badge = wrapper.find('.mld-topbar__standalone-badge')
373
+ const badge = wrapper.find('.mint-topbar__standalone-badge')
374
374
  expect(badge.text()).toBe('')
375
375
  })
376
376
  })
@@ -386,7 +386,7 @@ describe('AppTopBar', () => {
386
386
  })
387
387
 
388
388
  // In non-integrated mode (default mock), badge should be visible
389
- expect(wrapper.find('.mld-topbar__standalone-badge').exists()).toBe(true)
389
+ expect(wrapper.find('.mint-topbar__standalone-badge').exists()).toBe(true)
390
390
  })
391
391
  })
392
392
 
@@ -399,7 +399,7 @@ describe('AppTopBar', () => {
399
399
  })
400
400
 
401
401
  expect(wrapper.findComponent(ThemeToggle).exists()).toBe(true)
402
- expect(wrapper.find('.mld-topbar__settings-btn').exists()).toBe(true)
402
+ expect(wrapper.find('.mint-topbar__settings-btn').exists()).toBe(true)
403
403
  })
404
404
 
405
405
  it('should render standalone badge, ThemeToggle, and settings button together', () => {
@@ -411,10 +411,10 @@ describe('AppTopBar', () => {
411
411
  standaloneLabel: 'Offline',
412
412
  })
413
413
 
414
- expect(wrapper.find('.mld-topbar__standalone-badge').exists()).toBe(true)
415
- expect(wrapper.find('.mld-topbar__standalone-badge').text()).toBe('Offline')
414
+ expect(wrapper.find('.mint-topbar__standalone-badge').exists()).toBe(true)
415
+ expect(wrapper.find('.mint-topbar__standalone-badge').text()).toBe('Offline')
416
416
  expect(wrapper.findComponent(ThemeToggle).exists()).toBe(true)
417
- expect(wrapper.find('.mld-topbar__settings-btn').exists()).toBe(true)
417
+ expect(wrapper.find('.mint-topbar__settings-btn').exists()).toBe(true)
418
418
  })
419
419
 
420
420
  it('should maintain existing topbar functionality with new features', () => {
@@ -432,8 +432,8 @@ describe('AppTopBar', () => {
432
432
 
433
433
  // Verify new features render
434
434
  expect(wrapper.findComponent(ThemeToggle).exists()).toBe(true)
435
- expect(wrapper.find('.mld-topbar__settings-btn').exists()).toBe(true)
436
- expect(wrapper.find('.mld-topbar__standalone-badge').exists()).toBe(true)
435
+ expect(wrapper.find('.mint-topbar__settings-btn').exists()).toBe(true)
436
+ expect(wrapper.find('.mint-topbar__standalone-badge').exists()).toBe(true)
437
437
  })
438
438
 
439
439
  it('should render all elements in correct order in right section', () => {
@@ -446,29 +446,29 @@ describe('AppTopBar', () => {
446
446
  actions: '<button class="custom-action">Action</button>',
447
447
  })
448
448
 
449
- const rightSection = wrapper.find('.mld-topbar__right')
449
+ const rightSection = wrapper.find('.mint-topbar__right')
450
450
  expect(rightSection.exists()).toBe(true)
451
451
 
452
452
  // Verify all expected elements are present
453
- expect(wrapper.find('.mld-topbar__standalone-badge').exists()).toBe(true)
453
+ expect(wrapper.find('.mint-topbar__standalone-badge').exists()).toBe(true)
454
454
  expect(wrapper.find('.custom-action').exists()).toBe(true)
455
- expect(wrapper.find('.mld-topbar__settings-btn').exists()).toBe(true)
455
+ expect(wrapper.find('.mint-topbar__settings-btn').exists()).toBe(true)
456
456
  expect(wrapper.findComponent(ThemeToggle).exists()).toBe(true)
457
457
  })
458
458
  })
459
459
 
460
- describe('backward compatibility', () => {
460
+ describe('classic prop surface', () => {
461
461
  it('should not break existing usage without new props', () => {
462
462
  const wrapper = createWrapper({
463
- title: 'Legacy App',
463
+ title: 'Classic App',
464
464
  subtitle: 'Old API',
465
465
  })
466
466
 
467
- expect(wrapper.find('.mld-topbar').exists()).toBe(true)
467
+ expect(wrapper.find('.mint-topbar').exists()).toBe(true)
468
468
  expect(wrapper.findComponent(ThemeToggle).exists()).toBe(false)
469
- expect(wrapper.find('.mld-topbar__settings-btn').exists()).toBe(false)
469
+ expect(wrapper.find('.mint-topbar__settings-btn').exists()).toBe(false)
470
470
  // Standalone badge still shows by default in standalone mode
471
- expect(wrapper.find('.mld-topbar__standalone-badge').exists()).toBe(true)
471
+ expect(wrapper.find('.mint-topbar__standalone-badge').exists()).toBe(true)
472
472
  })
473
473
 
474
474
  it('should work with existing pages and tabs props', () => {
@@ -490,7 +490,7 @@ describe('AppTopBar', () => {
490
490
  expect(wrapper.text()).toContain('Test Plugin')
491
491
  expect(wrapper.text()).toContain('Dashboard')
492
492
  expect(wrapper.findComponent(ThemeToggle).exists()).toBe(true)
493
- expect(wrapper.find('.mld-topbar__settings-btn').exists()).toBe(true)
493
+ expect(wrapper.find('.mint-topbar__settings-btn').exists()).toBe(true)
494
494
  })
495
495
  })
496
496
 
@@ -536,7 +536,7 @@ describe('AppTopBar', () => {
536
536
  standaloneLabel: '🚀 Preview',
537
537
  })
538
538
 
539
- const badge = wrapper.find('.mld-topbar__standalone-badge')
539
+ const badge = wrapper.find('.mint-topbar__standalone-badge')
540
540
  expect(badge.text()).toBe('🚀 Preview')
541
541
  })
542
542
 
@@ -547,7 +547,7 @@ describe('AppTopBar', () => {
547
547
  standaloneLabel: longLabel,
548
548
  })
549
549
 
550
- const badge = wrapper.find('.mld-topbar__standalone-badge')
550
+ const badge = wrapper.find('.mint-topbar__standalone-badge')
551
551
  expect(badge.text()).toBe(longLabel)
552
552
  })
553
553
  })
@@ -619,9 +619,9 @@ describe('AppTopBar', () => {
619
619
  it('should render default M logo when no plugin icon and no #icon slot', () => {
620
620
  const wrapper = createWrapper({ title: 'Test App' })
621
621
 
622
- expect(wrapper.find('.mld-topbar__logo-text').exists()).toBe(true)
623
- expect(wrapper.find('.mld-topbar__logo-text').text()).toBe('M')
624
- expect(wrapper.find('.mld-topbar__logo-svg').exists()).toBe(false)
622
+ expect(wrapper.find('.mint-topbar__logo-text').exists()).toBe(true)
623
+ expect(wrapper.find('.mint-topbar__logo-text').text()).toBe('M')
624
+ expect(wrapper.find('.mint-topbar__logo-svg').exists()).toBe(false)
625
625
  })
626
626
 
627
627
  it('should render plugin metadata icon SVG when plugin has icon', () => {
@@ -633,10 +633,10 @@ describe('AppTopBar', () => {
633
633
 
634
634
  const wrapper = createWrapper({ title: 'Test App' })
635
635
 
636
- const svg = wrapper.find('.mld-topbar__logo-svg')
636
+ const svg = wrapper.find('.mint-topbar__logo-svg')
637
637
  expect(svg.exists()).toBe(true)
638
638
  expect(svg.find('path').attributes('d')).toBe(iconPath)
639
- expect(wrapper.find('.mld-topbar__logo-text').exists()).toBe(false)
639
+ expect(wrapper.find('.mint-topbar__logo-text').exists()).toBe(false)
640
640
  })
641
641
 
642
642
  it('should not render plugin icon when #icon slot is provided', () => {
@@ -651,7 +651,7 @@ describe('AppTopBar', () => {
651
651
  })
652
652
 
653
653
  expect(wrapper.find('.custom-icon').exists()).toBe(true)
654
- expect(wrapper.find('.mld-topbar__logo-svg').exists()).toBe(false)
654
+ expect(wrapper.find('.mint-topbar__logo-svg').exists()).toBe(false)
655
655
  })
656
656
 
657
657
  it('should not render plugin icon when icon does not start with M', () => {
@@ -662,9 +662,9 @@ describe('AppTopBar', () => {
662
662
 
663
663
  const wrapper = createWrapper({ title: 'Test App' })
664
664
 
665
- expect(wrapper.find('.mld-topbar__logo-svg').exists()).toBe(false)
666
- expect(wrapper.find('.mld-topbar__logo-text').exists()).toBe(true)
667
- expect(wrapper.find('.mld-topbar__logo-text').text()).toBe('M')
665
+ expect(wrapper.find('.mint-topbar__logo-svg').exists()).toBe(false)
666
+ expect(wrapper.find('.mint-topbar__logo-text').exists()).toBe(true)
667
+ expect(wrapper.find('.mint-topbar__logo-text').text()).toBe('M')
668
668
  })
669
669
 
670
670
  it('should not render plugin icon when icon is empty string', () => {
@@ -675,9 +675,9 @@ describe('AppTopBar', () => {
675
675
 
676
676
  const wrapper = createWrapper({ title: 'Test App' })
677
677
 
678
- expect(wrapper.find('.mld-topbar__logo-svg').exists()).toBe(false)
679
- expect(wrapper.find('.mld-topbar__logo-text').exists()).toBe(true)
680
- expect(wrapper.find('.mld-topbar__logo-text').text()).toBe('M')
678
+ expect(wrapper.find('.mint-topbar__logo-svg').exists()).toBe(false)
679
+ expect(wrapper.find('.mint-topbar__logo-text').exists()).toBe(true)
680
+ expect(wrapper.find('.mint-topbar__logo-text').text()).toBe('M')
681
681
  })
682
682
  })
683
683
  })
@@ -68,14 +68,14 @@ describe('BaseInput', () => {
68
68
  const wrapper = mount(BaseInput, {
69
69
  props: { modelValue: '', error: true },
70
70
  })
71
- expect(wrapper.find('input').classes()).toContain('mld-input--error')
71
+ expect(wrapper.find('input').classes()).toContain('mint-input--error')
72
72
  })
73
73
 
74
74
  it('should apply size class', () => {
75
75
  const wrapper = mount(BaseInput, {
76
76
  props: { modelValue: '', size: 'lg' },
77
77
  })
78
- expect(wrapper.find('input').classes()).toContain('mld-input--lg')
78
+ expect(wrapper.find('input').classes()).toContain('mint-input--lg')
79
79
  })
80
80
  })
81
81