@reshape-biotech/design-system 0.0.47 → 0.0.49

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 (287) hide show
  1. package/dist/app.css +115 -0
  2. package/dist/components/activity/Activity.stories.svelte +106 -0
  3. package/dist/components/activity/Activity.stories.svelte.d.ts +19 -0
  4. package/dist/components/activity/Activity.svelte +79 -0
  5. package/dist/components/activity/Activity.svelte.d.ts +17 -0
  6. package/dist/components/activity/index.d.ts +1 -0
  7. package/dist/components/activity/index.js +1 -0
  8. package/dist/components/avatar/Avatar.stories.svelte +51 -0
  9. package/dist/components/avatar/Avatar.stories.svelte.d.ts +19 -0
  10. package/dist/components/avatar/Avatar.svelte +63 -0
  11. package/dist/components/avatar/Avatar.svelte.d.ts +8 -0
  12. package/dist/components/avatar/index.d.ts +1 -0
  13. package/dist/components/avatar/index.js +1 -0
  14. package/dist/components/banner/Banner.stories.svelte +129 -0
  15. package/dist/components/banner/Banner.stories.svelte.d.ts +19 -0
  16. package/dist/components/banner/Banner.svelte +59 -0
  17. package/dist/components/banner/Banner.svelte.d.ts +11 -0
  18. package/dist/components/banner/index.d.ts +1 -0
  19. package/dist/components/banner/index.js +1 -0
  20. package/dist/components/button/Button.stories.svelte +43 -0
  21. package/dist/components/button/Button.stories.svelte.d.ts +19 -0
  22. package/dist/components/button/Button.svelte +263 -0
  23. package/dist/components/button/Button.svelte.d.ts +20 -0
  24. package/dist/components/button/index.d.ts +1 -0
  25. package/dist/components/button/index.js +1 -0
  26. package/dist/components/collapsible/Collapsible.stories.svelte +40 -0
  27. package/dist/components/collapsible/Collapsible.stories.svelte.d.ts +19 -0
  28. package/dist/components/collapsible/components/collapsible-content.svelte +26 -0
  29. package/dist/components/collapsible/components/collapsible-content.svelte.d.ts +10 -0
  30. package/dist/components/collapsible/components/collapsible-trigger.svelte +36 -0
  31. package/dist/components/collapsible/components/collapsible-trigger.svelte.d.ts +4 -0
  32. package/dist/components/collapsible/index.d.ts +5 -0
  33. package/dist/components/collapsible/index.js +4 -0
  34. package/dist/components/collapsible/types.d.ts +9 -0
  35. package/dist/components/collapsible/types.js +1 -0
  36. package/dist/components/combobox/Combobox.stories.svelte +440 -0
  37. package/dist/components/combobox/Combobox.stories.svelte.d.ts +19 -0
  38. package/dist/components/combobox/components/combobox-add.svelte +30 -0
  39. package/dist/components/combobox/components/combobox-add.svelte.d.ts +8 -0
  40. package/dist/components/combobox/components/combobox-content.svelte +137 -0
  41. package/dist/components/combobox/components/combobox-content.svelte.d.ts +4 -0
  42. package/dist/components/combobox/components/combobox-indicator.svelte +5 -0
  43. package/dist/components/combobox/components/combobox-indicator.svelte.d.ts +18 -0
  44. package/dist/components/combobox/index.d.ts +14 -0
  45. package/dist/components/combobox/index.js +15 -0
  46. package/dist/components/combobox/types.d.ts +20 -0
  47. package/dist/components/combobox/types.js +1 -0
  48. package/dist/components/datepicker/DatePicker.svelte +345 -0
  49. package/dist/components/datepicker/DatePicker.svelte.d.ts +8 -0
  50. package/dist/components/datepicker/index.d.ts +1 -0
  51. package/dist/components/datepicker/index.js +1 -0
  52. package/dist/components/divider/Divider.stories.svelte +14 -0
  53. package/dist/components/divider/Divider.stories.svelte.d.ts +27 -0
  54. package/dist/components/divider/Divider.svelte +9 -0
  55. package/dist/components/divider/Divider.svelte.d.ts +6 -0
  56. package/dist/components/divider/index.d.ts +1 -0
  57. package/dist/components/divider/index.js +1 -0
  58. package/dist/components/drawer/Drawer.stories.svelte +64 -0
  59. package/dist/components/drawer/Drawer.stories.svelte.d.ts +27 -0
  60. package/dist/components/drawer/Drawer.svelte +41 -0
  61. package/dist/components/drawer/Drawer.svelte.d.ts +12 -0
  62. package/dist/components/drawer/DrawerLabel.svelte +62 -0
  63. package/dist/components/drawer/DrawerLabel.svelte.d.ts +9 -0
  64. package/dist/components/drawer/index.d.ts +1 -0
  65. package/dist/components/drawer/index.js +1 -0
  66. package/dist/components/dropdown/Dropdown.stories.svelte +236 -0
  67. package/dist/components/dropdown/Dropdown.stories.svelte.d.ts +27 -0
  68. package/dist/components/dropdown/Dropdown.svelte +69 -0
  69. package/dist/components/dropdown/Dropdown.svelte.d.ts +26 -0
  70. package/dist/components/dropdown/components/DropdownContent.svelte +29 -0
  71. package/dist/components/dropdown/components/DropdownContent.svelte.d.ts +10 -0
  72. package/dist/components/dropdown/components/DropdownMenu.svelte +23 -0
  73. package/dist/components/dropdown/components/DropdownMenu.svelte.d.ts +8 -0
  74. package/dist/components/dropdown/components/DropdownTrigger.svelte +46 -0
  75. package/dist/components/dropdown/components/DropdownTrigger.svelte.d.ts +13 -0
  76. package/dist/components/dropdown/components/OutlinedButton.svelte +61 -0
  77. package/dist/components/dropdown/components/OutlinedButton.svelte.d.ts +8 -0
  78. package/dist/components/dropdown/index.d.ts +1 -0
  79. package/dist/components/dropdown/index.js +1 -0
  80. package/dist/components/empty-content/EmptyContent.svelte +19 -0
  81. package/dist/components/empty-content/EmptyContent.svelte.d.ts +8 -0
  82. package/dist/components/graphs/chart/Chart.stories.svelte +128 -0
  83. package/dist/components/graphs/chart/Chart.stories.svelte.d.ts +19 -0
  84. package/dist/components/graphs/chart/Chart.svelte +145 -0
  85. package/dist/components/graphs/chart/Chart.svelte.d.ts +17 -0
  86. package/dist/components/graphs/index.d.ts +4 -0
  87. package/dist/components/graphs/index.js +4 -0
  88. package/dist/components/graphs/line/LineChart.stories.svelte +73 -0
  89. package/dist/components/graphs/line/LineChart.stories.svelte.d.ts +19 -0
  90. package/dist/components/graphs/line/LineChart.svelte +102 -0
  91. package/dist/components/graphs/line/LineChart.svelte.d.ts +18 -0
  92. package/dist/components/graphs/multiline/MultiLineChart.stories.svelte +77 -0
  93. package/dist/components/graphs/multiline/MultiLineChart.stories.svelte.d.ts +19 -0
  94. package/dist/components/graphs/multiline/MultiLineChart.svelte +108 -0
  95. package/dist/components/graphs/multiline/MultiLineChart.svelte.d.ts +22 -0
  96. package/dist/components/graphs/scatterplot/Scatterplot.stories.svelte +78 -0
  97. package/dist/components/graphs/scatterplot/Scatterplot.stories.svelte.d.ts +19 -0
  98. package/dist/components/graphs/scatterplot/Scatterplot.svelte +67 -0
  99. package/dist/components/graphs/scatterplot/Scatterplot.svelte.d.ts +16 -0
  100. package/dist/components/icon-button/IconButton.stories.svelte +82 -0
  101. package/dist/components/icon-button/IconButton.stories.svelte.d.ts +19 -0
  102. package/dist/components/icon-button/IconButton.svelte +152 -0
  103. package/dist/components/icon-button/IconButton.svelte.d.ts +16 -0
  104. package/dist/components/icon-button/index.d.ts +1 -0
  105. package/dist/components/icon-button/index.js +1 -0
  106. package/dist/components/icons/AnalysisIcon.stories.svelte +38 -0
  107. package/dist/components/icons/AnalysisIcon.stories.svelte.d.ts +27 -0
  108. package/dist/components/icons/AnalysisIcon.svelte +113 -0
  109. package/dist/components/icons/AnalysisIcon.svelte.d.ts +10 -0
  110. package/dist/components/icons/Icon.stories.svelte +127 -0
  111. package/dist/components/icons/Icon.stories.svelte.d.ts +19 -0
  112. package/dist/components/icons/Icon.svelte +24 -0
  113. package/dist/components/icons/Icon.svelte.d.ts +4 -0
  114. package/dist/components/icons/custom/Halo.svelte +32 -0
  115. package/dist/components/icons/custom/Halo.svelte.d.ts +26 -0
  116. package/dist/components/icons/custom/Well.svelte +26 -0
  117. package/dist/components/icons/custom/Well.svelte.d.ts +26 -0
  118. package/dist/components/icons/index.d.ts +19 -0
  119. package/dist/components/icons/index.js +187 -0
  120. package/dist/components/icons/types.d.ts +0 -0
  121. package/dist/components/icons/types.js +1 -0
  122. package/dist/components/image/Image.svelte +55 -0
  123. package/dist/components/image/Image.svelte.d.ts +7 -0
  124. package/dist/components/image/index.d.ts +1 -0
  125. package/dist/components/image/index.js +1 -0
  126. package/dist/components/input/Input.stories.svelte +93 -0
  127. package/dist/components/input/Input.stories.svelte.d.ts +27 -0
  128. package/dist/components/input/Input.svelte +204 -0
  129. package/dist/components/input/Input.svelte.d.ts +24 -0
  130. package/dist/components/input/index.d.ts +1 -0
  131. package/dist/components/input/index.js +1 -0
  132. package/dist/components/list/List.stories.svelte +97 -0
  133. package/dist/components/list/List.stories.svelte.d.ts +19 -0
  134. package/dist/components/list/List.svelte +69 -0
  135. package/dist/components/list/List.svelte.d.ts +24 -0
  136. package/dist/components/list/index.d.ts +1 -0
  137. package/dist/components/list/index.js +1 -0
  138. package/dist/components/logo/Logo.stories.svelte +21 -0
  139. package/dist/components/logo/Logo.stories.svelte.d.ts +27 -0
  140. package/dist/components/logo/Logo.svelte +39 -0
  141. package/dist/components/logo/Logo.svelte.d.ts +7 -0
  142. package/dist/components/logo/index.d.ts +1 -0
  143. package/dist/components/logo/index.js +1 -0
  144. package/dist/components/markdown/Markdown.stories.svelte +41 -0
  145. package/dist/components/markdown/Markdown.stories.svelte.d.ts +27 -0
  146. package/dist/components/markdown/Markdown.svelte +12 -0
  147. package/dist/components/markdown/Markdown.svelte.d.ts +6 -0
  148. package/dist/components/markdown/index.d.ts +1 -0
  149. package/dist/components/markdown/index.js +1 -0
  150. package/dist/components/modal/Modal.stories.svelte +39 -0
  151. package/dist/components/modal/Modal.stories.svelte.d.ts +19 -0
  152. package/dist/components/modal/Modal.svelte +76 -0
  153. package/dist/components/modal/Modal.svelte.d.ts +17 -0
  154. package/dist/components/modal/index.d.ts +1 -0
  155. package/dist/components/modal/index.js +1 -0
  156. package/dist/components/notification-popup/NotificationPopup.stories.svelte +26 -0
  157. package/dist/components/notification-popup/NotificationPopup.stories.svelte.d.ts +27 -0
  158. package/dist/components/notification-popup/NotificationPopup.svelte +33 -0
  159. package/dist/components/notification-popup/NotificationPopup.svelte.d.ts +11 -0
  160. package/dist/components/notification-popup/index.d.ts +1 -0
  161. package/dist/components/notification-popup/index.js +1 -0
  162. package/dist/components/pill/Pill.svelte +39 -0
  163. package/dist/components/pill/Pill.svelte.d.ts +10 -0
  164. package/dist/components/pill/index.d.ts +1 -0
  165. package/dist/components/pill/index.js +1 -0
  166. package/dist/components/progress-circle/ProgressCircle.svelte +79 -0
  167. package/dist/components/progress-circle/ProgressCircle.svelte.d.ts +7 -0
  168. package/dist/components/progress-circle/index.d.ts +1 -0
  169. package/dist/components/progress-circle/index.js +1 -0
  170. package/dist/components/segmented-control-buttons/ControlButton.svelte +57 -0
  171. package/dist/components/segmented-control-buttons/ControlButton.svelte.d.ts +14 -0
  172. package/dist/components/segmented-control-buttons/SegmentedControlButtons.stories.svelte +45 -0
  173. package/dist/components/segmented-control-buttons/SegmentedControlButtons.stories.svelte.d.ts +19 -0
  174. package/dist/components/segmented-control-buttons/SegmentedControlButtons.svelte +21 -0
  175. package/dist/components/segmented-control-buttons/SegmentedControlButtons.svelte.d.ts +12 -0
  176. package/dist/components/segmented-control-buttons/index.d.ts +1 -0
  177. package/dist/components/segmented-control-buttons/index.js +1 -0
  178. package/dist/components/select/Select.stories.svelte +113 -0
  179. package/dist/components/select/Select.stories.svelte.d.ts +19 -0
  180. package/dist/components/select/Select.svelte +141 -0
  181. package/dist/components/select/Select.svelte.d.ts +60 -0
  182. package/dist/components/select/index.d.ts +7 -0
  183. package/dist/components/select/index.js +1 -0
  184. package/dist/components/skeleton-loader/SkeletonLoader.stories.svelte +45 -0
  185. package/dist/components/skeleton-loader/SkeletonLoader.stories.svelte.d.ts +27 -0
  186. package/dist/components/skeleton-loader/SkeletonLoader.svelte +17 -0
  187. package/dist/components/skeleton-loader/SkeletonLoader.svelte.d.ts +14 -0
  188. package/dist/components/skeleton-loader/StatcardSkeleton.svelte +14 -0
  189. package/dist/components/skeleton-loader/StatcardSkeleton.svelte.d.ts +18 -0
  190. package/dist/components/skeleton-loader/components/Skeleton.svelte +14 -0
  191. package/dist/components/skeleton-loader/components/Skeleton.svelte.d.ts +8 -0
  192. package/dist/components/skeleton-loader/components/SkeletonImage.svelte +14 -0
  193. package/dist/components/skeleton-loader/components/SkeletonImage.svelte.d.ts +26 -0
  194. package/dist/components/skeleton-loader/index.d.ts +3 -0
  195. package/dist/components/skeleton-loader/index.js +3 -0
  196. package/dist/components/slider/Slider.stories.svelte +37 -0
  197. package/dist/components/slider/Slider.stories.svelte.d.ts +27 -0
  198. package/dist/components/slider/Slider.svelte +127 -0
  199. package/dist/components/slider/Slider.svelte.d.ts +31 -0
  200. package/dist/components/slider/index.d.ts +1 -0
  201. package/dist/components/slider/index.js +1 -0
  202. package/dist/components/spinner/Spinner.svelte +27 -0
  203. package/dist/components/spinner/Spinner.svelte.d.ts +6 -0
  204. package/dist/components/spinner/index.d.ts +1 -0
  205. package/dist/components/spinner/index.js +1 -0
  206. package/dist/components/stat-card/StatCard.stories.svelte +32 -0
  207. package/dist/components/stat-card/StatCard.stories.svelte.d.ts +27 -0
  208. package/dist/components/stat-card/StatCard.svelte +52 -0
  209. package/dist/components/stat-card/StatCard.svelte.d.ts +10 -0
  210. package/dist/components/stat-card/index.d.ts +1 -0
  211. package/dist/components/stat-card/index.js +1 -0
  212. package/dist/components/status-badge/StatusBadge.stories.svelte +393 -0
  213. package/dist/components/status-badge/StatusBadge.stories.svelte.d.ts +19 -0
  214. package/dist/components/status-badge/StatusBadge.svelte +147 -0
  215. package/dist/components/status-badge/StatusBadge.svelte.d.ts +12 -0
  216. package/dist/components/status-badge/index.d.ts +1 -0
  217. package/dist/components/status-badge/index.js +1 -0
  218. package/dist/components/table/Table.stories.svelte +94 -0
  219. package/dist/components/table/Table.stories.svelte.d.ts +24 -0
  220. package/dist/components/table/Table.svelte +47 -0
  221. package/dist/components/table/Table.svelte.d.ts +21 -0
  222. package/dist/components/table/components/TBody.svelte +14 -0
  223. package/dist/components/table/components/TBody.svelte.d.ts +8 -0
  224. package/dist/components/table/components/THead.svelte +14 -0
  225. package/dist/components/table/components/THead.svelte.d.ts +8 -0
  226. package/dist/components/table/components/Td.svelte +14 -0
  227. package/dist/components/table/components/Td.svelte.d.ts +8 -0
  228. package/dist/components/table/components/Th.svelte +15 -0
  229. package/dist/components/table/components/Th.svelte.d.ts +9 -0
  230. package/dist/components/table/components/Tr.svelte +31 -0
  231. package/dist/components/table/components/Tr.svelte.d.ts +8 -0
  232. package/dist/components/table/index.d.ts +1 -0
  233. package/dist/components/table/index.js +1 -0
  234. package/dist/components/tabs/Tabs.stories.svelte +28 -0
  235. package/dist/components/tabs/Tabs.stories.svelte.d.ts +27 -0
  236. package/dist/components/tabs/Tabs.svelte +13 -0
  237. package/dist/components/tabs/Tabs.svelte.d.ts +14 -0
  238. package/dist/components/tabs/components/Content.svelte +15 -0
  239. package/dist/components/tabs/components/Content.svelte.d.ts +9 -0
  240. package/dist/components/tabs/components/Tab.svelte +21 -0
  241. package/dist/components/tabs/components/Tab.svelte.d.ts +10 -0
  242. package/dist/components/tabs/components/Tabs.svelte +14 -0
  243. package/dist/components/tabs/components/Tabs.svelte.d.ts +8 -0
  244. package/dist/components/tabs/index.d.ts +1 -0
  245. package/dist/components/tabs/index.js +1 -0
  246. package/dist/components/tag/Tag.stories.svelte +51 -0
  247. package/dist/components/tag/Tag.stories.svelte.d.ts +19 -0
  248. package/dist/components/tag/Tag.svelte +102 -0
  249. package/dist/components/tag/Tag.svelte.d.ts +12 -0
  250. package/dist/components/tag/index.d.ts +1 -0
  251. package/dist/components/tag/index.js +1 -0
  252. package/dist/components/toggle/Toggle.stories.svelte +15 -0
  253. package/dist/components/toggle/Toggle.stories.svelte.d.ts +27 -0
  254. package/dist/components/toggle/Toggle.svelte +73 -0
  255. package/dist/components/toggle/Toggle.svelte.d.ts +8 -0
  256. package/dist/components/toggle/index.d.ts +1 -0
  257. package/dist/components/toggle/index.js +1 -0
  258. package/dist/components/tooltip/Tooltip.stories.svelte +126 -0
  259. package/dist/components/tooltip/Tooltip.stories.svelte.d.ts +27 -0
  260. package/dist/components/tooltip/Tooltip.svelte +49 -0
  261. package/dist/components/tooltip/Tooltip.svelte.d.ts +13 -0
  262. package/dist/components/tooltip/index.d.ts +1 -0
  263. package/dist/components/tooltip/index.js +1 -0
  264. package/dist/fonts/MDSystemMono-Regular.woff +0 -0
  265. package/dist/fonts/MDSystemMono-Regular.woff2 +0 -0
  266. package/dist/fonts/afAnotherSans-Medium.woff2 +0 -0
  267. package/dist/fonts/afAnotherSans-Regular.woff2 +0 -0
  268. package/dist/fonts/afAnotherSans-SemiBold.woff2 +0 -0
  269. package/dist/fonts/afAnotherSans.woff2 +0 -0
  270. package/dist/fonts/index.d.ts +4 -0
  271. package/dist/fonts/index.js +6 -0
  272. package/dist/icons.d.ts +0 -0
  273. package/dist/icons.js +0 -0
  274. package/dist/index.d.ts +37 -0
  275. package/dist/index.js +39 -68464
  276. package/dist/tailwind-safelist.d.ts +27 -0
  277. package/dist/tailwind-safelist.js +475 -0
  278. package/dist/tailwind.d.ts +11 -0
  279. package/dist/tailwind.js +1 -0
  280. package/dist/tailwind.preset.d.ts +344 -0
  281. package/dist/tailwind.preset.js +55 -0
  282. package/dist/tokens.d.ts +598 -0
  283. package/dist/tokens.js +285 -0
  284. package/dist/types/fonts.d.ts +4 -0
  285. package/package.json +2 -1
  286. package/dist/index.css +0 -1
  287. package/dist/index.umd.cjs +0 -148
package/dist/app.css ADDED
@@ -0,0 +1,115 @@
1
+ @import 'tailwindcss/base';
2
+ @import 'tailwindcss/components';
3
+ @import 'tailwindcss/utilities';
4
+
5
+ @layer base {
6
+ @font-face {
7
+ font-family: 'MD System Mono';
8
+ font-style: normal;
9
+ font-weight: 400;
10
+ src: url('/fonts/MDSystemMono-Regular.woff2') format('woff2');
11
+ }
12
+ @font-face {
13
+ font-family: 'af Another Sans';
14
+ font-style: normal;
15
+ font-weight: 400;
16
+ src: url('/fonts/afAnotherSans-Regular.woff2') format('woff2');
17
+ }
18
+ @font-face {
19
+ font-family: 'af Another Sans';
20
+ font-style: normal;
21
+ font-weight: 500;
22
+ src: url('/fonts/afAnotherSans-Medium.woff2') format('woff2');
23
+ }
24
+ @font-face {
25
+ font-family: 'af Another Sans';
26
+ font-style: normal;
27
+ font-weight: 600;
28
+ src: url('/fonts/afAnotherSans-SemiBold.woff2') format('woff2');
29
+ }
30
+
31
+ body {
32
+ background-color: theme('backgroundColor.surface');
33
+ color: theme('textColor.primary');
34
+ font-family: 'af Another Sans', sans-serif;
35
+ font-style: normal;
36
+ font-feature-settings: 'ss01' on;
37
+ font-variant-numeric: lining-nums tabular-nums;
38
+ font-weight: 400;
39
+ font-size: 0.875rem;
40
+ line-height: 1.25rem;
41
+ letter-spacing: 0.01em;
42
+ }
43
+
44
+ a {
45
+ color: theme('textColor.accent');
46
+ font-style: normal;
47
+ }
48
+ a:hover {
49
+ text-decoration: underline;
50
+ }
51
+
52
+ strong {
53
+ font-weight: 600;
54
+ }
55
+
56
+ h1 {
57
+ /* text-7xl */
58
+ font-size: 4.5rem;
59
+ font-style: normal;
60
+ font-weight: 600;
61
+ line-height: 4.5rem;
62
+ letter-spacing: -0.1em;
63
+ }
64
+
65
+ h2 {
66
+ /* text-5xl */
67
+ font-size: 3rem;
68
+ font-style: normal;
69
+ font-weight: 600;
70
+ line-height: 3rem;
71
+ letter-spacing: -0.05em;
72
+ }
73
+
74
+ h3 {
75
+ /* text-2xl */
76
+ font-size: 1.5rem;
77
+ font-style: normal;
78
+ font-weight: 600;
79
+ line-height: 1.75rem;
80
+ letter-spacing: -0.025em;
81
+ }
82
+
83
+ h4 {
84
+ /* text-xl */
85
+ font-size: 1.25rem;
86
+ line-height: 1.75rem;
87
+ font-style: normal;
88
+ font-weight: 600;
89
+ letter-spacing: -0.01em;
90
+ }
91
+
92
+ h5 {
93
+ /* text-base */
94
+ font-size: 1rem;
95
+ line-height: 1.5rem;
96
+ font-style: normal;
97
+ font-weight: 600;
98
+ letter-spacing: 0;
99
+ }
100
+
101
+ h6 {
102
+ /* text-sm */
103
+ font-size: 0.875rem;
104
+ line-height: 1.25rem;
105
+ font-style: normal;
106
+ font-weight: 600;
107
+ letter-spacing: 0;
108
+ }
109
+ }
110
+
111
+ @layer components {
112
+ html:has(.drawer-auto-gutter .drawer-toggle:checked) {
113
+ scrollbar-gutter: auto;
114
+ }
115
+ }
@@ -0,0 +1,106 @@
1
+ <script module lang="ts">
2
+ import Button from '../button/Button.svelte';
3
+ import Activity from './Activity.svelte';
4
+ import * as Collapsible from '../collapsible/index';
5
+ import { Icon } from '../icons';
6
+
7
+ import { defineMeta } from '@storybook/addon-svelte-csf';
8
+ const { Story } = defineMeta({
9
+ component: Activity,
10
+ title: 'Design System/Activity',
11
+ tags: ['autodocs'],
12
+ parameters: {
13
+ design: {
14
+ type: 'figma',
15
+ url: 'https://www.figma.com/design/VHTMNdy8PAXAMx43edNZGW/%F0%9F%92%A0--Reshape-Design-System%3A-V1?node-id=2248-7688&t=sCuBI8dX6K6NjNR6-0'
16
+ }
17
+ }
18
+ });
19
+
20
+ let activities = $state([
21
+ {
22
+ icon: 'add' as const,
23
+ label: 'Job created',
24
+ timestamp: '12 Sep 2025, 9:59',
25
+ author: 'Ella Roth'
26
+ },
27
+ {
28
+ icon: 'edit' as const,
29
+ label: 'Sample ID edited',
30
+ from: 'Sample123',
31
+ to: 'Sample456',
32
+ timestamp: '5 Sep 2025, 12:05',
33
+ author: 'Ella Roth'
34
+ },
35
+ {
36
+ icon: 'success' as const,
37
+ label: 'Job finished',
38
+ timestamp: '14 Aug 2025, 13:05'
39
+ },
40
+ {
41
+ icon: 'pause' as const,
42
+ label: 'Job paused',
43
+ timestamp: '4 Aug 2025, 13:05',
44
+ author: 'Bob Vance'
45
+ },
46
+ {
47
+ icon: 'stop' as const,
48
+ label: 'Some label that just happened to be very long so it will probably wrap in most cases',
49
+ timestamp: '4 Aug 2025, 13:05',
50
+ author: 'Michael Scott'
51
+ }
52
+ ]);
53
+
54
+ const fetchedMoreActivities = () => {
55
+ const index = Math.floor(Math.random() * (activities.length - 1));
56
+ activities = [...activities, activities[index]];
57
+ };
58
+ </script>
59
+
60
+ <Story name="Collapsible activity">
61
+ <Collapsible.Root open>
62
+ <Collapsible.Trigger class="w-full pb-4">
63
+ <h6>Activity</h6>
64
+ </Collapsible.Trigger>
65
+
66
+ <Collapsible.Content class="flex flex-col items-center gap-3">
67
+ <div class="flex flex-col text-sm">
68
+ {#each activities as activity}
69
+ <Activity {activity} />
70
+ {/each}
71
+ </div>
72
+ <Button
73
+ onClick={fetchedMoreActivities}
74
+ variant="outline"
75
+ size="sm"
76
+ class="icon-secondary w-36 rounded-full"
77
+ >
78
+ <Icon iconName="Eye" />
79
+ <p>Show more</p>
80
+ </Button>
81
+ </Collapsible.Content>
82
+ </Collapsible.Root>
83
+ </Story>
84
+
85
+ <Story name="Single activity">
86
+ <Activity activity={{ icon: 'delete', label: 'Project deleted', timestamp: '2 Oct, 1980' }} />
87
+ </Story>
88
+
89
+ <Story name="Few activities">
90
+ <Activity
91
+ activity={{
92
+ icon: 'pause',
93
+ label: 'Project paused',
94
+ timestamp: '2 Oct, 1999',
95
+ author: 'Dwight'
96
+ }}
97
+ />
98
+ <Activity
99
+ activity={{
100
+ icon: 'add',
101
+ label: 'Project created',
102
+ timestamp: '2 Oct, 1999',
103
+ author: 'Dwight'
104
+ }}
105
+ />
106
+ </Story>
@@ -0,0 +1,19 @@
1
+ import Activity from './Activity.svelte';
2
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
3
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
4
+ $$bindings?: Bindings;
5
+ } & Exports;
6
+ (internal: unknown, props: {
7
+ $$events?: Events;
8
+ $$slots?: Slots;
9
+ }): Exports & {
10
+ $set?: any;
11
+ $on?: any;
12
+ };
13
+ z_$$bindings?: Bindings;
14
+ }
15
+ declare const Activity: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
16
+ [evt: string]: CustomEvent<any>;
17
+ }, {}, {}, string>;
18
+ type Activity = InstanceType<typeof Activity>;
19
+ export default Activity;
@@ -0,0 +1,79 @@
1
+ <script lang="ts">
2
+ import { Icon, type IconName } from '../icons';
3
+ import { DateTime } from 'luxon';
4
+
5
+ type ActivityIcon = 'add' | 'edit' | 'success' | 'start' | 'pause' | 'stop' | 'delete' | 'failed';
6
+
7
+ type Activity = {
8
+ activity_type?: string;
9
+ icon: ActivityIcon;
10
+ label: string;
11
+ timestamp: string;
12
+ author?: string | null;
13
+ field?: string | null;
14
+ previous_value?: string | null;
15
+ value?: string | null;
16
+ };
17
+
18
+ type Props = {
19
+ activity: Activity;
20
+ class?: string;
21
+ };
22
+
23
+ const ACTIVITY_ICONS: Record<ActivityIcon, IconName> = {
24
+ add: 'Plus',
25
+ edit: 'Pencil',
26
+ success: 'CheckFat',
27
+ start: 'Play',
28
+ pause: 'Pause',
29
+ stop: 'Stop',
30
+ delete: 'Trash',
31
+ failed: 'WarningCircle'
32
+ };
33
+
34
+ function formatDateTime(timestamp: string): string {
35
+ try {
36
+ const dateTime = DateTime.fromISO(timestamp);
37
+
38
+ if (dateTime.isValid) {
39
+ return dateTime.toLocaleString(DateTime.DATETIME_MED, {
40
+ locale: navigator.language ?? 'en-US'
41
+ });
42
+ }
43
+
44
+ return timestamp;
45
+ } catch (err) {
46
+ return timestamp;
47
+ }
48
+ }
49
+
50
+ let { class: className = '', activity }: Props = $props();
51
+ </script>
52
+
53
+ <div class={`group flex items-stretch gap-3 ${className}`}>
54
+ <div class="flex min-h-12 flex-col items-center gap-1.5">
55
+ <div class="w-0.5 grow bg-neutral group-first:invisible"></div>
56
+ <div
57
+ class="flex h-5 w-5 shrink-0 items-center justify-center rounded bg-neutral p-0.5 text-secondary"
58
+ >
59
+ <Icon iconName={ACTIVITY_ICONS[activity.icon]} />
60
+ </div>
61
+ <div class="w-0.5 grow bg-neutral group-last:invisible"></div>
62
+ </div>
63
+ <div class="flex items-center py-4">
64
+ <div class="text-secondary">
65
+ <span class="text-primary">{activity.label}</span>
66
+ {#if activity.previous_value}
67
+ <span> from <span class="text-primary">{activity.previous_value}</span></span>
68
+ {/if}
69
+ {#if activity.value}
70
+ <span> to <span class="text-primary">{activity.value}</span></span>
71
+ {/if}
72
+ <span class="px-0.5">⸱</span>
73
+ <span>{formatDateTime(activity.timestamp)}</span>
74
+ {#if activity.author}
75
+ <span> by <span class="text-primary">{activity.author}</span></span>
76
+ {/if}
77
+ </div>
78
+ </div>
79
+ </div>
@@ -0,0 +1,17 @@
1
+ type ActivityIcon = 'add' | 'edit' | 'success' | 'start' | 'pause' | 'stop' | 'delete' | 'failed';
2
+ type Activity = {
3
+ activity_type?: string;
4
+ icon: ActivityIcon;
5
+ label: string;
6
+ timestamp: string;
7
+ author?: string | null;
8
+ field?: string | null;
9
+ previous_value?: string | null;
10
+ value?: string | null;
11
+ };
12
+ type Props = {
13
+ activity: Activity;
14
+ class?: string;
15
+ };
16
+ declare const Activity: import("svelte").Component<Props, {}, "">;
17
+ export default Activity;
@@ -0,0 +1 @@
1
+ export { default as Activity } from './Activity.svelte';
@@ -0,0 +1 @@
1
+ export { default as Activity } from './Activity.svelte';
@@ -0,0 +1,51 @@
1
+ <script module lang="ts">
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import Avatar from './Avatar.svelte';
4
+
5
+ const { Story } = defineMeta({
6
+ component: Avatar,
7
+ title: 'Design System/Avatar',
8
+ tags: ['autodocs'],
9
+ parameters: {
10
+ design: {
11
+ type: 'figma',
12
+ url: 'https://www.figma.com/design/VHTMNdy8PAXAMx43edNZGW/%F0%9F%92%A0--Reshape-Design-System%3A-V1?node-id=9-9253&t=sCuBI8dX6K6NjNR6-0'
13
+ }
14
+ }
15
+ });
16
+ </script>
17
+
18
+ <Story name="Default">
19
+ <Avatar name="John Doe" />
20
+ </Story>
21
+
22
+ <Story name="Sizes">
23
+ <div class="flex gap-2">
24
+ <Avatar name="John Doe" size="sm" />
25
+ <Avatar name="John Doe" size="md" />
26
+ </div>
27
+ </Story>
28
+
29
+ <Story name="Email">
30
+ <Avatar name="john.doe@example.com" />
31
+ </Story>
32
+
33
+ <Story name="Single Name">
34
+ <Avatar name="John" />
35
+ </Story>
36
+
37
+ <Story name="No Name">
38
+ <Avatar name={null} />
39
+ </Story>
40
+
41
+ <Story name="Without Tooltip">
42
+ <Avatar name="John Doe" showTooltip={false} />
43
+ </Story>
44
+
45
+ <Story name="Multiple Avatars">
46
+ <div class="flex gap-2">
47
+ <Avatar name="John Doe" />
48
+ <Avatar name="Jane Smith" />
49
+ <Avatar name="Alex Johnson" />
50
+ </div>
51
+ </Story>
@@ -0,0 +1,19 @@
1
+ import Avatar from './Avatar.svelte';
2
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
3
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
4
+ $$bindings?: Bindings;
5
+ } & Exports;
6
+ (internal: unknown, props: {
7
+ $$events?: Events;
8
+ $$slots?: Slots;
9
+ }): Exports & {
10
+ $set?: any;
11
+ $on?: any;
12
+ };
13
+ z_$$bindings?: Bindings;
14
+ }
15
+ declare const Avatar: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
16
+ [evt: string]: CustomEvent<any>;
17
+ }, {}, {}, string>;
18
+ type Avatar = InstanceType<typeof Avatar>;
19
+ export default Avatar;
@@ -0,0 +1,63 @@
1
+ <script lang="ts">
2
+ import Tooltip from '../tooltip/Tooltip.svelte';
3
+ interface Props {
4
+ name: string | null | undefined;
5
+ size?: 'sm' | 'md';
6
+ showTooltip?: boolean;
7
+ }
8
+
9
+ let { name, size = 'md', showTooltip = true }: Props = $props();
10
+ const sizes = {
11
+ sm: 'h-6 w-6 min-w-6 text-xxs font-semibold tracking-wide',
12
+ md: 'h-8 w-8 min-w-8 text-xs font-semibold tracking-wide'
13
+ };
14
+
15
+ let sizeClassName = $derived(sizes[size]);
16
+
17
+ const getInitials = (name: string | null | undefined) => {
18
+ if (!name) {
19
+ return '?'; // You can use any default value here
20
+ }
21
+ // Check if the name is an email
22
+ const isEmail = name.includes('@');
23
+ if (isEmail) {
24
+ return name.slice(0, 2).toUpperCase();
25
+ }
26
+
27
+ // Split the name by space
28
+ const splitName = name.split(' ');
29
+
30
+ // Check if the name is a single word or already initials
31
+ if (splitName.length === 1 || (splitName.length === 1 && splitName[0].length <= 2)) {
32
+ return name.slice(0, 2).toUpperCase();
33
+ }
34
+
35
+ // If the name is multiple words, use the first letter of the first and last word
36
+ const firstInitial = splitName[0][0];
37
+ const lastInitial = splitName[splitName.length - 1][0];
38
+
39
+ return (firstInitial + lastInitial).toUpperCase();
40
+ };
41
+ let initials = $derived(getInitials(name));
42
+ </script>
43
+
44
+ {#snippet avatar()}
45
+ <div
46
+ class="{sizeClassName} flex items-center justify-center rounded-full border border-static bg-accent text-accent"
47
+ >
48
+ {initials}
49
+ </div>
50
+ {/snippet}
51
+
52
+ {#if showTooltip}
53
+ <Tooltip>
54
+ {#snippet trigger()}
55
+ {@render avatar()}
56
+ {/snippet}
57
+ {#snippet content()}
58
+ <span>{name ? name : 'Unknown'}</span>
59
+ {/snippet}
60
+ </Tooltip>
61
+ {:else}
62
+ {@render avatar()}
63
+ {/if}
@@ -0,0 +1,8 @@
1
+ interface Props {
2
+ name: string | null | undefined;
3
+ size?: 'sm' | 'md';
4
+ showTooltip?: boolean;
5
+ }
6
+ declare const Avatar: import("svelte").Component<Props, {}, "">;
7
+ type Avatar = ReturnType<typeof Avatar>;
8
+ export default Avatar;
@@ -0,0 +1 @@
1
+ export { default as Avatar } from './Avatar.svelte';
@@ -0,0 +1 @@
1
+ export { default as Avatar } from './Avatar.svelte';
@@ -0,0 +1,129 @@
1
+ <script module lang="ts">
2
+ import { Icon } from '../icons';
3
+ import Banner from './Banner.svelte';
4
+ import Button from '../button/Button.svelte';
5
+ import { defineMeta } from '@storybook/addon-svelte-csf';
6
+
7
+ const { Story } = defineMeta({
8
+ component: Banner,
9
+ title: 'Design System/Banner',
10
+ tags: ['autodocs']
11
+ });
12
+
13
+ let showBanner = $state(true);
14
+ </script>
15
+
16
+ <Story name="Well finding warning">
17
+ <Banner type="warning" closable={false}>
18
+ {#snippet icon()}
19
+ <Icon size={20} iconName="Warning" color="warning" weight="bold" />
20
+ {/snippet}
21
+ {#snippet content()}
22
+ Our system couldn't find the wells in some plates. Analysis can't be done. For more help, <a
23
+ href="https://docs.reshapebiotech.com/reshape-biotech-knowledgebase/general-info/troubleshooting/well-detection"
24
+ >check our documentation</a
25
+ >
26
+ or <a href="mailto:support@reshapebiotech.com">contact us</a>.
27
+ {/snippet}
28
+ </Banner>
29
+ </Story>
30
+
31
+ <Story name="No icon">
32
+ <Banner type="success">
33
+ {#snippet content()}
34
+ This banner has no icon.
35
+ {/snippet}
36
+ </Banner>
37
+ </Story>
38
+
39
+ <Story name="No toggle">
40
+ <Banner type="progress" closable={false}>
41
+ {#snippet icon()}
42
+ <Icon size={20} iconName="Info" color="icon-blue" weight="bold" />
43
+ {/snippet}
44
+ {#snippet content()}
45
+ This banner has no toggle.
46
+ {/snippet}
47
+ </Banner>
48
+ </Story>
49
+
50
+ <Story name="Toggle back on">
51
+ <div class="h-28">
52
+ <Button onClick={() => (showBanner = true)} disabled={showBanner}>Toggle banner back on</Button>
53
+ <br />
54
+ <br />
55
+
56
+ <Banner type="error" bind:show={showBanner}>
57
+ {#snippet icon()}
58
+ <Icon size={20} iconName="Info" color="danger" weight="bold" />
59
+ {/snippet}
60
+ {#snippet content()}
61
+ This banner can be toggled off with the "x" to the right and back on with the button above.
62
+ {/snippet}
63
+ </Banner>
64
+ </div>
65
+ </Story>
66
+
67
+ <Story name="Type variations">
68
+ <div class="space-y-4">
69
+ <div class="space-y-2">
70
+ <h4>Neutral</h4>
71
+ <Banner type="neutral">
72
+ {#snippet icon()}
73
+ <Icon size={20} iconName="Info" weight="bold" />
74
+ {/snippet}
75
+ {#snippet content()}
76
+ This is a "neutral" banner.
77
+ {/snippet}
78
+ </Banner>
79
+ </div>
80
+
81
+ <div class="space-y-2">
82
+ <h4>Success</h4>
83
+ <Banner type="success">
84
+ {#snippet icon()}
85
+ <Icon size={20} iconName="CheckCircle" color="icon-success" weight="bold" />
86
+ {/snippet}
87
+ {#snippet content()}
88
+ This is a "success" banner.
89
+ {/snippet}
90
+ </Banner>
91
+ </div>
92
+
93
+ <div class="space-y-2">
94
+ <h4>Progress</h4>
95
+ <Banner type="progress">
96
+ {#snippet icon()}
97
+ <Icon size={20} iconName="Circle" color="icon-blue" weight="bold" />
98
+ {/snippet}
99
+ {#snippet content()}
100
+ This is a "progress" banner.
101
+ {/snippet}
102
+ </Banner>
103
+ </div>
104
+
105
+ <div class="space-y-2">
106
+ <h4>Warning</h4>
107
+ <Banner type="warning">
108
+ {#snippet icon()}
109
+ <Icon size={20} iconName="Warning" color="icon-warning" weight="bold" />
110
+ {/snippet}
111
+ {#snippet content()}
112
+ This is a "warning" banner.
113
+ {/snippet}
114
+ </Banner>
115
+ </div>
116
+
117
+ <div class="space-y-2">
118
+ <h4>Error</h4>
119
+ <Banner type="error">
120
+ {#snippet icon()}
121
+ <Icon size={20} iconName="WarningCircle" color="icon-danger" weight="bold" />
122
+ {/snippet}
123
+ {#snippet content()}
124
+ This is an "error" banner.
125
+ {/snippet}
126
+ </Banner>
127
+ </div>
128
+ </div>
129
+ </Story>
@@ -0,0 +1,19 @@
1
+ import Banner from './Banner.svelte';
2
+ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> = any, Events extends Record<string, any> = any, Slots extends Record<string, any> = any, Exports = {}, Bindings = string> {
3
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
4
+ $$bindings?: Bindings;
5
+ } & Exports;
6
+ (internal: unknown, props: {
7
+ $$events?: Events;
8
+ $$slots?: Slots;
9
+ }): Exports & {
10
+ $set?: any;
11
+ $on?: any;
12
+ };
13
+ z_$$bindings?: Bindings;
14
+ }
15
+ declare const Banner: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
16
+ [evt: string]: CustomEvent<any>;
17
+ }, {}, {}, string>;
18
+ type Banner = InstanceType<typeof Banner>;
19
+ export default Banner;