@reshape-biotech/design-system 2.4.1 → 2.4.2

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 (483) hide show
  1. package/dist/index.css +823 -0
  2. package/dist/index.js +110505 -54
  3. package/dist/index.umd.cjs +96499 -0
  4. package/package.json +197 -197
  5. package/dist/app.css +0 -115
  6. package/dist/components/activity/Activity.stories.svelte +0 -127
  7. package/dist/components/activity/Activity.stories.svelte.d.ts +0 -19
  8. package/dist/components/activity/Activity.svelte +0 -127
  9. package/dist/components/activity/Activity.svelte.d.ts +0 -17
  10. package/dist/components/activity/Activity.test.d.ts +0 -1
  11. package/dist/components/activity/Activity.test.js +0 -89
  12. package/dist/components/activity/index.d.ts +0 -1
  13. package/dist/components/activity/index.js +0 -1
  14. package/dist/components/avatar/Avatar.stories.svelte +0 -41
  15. package/dist/components/avatar/Avatar.stories.svelte.d.ts +0 -19
  16. package/dist/components/avatar/Avatar.svelte +0 -63
  17. package/dist/components/avatar/Avatar.svelte.d.ts +0 -8
  18. package/dist/components/avatar/Avatar.test.d.ts +0 -1
  19. package/dist/components/avatar/Avatar.test.js +0 -55
  20. package/dist/components/avatar/index.d.ts +0 -1
  21. package/dist/components/avatar/index.js +0 -1
  22. package/dist/components/banner/Banner.stories.svelte +0 -129
  23. package/dist/components/banner/Banner.stories.svelte.d.ts +0 -19
  24. package/dist/components/banner/Banner.svelte +0 -59
  25. package/dist/components/banner/Banner.svelte.d.ts +0 -11
  26. package/dist/components/banner/index.d.ts +0 -1
  27. package/dist/components/banner/index.js +0 -1
  28. package/dist/components/button/Button.stories.svelte +0 -76
  29. package/dist/components/button/Button.stories.svelte.d.ts +0 -19
  30. package/dist/components/button/Button.svelte +0 -311
  31. package/dist/components/button/Button.svelte.d.ts +0 -22
  32. package/dist/components/button/Button.test.d.ts +0 -1
  33. package/dist/components/button/Button.test.js +0 -117
  34. package/dist/components/button/Button.test.svelte +0 -5
  35. package/dist/components/button/Button.test.svelte.d.ts +0 -19
  36. package/dist/components/button/index.d.ts +0 -1
  37. package/dist/components/button/index.js +0 -1
  38. package/dist/components/card/Card.stories.svelte +0 -130
  39. package/dist/components/card/Card.stories.svelte.d.ts +0 -19
  40. package/dist/components/card/Card.svelte +0 -25
  41. package/dist/components/card/Card.svelte.d.ts +0 -10
  42. package/dist/components/card/index.d.ts +0 -1
  43. package/dist/components/card/index.js +0 -1
  44. package/dist/components/checkbox/Checkbox.stories.svelte +0 -22
  45. package/dist/components/checkbox/Checkbox.stories.svelte.d.ts +0 -19
  46. package/dist/components/checkbox/Checkbox.svelte +0 -24
  47. package/dist/components/checkbox/Checkbox.svelte.d.ts +0 -5
  48. package/dist/components/checkbox/Checkbox.test.d.ts +0 -1
  49. package/dist/components/checkbox/Checkbox.test.js +0 -51
  50. package/dist/components/checkbox/index.d.ts +0 -1
  51. package/dist/components/checkbox/index.js +0 -1
  52. package/dist/components/collapsible/Collapsible.stories.svelte +0 -41
  53. package/dist/components/collapsible/Collapsible.stories.svelte.d.ts +0 -19
  54. package/dist/components/collapsible/components/collapsible-content.svelte +0 -26
  55. package/dist/components/collapsible/components/collapsible-content.svelte.d.ts +0 -10
  56. package/dist/components/collapsible/components/collapsible-trigger.svelte +0 -36
  57. package/dist/components/collapsible/components/collapsible-trigger.svelte.d.ts +0 -4
  58. package/dist/components/collapsible/index.d.ts +0 -5
  59. package/dist/components/collapsible/index.js +0 -4
  60. package/dist/components/collapsible/types.d.ts +0 -9
  61. package/dist/components/collapsible/types.js +0 -1
  62. package/dist/components/combobox/Combobox.stories.svelte +0 -442
  63. package/dist/components/combobox/Combobox.stories.svelte.d.ts +0 -19
  64. package/dist/components/combobox/components/combobox-add.svelte +0 -31
  65. package/dist/components/combobox/components/combobox-add.svelte.d.ts +0 -8
  66. package/dist/components/combobox/components/combobox-content.svelte +0 -156
  67. package/dist/components/combobox/components/combobox-content.svelte.d.ts +0 -4
  68. package/dist/components/combobox/components/combobox-indicator.svelte +0 -5
  69. package/dist/components/combobox/components/combobox-indicator.svelte.d.ts +0 -18
  70. package/dist/components/combobox/index.d.ts +0 -14
  71. package/dist/components/combobox/index.js +0 -15
  72. package/dist/components/combobox/types.d.ts +0 -24
  73. package/dist/components/combobox/types.js +0 -1
  74. package/dist/components/datepicker/DatePicker.stories.svelte +0 -222
  75. package/dist/components/datepicker/DatePicker.stories.svelte.d.ts +0 -19
  76. package/dist/components/datepicker/DatePicker.svelte +0 -346
  77. package/dist/components/datepicker/DatePicker.svelte.d.ts +0 -8
  78. package/dist/components/datepicker/index.d.ts +0 -1
  79. package/dist/components/datepicker/index.js +0 -1
  80. package/dist/components/divider/Divider.stories.svelte +0 -12
  81. package/dist/components/divider/Divider.stories.svelte.d.ts +0 -27
  82. package/dist/components/divider/Divider.svelte +0 -15
  83. package/dist/components/divider/Divider.svelte.d.ts +0 -8
  84. package/dist/components/divider/index.d.ts +0 -1
  85. package/dist/components/divider/index.js +0 -1
  86. package/dist/components/drawer/Drawer.stories.svelte +0 -231
  87. package/dist/components/drawer/Drawer.stories.svelte.d.ts +0 -27
  88. package/dist/components/drawer/components/drawer-bottom.svelte +0 -14
  89. package/dist/components/drawer/components/drawer-bottom.svelte.d.ts +0 -4
  90. package/dist/components/drawer/components/drawer-close.svelte +0 -19
  91. package/dist/components/drawer/components/drawer-close.svelte.d.ts +0 -4
  92. package/dist/components/drawer/components/drawer-content.svelte +0 -74
  93. package/dist/components/drawer/components/drawer-content.svelte.d.ts +0 -4
  94. package/dist/components/drawer/components/drawer-overlay.svelte +0 -23
  95. package/dist/components/drawer/components/drawer-overlay.svelte.d.ts +0 -4
  96. package/dist/components/drawer/components/drawer-title.svelte +0 -20
  97. package/dist/components/drawer/components/drawer-title.svelte.d.ts +0 -4
  98. package/dist/components/drawer/components/drawer-trigger.svelte +0 -10
  99. package/dist/components/drawer/components/drawer-trigger.svelte.d.ts +0 -4
  100. package/dist/components/drawer/index.d.ts +0 -12
  101. package/dist/components/drawer/index.js +0 -15
  102. package/dist/components/drawer/types.d.ts +0 -36
  103. package/dist/components/drawer/types.js +0 -1
  104. package/dist/components/dropdown/Dropdown.stories.svelte +0 -236
  105. package/dist/components/dropdown/Dropdown.stories.svelte.d.ts +0 -27
  106. package/dist/components/dropdown/Dropdown.svelte +0 -69
  107. package/dist/components/dropdown/Dropdown.svelte.d.ts +0 -26
  108. package/dist/components/dropdown/components/DropdownContent.svelte +0 -29
  109. package/dist/components/dropdown/components/DropdownContent.svelte.d.ts +0 -10
  110. package/dist/components/dropdown/components/DropdownMenu.svelte +0 -23
  111. package/dist/components/dropdown/components/DropdownMenu.svelte.d.ts +0 -8
  112. package/dist/components/dropdown/components/DropdownTrigger.svelte +0 -46
  113. package/dist/components/dropdown/components/DropdownTrigger.svelte.d.ts +0 -13
  114. package/dist/components/dropdown/components/OutlinedButton.svelte +0 -61
  115. package/dist/components/dropdown/components/OutlinedButton.svelte.d.ts +0 -8
  116. package/dist/components/dropdown/index.d.ts +0 -1
  117. package/dist/components/dropdown/index.js +0 -1
  118. package/dist/components/empty-content/EmptyContent.stories.svelte +0 -47
  119. package/dist/components/empty-content/EmptyContent.stories.svelte.d.ts +0 -27
  120. package/dist/components/empty-content/EmptyContent.svelte +0 -19
  121. package/dist/components/empty-content/EmptyContent.svelte.d.ts +0 -8
  122. package/dist/components/empty-content/index.d.ts +0 -1
  123. package/dist/components/empty-content/index.js +0 -1
  124. package/dist/components/graphs/bar-chart/BarChart.stories.svelte +0 -119
  125. package/dist/components/graphs/bar-chart/BarChart.stories.svelte.d.ts +0 -19
  126. package/dist/components/graphs/bar-chart/BarChart.svelte +0 -169
  127. package/dist/components/graphs/bar-chart/BarChart.svelte.d.ts +0 -17
  128. package/dist/components/graphs/bar-chart/StackedBarChart.stories.svelte +0 -74
  129. package/dist/components/graphs/bar-chart/StackedBarChart.stories.svelte.d.ts +0 -19
  130. package/dist/components/graphs/bar-chart/StackedBarChart.svelte +0 -208
  131. package/dist/components/graphs/bar-chart/StackedBarChart.svelte.d.ts +0 -18
  132. package/dist/components/graphs/chart/Chart.stories.svelte +0 -133
  133. package/dist/components/graphs/chart/Chart.stories.svelte.d.ts +0 -19
  134. package/dist/components/graphs/chart/Chart.svelte +0 -222
  135. package/dist/components/graphs/chart/Chart.svelte.d.ts +0 -28
  136. package/dist/components/graphs/index.d.ts +0 -7
  137. package/dist/components/graphs/index.js +0 -7
  138. package/dist/components/graphs/line/LineChart.stories.svelte +0 -173
  139. package/dist/components/graphs/line/LineChart.stories.svelte.d.ts +0 -19
  140. package/dist/components/graphs/line/LineChart.svelte +0 -156
  141. package/dist/components/graphs/line/LineChart.svelte.d.ts +0 -4
  142. package/dist/components/graphs/line/types.d.ts +0 -13
  143. package/dist/components/graphs/line/types.js +0 -1
  144. package/dist/components/graphs/matrix/Matrix.stories.svelte +0 -142
  145. package/dist/components/graphs/matrix/Matrix.stories.svelte.d.ts +0 -19
  146. package/dist/components/graphs/matrix/Matrix.svelte +0 -149
  147. package/dist/components/graphs/matrix/Matrix.svelte.d.ts +0 -24
  148. package/dist/components/graphs/matrix/Matrix.test.d.ts +0 -1
  149. package/dist/components/graphs/matrix/Matrix.test.js +0 -256
  150. package/dist/components/graphs/matrix/Matrix.test.svelte +0 -49
  151. package/dist/components/graphs/matrix/Matrix.test.svelte.d.ts +0 -4
  152. package/dist/components/graphs/matrix/index.d.ts +0 -3
  153. package/dist/components/graphs/matrix/index.js +0 -3
  154. package/dist/components/graphs/multiline/MultiLineChart.stories.svelte +0 -200
  155. package/dist/components/graphs/multiline/MultiLineChart.stories.svelte.d.ts +0 -19
  156. package/dist/components/graphs/multiline/MultiLineChart.svelte +0 -263
  157. package/dist/components/graphs/multiline/MultiLineChart.svelte.d.ts +0 -23
  158. package/dist/components/graphs/multiline/types.d.ts +0 -20
  159. package/dist/components/graphs/multiline/types.js +0 -1
  160. package/dist/components/graphs/scatterplot/Scatterplot.stories.svelte +0 -105
  161. package/dist/components/graphs/scatterplot/Scatterplot.stories.svelte.d.ts +0 -19
  162. package/dist/components/graphs/scatterplot/Scatterplot.svelte +0 -335
  163. package/dist/components/graphs/scatterplot/Scatterplot.svelte.d.ts +0 -26
  164. package/dist/components/graphs/utils/duration.d.ts +0 -1
  165. package/dist/components/graphs/utils/duration.js +0 -33
  166. package/dist/components/graphs/utils/tooltipFormatter.d.ts +0 -15
  167. package/dist/components/graphs/utils/tooltipFormatter.js +0 -70
  168. package/dist/components/icon-button/IconButton.stories.svelte +0 -82
  169. package/dist/components/icon-button/IconButton.stories.svelte.d.ts +0 -19
  170. package/dist/components/icon-button/IconButton.svelte +0 -194
  171. package/dist/components/icon-button/IconButton.svelte.d.ts +0 -14
  172. package/dist/components/icon-button/index.d.ts +0 -1
  173. package/dist/components/icon-button/index.js +0 -1
  174. package/dist/components/icons/AnalysisIcon.stories.svelte +0 -32
  175. package/dist/components/icons/AnalysisIcon.stories.svelte.d.ts +0 -27
  176. package/dist/components/icons/AnalysisIcon.svelte +0 -132
  177. package/dist/components/icons/AnalysisIcon.svelte.d.ts +0 -11
  178. package/dist/components/icons/Icon.stories.svelte +0 -127
  179. package/dist/components/icons/Icon.stories.svelte.d.ts +0 -19
  180. package/dist/components/icons/Icon.svelte +0 -24
  181. package/dist/components/icons/Icon.svelte.d.ts +0 -4
  182. package/dist/components/icons/PrincipalIcon.svelte +0 -96
  183. package/dist/components/icons/PrincipalIcon.svelte.d.ts +0 -10
  184. package/dist/components/icons/custom/Halo.svelte +0 -38
  185. package/dist/components/icons/custom/Halo.svelte.d.ts +0 -8
  186. package/dist/components/icons/custom/Well.svelte +0 -34
  187. package/dist/components/icons/custom/Well.svelte.d.ts +0 -8
  188. package/dist/components/icons/index.d.ts +0 -21
  189. package/dist/components/icons/index.js +0 -248
  190. package/dist/components/icons/types.d.ts +0 -0
  191. package/dist/components/icons/types.js +0 -1
  192. package/dist/components/image/Image.svelte +0 -55
  193. package/dist/components/image/Image.svelte.d.ts +0 -7
  194. package/dist/components/image/index.d.ts +0 -1
  195. package/dist/components/image/index.js +0 -1
  196. package/dist/components/input/Input.stories.svelte +0 -87
  197. package/dist/components/input/Input.stories.svelte.d.ts +0 -27
  198. package/dist/components/input/Input.svelte +0 -228
  199. package/dist/components/input/Input.svelte.d.ts +0 -23
  200. package/dist/components/input/Input.test.d.ts +0 -1
  201. package/dist/components/input/Input.test.js +0 -35
  202. package/dist/components/input/index.d.ts +0 -1
  203. package/dist/components/input/index.js +0 -1
  204. package/dist/components/label/Label.stories.svelte +0 -28
  205. package/dist/components/label/Label.stories.svelte.d.ts +0 -19
  206. package/dist/components/label/Label.svelte +0 -17
  207. package/dist/components/label/Label.svelte.d.ts +0 -9
  208. package/dist/components/label/Label.test.d.ts +0 -1
  209. package/dist/components/label/Label.test.js +0 -29
  210. package/dist/components/list/List.stories.svelte +0 -97
  211. package/dist/components/list/List.stories.svelte.d.ts +0 -19
  212. package/dist/components/list/List.svelte +0 -69
  213. package/dist/components/list/List.svelte.d.ts +0 -24
  214. package/dist/components/list/index.d.ts +0 -1
  215. package/dist/components/list/index.js +0 -1
  216. package/dist/components/logo/Logo.stories.svelte +0 -21
  217. package/dist/components/logo/Logo.stories.svelte.d.ts +0 -27
  218. package/dist/components/logo/Logo.svelte +0 -39
  219. package/dist/components/logo/Logo.svelte.d.ts +0 -7
  220. package/dist/components/logo/index.d.ts +0 -1
  221. package/dist/components/logo/index.js +0 -1
  222. package/dist/components/manual-cfu-counter/ManualCFUCounter.stories.svelte +0 -125
  223. package/dist/components/manual-cfu-counter/ManualCFUCounter.stories.svelte.d.ts +0 -3
  224. package/dist/components/manual-cfu-counter/ManualCFUCounter.svelte +0 -580
  225. package/dist/components/manual-cfu-counter/ManualCFUCounter.svelte.d.ts +0 -20
  226. package/dist/components/manual-cfu-counter/index.d.ts +0 -1
  227. package/dist/components/manual-cfu-counter/index.js +0 -1
  228. package/dist/components/manual-cfu-counter/test/ManualCFUCounter.test.d.ts +0 -1
  229. package/dist/components/manual-cfu-counter/test/ManualCFUCounter.test.js +0 -319
  230. package/dist/components/manual-cfu-counter/test/ManualCFUCounterTestWrapper.svelte +0 -22
  231. package/dist/components/manual-cfu-counter/test/ManualCFUCounterTestWrapper.svelte.d.ts +0 -19
  232. package/dist/components/markdown/Markdown.stories.svelte +0 -41
  233. package/dist/components/markdown/Markdown.stories.svelte.d.ts +0 -27
  234. package/dist/components/markdown/Markdown.svelte +0 -12
  235. package/dist/components/markdown/Markdown.svelte.d.ts +0 -6
  236. package/dist/components/markdown/index.d.ts +0 -1
  237. package/dist/components/markdown/index.js +0 -1
  238. package/dist/components/modal/Modal.stories.svelte +0 -247
  239. package/dist/components/modal/Modal.stories.svelte.d.ts +0 -19
  240. package/dist/components/modal/components/modal-bottom.svelte +0 -15
  241. package/dist/components/modal/components/modal-bottom.svelte.d.ts +0 -4
  242. package/dist/components/modal/components/modal-close.svelte +0 -19
  243. package/dist/components/modal/components/modal-close.svelte.d.ts +0 -4
  244. package/dist/components/modal/components/modal-content.svelte +0 -59
  245. package/dist/components/modal/components/modal-content.svelte.d.ts +0 -4
  246. package/dist/components/modal/components/modal-overlay.svelte +0 -19
  247. package/dist/components/modal/components/modal-overlay.svelte.d.ts +0 -4
  248. package/dist/components/modal/components/modal-title.svelte +0 -21
  249. package/dist/components/modal/components/modal-title.svelte.d.ts +0 -4
  250. package/dist/components/modal/components/modal-trigger.svelte +0 -10
  251. package/dist/components/modal/components/modal-trigger.svelte.d.ts +0 -4
  252. package/dist/components/modal/index.d.ts +0 -12
  253. package/dist/components/modal/index.js +0 -15
  254. package/dist/components/modal/types.d.ts +0 -32
  255. package/dist/components/modal/types.js +0 -1
  256. package/dist/components/multi-cfu-counter/MultiCFUCounter.stories.svelte +0 -215
  257. package/dist/components/multi-cfu-counter/MultiCFUCounter.stories.svelte.d.ts +0 -3
  258. package/dist/components/multi-cfu-counter/MultiCFUCounter.svelte +0 -669
  259. package/dist/components/multi-cfu-counter/MultiCFUCounter.svelte.d.ts +0 -36
  260. package/dist/components/multi-cfu-counter/index.d.ts +0 -1
  261. package/dist/components/multi-cfu-counter/index.js +0 -1
  262. package/dist/components/multi-cfu-counter/test/MultiCFUCounter.test.d.ts +0 -1
  263. package/dist/components/multi-cfu-counter/test/MultiCFUCounter.test.js +0 -320
  264. package/dist/components/multi-cfu-counter/test/MultiCFUCounterTestWrapper.svelte +0 -28
  265. package/dist/components/multi-cfu-counter/test/MultiCFUCounterTestWrapper.svelte.d.ts +0 -20
  266. package/dist/components/notification-popup/NotificationPopup.stories.svelte +0 -26
  267. package/dist/components/notification-popup/NotificationPopup.stories.svelte.d.ts +0 -27
  268. package/dist/components/notification-popup/NotificationPopup.svelte +0 -33
  269. package/dist/components/notification-popup/NotificationPopup.svelte.d.ts +0 -11
  270. package/dist/components/notification-popup/index.d.ts +0 -1
  271. package/dist/components/notification-popup/index.js +0 -1
  272. package/dist/components/notifications/Notifications.stories.svelte +0 -107
  273. package/dist/components/notifications/Notifications.stories.svelte.d.ts +0 -19
  274. package/dist/components/notifications/Notifications.svelte +0 -14
  275. package/dist/components/notifications/Notifications.svelte.d.ts +0 -18
  276. package/dist/components/notifications/index.d.ts +0 -1
  277. package/dist/components/notifications/index.js +0 -1
  278. package/dist/components/pill/Pill.stories.svelte +0 -13
  279. package/dist/components/pill/Pill.stories.svelte.d.ts +0 -19
  280. package/dist/components/pill/Pill.svelte +0 -39
  281. package/dist/components/pill/Pill.svelte.d.ts +0 -10
  282. package/dist/components/pill/index.d.ts +0 -1
  283. package/dist/components/pill/index.js +0 -1
  284. package/dist/components/progress-circle/ProgressCircle.stories.svelte +0 -15
  285. package/dist/components/progress-circle/ProgressCircle.stories.svelte.d.ts +0 -19
  286. package/dist/components/progress-circle/ProgressCircle.svelte +0 -79
  287. package/dist/components/progress-circle/ProgressCircle.svelte.d.ts +0 -7
  288. package/dist/components/progress-circle/index.d.ts +0 -1
  289. package/dist/components/progress-circle/index.js +0 -1
  290. package/dist/components/required-status-indicator/RequiredStatusIndicator.stories.svelte +0 -28
  291. package/dist/components/required-status-indicator/RequiredStatusIndicator.stories.svelte.d.ts +0 -19
  292. package/dist/components/required-status-indicator/RequiredStatusIndicator.svelte +0 -22
  293. package/dist/components/required-status-indicator/RequiredStatusIndicator.svelte.d.ts +0 -8
  294. package/dist/components/required-status-indicator/index.d.ts +0 -1
  295. package/dist/components/required-status-indicator/index.js +0 -1
  296. package/dist/components/segmented-control-buttons/ControlButton.svelte +0 -57
  297. package/dist/components/segmented-control-buttons/ControlButton.svelte.d.ts +0 -14
  298. package/dist/components/segmented-control-buttons/SegmentedControlButtons.stories.svelte +0 -45
  299. package/dist/components/segmented-control-buttons/SegmentedControlButtons.stories.svelte.d.ts +0 -19
  300. package/dist/components/segmented-control-buttons/SegmentedControlButtons.svelte +0 -21
  301. package/dist/components/segmented-control-buttons/SegmentedControlButtons.svelte.d.ts +0 -12
  302. package/dist/components/segmented-control-buttons/index.d.ts +0 -1
  303. package/dist/components/segmented-control-buttons/index.js +0 -1
  304. package/dist/components/select/Select.stories.svelte +0 -219
  305. package/dist/components/select/Select.stories.svelte.d.ts +0 -19
  306. package/dist/components/select/components/Group.svelte +0 -24
  307. package/dist/components/select/components/Group.svelte.d.ts +0 -11
  308. package/dist/components/select/components/MultiSelectTrigger.svelte +0 -69
  309. package/dist/components/select/components/MultiSelectTrigger.svelte.d.ts +0 -18
  310. package/dist/components/select/components/SelectContent.svelte +0 -33
  311. package/dist/components/select/components/SelectContent.svelte.d.ts +0 -10
  312. package/dist/components/select/components/SelectGroupHeading.svelte +0 -19
  313. package/dist/components/select/components/SelectGroupHeading.svelte.d.ts +0 -9
  314. package/dist/components/select/components/SelectItem.svelte +0 -39
  315. package/dist/components/select/components/SelectItem.svelte.d.ts +0 -9
  316. package/dist/components/select/components/SelectTrigger.svelte +0 -48
  317. package/dist/components/select/components/SelectTrigger.svelte.d.ts +0 -12
  318. package/dist/components/select/index.d.ts +0 -10
  319. package/dist/components/select/index.js +0 -12
  320. package/dist/components/select/types.d.ts +0 -25
  321. package/dist/components/select/types.js +0 -1
  322. package/dist/components/sjsf-wrappers/SjsfNumberInputWrapper.svelte +0 -107
  323. package/dist/components/sjsf-wrappers/SjsfNumberInputWrapper.svelte.d.ts +0 -3
  324. package/dist/components/sjsf-wrappers/SjsfSelectWidgetWrapper.svelte +0 -77
  325. package/dist/components/sjsf-wrappers/SjsfSelectWidgetWrapper.svelte.d.ts +0 -3
  326. package/dist/components/sjsf-wrappers/SjsfTextInputWrapper.svelte +0 -65
  327. package/dist/components/sjsf-wrappers/SjsfTextInputWrapper.svelte.d.ts +0 -3
  328. package/dist/components/sjsf-wrappers/index.d.ts +0 -2
  329. package/dist/components/sjsf-wrappers/index.js +0 -2
  330. package/dist/components/sjsf-wrappers/sjsfCustomTheme.d.ts +0 -2
  331. package/dist/components/sjsf-wrappers/sjsfCustomTheme.js +0 -12
  332. package/dist/components/skeleton-loader/SkeletonLoader.stories.svelte +0 -45
  333. package/dist/components/skeleton-loader/SkeletonLoader.stories.svelte.d.ts +0 -27
  334. package/dist/components/skeleton-loader/SkeletonLoader.svelte +0 -17
  335. package/dist/components/skeleton-loader/SkeletonLoader.svelte.d.ts +0 -14
  336. package/dist/components/skeleton-loader/StatcardSkeleton.svelte +0 -14
  337. package/dist/components/skeleton-loader/StatcardSkeleton.svelte.d.ts +0 -18
  338. package/dist/components/skeleton-loader/components/Skeleton.svelte +0 -14
  339. package/dist/components/skeleton-loader/components/Skeleton.svelte.d.ts +0 -8
  340. package/dist/components/skeleton-loader/components/SkeletonImage.svelte +0 -14
  341. package/dist/components/skeleton-loader/components/SkeletonImage.svelte.d.ts +0 -26
  342. package/dist/components/skeleton-loader/index.d.ts +0 -3
  343. package/dist/components/skeleton-loader/index.js +0 -3
  344. package/dist/components/slider/Slider.stories.svelte +0 -42
  345. package/dist/components/slider/Slider.stories.svelte.d.ts +0 -27
  346. package/dist/components/slider/Slider.svelte +0 -133
  347. package/dist/components/slider/Slider.svelte.d.ts +0 -32
  348. package/dist/components/slider/index.d.ts +0 -1
  349. package/dist/components/slider/index.js +0 -1
  350. package/dist/components/spinner/Spinner.stories.svelte +0 -13
  351. package/dist/components/spinner/Spinner.stories.svelte.d.ts +0 -19
  352. package/dist/components/spinner/Spinner.svelte +0 -32
  353. package/dist/components/spinner/Spinner.svelte.d.ts +0 -7
  354. package/dist/components/spinner/index.d.ts +0 -1
  355. package/dist/components/spinner/index.js +0 -1
  356. package/dist/components/stat-card/StatCard.stories.svelte +0 -40
  357. package/dist/components/stat-card/StatCard.stories.svelte.d.ts +0 -27
  358. package/dist/components/stat-card/StatCard.svelte +0 -146
  359. package/dist/components/stat-card/StatCard.svelte.d.ts +0 -13
  360. package/dist/components/stat-card/StatCard.test.d.ts +0 -1
  361. package/dist/components/stat-card/StatCard.test.js +0 -54
  362. package/dist/components/stat-card/index.d.ts +0 -1
  363. package/dist/components/stat-card/index.js +0 -1
  364. package/dist/components/status-badge/StatusBadge.stories.svelte +0 -393
  365. package/dist/components/status-badge/StatusBadge.stories.svelte.d.ts +0 -19
  366. package/dist/components/status-badge/StatusBadge.svelte +0 -149
  367. package/dist/components/status-badge/StatusBadge.svelte.d.ts +0 -12
  368. package/dist/components/status-badge/index.d.ts +0 -1
  369. package/dist/components/status-badge/index.js +0 -1
  370. package/dist/components/stepper/Stepper.stories.svelte +0 -243
  371. package/dist/components/stepper/Stepper.stories.svelte.d.ts +0 -19
  372. package/dist/components/stepper/components/stepper-root.svelte +0 -24
  373. package/dist/components/stepper/components/stepper-root.svelte.d.ts +0 -9
  374. package/dist/components/stepper/components/stepper-step.svelte +0 -100
  375. package/dist/components/stepper/components/stepper-step.svelte.d.ts +0 -11
  376. package/dist/components/stepper/index.d.ts +0 -15
  377. package/dist/components/stepper/index.js +0 -2
  378. package/dist/components/table/Table.stories.svelte +0 -94
  379. package/dist/components/table/Table.stories.svelte.d.ts +0 -24
  380. package/dist/components/table/Table.svelte +0 -47
  381. package/dist/components/table/Table.svelte.d.ts +0 -21
  382. package/dist/components/table/Table.test.d.ts +0 -1
  383. package/dist/components/table/Table.test.js +0 -97
  384. package/dist/components/table/Table.test.svelte +0 -37
  385. package/dist/components/table/Table.test.svelte.d.ts +0 -12
  386. package/dist/components/table/components/TBody.svelte +0 -14
  387. package/dist/components/table/components/TBody.svelte.d.ts +0 -8
  388. package/dist/components/table/components/THead.svelte +0 -14
  389. package/dist/components/table/components/THead.svelte.d.ts +0 -8
  390. package/dist/components/table/components/Td.svelte +0 -15
  391. package/dist/components/table/components/Td.svelte.d.ts +0 -9
  392. package/dist/components/table/components/Th.svelte +0 -15
  393. package/dist/components/table/components/Th.svelte.d.ts +0 -9
  394. package/dist/components/table/components/Tr.svelte +0 -32
  395. package/dist/components/table/components/Tr.svelte.d.ts +0 -9
  396. package/dist/components/table/index.d.ts +0 -1
  397. package/dist/components/table/index.js +0 -1
  398. package/dist/components/tabs/Tabs.stories.svelte +0 -28
  399. package/dist/components/tabs/Tabs.stories.svelte.d.ts +0 -27
  400. package/dist/components/tabs/Tabs.svelte +0 -13
  401. package/dist/components/tabs/Tabs.svelte.d.ts +0 -14
  402. package/dist/components/tabs/components/Content.svelte +0 -15
  403. package/dist/components/tabs/components/Content.svelte.d.ts +0 -9
  404. package/dist/components/tabs/components/Tab.svelte +0 -21
  405. package/dist/components/tabs/components/Tab.svelte.d.ts +0 -10
  406. package/dist/components/tabs/components/Tabs.svelte +0 -14
  407. package/dist/components/tabs/components/Tabs.svelte.d.ts +0 -8
  408. package/dist/components/tabs/index.d.ts +0 -1
  409. package/dist/components/tabs/index.js +0 -1
  410. package/dist/components/tag/Tag.stories.svelte +0 -83
  411. package/dist/components/tag/Tag.stories.svelte.d.ts +0 -19
  412. package/dist/components/tag/Tag.svelte +0 -121
  413. package/dist/components/tag/Tag.svelte.d.ts +0 -12
  414. package/dist/components/tag/index.d.ts +0 -1
  415. package/dist/components/tag/index.js +0 -1
  416. package/dist/components/textarea/Textarea.stories.svelte +0 -97
  417. package/dist/components/textarea/Textarea.stories.svelte.d.ts +0 -19
  418. package/dist/components/textarea/Textarea.svelte +0 -94
  419. package/dist/components/textarea/Textarea.svelte.d.ts +0 -17
  420. package/dist/components/textarea/Textarea.test.d.ts +0 -1
  421. package/dist/components/textarea/Textarea.test.js +0 -90
  422. package/dist/components/textarea/index.d.ts +0 -1
  423. package/dist/components/textarea/index.js +0 -1
  424. package/dist/components/toast/Toast.stories.svelte +0 -209
  425. package/dist/components/toast/Toast.stories.svelte.d.ts +0 -19
  426. package/dist/components/toast/Toast.svelte +0 -62
  427. package/dist/components/toast/Toast.svelte.d.ts +0 -7
  428. package/dist/components/toast/index.d.ts +0 -1
  429. package/dist/components/toast/index.js +0 -1
  430. package/dist/components/toggle/Toggle.stories.svelte +0 -15
  431. package/dist/components/toggle/Toggle.stories.svelte.d.ts +0 -27
  432. package/dist/components/toggle/Toggle.svelte +0 -74
  433. package/dist/components/toggle/Toggle.svelte.d.ts +0 -9
  434. package/dist/components/toggle/index.d.ts +0 -1
  435. package/dist/components/toggle/index.js +0 -1
  436. package/dist/components/toggle-icon-button/ToggleIconButton.stories.svelte +0 -173
  437. package/dist/components/toggle-icon-button/ToggleIconButton.stories.svelte.d.ts +0 -19
  438. package/dist/components/toggle-icon-button/ToggleIconButton.svelte +0 -117
  439. package/dist/components/toggle-icon-button/ToggleIconButton.svelte.d.ts +0 -15
  440. package/dist/components/toggle-icon-button/ToggleIconButton.test.d.ts +0 -1
  441. package/dist/components/toggle-icon-button/ToggleIconButton.test.js +0 -100
  442. package/dist/components/toggle-icon-button/index.d.ts +0 -3
  443. package/dist/components/toggle-icon-button/index.js +0 -3
  444. package/dist/components/tooltip/Tooltip.stories.svelte +0 -100
  445. package/dist/components/tooltip/Tooltip.stories.svelte.d.ts +0 -27
  446. package/dist/components/tooltip/Tooltip.svelte +0 -60
  447. package/dist/components/tooltip/Tooltip.svelte.d.ts +0 -13
  448. package/dist/components/tooltip/Tooltip.test.d.ts +0 -1
  449. package/dist/components/tooltip/Tooltip.test.js +0 -81
  450. package/dist/components/tooltip/TooltipTest.svelte +0 -31
  451. package/dist/components/tooltip/TooltipTest.svelte.d.ts +0 -11
  452. package/dist/components/tooltip/index.d.ts +0 -1
  453. package/dist/components/tooltip/index.js +0 -1
  454. package/dist/fonts/MDSystemMono-Regular.woff +0 -0
  455. package/dist/fonts/MDSystemMono-Regular.woff2 +0 -0
  456. package/dist/fonts/afAnotherSans-Medium.woff2 +0 -0
  457. package/dist/fonts/afAnotherSans-Regular.woff2 +0 -0
  458. package/dist/fonts/afAnotherSans-SemiBold.woff2 +0 -0
  459. package/dist/fonts/afAnotherSans.woff2 +0 -0
  460. package/dist/fonts/index.d.ts +0 -4
  461. package/dist/fonts/index.js +0 -6
  462. package/dist/icons.d.ts +0 -0
  463. package/dist/icons.js +0 -0
  464. package/dist/index.d.ts +0 -51
  465. package/dist/notifications.d.ts +0 -22
  466. package/dist/notifications.js +0 -27
  467. package/dist/styles.d.ts +0 -1
  468. package/dist/styles.js +0 -4
  469. package/dist/tailwind-safelist.d.ts +0 -28
  470. package/dist/tailwind-safelist.js +0 -491
  471. package/dist/tailwind.d.ts +0 -11
  472. package/dist/tailwind.js +0 -1
  473. package/dist/tailwind.preset.d.ts +0 -538
  474. package/dist/tailwind.preset.js +0 -56
  475. package/dist/tokens/colors.d.ts +0 -292
  476. package/dist/tokens/colors.js +0 -146
  477. package/dist/tokens/index.d.ts +0 -3
  478. package/dist/tokens/index.js +0 -5
  479. package/dist/tokens/typography.d.ts +0 -48
  480. package/dist/tokens/typography.js +0 -48
  481. package/dist/tokens.d.ts +0 -830
  482. package/dist/tokens.js +0 -380
  483. package/dist/types/fonts.d.ts +0 -4
@@ -1,669 +0,0 @@
1
- <script lang="ts">
2
- import { onMount } from 'svelte';
3
- import { Button } from '../button';
4
- import { textColor } from '../../tokens';
5
- import { Icon, type IconColor } from '../icons';
6
- import IconButton from '../icon-button/IconButton.svelte';
7
- import Divider from '../divider/Divider.svelte';
8
-
9
- const BASE_IMAGE_SIZE = 464;
10
- const BASE_MARKER_SIZE = 8;
11
- const BASE_MARKER_FONT_SIZE = 8;
12
- const MAX_ZOOM = 10;
13
- const MIN_ZOOM = 1;
14
- const ZOOM_STEP = 0.001;
15
- const MARKER_COLOR = textColor['icon-blue'];
16
- const TEXT_COLOR = textColor['primary-inverse'];
17
- const DRAG_THRESHOLD = 5;
18
-
19
- function getMarkerColorHex(semanticColor: string): string {
20
- switch (semanticColor) {
21
- case 'icon-blue':
22
- return textColor['icon-blue'];
23
- case 'icon-orange':
24
- return textColor['icon-orange'];
25
- case 'icon-pink':
26
- return textColor['icon-pink'];
27
- case 'icon-lime':
28
- return textColor['icon-lime'];
29
- default:
30
- return textColor['icon-blue'];
31
- }
32
- }
33
-
34
- interface ConfiguratedMark {
35
- x: number;
36
- y: number;
37
- configIndex: number;
38
- color: string;
39
- id?: string;
40
- }
41
-
42
- interface Props {
43
- imageUrl: string;
44
- marks?: Array<{ x: number; y: number }>;
45
- onclick?: (event: MouseEvent, marks: Array<{ x: number; y: number }>) => void;
46
- onMarksChange?: (marks: Array<{ x: number; y: number }>) => void;
47
- disabled?: boolean;
48
- hideMarkers?: boolean;
49
- allMarks?: ConfiguratedMark[];
50
- activeMarkerColor?: string;
51
- activeMarkerName?: string;
52
- editableConfigIndex?: number | null;
53
- showMultiConfig?: boolean;
54
- imageDimensions?: { width: number; height: number };
55
- }
56
-
57
- let {
58
- imageUrl,
59
- onclick,
60
- onMarksChange,
61
- disabled = false,
62
- hideMarkers = false,
63
- marks = $bindable([]),
64
- allMarks = [],
65
- activeMarkerColor = MARKER_COLOR,
66
- activeMarkerName = '',
67
- editableConfigIndex = null,
68
- showMultiConfig = false,
69
- imageDimensions = $bindable({ width: 0, height: 0 }),
70
- }: Props = $props();
71
-
72
- let previousConfigIndex = $state<number | null>(null);
73
-
74
- let resolvedActiveMarkerColor = $derived(() => {
75
- if (!activeMarkerColor) return MARKER_COLOR;
76
-
77
- // If it starts with #, it's already a hex color
78
- if (activeMarkerColor.startsWith('#')) {
79
- return activeMarkerColor;
80
- }
81
-
82
- return getMarkerColorHex(activeMarkerColor);
83
- });
84
-
85
- let svgElement: SVGSVGElement;
86
- let viewport: SVGGraphicsElement;
87
- let dotsGroup: SVGElement;
88
- let container: HTMLDivElement;
89
-
90
- let containerW = BASE_IMAGE_SIZE;
91
- let containerH = BASE_IMAGE_SIZE;
92
-
93
- let transform = $state({ x: 0, y: 0, scale: 1 });
94
-
95
- let panningState = $state<null | 'ready' | 'active'>(null);
96
- let startPoint = $state({ x: 0, y: 0 });
97
- let isShiftPressed = $state(false);
98
- let resizeObserver: ResizeObserver;
99
-
100
- let imageAspectRatio = $state(1);
101
- let imageDisplayWidth = $state(0);
102
- let imageDisplayHeight = $state(0);
103
-
104
- function handleResize(entries: ResizeObserverEntry[]) {
105
- const entry = entries[0];
106
- if (entry) {
107
- const oldWidth = imageDisplayWidth || containerW;
108
- const oldHeight = imageDisplayHeight || containerH;
109
-
110
- containerW = entry.contentRect.width;
111
- containerH = entry.contentRect.height;
112
-
113
- if (oldWidth > 0 && oldHeight > 0 && marks.length > 0) {
114
- marks = marks.map((mark) => ({
115
- x: (mark.x / oldWidth) * containerW,
116
- y: (mark.y / oldHeight) * containerH,
117
- }));
118
- }
119
-
120
- updateImageDimensions();
121
- }
122
- }
123
-
124
- function onImageLoad() {
125
- if (container) {
126
- containerW = container.clientWidth;
127
- containerH = container.clientHeight;
128
-
129
- const img = new Image();
130
- img.src = imageUrl;
131
- img.onload = () => {
132
- imageAspectRatio = img.naturalWidth / img.naturalHeight;
133
- updateImageDimensions();
134
- };
135
-
136
- if (img.complete && img.naturalWidth) {
137
- imageAspectRatio = img.naturalWidth / img.naturalHeight;
138
- updateImageDimensions();
139
- }
140
- }
141
- }
142
-
143
- function updateImageDimensions() {
144
- const containerRatio = containerW / containerH;
145
-
146
- if (containerRatio > imageAspectRatio) {
147
- imageDisplayHeight = containerH;
148
- imageDisplayWidth = containerH * imageAspectRatio;
149
- } else {
150
- imageDisplayWidth = containerW;
151
- imageDisplayHeight = containerW / imageAspectRatio;
152
- }
153
-
154
- updateTransform();
155
- }
156
-
157
- function clampTransform() {
158
- const maxX = 0;
159
- const maxY = 0;
160
- // Prevent division by zero or unexpected behavior if container dimensions aren't ready
161
- const safeContainerW = containerW || 1;
162
- const safeContainerH = containerH || 1;
163
- const minX = safeContainerW * (1 - transform.scale);
164
- const minY = safeContainerH * (1 - transform.scale);
165
-
166
- if (transform.scale <= 1) {
167
- transform.scale = 1;
168
- transform.x = 0;
169
- transform.y = 0;
170
- } else {
171
- transform.x = Math.max(minX, Math.min(maxX, transform.x));
172
- transform.y = Math.max(minY, Math.min(maxY, transform.y));
173
- }
174
- }
175
-
176
- function updateTransform() {
177
- if (!viewport) return;
178
-
179
- viewport.setAttribute(
180
- 'transform',
181
- `translate(${transform.x}, ${transform.y}) scale(${transform.scale})`
182
- );
183
-
184
- const imageElement = viewport.querySelector('image');
185
- if (imageElement) {
186
- imageElement.setAttribute('width', String(imageDisplayWidth));
187
- imageElement.setAttribute('height', String(imageDisplayHeight));
188
-
189
- // center the image in the container
190
- const offsetX = (containerW - imageDisplayWidth) / 2;
191
- const offsetY = (containerH - imageDisplayHeight) / 2;
192
-
193
- imageElement.setAttribute('x', String(offsetX));
194
- imageElement.setAttribute('y', String(offsetY));
195
- }
196
-
197
- renderMarkers();
198
- }
199
-
200
- function getSvgPoint(event: MouseEvent) {
201
- if (!svgElement || !container) return { x: 0, y: 0 };
202
-
203
- const rect = container.getBoundingClientRect();
204
-
205
- const relativeX = event.clientX - rect.left;
206
- const relativeY = event.clientY - rect.top;
207
-
208
- const svgX = (relativeX - transform.x) / transform.scale;
209
- const svgY = (relativeY - transform.y) / transform.scale;
210
-
211
- const offsetX = (containerW - imageDisplayWidth) / 2;
212
- const offsetY = (containerH - imageDisplayHeight) / 2;
213
-
214
- return {
215
- x: svgX - offsetX,
216
- y: svgY - offsetY,
217
- };
218
- }
219
-
220
- function renderMarkers() {
221
- if (!dotsGroup) return;
222
-
223
- while (dotsGroup.firstChild) {
224
- dotsGroup.removeChild(dotsGroup.firstChild);
225
- }
226
-
227
- const offsetX = (containerW - imageDisplayWidth) / 2;
228
- const offsetY = (containerH - imageDisplayHeight) / 2;
229
-
230
- const svgns = 'http://www.w3.org/2000/svg';
231
- const adjustedMarkerSize = BASE_MARKER_SIZE / transform.scale;
232
- const adjustedFontSize = BASE_MARKER_FONT_SIZE / transform.scale;
233
-
234
- if (showMultiConfig && allMarks && allMarks.length > 0) {
235
- // Group marks by configuration to number them separately
236
- const marksByConfig = new Map<number, ConfiguratedMark[]>();
237
- allMarks.forEach((mark) => {
238
- if (!marksByConfig.has(mark.configIndex)) {
239
- marksByConfig.set(mark.configIndex, []);
240
- }
241
- marksByConfig.get(mark.configIndex)!.push(mark);
242
- });
243
-
244
- // Render multi-configuration marks with per-configuration numbering
245
- marksByConfig.forEach((configMarks, configIndex) => {
246
- configMarks.forEach((mark, configMarkIndex) => {
247
- const group = document.createElementNS(svgns, 'g');
248
- group.setAttribute(
249
- 'data-testid',
250
- `config-marker-${mark.configIndex}-${configMarkIndex + 1}`
251
- );
252
-
253
- const markX = mark.x + offsetX;
254
- const markY = mark.y + offsetY;
255
-
256
- // Resolve mark color - supports both hex colors and semantic color names
257
- const resolvedMarkColor = mark.color.startsWith('#')
258
- ? mark.color
259
- : getMarkerColorHex(mark.color);
260
-
261
- const circle = document.createElementNS(svgns, 'circle');
262
- circle.setAttribute('cx', String(markX));
263
- circle.setAttribute('cy', String(markY));
264
- circle.setAttribute('r', String(adjustedMarkerSize));
265
- circle.setAttribute('fill', resolvedMarkColor);
266
- circle.setAttribute('class', 'drop-shadow-sm');
267
- group.appendChild(circle);
268
-
269
- const text = document.createElementNS(svgns, 'text');
270
- text.setAttribute('x', String(markX));
271
- text.setAttribute('y', String(markY));
272
- text.setAttribute('text-anchor', 'middle');
273
- text.setAttribute('dominant-baseline', 'central');
274
- text.setAttribute('fill', TEXT_COLOR);
275
- text.setAttribute('font-size', String(adjustedFontSize));
276
- text.setAttribute('font-weight', 'bold');
277
- text.textContent = String(configMarkIndex + 1); // Number per configuration
278
- group.appendChild(text);
279
-
280
- dotsGroup.appendChild(group);
281
- });
282
- });
283
- } else {
284
- // Render single-configuration marks (existing behavior)
285
- marks.forEach((mark, index) => {
286
- const group = document.createElementNS(svgns, 'g');
287
- group.setAttribute('data-testid', `marker-${index + 1}`);
288
-
289
- const markX = mark.x + offsetX;
290
- const markY = mark.y + offsetY;
291
-
292
- const circle = document.createElementNS(svgns, 'circle');
293
- circle.setAttribute('cx', String(markX));
294
- circle.setAttribute('cy', String(markY));
295
- circle.setAttribute('r', String(adjustedMarkerSize));
296
- circle.setAttribute('fill', resolvedActiveMarkerColor());
297
- circle.setAttribute('class', 'drop-shadow-sm');
298
- group.appendChild(circle);
299
-
300
- const text = document.createElementNS(svgns, 'text');
301
- text.setAttribute('x', String(markX));
302
- text.setAttribute('y', String(markY));
303
- text.setAttribute('text-anchor', 'middle');
304
- text.setAttribute('dominant-baseline', 'central');
305
- text.setAttribute('fill', TEXT_COLOR);
306
- text.setAttribute('font-size', String(adjustedFontSize));
307
- text.setAttribute('font-weight', 'bold');
308
- text.textContent = String(index + 1);
309
- group.appendChild(text);
310
-
311
- dotsGroup.appendChild(group);
312
- });
313
- }
314
- }
315
-
316
- function handleClick(event: MouseEvent) {
317
- if (disabled || hideMarkers || !dotsGroup || isShiftPressed || panningState !== null) {
318
- panningState = null;
319
- return;
320
- }
321
-
322
- // In multi-config mode, only allow editing if there's an active editable configuration
323
- if (showMultiConfig && editableConfigIndex === null) {
324
- return;
325
- }
326
-
327
- const pt = getSvgPoint(event);
328
- marks.push({ x: pt.x, y: pt.y });
329
-
330
- renderMarkers();
331
-
332
- if (onclick) {
333
- onclick(event, marks);
334
- }
335
-
336
- onMarksChange?.(marks);
337
- }
338
-
339
- function handleKeyDown(event: KeyboardEvent) {
340
- if (event.shiftKey) {
341
- isShiftPressed = true;
342
- }
343
- }
344
-
345
- function handleKeyUp(event: KeyboardEvent) {
346
- let shouldResetReadyState = false;
347
-
348
- if (!event.shiftKey && isShiftPressed) {
349
- isShiftPressed = false;
350
- shouldResetReadyState = true;
351
- }
352
-
353
- if (shouldResetReadyState && panningState === 'ready') {
354
- panningState = null;
355
- }
356
- }
357
-
358
- function handleMouseDown(event: MouseEvent) {
359
- const isPanningTrigger = event.button === 2 || (event.button === 0 && isShiftPressed);
360
- if (!isPanningTrigger) return;
361
-
362
- event.preventDefault();
363
- panningState = 'ready';
364
- startPoint = { x: event.clientX, y: event.clientY };
365
- }
366
-
367
- function handleMouseMove(event: MouseEvent) {
368
- if (panningState === null) return;
369
-
370
- const dx = event.clientX - startPoint.x;
371
- const dy = event.clientY - startPoint.y;
372
-
373
- if (panningState === 'ready' && Math.sqrt(dx * dx + dy * dy) > DRAG_THRESHOLD) {
374
- panningState = 'active';
375
- }
376
-
377
- if (panningState === 'active') {
378
- startPoint = { x: event.clientX, y: event.clientY };
379
-
380
- transform.x += dx;
381
- transform.y += dy;
382
-
383
- clampTransform();
384
- updateTransform();
385
- }
386
- }
387
-
388
- function handleMouseUp() {
389
- panningState = null;
390
- }
391
-
392
- function handleMouseLeave() {
393
- panningState = null;
394
- }
395
-
396
- function handleContextMenu(event: MouseEvent) {
397
- event.preventDefault();
398
- }
399
-
400
- function handleWheel(event: WheelEvent) {
401
- event.preventDefault();
402
-
403
- if (!svgElement || !viewport || !container) return;
404
-
405
- containerW = container.clientWidth;
406
- containerH = container.clientHeight;
407
-
408
- const zoomIntensity = ZOOM_STEP;
409
- const delta = event.deltaY;
410
- const zoomFactor = 1 - delta * zoomIntensity;
411
- const currentScale = transform.scale;
412
-
413
- let potentialNewScale = currentScale * zoomFactor;
414
-
415
- let finalScale = Math.max(MIN_ZOOM, Math.min(MAX_ZOOM, potentialNewScale));
416
-
417
- if (finalScale <= MIN_ZOOM) {
418
- transform.scale = MIN_ZOOM;
419
- transform.x = 0;
420
- transform.y = 0;
421
- } else {
422
- const rect = container.getBoundingClientRect();
423
- const mouseX = event.clientX - rect.left;
424
- const mouseY = event.clientY - rect.top;
425
-
426
- const distX = mouseX - transform.x;
427
- const distY = mouseY - transform.y;
428
-
429
- const scaleRatio = finalScale / currentScale;
430
- const newDistX = distX * scaleRatio;
431
- const newDistY = distY * scaleRatio;
432
-
433
- transform.x = mouseX - newDistX;
434
- transform.y = mouseY - newDistY;
435
- transform.scale = finalScale;
436
- }
437
-
438
- clampTransform();
439
- updateTransform();
440
- }
441
-
442
- function undo() {
443
- if (marks.length === 0) return;
444
-
445
- marks.pop();
446
- marks = marks;
447
- renderMarkers();
448
-
449
- onMarksChange?.(marks);
450
- }
451
-
452
- function reset() {
453
- if (marks.length === 0) return;
454
-
455
- marks = [];
456
- renderMarkers();
457
- onMarksChange?.(marks);
458
- }
459
-
460
- function applyZoom(zoomFactor: number) {
461
- if (!container) return;
462
-
463
- const currentScale = transform.scale;
464
- const potentialNewScale = currentScale * zoomFactor;
465
- const finalScale = Math.max(MIN_ZOOM, Math.min(MAX_ZOOM, potentialNewScale));
466
-
467
- if (finalScale === currentScale) return;
468
-
469
- const centerX = containerW / 2;
470
- const centerY = containerH / 2;
471
-
472
- const distX = centerX - transform.x;
473
- const distY = centerY - transform.y;
474
-
475
- const scaleRatio = finalScale / currentScale;
476
- const newDistX = distX * scaleRatio;
477
- const newDistY = distY * scaleRatio;
478
-
479
- transform.x = centerX - newDistX;
480
- transform.y = centerY - newDistY;
481
- transform.scale = finalScale;
482
-
483
- clampTransform();
484
- updateTransform();
485
- }
486
-
487
- function zoomIn() {
488
- applyZoom(1.2);
489
- }
490
-
491
- function zoomOut() {
492
- applyZoom(1 / 1.2);
493
- }
494
-
495
- $effect(() => {
496
- if (editableConfigIndex !== previousConfigIndex) {
497
- previousConfigIndex = editableConfigIndex;
498
- }
499
- });
500
-
501
- onMount(() => {
502
- if (container) {
503
- containerW = container.clientWidth;
504
- containerH = container.clientHeight;
505
-
506
- resizeObserver = new ResizeObserver(handleResize);
507
- resizeObserver.observe(container);
508
- }
509
-
510
- window.addEventListener('keydown', handleKeyDown);
511
- window.addEventListener('keyup', handleKeyUp);
512
-
513
- updateTransform();
514
- renderMarkers();
515
-
516
- const img = new Image();
517
- img.onload = onImageLoad;
518
- img.src = imageUrl;
519
-
520
- if (img.complete) {
521
- onImageLoad();
522
- }
523
-
524
- return () => {
525
- window.removeEventListener('keydown', handleKeyDown);
526
- window.removeEventListener('keyup', handleKeyUp);
527
- if (resizeObserver) {
528
- resizeObserver.disconnect();
529
- }
530
- };
531
- });
532
-
533
- $effect(() => {
534
- renderMarkers();
535
- });
536
-
537
- $effect(() => {
538
- imageDimensions.width = imageDisplayWidth;
539
- imageDimensions.height = imageDisplayHeight;
540
- });
541
- </script>
542
-
543
- {#snippet UndoResetControls()}
544
- <div class="flex items-center gap-1">
545
- <IconButton
546
- variant="transparent-inverse"
547
- rounded={false}
548
- onclick={undo}
549
- disabled={marks.length === 0 || disabled}
550
- aria-label="Undo last mark"
551
- >
552
- <Icon iconName={'ArrowUUpLeft'} />
553
- </IconButton>
554
- <Divider vertical inverse class="!h-5" />
555
- <Button
556
- variant="transparent-inverse"
557
- size="sm"
558
- onClick={reset}
559
- disabled={marks.length === 0 || disabled}
560
- accessibilityLabel="Reset all marks"
561
- class="!text-primary-inverse"
562
- >
563
- Clear all
564
- </Button>
565
- </div>
566
- {/snippet}
567
-
568
- {#snippet TopLeftActions()}
569
- {#if activeMarkerName && !hideMarkers && !disabled}
570
- <div
571
- class="absolute left-2 top-2 z-20 flex w-full max-w-[calc(100%-1rem)] items-center justify-between rounded-lg border border-interactive-inverse bg-base-inverse px-3 py-2"
572
- >
573
- <div class="flex items-center gap-2">
574
- <div
575
- class="flex !h-6 !w-6 shrink-0 items-center justify-center rounded-md"
576
- style="background-color: {resolvedActiveMarkerColor()}"
577
- >
578
- <Icon iconName={'CursorClick'} size={16} color="primary-inverse" />
579
- </div>
580
-
581
- <span class="text-sm text-primary-inverse">
582
- Click to count each object in <strong>{activeMarkerName}</strong>
583
- </span>
584
- </div>
585
-
586
- {@render UndoResetControls()}
587
- </div>
588
- {/if}
589
- {/snippet}
590
-
591
- {#snippet ZoomControls()}
592
- <div
593
- class="absolute bottom-2 right-2 z-20 flex flex-col items-center gap-1 rounded-md border border-interactive-inverse bg-base-inverse p-1 opacity-0 transition-opacity duration-200 group-hover:opacity-100"
594
- >
595
- <IconButton
596
- variant="transparent-inverse"
597
- rounded={false}
598
- onclick={zoomIn}
599
- aria-label="Zoom In"
600
- disabled={transform.scale >= MAX_ZOOM || disabled}
601
- >
602
- <Icon iconName={'Plus'} />
603
- </IconButton>
604
- <IconButton
605
- variant="transparent-inverse"
606
- rounded={false}
607
- onclick={zoomOut}
608
- aria-label="Zoom Out"
609
- disabled={transform.scale <= MIN_ZOOM || disabled}
610
- >
611
- <Icon iconName={'Minus'} />
612
- </IconButton>
613
- </div>
614
- {/snippet}
615
-
616
- <div
617
- bind:this={container}
618
- class="group relative h-full w-full overflow-hidden rounded-lg border"
619
- data-testid="manual-cfu-counter"
620
- >
621
- {#if !hideMarkers && !disabled}
622
- {@render TopLeftActions()}
623
- {@render ZoomControls()}
624
- {/if}
625
-
626
- <!--
627
- We need to use SVG for this interactive component.
628
- The SVG element is treated as a canvas for clicking, panning, and zooming.
629
- We add accessibility attributes to make it more accessible despite the interactive nature.
630
- -->
631
- <!-- svelte-ignore a11y_click_events_have_key_events -->
632
- <!-- svelte-ignore a11y_no_static_element_interactions -->
633
- <!-- svelte-ignore a11y_no_noninteractive_element_interactions -->
634
- <!-- svelte-ignore a11y_no_noninteractive_tabindex -->
635
- <svg
636
- bind:this={svgElement}
637
- onclick={handleClick}
638
- onmousedown={handleMouseDown}
639
- onmousemove={handleMouseMove}
640
- onmouseup={handleMouseUp}
641
- onmouseleave={handleMouseLeave}
642
- oncontextmenu={handleContextMenu}
643
- onwheel={handleWheel}
644
- class:cursor-grabbing={panningState === 'active'}
645
- class:cursor-grab={!disabled && (panningState === 'ready' || (isShiftPressed && !panningState))}
646
- class:cursor-not-allowed={disabled}
647
- class:cursor-crosshair={!disabled && !panningState && !isShiftPressed}
648
- class="h-full w-full"
649
- role="application"
650
- aria-label={disabled
651
- ? 'CFU Counter (disabled)'
652
- : 'CFU Counter - Click to add markers, right click or shift+click to pan'}
653
- tabindex="0"
654
- >
655
- <g bind:this={viewport} id="viewport" class="h-full w-full">
656
- <image href={imageUrl} x="0" y="0" width="100%" />
657
- <g
658
- bind:this={dotsGroup}
659
- id="dots"
660
- class="pointer-events-none"
661
- aria-hidden={hideMarkers}
662
- class:hidden={hideMarkers}
663
- />
664
- </g>
665
- </svg>
666
-
667
- <!-- Debug info for marks count - useful for testing -->
668
- <span class="sr-only" data-testid="marks-count">{marks.length}</span>
669
- </div>
@@ -1,36 +0,0 @@
1
- interface ConfiguratedMark {
2
- x: number;
3
- y: number;
4
- configIndex: number;
5
- color: string;
6
- id?: string;
7
- }
8
- interface Props {
9
- imageUrl: string;
10
- marks?: Array<{
11
- x: number;
12
- y: number;
13
- }>;
14
- onclick?: (event: MouseEvent, marks: Array<{
15
- x: number;
16
- y: number;
17
- }>) => void;
18
- onMarksChange?: (marks: Array<{
19
- x: number;
20
- y: number;
21
- }>) => void;
22
- disabled?: boolean;
23
- hideMarkers?: boolean;
24
- allMarks?: ConfiguratedMark[];
25
- activeMarkerColor?: string;
26
- activeMarkerName?: string;
27
- editableConfigIndex?: number | null;
28
- showMultiConfig?: boolean;
29
- imageDimensions?: {
30
- width: number;
31
- height: number;
32
- };
33
- }
34
- declare const MultiCfuCounter: import("svelte").Component<Props, {}, "marks" | "imageDimensions">;
35
- type MultiCfuCounter = ReturnType<typeof MultiCfuCounter>;
36
- export default MultiCfuCounter;
@@ -1 +0,0 @@
1
- export { default as MultiCFUCounter } from './MultiCFUCounter.svelte';
@@ -1 +0,0 @@
1
- export { default as MultiCFUCounter } from './MultiCFUCounter.svelte';