@reshape-biotech/design-system 0.0.47 → 0.0.48

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 (281) hide show
  1. package/dist/app.css +115 -0
  2. package/dist/components/activity/Activity.stories.svelte +100 -0
  3. package/dist/components/activity/Activity.stories.svelte.d.ts +19 -0
  4. package/dist/components/activity/Activity.svelte +80 -0
  5. package/dist/components/activity/Activity.svelte.d.ts +18 -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.svelte +63 -0
  9. package/dist/components/avatar/Avatar.svelte.d.ts +8 -0
  10. package/dist/components/avatar/index.d.ts +1 -0
  11. package/dist/components/avatar/index.js +1 -0
  12. package/dist/components/banner/Banner.stories.svelte +129 -0
  13. package/dist/components/banner/Banner.stories.svelte.d.ts +19 -0
  14. package/dist/components/banner/Banner.svelte +59 -0
  15. package/dist/components/banner/Banner.svelte.d.ts +11 -0
  16. package/dist/components/banner/index.d.ts +1 -0
  17. package/dist/components/banner/index.js +1 -0
  18. package/dist/components/button/Button.stories.svelte +37 -0
  19. package/dist/components/button/Button.stories.svelte.d.ts +19 -0
  20. package/dist/components/button/Button.svelte +263 -0
  21. package/dist/components/button/Button.svelte.d.ts +20 -0
  22. package/dist/components/button/index.d.ts +1 -0
  23. package/dist/components/button/index.js +1 -0
  24. package/dist/components/collapsible/Collapsible.stories.svelte +40 -0
  25. package/dist/components/collapsible/Collapsible.stories.svelte.d.ts +19 -0
  26. package/dist/components/collapsible/components/collapsible-content.svelte +26 -0
  27. package/dist/components/collapsible/components/collapsible-content.svelte.d.ts +10 -0
  28. package/dist/components/collapsible/components/collapsible-trigger.svelte +36 -0
  29. package/dist/components/collapsible/components/collapsible-trigger.svelte.d.ts +4 -0
  30. package/dist/components/collapsible/index.d.ts +5 -0
  31. package/dist/components/collapsible/index.js +4 -0
  32. package/dist/components/collapsible/types.d.ts +9 -0
  33. package/dist/components/collapsible/types.js +1 -0
  34. package/dist/components/combobox/Combobox.stories.svelte +119 -0
  35. package/dist/components/combobox/Combobox.stories.svelte.d.ts +19 -0
  36. package/dist/components/combobox/components/combobox-add.svelte +30 -0
  37. package/dist/components/combobox/components/combobox-add.svelte.d.ts +8 -0
  38. package/dist/components/combobox/components/combobox-content.svelte +137 -0
  39. package/dist/components/combobox/components/combobox-content.svelte.d.ts +4 -0
  40. package/dist/components/combobox/components/combobox-indicator.svelte +5 -0
  41. package/dist/components/combobox/components/combobox-indicator.svelte.d.ts +18 -0
  42. package/dist/components/combobox/index.d.ts +14 -0
  43. package/dist/components/combobox/index.js +15 -0
  44. package/dist/components/combobox/types.d.ts +20 -0
  45. package/dist/components/combobox/types.js +1 -0
  46. package/dist/components/datepicker/DatePicker.svelte +344 -0
  47. package/dist/components/datepicker/DatePicker.svelte.d.ts +8 -0
  48. package/dist/components/datepicker/index.d.ts +1 -0
  49. package/dist/components/datepicker/index.js +1 -0
  50. package/dist/components/divider/Divider.stories.svelte +14 -0
  51. package/dist/components/divider/Divider.stories.svelte.d.ts +27 -0
  52. package/dist/components/divider/Divider.svelte +9 -0
  53. package/dist/components/divider/Divider.svelte.d.ts +6 -0
  54. package/dist/components/divider/index.d.ts +1 -0
  55. package/dist/components/divider/index.js +1 -0
  56. package/dist/components/drawer/Drawer.stories.svelte +64 -0
  57. package/dist/components/drawer/Drawer.stories.svelte.d.ts +27 -0
  58. package/dist/components/drawer/Drawer.svelte +41 -0
  59. package/dist/components/drawer/Drawer.svelte.d.ts +12 -0
  60. package/dist/components/drawer/DrawerLabel.svelte +62 -0
  61. package/dist/components/drawer/DrawerLabel.svelte.d.ts +9 -0
  62. package/dist/components/drawer/index.d.ts +1 -0
  63. package/dist/components/drawer/index.js +1 -0
  64. package/dist/components/dropdown/Dropdown.stories.svelte +236 -0
  65. package/dist/components/dropdown/Dropdown.stories.svelte.d.ts +27 -0
  66. package/dist/components/dropdown/Dropdown.svelte +69 -0
  67. package/dist/components/dropdown/Dropdown.svelte.d.ts +26 -0
  68. package/dist/components/dropdown/components/DropdownContent.svelte +29 -0
  69. package/dist/components/dropdown/components/DropdownContent.svelte.d.ts +10 -0
  70. package/dist/components/dropdown/components/DropdownMenu.svelte +23 -0
  71. package/dist/components/dropdown/components/DropdownMenu.svelte.d.ts +8 -0
  72. package/dist/components/dropdown/components/DropdownTrigger.svelte +46 -0
  73. package/dist/components/dropdown/components/DropdownTrigger.svelte.d.ts +13 -0
  74. package/dist/components/dropdown/components/OutlinedButton.svelte +61 -0
  75. package/dist/components/dropdown/components/OutlinedButton.svelte.d.ts +8 -0
  76. package/dist/components/dropdown/index.d.ts +1 -0
  77. package/dist/components/dropdown/index.js +1 -0
  78. package/dist/components/empty-content/EmptyContent.svelte +19 -0
  79. package/dist/components/empty-content/EmptyContent.svelte.d.ts +8 -0
  80. package/dist/components/graphs/chart/Chart.stories.svelte +128 -0
  81. package/dist/components/graphs/chart/Chart.stories.svelte.d.ts +19 -0
  82. package/dist/components/graphs/chart/Chart.svelte +145 -0
  83. package/dist/components/graphs/chart/Chart.svelte.d.ts +17 -0
  84. package/dist/components/graphs/index.d.ts +4 -0
  85. package/dist/components/graphs/index.js +4 -0
  86. package/dist/components/graphs/line/LineChart.stories.svelte +73 -0
  87. package/dist/components/graphs/line/LineChart.stories.svelte.d.ts +19 -0
  88. package/dist/components/graphs/line/LineChart.svelte +102 -0
  89. package/dist/components/graphs/line/LineChart.svelte.d.ts +18 -0
  90. package/dist/components/graphs/multiline/MultiLineChart.stories.svelte +77 -0
  91. package/dist/components/graphs/multiline/MultiLineChart.stories.svelte.d.ts +19 -0
  92. package/dist/components/graphs/multiline/MultiLineChart.svelte +108 -0
  93. package/dist/components/graphs/multiline/MultiLineChart.svelte.d.ts +22 -0
  94. package/dist/components/graphs/scatterplot/Scatterplot.stories.svelte +78 -0
  95. package/dist/components/graphs/scatterplot/Scatterplot.stories.svelte.d.ts +19 -0
  96. package/dist/components/graphs/scatterplot/Scatterplot.svelte +67 -0
  97. package/dist/components/graphs/scatterplot/Scatterplot.svelte.d.ts +16 -0
  98. package/dist/components/icon-button/IconButton.stories.svelte +82 -0
  99. package/dist/components/icon-button/IconButton.stories.svelte.d.ts +19 -0
  100. package/dist/components/icon-button/IconButton.svelte +152 -0
  101. package/dist/components/icon-button/IconButton.svelte.d.ts +16 -0
  102. package/dist/components/icon-button/index.d.ts +1 -0
  103. package/dist/components/icon-button/index.js +1 -0
  104. package/dist/components/icons/AnalysisIcon.stories.svelte +38 -0
  105. package/dist/components/icons/AnalysisIcon.stories.svelte.d.ts +27 -0
  106. package/dist/components/icons/AnalysisIcon.svelte +110 -0
  107. package/dist/components/icons/AnalysisIcon.svelte.d.ts +10 -0
  108. package/dist/components/icons/Icon.svelte +23 -0
  109. package/dist/components/icons/Icon.svelte.d.ts +4 -0
  110. package/dist/components/icons/custom/Halo.svelte +32 -0
  111. package/dist/components/icons/custom/Halo.svelte.d.ts +26 -0
  112. package/dist/components/icons/custom/Well.svelte +26 -0
  113. package/dist/components/icons/custom/Well.svelte.d.ts +26 -0
  114. package/dist/components/icons/index.d.ts +17 -0
  115. package/dist/components/icons/index.js +21 -0
  116. package/dist/components/icons/types.d.ts +0 -0
  117. package/dist/components/icons/types.js +1 -0
  118. package/dist/components/image/Image.svelte +55 -0
  119. package/dist/components/image/Image.svelte.d.ts +7 -0
  120. package/dist/components/image/index.d.ts +1 -0
  121. package/dist/components/image/index.js +1 -0
  122. package/dist/components/input/Input.stories.svelte +87 -0
  123. package/dist/components/input/Input.stories.svelte.d.ts +27 -0
  124. package/dist/components/input/Input.svelte +204 -0
  125. package/dist/components/input/Input.svelte.d.ts +24 -0
  126. package/dist/components/input/index.d.ts +1 -0
  127. package/dist/components/input/index.js +1 -0
  128. package/dist/components/list/List.stories.svelte +97 -0
  129. package/dist/components/list/List.stories.svelte.d.ts +19 -0
  130. package/dist/components/list/List.svelte +69 -0
  131. package/dist/components/list/List.svelte.d.ts +24 -0
  132. package/dist/components/list/index.d.ts +1 -0
  133. package/dist/components/list/index.js +1 -0
  134. package/dist/components/logo/Logo.stories.svelte +21 -0
  135. package/dist/components/logo/Logo.stories.svelte.d.ts +27 -0
  136. package/dist/components/logo/Logo.svelte +39 -0
  137. package/dist/components/logo/Logo.svelte.d.ts +7 -0
  138. package/dist/components/logo/index.d.ts +1 -0
  139. package/dist/components/logo/index.js +1 -0
  140. package/dist/components/markdown/Markdown.stories.svelte +41 -0
  141. package/dist/components/markdown/Markdown.stories.svelte.d.ts +27 -0
  142. package/dist/components/markdown/Markdown.svelte +12 -0
  143. package/dist/components/markdown/Markdown.svelte.d.ts +6 -0
  144. package/dist/components/markdown/index.d.ts +1 -0
  145. package/dist/components/markdown/index.js +1 -0
  146. package/dist/components/modal/Modal.stories.svelte +39 -0
  147. package/dist/components/modal/Modal.stories.svelte.d.ts +19 -0
  148. package/dist/components/modal/Modal.svelte +76 -0
  149. package/dist/components/modal/Modal.svelte.d.ts +17 -0
  150. package/dist/components/modal/index.d.ts +1 -0
  151. package/dist/components/modal/index.js +1 -0
  152. package/dist/components/notification-popup/NotificationPopup.stories.svelte +27 -0
  153. package/dist/components/notification-popup/NotificationPopup.stories.svelte.d.ts +27 -0
  154. package/dist/components/notification-popup/NotificationPopup.svelte +33 -0
  155. package/dist/components/notification-popup/NotificationPopup.svelte.d.ts +11 -0
  156. package/dist/components/notification-popup/index.d.ts +1 -0
  157. package/dist/components/notification-popup/index.js +1 -0
  158. package/dist/components/pill/Pill.svelte +39 -0
  159. package/dist/components/pill/Pill.svelte.d.ts +10 -0
  160. package/dist/components/pill/index.d.ts +1 -0
  161. package/dist/components/pill/index.js +1 -0
  162. package/dist/components/progress-circle/ProgressCircle.svelte +79 -0
  163. package/dist/components/progress-circle/ProgressCircle.svelte.d.ts +7 -0
  164. package/dist/components/progress-circle/index.d.ts +1 -0
  165. package/dist/components/progress-circle/index.js +1 -0
  166. package/dist/components/segmented-control-buttons/ControlButton.svelte +57 -0
  167. package/dist/components/segmented-control-buttons/ControlButton.svelte.d.ts +14 -0
  168. package/dist/components/segmented-control-buttons/SegmentedControlButtons.stories.svelte +45 -0
  169. package/dist/components/segmented-control-buttons/SegmentedControlButtons.stories.svelte.d.ts +19 -0
  170. package/dist/components/segmented-control-buttons/SegmentedControlButtons.svelte +21 -0
  171. package/dist/components/segmented-control-buttons/SegmentedControlButtons.svelte.d.ts +12 -0
  172. package/dist/components/segmented-control-buttons/index.d.ts +1 -0
  173. package/dist/components/segmented-control-buttons/index.js +1 -0
  174. package/dist/components/select/Select.stories.svelte +113 -0
  175. package/dist/components/select/Select.stories.svelte.d.ts +19 -0
  176. package/dist/components/select/Select.svelte +141 -0
  177. package/dist/components/select/Select.svelte.d.ts +60 -0
  178. package/dist/components/select/index.d.ts +7 -0
  179. package/dist/components/select/index.js +1 -0
  180. package/dist/components/skeleton-loader/SkeletonLoader.stories.svelte +45 -0
  181. package/dist/components/skeleton-loader/SkeletonLoader.stories.svelte.d.ts +27 -0
  182. package/dist/components/skeleton-loader/SkeletonLoader.svelte +17 -0
  183. package/dist/components/skeleton-loader/SkeletonLoader.svelte.d.ts +14 -0
  184. package/dist/components/skeleton-loader/StatcardSkeleton.svelte +14 -0
  185. package/dist/components/skeleton-loader/StatcardSkeleton.svelte.d.ts +18 -0
  186. package/dist/components/skeleton-loader/components/Skeleton.svelte +14 -0
  187. package/dist/components/skeleton-loader/components/Skeleton.svelte.d.ts +8 -0
  188. package/dist/components/skeleton-loader/components/SkeletonImage.svelte +14 -0
  189. package/dist/components/skeleton-loader/components/SkeletonImage.svelte.d.ts +26 -0
  190. package/dist/components/skeleton-loader/index.d.ts +3 -0
  191. package/dist/components/skeleton-loader/index.js +3 -0
  192. package/dist/components/slider/Slider.stories.svelte +37 -0
  193. package/dist/components/slider/Slider.stories.svelte.d.ts +27 -0
  194. package/dist/components/slider/Slider.svelte +126 -0
  195. package/dist/components/slider/Slider.svelte.d.ts +31 -0
  196. package/dist/components/slider/index.d.ts +1 -0
  197. package/dist/components/slider/index.js +1 -0
  198. package/dist/components/spinner/Spinner.svelte +27 -0
  199. package/dist/components/spinner/Spinner.svelte.d.ts +6 -0
  200. package/dist/components/spinner/index.d.ts +1 -0
  201. package/dist/components/spinner/index.js +1 -0
  202. package/dist/components/stat-card/StatCard.stories.svelte +32 -0
  203. package/dist/components/stat-card/StatCard.stories.svelte.d.ts +27 -0
  204. package/dist/components/stat-card/StatCard.svelte +52 -0
  205. package/dist/components/stat-card/StatCard.svelte.d.ts +10 -0
  206. package/dist/components/stat-card/index.d.ts +1 -0
  207. package/dist/components/stat-card/index.js +1 -0
  208. package/dist/components/status-badge/StatusBadge.stories.svelte +401 -0
  209. package/dist/components/status-badge/StatusBadge.stories.svelte.d.ts +19 -0
  210. package/dist/components/status-badge/StatusBadge.svelte +147 -0
  211. package/dist/components/status-badge/StatusBadge.svelte.d.ts +12 -0
  212. package/dist/components/status-badge/index.d.ts +1 -0
  213. package/dist/components/status-badge/index.js +1 -0
  214. package/dist/components/table/Table.stories.svelte +90 -0
  215. package/dist/components/table/Table.stories.svelte.d.ts +24 -0
  216. package/dist/components/table/Table.svelte +47 -0
  217. package/dist/components/table/Table.svelte.d.ts +21 -0
  218. package/dist/components/table/components/TBody.svelte +14 -0
  219. package/dist/components/table/components/TBody.svelte.d.ts +8 -0
  220. package/dist/components/table/components/THead.svelte +14 -0
  221. package/dist/components/table/components/THead.svelte.d.ts +8 -0
  222. package/dist/components/table/components/Td.svelte +14 -0
  223. package/dist/components/table/components/Td.svelte.d.ts +8 -0
  224. package/dist/components/table/components/Th.svelte +15 -0
  225. package/dist/components/table/components/Th.svelte.d.ts +9 -0
  226. package/dist/components/table/components/Tr.svelte +31 -0
  227. package/dist/components/table/components/Tr.svelte.d.ts +8 -0
  228. package/dist/components/table/index.d.ts +1 -0
  229. package/dist/components/table/index.js +1 -0
  230. package/dist/components/tabs/Tabs.stories.svelte +28 -0
  231. package/dist/components/tabs/Tabs.stories.svelte.d.ts +27 -0
  232. package/dist/components/tabs/Tabs.svelte +13 -0
  233. package/dist/components/tabs/Tabs.svelte.d.ts +14 -0
  234. package/dist/components/tabs/components/Content.svelte +15 -0
  235. package/dist/components/tabs/components/Content.svelte.d.ts +9 -0
  236. package/dist/components/tabs/components/Tab.svelte +21 -0
  237. package/dist/components/tabs/components/Tab.svelte.d.ts +10 -0
  238. package/dist/components/tabs/components/Tabs.svelte +14 -0
  239. package/dist/components/tabs/components/Tabs.svelte.d.ts +8 -0
  240. package/dist/components/tabs/index.d.ts +1 -0
  241. package/dist/components/tabs/index.js +1 -0
  242. package/dist/components/tag/Tag.stories.svelte +51 -0
  243. package/dist/components/tag/Tag.stories.svelte.d.ts +19 -0
  244. package/dist/components/tag/Tag.svelte +102 -0
  245. package/dist/components/tag/Tag.svelte.d.ts +12 -0
  246. package/dist/components/tag/index.d.ts +1 -0
  247. package/dist/components/tag/index.js +1 -0
  248. package/dist/components/toggle/Toggle.stories.svelte +15 -0
  249. package/dist/components/toggle/Toggle.stories.svelte.d.ts +27 -0
  250. package/dist/components/toggle/Toggle.svelte +73 -0
  251. package/dist/components/toggle/Toggle.svelte.d.ts +8 -0
  252. package/dist/components/toggle/index.d.ts +1 -0
  253. package/dist/components/toggle/index.js +1 -0
  254. package/dist/components/tooltip/Tooltip.stories.svelte +126 -0
  255. package/dist/components/tooltip/Tooltip.stories.svelte.d.ts +27 -0
  256. package/dist/components/tooltip/Tooltip.svelte +49 -0
  257. package/dist/components/tooltip/Tooltip.svelte.d.ts +13 -0
  258. package/dist/components/tooltip/index.d.ts +1 -0
  259. package/dist/components/tooltip/index.js +1 -0
  260. package/dist/fonts/MDSystemMono-Regular.woff +0 -0
  261. package/dist/fonts/MDSystemMono-Regular.woff2 +0 -0
  262. package/dist/fonts/afAnotherSans-Medium.woff2 +0 -0
  263. package/dist/fonts/afAnotherSans-Regular.woff2 +0 -0
  264. package/dist/fonts/afAnotherSans-SemiBold.woff2 +0 -0
  265. package/dist/fonts/afAnotherSans.woff2 +0 -0
  266. package/dist/fonts/index.d.ts +4 -0
  267. package/dist/fonts/index.js +6 -0
  268. package/dist/index.d.ts +37 -0
  269. package/dist/index.js +39 -68464
  270. package/dist/tailwind-safelist.d.ts +27 -0
  271. package/dist/tailwind-safelist.js +475 -0
  272. package/dist/tailwind.d.ts +11 -0
  273. package/dist/tailwind.js +1 -0
  274. package/dist/tailwind.preset.d.ts +344 -0
  275. package/dist/tailwind.preset.js +55 -0
  276. package/dist/tokens.d.ts +598 -0
  277. package/dist/tokens.js +285 -0
  278. package/dist/types/fonts.d.ts +4 -0
  279. package/package.json +2 -1
  280. package/dist/index.css +0 -1
  281. package/dist/index.umd.cjs +0 -148
@@ -0,0 +1,19 @@
1
+ import Button from './Button.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 Button: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
16
+ [evt: string]: CustomEvent<any>;
17
+ }, {}, {}, string>;
18
+ type Button = InstanceType<typeof Button>;
19
+ export default Button;
@@ -0,0 +1,263 @@
1
+ <script lang="ts">
2
+ import Spinner from '../spinner/Spinner.svelte';
3
+ import type { Snippet } from 'svelte';
4
+
5
+ type Variant =
6
+ | 'primary'
7
+ | 'secondary'
8
+ | 'transparent'
9
+ | 'danger'
10
+ | 'outline'
11
+ | 'secondary-inverse';
12
+
13
+ interface Props {
14
+ class?: string;
15
+ onClick?: (event?: MouseEvent) => void;
16
+ type?: 'button' | 'submit' | 'reset' | null | undefined;
17
+ loading?: boolean;
18
+ disabled?: boolean;
19
+ accessibilityLabel?: string;
20
+ size?: 'xs' | 'sm' | 'md' | 'lg';
21
+ id?: string | undefined;
22
+ tabindex?: number | undefined;
23
+ variant?: Variant;
24
+ children?: Snippet;
25
+ dataTestId?: string;
26
+ rounded?: boolean;
27
+ }
28
+
29
+ let {
30
+ class: className = '',
31
+ onClick = () => {},
32
+ type = 'button',
33
+ loading = false,
34
+ disabled = false,
35
+ accessibilityLabel = '',
36
+ size = 'lg',
37
+ id = undefined,
38
+ tabindex = undefined,
39
+ variant = 'primary',
40
+ children,
41
+ dataTestId = undefined,
42
+ rounded = false
43
+ }: Props = $props();
44
+
45
+ let variantClass = $derived(`btn-${variant}`);
46
+ let sizeClass = $derived(`btn-size-${size}`);
47
+ </script>
48
+
49
+ <button
50
+ aria-label={accessibilityLabel}
51
+ onclick={(e) => {
52
+ if (!loading) {
53
+ onClick(e);
54
+ } else {
55
+ e.preventDefault();
56
+ }
57
+ }}
58
+ {type}
59
+ {disabled}
60
+ {id}
61
+ {tabindex}
62
+ class:cursor-wait={loading}
63
+ class="button {variantClass} {sizeClass} {className}"
64
+ data-testid={dataTestId}
65
+ class:rounded
66
+ >
67
+ {#if loading}
68
+ <Spinner />
69
+ {:else}
70
+ {@render children?.()}
71
+ {/if}
72
+ </button>
73
+
74
+ <style>
75
+ .button {
76
+
77
+ display: inline-flex;
78
+
79
+ align-items: center;
80
+
81
+ justify-content: center;
82
+
83
+ gap: 0.5rem;
84
+
85
+ overflow: hidden;
86
+
87
+ text-overflow: ellipsis;
88
+
89
+ white-space: nowrap;
90
+
91
+ text-wrap: nowrap;
92
+
93
+ border-radius: 0.5rem;
94
+
95
+ font-size: 0.875rem;
96
+
97
+ font-weight: 500;
98
+
99
+ line-height: 1.5rem;
100
+
101
+ transition-duration: 150ms
102
+ }
103
+
104
+ .button:disabled {
105
+
106
+ background-color: #12192a0d;
107
+
108
+ --tw-text-opacity: 1;
109
+
110
+ color: rgb(136 140 148 / var(--tw-text-opacity, 1))
111
+ }
112
+
113
+ .rounded {
114
+
115
+ border-radius: 9999px
116
+ }
117
+
118
+ /* Size variants */
119
+ .btn-size-xs {
120
+
121
+ height: 1.75rem;
122
+
123
+ padding: 0.5rem
124
+ }
125
+ .btn-size-sm {
126
+
127
+ height: 2rem;
128
+
129
+ padding-left: 0.75rem;
130
+
131
+ padding-right: 0.75rem;
132
+
133
+ padding-top: 0.5rem;
134
+
135
+ padding-bottom: 0.5rem
136
+ }
137
+ .btn-size-md {
138
+
139
+ height: 2.5rem;
140
+
141
+ padding-left: 1rem;
142
+
143
+ padding-right: 1rem;
144
+
145
+ padding-top: 0.75rem;
146
+
147
+ padding-bottom: 0.75rem
148
+ }
149
+ .btn-size-lg {
150
+
151
+ height: 3rem;
152
+
153
+ padding-left: 1.5rem;
154
+
155
+ padding-right: 1.5rem;
156
+
157
+ padding-top: 1rem;
158
+
159
+ padding-bottom: 1rem;
160
+
161
+ font-size: 1rem;
162
+
163
+ line-height: 1.5rem
164
+ }
165
+
166
+ /* Button variants */
167
+ .btn-primary {
168
+
169
+ --tw-bg-opacity: 1;
170
+
171
+ background-color: rgb(87 80 238 / var(--tw-bg-opacity, 1));
172
+
173
+ --tw-text-opacity: 1;
174
+
175
+ color: rgb(255 255 255 / var(--tw-text-opacity, 1))
176
+ }
177
+ .btn-primary:hover {
178
+
179
+ --tw-bg-opacity: 1;
180
+
181
+ background-color: rgb(71 65 193 / var(--tw-bg-opacity, 1))
182
+ }
183
+ .btn-secondary {
184
+
185
+ background-color: #12192a0d;
186
+
187
+ --tw-text-opacity: 1;
188
+
189
+ color: rgb(18 25 42 / var(--tw-text-opacity, 1))
190
+ }
191
+ .btn-secondary:hover {
192
+
193
+ background-color: #12192A1A
194
+ }
195
+ .btn-secondary:active {
196
+
197
+ background-color: #12192a0d
198
+ }
199
+ .btn-transparent {
200
+
201
+ background-color: transparent;
202
+
203
+ --tw-text-opacity: 1;
204
+
205
+ color: rgb(18 25 42 / var(--tw-text-opacity, 1))
206
+ }
207
+ .btn-transparent:hover {
208
+
209
+ background-color: #12192a0d
210
+ }
211
+ .btn-danger {
212
+
213
+ --tw-bg-opacity: 1;
214
+
215
+ background-color: rgb(235 70 71 / var(--tw-bg-opacity, 1));
216
+
217
+ --tw-text-opacity: 1;
218
+
219
+ color: rgb(255 255 255 / var(--tw-text-opacity, 1))
220
+ }
221
+ .btn-danger:hover {
222
+
223
+ --tw-bg-opacity: 1;
224
+
225
+ background-color: rgb(191 57 58 / var(--tw-bg-opacity, 1))
226
+ }
227
+ .btn-outline {
228
+
229
+ border-width: 1px;
230
+
231
+ border-color: #12192A26;
232
+
233
+ background-color: transparent;
234
+
235
+ --tw-text-opacity: 1;
236
+
237
+ color: rgb(18 25 42 / var(--tw-text-opacity, 1))
238
+ }
239
+ .btn-outline:hover {
240
+
241
+ background-color: #12192A1A
242
+ }
243
+ .btn-outline:disabled {
244
+
245
+ border-style: none
246
+ }
247
+ .btn-secondary-inverse {
248
+
249
+ background-color: #FFFFFF0D;
250
+
251
+ --tw-text-opacity: 1;
252
+
253
+ color: rgb(255 255 255 / var(--tw-text-opacity, 1))
254
+ }
255
+ .btn-secondary-inverse:hover {
256
+
257
+ background-color: #FFFFFF26
258
+ }
259
+ .btn-secondary-inverse:active {
260
+
261
+ background-color: #FFFFFF0D
262
+ }
263
+ </style>
@@ -0,0 +1,20 @@
1
+ import type { Snippet } from 'svelte';
2
+ type Variant = 'primary' | 'secondary' | 'transparent' | 'danger' | 'outline' | 'secondary-inverse';
3
+ interface Props {
4
+ class?: string;
5
+ onClick?: (event?: MouseEvent) => void;
6
+ type?: 'button' | 'submit' | 'reset' | null | undefined;
7
+ loading?: boolean;
8
+ disabled?: boolean;
9
+ accessibilityLabel?: string;
10
+ size?: 'xs' | 'sm' | 'md' | 'lg';
11
+ id?: string | undefined;
12
+ tabindex?: number | undefined;
13
+ variant?: Variant;
14
+ children?: Snippet;
15
+ dataTestId?: string;
16
+ rounded?: boolean;
17
+ }
18
+ declare const Button: import("svelte").Component<Props, {}, "">;
19
+ type Button = ReturnType<typeof Button>;
20
+ export default Button;
@@ -0,0 +1 @@
1
+ export { default as Button } from './Button.svelte';
@@ -0,0 +1 @@
1
+ export { default as Button } from './Button.svelte';
@@ -0,0 +1,40 @@
1
+ <script module lang="ts">
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import * as Collapsible from './index';
4
+ import Button from '../button/Button.svelte';
5
+
6
+ const { Story } = defineMeta({
7
+ component: Collapsible.Root,
8
+ title: 'Design System/Collapsible',
9
+ tags: ['autodocs']
10
+ });
11
+
12
+ let open = $state(false);
13
+ </script>
14
+
15
+ <Story name="Base">
16
+ <Collapsible.Root class="w-[200px]">
17
+ <Collapsible.Trigger class="w-full">
18
+ <h6>Trigger</h6>
19
+ </Collapsible.Trigger>
20
+
21
+ <Collapsible.Content>Content</Collapsible.Content>
22
+ </Collapsible.Root>
23
+ </Story>
24
+
25
+ <Story name="Without Icon">
26
+ <Collapsible.Root class="w-[200px]">
27
+ <Collapsible.Trigger class="w-full" withIcon={false}>
28
+ <h6>Trigger</h6>
29
+ </Collapsible.Trigger>
30
+
31
+ <Collapsible.Content>Content</Collapsible.Content>
32
+ </Collapsible.Root>
33
+ </Story>
34
+
35
+ <Story name="Controlled">
36
+ <Button onClick={() => (open = !open)}>Outside Trigger</Button>
37
+ <Collapsible.Root class="w-[200px]" {open}>
38
+ <Collapsible.Content>Content</Collapsible.Content>
39
+ </Collapsible.Root>
40
+ </Story>
@@ -0,0 +1,19 @@
1
+ import * as Collapsible from './index';
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 Collapsible: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
16
+ [evt: string]: CustomEvent<any>;
17
+ }, {}, {}, string>;
18
+ type Collapsible = InstanceType<typeof Collapsible>;
19
+ export default Collapsible;
@@ -0,0 +1,26 @@
1
+ <script lang="ts">
2
+ import { Collapsible, type WithoutChildrenOrChild } from 'bits-ui';
3
+ import { slide } from 'svelte/transition';
4
+ import type { Snippet } from 'svelte';
5
+ import type { CollapsibleContentProps } from '../types';
6
+
7
+ let {
8
+ ref = $bindable(null),
9
+ duration = 200,
10
+ children,
11
+ ...restProps
12
+ }: WithoutChildrenOrChild<CollapsibleContentProps> & {
13
+ duration?: number;
14
+ children?: Snippet;
15
+ } = $props();
16
+ </script>
17
+
18
+ <Collapsible.Content forceMount bind:ref {...restProps}>
19
+ {#snippet child({ props, open })}
20
+ {#if open}
21
+ <div {...props} transition:slide={{ duration }}>
22
+ {@render children?.()}
23
+ </div>
24
+ {/if}
25
+ {/snippet}
26
+ </Collapsible.Content>
@@ -0,0 +1,10 @@
1
+ import { type WithoutChildrenOrChild } from 'bits-ui';
2
+ import type { Snippet } from 'svelte';
3
+ import type { CollapsibleContentProps } from '../types';
4
+ type $$ComponentProps = WithoutChildrenOrChild<CollapsibleContentProps> & {
5
+ duration?: number;
6
+ children?: Snippet;
7
+ };
8
+ declare const CollapsibleContent: import("svelte").Component<$$ComponentProps, {}, "ref">;
9
+ type CollapsibleContent = ReturnType<typeof CollapsibleContent>;
10
+ export default CollapsibleContent;
@@ -0,0 +1,36 @@
1
+ <script lang="ts">
2
+ import { Collapsible } from 'bits-ui';
3
+ import { CaretDown } from 'phosphor-svelte';
4
+ import type { CollapsibleTriggerProps } from '../types';
5
+
6
+ let { children, withIcon = true, ...props }: CollapsibleTriggerProps = $props();
7
+ </script>
8
+
9
+ <Collapsible.Trigger {...props} class="transition-all {props.class}">
10
+ <div class="container">
11
+ {@render children()}
12
+ {#if withIcon}
13
+ <CaretDown class="icon" />
14
+ {/if}
15
+ </div>
16
+ </Collapsible.Trigger>
17
+
18
+ <style>
19
+ :global([data-state='open']) :global(.icon) {
20
+
21
+ --tw-rotate: 180deg;
22
+
23
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))
24
+ }
25
+
26
+ .container {
27
+
28
+ display: flex;
29
+
30
+ align-items: center;
31
+
32
+ justify-content: space-between;
33
+
34
+ gap: 0.5rem
35
+ }
36
+ </style>
@@ -0,0 +1,4 @@
1
+ import type { CollapsibleTriggerProps } from '../types';
2
+ declare const CollapsibleTrigger: import("svelte").Component<CollapsibleTriggerProps, {}, "">;
3
+ type CollapsibleTrigger = ReturnType<typeof CollapsibleTrigger>;
4
+ export default CollapsibleTrigger;
@@ -0,0 +1,5 @@
1
+ import { Collapsible } from 'bits-ui';
2
+ export declare const Root: import("svelte").Component<Collapsible.RootProps, {}, "open" | "ref">;
3
+ export { default as Trigger } from './components/collapsible-trigger.svelte';
4
+ export { default as Content } from './components/collapsible-content.svelte';
5
+ export type { CollapsibleTriggerProps, CollapsibleContentProps } from './types';
@@ -0,0 +1,4 @@
1
+ import { Collapsible } from 'bits-ui';
2
+ export const Root = Collapsible.Root;
3
+ export { default as Trigger } from './components/collapsible-trigger.svelte';
4
+ export { default as Content } from './components/collapsible-content.svelte';
@@ -0,0 +1,9 @@
1
+ import { type CollapsibleContentProps as BitsCollapsibleContentProps, type CollapsibleTriggerProps as BitsCollapsibleTriggerProps } from 'bits-ui';
2
+ import type { Snippet } from 'svelte';
3
+ export type CollapsibleTriggerProps = {
4
+ children: Snippet;
5
+ withIcon?: boolean;
6
+ } & BitsCollapsibleTriggerProps;
7
+ export type CollapsibleContentProps = {
8
+ children: Snippet;
9
+ } & BitsCollapsibleContentProps;
@@ -0,0 +1 @@
1
+ import {} from 'bits-ui';
@@ -0,0 +1,119 @@
1
+ <script module lang="ts">
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import * as Combobox from './index';
4
+ import { Plus } from 'phosphor-svelte';
5
+ import IconButton from '../icon-button/IconButton.svelte';
6
+ import Divider from '../divider/Divider.svelte';
7
+ import Tag from '../tag/Tag.svelte';
8
+
9
+ const { Story } = defineMeta({
10
+ component: Combobox.Root,
11
+ title: 'Design System/Combobox',
12
+ tags: ['autodocs']
13
+ });
14
+
15
+ const fruits = [
16
+ { value: 'mango', label: 'Mango' },
17
+ { value: 'watermelon', label: 'Watermelon' },
18
+ { value: 'apple', label: 'Apple' },
19
+ { value: 'pineapple', label: 'Pineapple' },
20
+ { value: 'orange', label: 'Orange' },
21
+ { value: 'grape', label: 'Grape' },
22
+ { value: 'strawberry', label: 'Strawberry' },
23
+ { value: 'banana', label: 'Banana' },
24
+ { value: 'kiwi', label: 'Kiwi' },
25
+ { value: 'peach', label: 'Peach' },
26
+ { value: 'cherry', label: 'Cherry' },
27
+ { value: 'blueberry', label: 'Blueberry' },
28
+ { value: 'raspberry', label: 'Raspberry' },
29
+ { value: 'blackberry', label: 'Blackberry' },
30
+ { value: 'plum', label: 'Plum' },
31
+ { value: 'apricot', label: 'Apricot' },
32
+ { value: 'pear', label: 'Pear' },
33
+ { value: 'grapefruit', label: 'Grapefruit' }
34
+ ];
35
+
36
+ let searchValue = $state('');
37
+
38
+ let selected = $state<string[]>([]);
39
+
40
+ const filteredFruits = $derived(
41
+ searchValue === ''
42
+ ? fruits
43
+ : fruits.filter((fruit) => fruit.label.toLowerCase().includes(searchValue.toLowerCase()))
44
+ );
45
+ const exactMatch = $derived(
46
+ filteredFruits.find((fruit) => fruit.value.toLowerCase() === searchValue.toLowerCase())
47
+ );
48
+ let customAnchor = $state<HTMLElement>(null!);
49
+ </script>
50
+
51
+ <Story name="Base">
52
+ <Combobox.Root
53
+ onOpenChange={(o) => {
54
+ if (!o) searchValue = '';
55
+ }}
56
+ type="multiple"
57
+ name="favoriteFruit"
58
+ items={filteredFruits}
59
+ bind:value={selected}
60
+ >
61
+ <div class="flex gap-2">
62
+ {#each selected as fruit}
63
+ <Tag>
64
+ {fruit}
65
+ </Tag>
66
+ {/each}
67
+ </div>
68
+ <Combobox.Trigger>
69
+ <div bind:this={customAnchor}>
70
+ <IconButton rounded={false}>
71
+ <Plus size={16} />
72
+ </IconButton>
73
+ </div>
74
+ </Combobox.Trigger>
75
+ <Combobox.Content {customAnchor} class="flex flex-col justify-between">
76
+ <div>
77
+ <Combobox.Input
78
+ placeholder="Search a fruit"
79
+ oninput={(e: Event) => (searchValue = (e.target as HTMLInputElement).value)}
80
+ autofocus
81
+ />
82
+ <Divider />
83
+ </div>
84
+ <div class="flex flex-grow flex-col">
85
+ {#if filteredFruits.length > 0}
86
+ <Combobox.Group>
87
+ <Combobox.GroupHeading>Fruits</Combobox.GroupHeading>
88
+ {#each filteredFruits as fruit (fruit.value)}
89
+ <Combobox.Item value={fruit.value} label={fruit.label}>
90
+ {#snippet children({ selected })}
91
+ {fruit.label}
92
+ {#if selected}
93
+ <Combobox.Indicator />
94
+ {/if}
95
+ {/snippet}
96
+ </Combobox.Item>
97
+ {:else}
98
+ <span class="block px-5 py-2 text-sm text-muted-foreground"> No results found </span>
99
+ {/each}
100
+ </Combobox.Group>
101
+ {/if}
102
+ </div>
103
+ {#if !exactMatch && searchValue !== ''}
104
+ <Divider />
105
+
106
+ <Combobox.Add
107
+ class=""
108
+ onclick={() => {
109
+ selected.push(searchValue);
110
+ fruits.push({ value: searchValue, label: searchValue });
111
+ searchValue = '';
112
+ }}
113
+ >
114
+ <p>Add new fruit</p>
115
+ </Combobox.Add>
116
+ {/if}
117
+ </Combobox.Content>
118
+ </Combobox.Root>
119
+ </Story>
@@ -0,0 +1,19 @@
1
+ import * as Combobox from './index';
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 Combobox: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
16
+ [evt: string]: CustomEvent<any>;
17
+ }, {}, {}, string>;
18
+ type Combobox = InstanceType<typeof Combobox>;
19
+ export default Combobox;
@@ -0,0 +1,30 @@
1
+ <script lang="ts">
2
+ import { Plus } from 'phosphor-svelte';
3
+ import type { Snippet } from 'svelte';
4
+ import type { HTMLButtonAttributes } from 'svelte/elements';
5
+
6
+ type Props = { children: Snippet } & HTMLButtonAttributes;
7
+
8
+ let { children, ...props }: Props = $props();
9
+ </script>
10
+
11
+ <button {...props}>
12
+ <Plus />
13
+ {@render children()}
14
+ </button>
15
+
16
+ <style>
17
+ button {
18
+ display: flex;
19
+ height: 2.5rem;
20
+ flex-direction: row;
21
+ align-items: center;
22
+ gap: 0.5rem;
23
+ padding-left: 0.75rem;
24
+ padding-right: 0.75rem;
25
+ padding-top: 0.5rem;
26
+ padding-bottom: 0.5rem;
27
+ font-size: 0.875rem;
28
+ line-height: 1.25rem
29
+ }
30
+ </style>
@@ -0,0 +1,8 @@
1
+ import type { Snippet } from 'svelte';
2
+ import type { HTMLButtonAttributes } from 'svelte/elements';
3
+ type Props = {
4
+ children: Snippet;
5
+ } & HTMLButtonAttributes;
6
+ declare const ComboboxAdd: import("svelte").Component<Props, {}, "">;
7
+ type ComboboxAdd = ReturnType<typeof ComboboxAdd>;
8
+ export default ComboboxAdd;