@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
@@ -30,20 +30,20 @@ function handleChange(value: string | number) {
30
30
 
31
31
  <template>
32
32
  <div
33
- :class="['mld-radio-group', `mld-radio-group--${props.direction}`, `mld-radio-group--${props.variant}`]"
33
+ :class="['mint-radio-group', `mint-radio-group--${props.direction}`, `mint-radio-group--${props.variant}`]"
34
34
  role="radiogroup"
35
35
  >
36
36
  <label
37
37
  v-for="option in props.options"
38
38
  :key="String(option.value)"
39
39
  :class="[
40
- 'mld-radio-option',
41
- props.modelValue === option.value ? 'mld-radio-option--selected' : '',
42
- (props.disabled || option.disabled) ? 'mld-radio-option--disabled' : '',
40
+ 'mint-radio-option',
41
+ props.modelValue === option.value ? 'mint-radio-option--selected' : '',
42
+ (props.disabled || option.disabled) ? 'mint-radio-option--disabled' : '',
43
43
  ]"
44
44
  >
45
45
  <template v-if="props.variant === 'list'">
46
- <div :class="['mld-radio-option__input-wrapper', `mld-radio-option__input-wrapper--${props.size}`]">
46
+ <div :class="['mint-radio-option__input-wrapper', `mint-radio-option__input-wrapper--${props.size}`]">
47
47
  <input
48
48
  type="radio"
49
49
  :name="props.name"
@@ -51,30 +51,30 @@ function handleChange(value: string | number) {
51
51
  :checked="props.modelValue === option.value"
52
52
  :disabled="props.disabled || option.disabled"
53
53
  :aria-describedby="option.description ? `${props.name}-${option.value}-desc` : undefined"
54
- class="mld-radio-option__native"
54
+ class="mint-radio-option__native"
55
55
  @change="handleChange(option.value)"
56
56
  />
57
57
  <div
58
58
  :class="[
59
- 'mld-radio-option__circle',
60
- `mld-radio-option__circle--${props.size}`,
61
- props.modelValue === option.value ? 'mld-radio-option__circle--checked' : '',
59
+ 'mint-radio-option__circle',
60
+ `mint-radio-option__circle--${props.size}`,
61
+ props.modelValue === option.value ? 'mint-radio-option__circle--checked' : '',
62
62
  ]"
63
63
  >
64
64
  <div
65
65
  v-if="props.modelValue === option.value"
66
- :class="['mld-radio-option__dot', `mld-radio-option__dot--${props.size}`]"
66
+ :class="['mint-radio-option__dot', `mint-radio-option__dot--${props.size}`]"
67
67
  />
68
68
  </div>
69
69
  </div>
70
- <div class="mld-radio-option__content">
71
- <span :class="['mld-radio-option__label', `mld-radio-option__label--${props.size}`]">
70
+ <div class="mint-radio-option__content">
71
+ <span :class="['mint-radio-option__label', `mint-radio-option__label--${props.size}`]">
72
72
  {{ option.label }}
73
73
  </span>
74
74
  <span
75
75
  v-if="option.description"
76
76
  :id="`${props.name}-${option.value}-desc`"
77
- :class="['mld-radio-option__description', `mld-radio-option__description--${props.size}`]"
77
+ :class="['mint-radio-option__description', `mint-radio-option__description--${props.size}`]"
78
78
  >
79
79
  {{ option.description }}
80
80
  </span>
@@ -89,28 +89,28 @@ function handleChange(value: string | number) {
89
89
  :checked="props.modelValue === option.value"
90
90
  :disabled="props.disabled || option.disabled"
91
91
  :aria-describedby="option.description ? `${props.name}-${option.value}-desc` : undefined"
92
- class="mld-radio-option__native"
92
+ class="mint-radio-option__native"
93
93
  @change="handleChange(option.value)"
94
94
  />
95
- <div class="mld-radio-option__head">
95
+ <div class="mint-radio-option__head">
96
96
  <div
97
97
  :class="[
98
- 'mld-radio-option__circle',
99
- `mld-radio-option__circle--${props.size}`,
100
- props.modelValue === option.value ? 'mld-radio-option__circle--checked' : '',
98
+ 'mint-radio-option__circle',
99
+ `mint-radio-option__circle--${props.size}`,
100
+ props.modelValue === option.value ? 'mint-radio-option__circle--checked' : '',
101
101
  ]"
102
102
  >
103
103
  <div
104
104
  v-if="props.modelValue === option.value"
105
- :class="['mld-radio-option__dot', `mld-radio-option__dot--${props.size}`]"
105
+ :class="['mint-radio-option__dot', `mint-radio-option__dot--${props.size}`]"
106
106
  />
107
107
  </div>
108
- <span class="mld-radio-option__title">{{ option.label }}</span>
108
+ <span class="mint-radio-option__title">{{ option.label }}</span>
109
109
  </div>
110
110
  <span
111
111
  v-if="option.description"
112
112
  :id="`${props.name}-${option.value}-desc`"
113
- class="mld-radio-option__description"
113
+ class="mint-radio-option__description"
114
114
  >
115
115
  {{ option.description }}
116
116
  </span>
@@ -32,17 +32,17 @@ function handleChange(event: Event) {
32
32
  </script>
33
33
 
34
34
  <template>
35
- <div class="mld-select">
35
+ <div class="mint-select">
36
36
  <select
37
37
  :value="modelValue"
38
38
  :disabled="disabled"
39
39
  :aria-invalid="error || undefined"
40
40
  :aria-describedby="ariaDescribedby || undefined"
41
41
  :class="[
42
- 'mld-select__control',
43
- `mld-select__control--${size}`,
44
- error ? 'mld-select__control--error' : '',
45
- disabled ? 'mld-select__control--disabled' : '',
42
+ 'mint-select__control',
43
+ `mint-select__control--${size}`,
44
+ error ? 'mint-select__control--error' : '',
45
+ disabled ? 'mint-select__control--disabled' : '',
46
46
  ]"
47
47
  @change="handleChange"
48
48
  >
@@ -58,7 +58,7 @@ function handleChange(event: Event) {
58
58
  {{ option.label }}
59
59
  </option>
60
60
  </select>
61
- <div class="mld-select__icon">
61
+ <div class="mint-select__icon">
62
62
  <svg fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" viewBox="0 0 24 24">
63
63
  <path d="m6 9 6 6 6-6" />
64
64
  </svg>
@@ -63,11 +63,11 @@ function handleInput(event: Event) {
63
63
  </script>
64
64
 
65
65
  <template>
66
- <div class="mld-slider" :class="{ 'mld-slider--disabled': disabled }">
67
- <div class="mld-slider__container">
66
+ <div class="mint-slider" :class="{ 'mint-slider--disabled': disabled }">
67
+ <div class="mint-slider__container">
68
68
  <!-- Track background -->
69
69
  <div
70
- class="mld-slider__track"
70
+ class="mint-slider__track"
71
71
  :style="{ height: `${sizeConfig.height}px` }"
72
72
  />
73
73
 
@@ -75,7 +75,7 @@ function handleInput(event: Event) {
75
75
  meet at every position (no gap at the right edge, no overshoot
76
76
  at the left). -->
77
77
  <div
78
- class="mld-slider__fill"
78
+ class="mint-slider__fill"
79
79
  :style="{
80
80
  height: `${sizeConfig.height}px`,
81
81
  width: thumbPosition,
@@ -85,7 +85,7 @@ function handleInput(event: Event) {
85
85
  <!-- Native range input -->
86
86
  <input
87
87
  type="range"
88
- class="mld-slider__input"
88
+ class="mint-slider__input"
89
89
  :value="currentValue"
90
90
  :min="min"
91
91
  :max="max"
@@ -104,8 +104,8 @@ function handleInput(event: Event) {
104
104
 
105
105
  <!-- Custom thumb — translateX(-50%) centers it on `left` -->
106
106
  <div
107
- class="mld-slider__thumb"
108
- :class="{ 'mld-slider__thumb--dragging': isDragging }"
107
+ class="mint-slider__thumb"
108
+ :class="{ 'mint-slider__thumb--dragging': isDragging }"
109
109
  :style="{
110
110
  width: `${sizeConfig.thumb}px`,
111
111
  height: `${sizeConfig.thumb}px`,
@@ -115,7 +115,7 @@ function handleInput(event: Event) {
115
115
  </div>
116
116
 
117
117
  <!-- Value display -->
118
- <span v-if="showValue" class="mld-slider__value">
118
+ <span v-if="showValue" class="mint-slider__value">
119
119
  {{ currentValue }}
120
120
  </span>
121
121
  </div>
@@ -28,7 +28,7 @@ function selectTab(tabId: string) {
28
28
  </script>
29
29
 
30
30
  <template>
31
- <div :class="['mld-tabs', `mld-tabs--${variant}`]" role="tablist">
31
+ <div :class="['mint-tabs', `mint-tabs--${variant}`]" role="tablist">
32
32
  <button
33
33
  v-for="tab in tabs"
34
34
  :key="tab.id"
@@ -37,16 +37,16 @@ function selectTab(tabId: string) {
37
37
  :aria-selected="activeTab === tab.id"
38
38
  :aria-disabled="tab.disabled"
39
39
  :class="[
40
- 'mld-tab',
41
- activeTab === tab.id ? 'mld-tab--active' : '',
42
- tab.disabled ? 'mld-tab--disabled' : '',
40
+ 'mint-tab',
41
+ activeTab === tab.id ? 'mint-tab--active' : '',
42
+ tab.disabled ? 'mint-tab--disabled' : '',
43
43
  ]"
44
44
  @click="selectTab(tab.id)"
45
45
  >
46
- <span class="mld-tab__content">
47
- <span v-if="tab.icon" class="mld-tab__icon">{{ tab.icon }}</span>
46
+ <span class="mint-tab__content">
47
+ <span v-if="tab.icon" class="mint-tab__icon">{{ tab.icon }}</span>
48
48
  {{ tab.label }}
49
- <span v-if="tab.badge !== undefined" class="mld-tab__badge">
49
+ <span v-if="tab.badge !== undefined" class="mint-tab__badge">
50
50
  {{ tab.badge }}
51
51
  </span>
52
52
  </span>
@@ -45,11 +45,11 @@ function handleInput(event: Event) {
45
45
  :aria-invalid="props.error || undefined"
46
46
  :aria-describedby="props.ariaDescribedby || undefined"
47
47
  :class="[
48
- 'mld-textarea',
49
- `mld-textarea--${props.size}`,
50
- `mld-textarea--resize-${props.resize}`,
51
- props.error ? 'mld-textarea--error' : '',
52
- props.disabled ? 'mld-textarea--disabled' : '',
48
+ 'mint-textarea',
49
+ `mint-textarea--${props.size}`,
50
+ `mint-textarea--resize-${props.resize}`,
51
+ props.error ? 'mint-textarea--error' : '',
52
+ props.disabled ? 'mint-textarea--disabled' : '',
53
53
  ]"
54
54
  @input="handleInput"
55
55
  @focus="emit('focus', $event)"
@@ -36,9 +36,9 @@ function handleKeydown(event: KeyboardEvent) {
36
36
  <template>
37
37
  <div
38
38
  :class="[
39
- 'mld-toggle',
40
- reverse ? 'mld-toggle--reverse' : '',
41
- disabled ? 'mld-toggle--disabled' : '',
39
+ 'mint-toggle',
40
+ reverse ? 'mint-toggle--reverse' : '',
41
+ disabled ? 'mint-toggle--disabled' : '',
42
42
  ]"
43
43
  @click="toggle"
44
44
  >
@@ -48,23 +48,23 @@ function handleKeydown(event: KeyboardEvent) {
48
48
  :aria-checked="modelValue"
49
49
  :aria-label="label || 'Toggle'"
50
50
  :class="[
51
- 'mld-toggle__track',
52
- `mld-toggle__track--${size}`,
53
- modelValue ? 'mld-toggle__track--on' : 'mld-toggle__track--off',
51
+ 'mint-toggle__track',
52
+ `mint-toggle__track--${size}`,
53
+ modelValue ? 'mint-toggle__track--on' : 'mint-toggle__track--off',
54
54
  ]"
55
55
  @keydown="handleKeydown"
56
56
  >
57
57
  <span
58
58
  :class="[
59
- 'mld-toggle__knob',
60
- `mld-toggle__knob--${size}`,
61
- modelValue ? `mld-toggle__knob--on-${size}` : 'mld-toggle__knob--off',
59
+ 'mint-toggle__knob',
60
+ `mint-toggle__knob--${size}`,
61
+ modelValue ? `mint-toggle__knob--on-${size}` : 'mint-toggle__knob--off',
62
62
  ]"
63
63
  />
64
64
  </div>
65
65
  <span
66
66
  v-if="label"
67
- :class="['mld-toggle__label', `mld-toggle__label--${size}`]"
67
+ :class="['mint-toggle__label', `mint-toggle__label--${size}`]"
68
68
  >
69
69
  {{ label }}
70
70
  </span>
@@ -61,34 +61,34 @@ watch(
61
61
  </script>
62
62
 
63
63
  <template>
64
- <div class="mld-batch-progress">
65
- <div v-if="title" class="mld-batch-progress__header">
66
- <span class="mld-batch-progress__title">{{ title }}</span>
67
- <span class="mld-batch-progress__percent">{{ summary.percent }}%</span>
64
+ <div class="mint-batch-progress">
65
+ <div v-if="title" class="mint-batch-progress__header">
66
+ <span class="mint-batch-progress__title">{{ title }}</span>
67
+ <span class="mint-batch-progress__percent">{{ summary.percent }}%</span>
68
68
  </div>
69
69
 
70
- <div class="mld-batch-progress__overall">
70
+ <div class="mint-batch-progress__overall">
71
71
  <div
72
- class="mld-batch-progress__overall-bar"
72
+ class="mint-batch-progress__overall-bar"
73
73
  :style="{ width: `${summary.percent}%` }"
74
74
  />
75
75
  </div>
76
76
 
77
77
  <slot v-if="showSummary" name="summary" :summary="summary">
78
- <div class="mld-batch-progress__summary">
79
- <span v-if="summary.completed" class="mld-batch-progress__summary-item mld-batch-progress__summary-item--completed">
78
+ <div class="mint-batch-progress__summary">
79
+ <span v-if="summary.completed" class="mint-batch-progress__summary-item mint-batch-progress__summary-item--completed">
80
80
  {{ summary.completed }} completed
81
81
  </span>
82
- <span v-if="summary.processing" class="mld-batch-progress__summary-item mld-batch-progress__summary-item--processing">
82
+ <span v-if="summary.processing" class="mint-batch-progress__summary-item mint-batch-progress__summary-item--processing">
83
83
  {{ summary.processing }} processing
84
84
  </span>
85
- <span v-if="summary.error" class="mld-batch-progress__summary-item mld-batch-progress__summary-item--error">
85
+ <span v-if="summary.error" class="mint-batch-progress__summary-item mint-batch-progress__summary-item--error">
86
86
  {{ summary.error }} failed
87
87
  </span>
88
- <span v-if="summary.pending" class="mld-batch-progress__summary-item mld-batch-progress__summary-item--pending">
88
+ <span v-if="summary.pending" class="mint-batch-progress__summary-item mint-batch-progress__summary-item--pending">
89
89
  {{ summary.pending }} pending
90
90
  </span>
91
- <span v-if="summary.skipped" class="mld-batch-progress__summary-item mld-batch-progress__summary-item--skipped">
91
+ <span v-if="summary.skipped" class="mint-batch-progress__summary-item mint-batch-progress__summary-item--skipped">
92
92
  {{ summary.skipped }} skipped
93
93
  </span>
94
94
  </div>
@@ -96,19 +96,19 @@ watch(
96
96
 
97
97
  <div
98
98
  ref="listRef"
99
- class="mld-batch-progress__list"
99
+ class="mint-batch-progress__list"
100
100
  :style="maxHeight ? { maxHeight, overflowY: 'auto' } : {}"
101
101
  >
102
102
  <div
103
103
  v-for="item in items"
104
104
  :key="item.id"
105
105
  :data-item-id="item.id"
106
- :class="['mld-batch-progress__item', `mld-batch-progress__item--${item.status}`]"
106
+ :class="['mint-batch-progress__item', `mint-batch-progress__item--${item.status}`]"
107
107
  >
108
108
  <slot name="item" :item="item">
109
- <div class="mld-batch-progress__item-row">
109
+ <div class="mint-batch-progress__item-row">
110
110
  <!-- Status icon -->
111
- <div :class="['mld-batch-progress__item-icon', `mld-batch-progress__item-icon--${item.status}`]">
111
+ <div :class="['mint-batch-progress__item-icon', `mint-batch-progress__item-icon--${item.status}`]">
112
112
  <!-- Pending: clock -->
113
113
  <svg v-if="item.status === 'pending'" viewBox="0 0 16 16" fill="none" stroke="currentColor" stroke-width="1.5">
114
114
  <circle cx="8" cy="8" r="6.5" />
@@ -132,19 +132,19 @@ watch(
132
132
  </svg>
133
133
  </div>
134
134
 
135
- <span class="mld-batch-progress__item-label">{{ item.label }}</span>
135
+ <span class="mint-batch-progress__item-label">{{ item.label }}</span>
136
136
 
137
137
  <!-- Mini progress bar for processing items -->
138
- <div v-if="item.status === 'processing' && item.progress !== undefined" class="mld-batch-progress__item-progress">
139
- <div class="mld-batch-progress__item-progress-bar" :style="{ width: `${item.progress}%` }" />
138
+ <div v-if="item.status === 'processing' && item.progress !== undefined" class="mint-batch-progress__item-progress">
139
+ <div class="mint-batch-progress__item-progress-bar" :style="{ width: `${item.progress}%` }" />
140
140
  </div>
141
141
 
142
142
  <!-- Actions -->
143
- <div class="mld-batch-progress__item-actions">
143
+ <div class="mint-batch-progress__item-actions">
144
144
  <button
145
145
  v-if="item.status === 'error'"
146
146
  type="button"
147
- class="mld-batch-progress__retry-btn"
147
+ class="mint-batch-progress__retry-btn"
148
148
  @click.stop="emit('retry', item.id)"
149
149
  >
150
150
  Retry
@@ -152,7 +152,7 @@ watch(
152
152
  <button
153
153
  v-if="item.status === 'processing'"
154
154
  type="button"
155
- class="mld-batch-progress__cancel-btn"
155
+ class="mint-batch-progress__cancel-btn"
156
156
  @click.stop="emit('cancel', item.id)"
157
157
  >
158
158
  Cancel
@@ -161,15 +161,15 @@ watch(
161
161
  </div>
162
162
 
163
163
  <!-- Error message (expandable) -->
164
- <div v-if="item.status === 'error' && item.message" class="mld-batch-progress__item-error">
164
+ <div v-if="item.status === 'error' && item.message" class="mint-batch-progress__item-error">
165
165
  <button
166
166
  type="button"
167
- class="mld-batch-progress__error-toggle"
167
+ class="mint-batch-progress__error-toggle"
168
168
  @click.stop="toggleError(item.id)"
169
169
  >
170
170
  {{ expandedErrors.has(item.id) ? 'Hide error' : 'Show error' }}
171
171
  </button>
172
- <div v-if="expandedErrors.has(item.id)" class="mld-batch-progress__item-message">
172
+ <div v-if="expandedErrors.has(item.id)" class="mint-batch-progress__item-message">
173
173
  {{ item.message }}
174
174
  </div>
175
175
  </div>
@@ -23,31 +23,31 @@ function handleClick(item: BreadcrumbItem) {
23
23
  </script>
24
24
 
25
25
  <template>
26
- <nav class="mld-breadcrumb" aria-label="Breadcrumb">
27
- <ol class="mld-breadcrumb__list">
26
+ <nav class="mint-breadcrumb" aria-label="Breadcrumb">
27
+ <ol class="mint-breadcrumb__list">
28
28
  <li
29
29
  v-for="(item, index) in items"
30
30
  :key="index"
31
- class="mld-breadcrumb__item"
31
+ class="mint-breadcrumb__item"
32
32
  >
33
33
  <slot name="item" :item="item" :index="index" :is-last="index === items.length - 1">
34
34
  <a
35
35
  v-if="item.href && index !== items.length - 1"
36
36
  :href="item.href"
37
- class="mld-breadcrumb__link"
37
+ class="mint-breadcrumb__link"
38
38
  >
39
39
  {{ item.label }}
40
40
  </a>
41
41
  <button
42
42
  v-else-if="index !== items.length - 1"
43
- class="mld-breadcrumb__link"
43
+ class="mint-breadcrumb__link"
44
44
  @click="handleClick(item)"
45
45
  >
46
46
  {{ item.label }}
47
47
  </button>
48
48
  <span
49
49
  v-else
50
- class="mld-breadcrumb__current"
50
+ class="mint-breadcrumb__current"
51
51
  aria-current="page"
52
52
  >
53
53
  {{ item.label }}
@@ -55,11 +55,11 @@ function handleClick(item: BreadcrumbItem) {
55
55
  </slot>
56
56
  <span
57
57
  v-if="index !== items.length - 1"
58
- class="mld-breadcrumb__separator"
58
+ class="mint-breadcrumb__separator"
59
59
  aria-hidden="true"
60
60
  >
61
61
  <slot name="separator">
62
- <svg v-if="separator === '/'" class="mld-breadcrumb__chevron" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
62
+ <svg v-if="separator === '/'" class="mint-breadcrumb__chevron" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
63
63
  <path d="m9 18 6-6-6-6" />
64
64
  </svg>
65
65
  <template v-else>{{ separator }}</template>
@@ -291,62 +291,62 @@ function nextMonth() {
291
291
  </script>
292
292
 
293
293
  <template>
294
- <div class="mld-calendar">
295
- <div v-if="showNavigation" class="mld-calendar__header">
296
- <button type="button" class="mld-calendar__nav-btn" aria-label="Previous month" @click="prevMonth">
294
+ <div class="mint-calendar">
295
+ <div v-if="showNavigation" class="mint-calendar__header">
296
+ <button type="button" class="mint-calendar__nav-btn" aria-label="Previous month" @click="prevMonth">
297
297
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
298
298
  <path d="m15 18-6-6 6-6" />
299
299
  </svg>
300
300
  </button>
301
301
  <slot name="header" :month="currentMonth" :year="currentYear" :prev-month="prevMonth" :next-month="nextMonth">
302
- <span class="mld-calendar__title">{{ monthLabel }}</span>
302
+ <span class="mint-calendar__title">{{ monthLabel }}</span>
303
303
  </slot>
304
- <button type="button" class="mld-calendar__nav-btn" aria-label="Next month" @click="nextMonth">
304
+ <button type="button" class="mint-calendar__nav-btn" aria-label="Next month" @click="nextMonth">
305
305
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
306
306
  <path d="m9 18 6-6-6-6" />
307
307
  </svg>
308
308
  </button>
309
309
  </div>
310
310
 
311
- <div class="mld-calendar__weekdays">
311
+ <div class="mint-calendar__weekdays">
312
312
  <span
313
313
  v-for="(label, i) in weekDayLabels"
314
314
  :key="i"
315
- class="mld-calendar__weekday"
315
+ class="mint-calendar__weekday"
316
316
  >
317
317
  <slot name="week-day" :day-name="label" :index="i">{{ label }}</slot>
318
318
  </span>
319
319
  </div>
320
320
 
321
- <div class="mld-calendar__grid">
321
+ <div class="mint-calendar__grid">
322
322
  <button
323
323
  v-for="(day, i) in calendarDays"
324
324
  :key="i"
325
325
  type="button"
326
326
  :disabled="day.isDisabled"
327
327
  :class="[
328
- 'mld-calendar__day',
328
+ 'mint-calendar__day',
329
329
  {
330
- 'mld-calendar__day--today': day.isToday,
331
- 'mld-calendar__day--selected': day.isSelected,
332
- 'mld-calendar__day--in-range': day.isInRange,
333
- 'mld-calendar__day--disabled': day.isDisabled,
334
- 'mld-calendar__day--outside': day.isOutsideMonth,
335
- 'mld-calendar__day--interactive': selectionMode !== 'none' && !day.isDisabled,
330
+ 'mint-calendar__day--today': day.isToday,
331
+ 'mint-calendar__day--selected': day.isSelected,
332
+ 'mint-calendar__day--in-range': day.isInRange,
333
+ 'mint-calendar__day--disabled': day.isDisabled,
334
+ 'mint-calendar__day--outside': day.isOutsideMonth,
335
+ 'mint-calendar__day--interactive': selectionMode !== 'none' && !day.isDisabled,
336
336
  },
337
337
  ]"
338
338
  @click="handleDayClick(day)"
339
339
  @mouseenter="handleDayHover(day)"
340
340
  >
341
341
  <slot name="day-content" :day="day">
342
- <span class="mld-calendar__day-number">{{ day.dayOfMonth }}</span>
343
- <div v-if="day.markers.length > 0" class="mld-calendar__markers">
342
+ <span class="mint-calendar__day-number">{{ day.dayOfMonth }}</span>
343
+ <div v-if="day.markers.length > 0" class="mint-calendar__markers">
344
344
  <span
345
345
  v-for="(marker, mi) in day.markers.slice(0, 3)"
346
346
  :key="mi"
347
347
  :class="[
348
- 'mld-calendar__marker',
349
- `mld-calendar__marker--${marker.type ?? 'dot'}`,
348
+ 'mint-calendar__marker',
349
+ `mint-calendar__marker--${marker.type ?? 'dot'}`,
350
350
  ]"
351
351
  :style="marker.color ? { '--marker-color': marker.color } : {}"
352
352
  :title="marker.label"
@@ -19,20 +19,20 @@ withDefaults(defineProps<Props>(), {
19
19
  </script>
20
20
 
21
21
  <template>
22
- <div class="mld-chart">
23
- <div v-if="title || description || $slots.toolbar" class="mld-chart__header">
24
- <div v-if="title || description" class="mld-chart__header-text">
25
- <h3 v-if="title" class="mld-chart__title">{{ title }}</h3>
26
- <p v-if="description" class="mld-chart__description">{{ description }}</p>
22
+ <div class="mint-chart">
23
+ <div v-if="title || description || $slots.toolbar" class="mint-chart__header">
24
+ <div v-if="title || description" class="mint-chart__header-text">
25
+ <h3 v-if="title" class="mint-chart__title">{{ title }}</h3>
26
+ <p v-if="description" class="mint-chart__description">{{ description }}</p>
27
27
  </div>
28
- <div v-if="$slots.toolbar" class="mld-chart__toolbar">
28
+ <div v-if="$slots.toolbar" class="mint-chart__toolbar">
29
29
  <slot name="toolbar" />
30
30
  </div>
31
31
  </div>
32
32
 
33
- <div class="mld-chart__body">
33
+ <div class="mint-chart__body">
34
34
  <!-- Loading overlay -->
35
- <div v-if="loading" class="mld-chart__loading-overlay">
35
+ <div v-if="loading" class="mint-chart__loading-overlay">
36
36
  <LoadingSpinner size="lg" />
37
37
  </div>
38
38
 
@@ -53,7 +53,7 @@ withDefaults(defineProps<Props>(), {
53
53
  </template>
54
54
  </div>
55
55
 
56
- <div v-if="$slots.legend" class="mld-chart__legend">
56
+ <div v-if="$slots.legend" class="mint-chart__legend">
57
57
  <slot name="legend" />
58
58
  </div>
59
59
  </div>
@@ -21,15 +21,15 @@ function getParts(f: string): FormulaPart[] {
21
21
  <template>
22
22
  <component
23
23
  :is="inline ? 'span' : 'div'"
24
- :class="['mld-chem-formula', !inline ? 'mld-chem-formula--block' : '']"
24
+ :class="['mint-chem-formula', !inline ? 'mint-chem-formula--block' : '']"
25
25
  >
26
26
  <template v-for="(part, i) in getParts(formula)" :key="i">
27
- <span v-if="part.type === 'element'" class="mld-chem-formula__element">{{ part.text }}</span>
28
- <span v-else-if="part.type === 'subscript'" class="mld-chem-formula__subscript">{{ part.text }}</span>
29
- <span v-else-if="part.type === 'superscript'" class="mld-chem-formula__superscript">{{ part.text }}</span>
30
- <span v-else-if="part.type === 'paren'" class="mld-chem-formula__paren">{{ part.text }}</span>
31
- <span v-else-if="part.type === 'dot'" class="mld-chem-formula__dot">{{ part.text }}</span>
32
- <span v-else-if="part.type === 'charge'" class="mld-chem-formula__charge">{{ part.text }}</span>
27
+ <span v-if="part.type === 'element'" class="mint-chem-formula__element">{{ part.text }}</span>
28
+ <span v-else-if="part.type === 'subscript'" class="mint-chem-formula__subscript">{{ part.text }}</span>
29
+ <span v-else-if="part.type === 'superscript'" class="mint-chem-formula__superscript">{{ part.text }}</span>
30
+ <span v-else-if="part.type === 'paren'" class="mint-chem-formula__paren">{{ part.text }}</span>
31
+ <span v-else-if="part.type === 'dot'" class="mint-chem-formula__dot">{{ part.text }}</span>
32
+ <span v-else-if="part.type === 'charge'" class="mint-chem-formula__charge">{{ part.text }}</span>
33
33
  </template>
34
34
  </component>
35
35
  </template>