@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,204 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte';
3
+
4
+ interface Props {
5
+ label?: string | null;
6
+ value: string | number;
7
+ type?: 'text' | 'password' | 'textarea' | 'number';
8
+ name?: string;
9
+ required?: boolean;
10
+ autofocus?: boolean;
11
+ placeholder?: string;
12
+ id?: string | undefined;
13
+ validator?: (a: string | number) => boolean;
14
+ onBlur?: (e: Event) => void;
15
+ onkeydown?: (e: KeyboardEvent) => void;
16
+ prefix?: Snippet<[any]>;
17
+ suffix?: Snippet;
18
+ error?: Snippet;
19
+ input?: HTMLInputElement | HTMLTextAreaElement;
20
+ maxlength?: number | null;
21
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'dynamic';
22
+ readonly?: boolean;
23
+ }
24
+
25
+ let {
26
+ label = null,
27
+ value = $bindable(),
28
+ type = 'text',
29
+ required = false,
30
+ autofocus = false,
31
+ placeholder = '',
32
+ id = undefined,
33
+ name,
34
+ validator = (_) => {
35
+ return true;
36
+ },
37
+ onBlur = () => {},
38
+ onkeydown = () => {},
39
+ prefix,
40
+ suffix,
41
+ error,
42
+ input = $bindable(),
43
+ maxlength = null,
44
+ size = 'md',
45
+ readonly = false
46
+ }: Props = $props();
47
+
48
+ let valid = $state(true);
49
+
50
+ const inputId = Math.random().toString(36).substring(7); // used for A11y
51
+
52
+ function handleInput(event: Event) {
53
+ if (readonly) return;
54
+ const target = event.target as HTMLTextAreaElement | HTMLInputElement;
55
+ value = target.value;
56
+
57
+ if (type === 'textarea') {
58
+ autoResizeTextarea(target as HTMLTextAreaElement);
59
+ }
60
+ }
61
+ function autoResizeTextarea(textarea: HTMLTextAreaElement) {
62
+ // Set a maximum height for the textarea (e.g., 200px)
63
+ const maxHeight = 200;
64
+
65
+ // Reset height to auto to get the correct scrollHeight
66
+ textarea.style.height = 'auto';
67
+
68
+ // If scrollHeight is less than maxHeight, set height to scrollHeight
69
+ // Otherwise, set height to maxHeight and enable scrolling
70
+ if (textarea.scrollHeight < maxHeight) {
71
+ textarea.style.height = `${textarea.scrollHeight}px`;
72
+ textarea.style.overflowY = 'hidden';
73
+ } else {
74
+ textarea.style.height = `${maxHeight}px`;
75
+ textarea.style.overflowY = 'auto';
76
+ }
77
+ }
78
+
79
+ function handleBlur(event: Event) {
80
+ valid = validator(value);
81
+ onBlur(event);
82
+ }
83
+ </script>
84
+
85
+ <div class="w-full">
86
+ {#if label}
87
+ <label for={id ?? inputId} class="block px-1 py-2 text-sm text-secondary">{label}</label>
88
+ {/if}
89
+ <div
90
+ class="flex w-full items-center gap-1 rounded-lg border border-input bg-surface shadow-input size-{size}"
91
+ class:!border-error={!valid}
92
+ >
93
+ {#if type === 'textarea'}
94
+ <textarea
95
+ id={id ?? inputId}
96
+ rows="3"
97
+ class:has-text={value}
98
+ class:has-placeholder={placeholder}
99
+ aria-label={label}
100
+ oninput={handleInput}
101
+ onblur={handleBlur}
102
+ {onkeydown}
103
+ bind:this={input}
104
+ {value}
105
+ {required}
106
+ {autofocus}
107
+ {placeholder}
108
+ {maxlength}
109
+ {name}
110
+ {readonly}
111
+ ></textarea>
112
+ {:else}
113
+ <div class="whitespace-nowrap text-secondary">
114
+ {@render prefix?.({ valid })}
115
+ </div>
116
+ <input
117
+ id={id ?? inputId}
118
+ class="inline leading-none"
119
+ class:has-text={value}
120
+ class:has-placeholder={placeholder}
121
+ aria-label={label}
122
+ {type}
123
+ {name}
124
+ {required}
125
+ oninput={handleInput}
126
+ onblur={handleBlur}
127
+ {onkeydown}
128
+ bind:this={input}
129
+ {value}
130
+ {autofocus}
131
+ {placeholder}
132
+ {maxlength}
133
+ {readonly}
134
+ />
135
+ <div class="whitespace-nowrap text-secondary">
136
+ {@render suffix?.()}
137
+ </div>
138
+ {/if}
139
+ </div>
140
+ {#if !valid}
141
+ {@render error?.()}
142
+ {/if}
143
+ </div>
144
+
145
+ <style>
146
+ input,
147
+ textarea {
148
+ width: 100%;
149
+ outline: 2px solid transparent;
150
+ outline-offset: 2px;
151
+ /* Remove the resize-none class to allow scrolling */
152
+ resize: none
153
+ }
154
+
155
+ div:not(:focus-within):hover {
156
+ border-color: #5750ee40
157
+ }
158
+
159
+ div:focus-within {
160
+ --tw-border-opacity: 1;
161
+ border-color: rgb(87 80 238 / var(--tw-border-opacity, 1))
162
+ }
163
+
164
+ .size-xs {
165
+ height: 1.5rem;
166
+ padding: 0.5rem;
167
+ font-size: 0.75rem;
168
+ line-height: 1rem
169
+ }
170
+
171
+ .size-sm {
172
+ height: 2rem;
173
+ padding-left: 0.75rem;
174
+ padding-right: 0.75rem;
175
+ padding-top: 0.5rem;
176
+ padding-bottom: 0.5rem
177
+ }
178
+
179
+ .size-md {
180
+ height: 2.5rem;
181
+ padding-left: 0.75rem;
182
+ padding-right: 0.75rem;
183
+ padding-top: 0.5rem;
184
+ padding-bottom: 0.5rem
185
+ }
186
+
187
+ .size-lg {
188
+ height: 3rem;
189
+ padding-left: 0.75rem;
190
+ padding-right: 0.75rem;
191
+ padding-top: 0.75rem;
192
+ padding-bottom: 0.75rem;
193
+ font-size: 1rem;
194
+ line-height: 1.5rem
195
+ }
196
+
197
+ .size-dynamic {
198
+ height: auto;
199
+ padding-left: 0.75rem;
200
+ padding-right: 0.75rem;
201
+ padding-top: 0.5rem;
202
+ padding-bottom: 0.5rem
203
+ }
204
+ </style>
@@ -0,0 +1,24 @@
1
+ import type { Snippet } from 'svelte';
2
+ interface Props {
3
+ label?: string | null;
4
+ value: string | number;
5
+ type?: 'text' | 'password' | 'textarea' | 'number';
6
+ name?: string;
7
+ required?: boolean;
8
+ autofocus?: boolean;
9
+ placeholder?: string;
10
+ id?: string | undefined;
11
+ validator?: (a: string | number) => boolean;
12
+ onBlur?: (e: Event) => void;
13
+ onkeydown?: (e: KeyboardEvent) => void;
14
+ prefix?: Snippet<[any]>;
15
+ suffix?: Snippet;
16
+ error?: Snippet;
17
+ input?: HTMLInputElement | HTMLTextAreaElement;
18
+ maxlength?: number | null;
19
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'dynamic';
20
+ readonly?: boolean;
21
+ }
22
+ declare const Input: import("svelte").Component<Props, {}, "value" | "input">;
23
+ type Input = ReturnType<typeof Input>;
24
+ export default Input;
@@ -0,0 +1 @@
1
+ export { default as Input } from './Input.svelte';
@@ -0,0 +1 @@
1
+ export { default as Input } from './Input.svelte';
@@ -0,0 +1,97 @@
1
+ <script module lang="ts">
2
+ import List from './List.svelte';
3
+ import Tag from '../tag/Tag.svelte';
4
+ import { ArrowUpRight } from 'phosphor-svelte';
5
+ import { defineMeta } from '@storybook/addon-svelte-csf';
6
+
7
+ const { Story } = defineMeta({
8
+ component: List,
9
+ title: 'Design System/List',
10
+ tags: ['autodocs']
11
+ });
12
+
13
+ const items: { name: string; licenses: string; repository: string }[] = [
14
+ { name: 'Formik', licenses: 'MIT', repository: 'somewhere' },
15
+ { name: 'Formik', licenses: 'MIT', repository: 'somewhere' },
16
+ { name: 'Formik', licenses: 'MIT', repository: 'somewhere' },
17
+ { name: 'Formik', licenses: 'MIT', repository: 'somewhere' }
18
+ ];
19
+ </script>
20
+
21
+ <Story name="Default" args={{}}>
22
+ <List {items}>
23
+ {#snippet item(item)}
24
+ <div class="flex min-h-2 flex-row gap-2">
25
+ <div class="flex flex-row justify-start gap-2">
26
+ <div class="max-w-56 truncate font-bold">
27
+ {item.name}
28
+ </div>
29
+ {#if item.licenses}
30
+ <Tag>
31
+ {item.licenses}
32
+ </Tag>
33
+ {/if}
34
+ </div>
35
+ <div class="flex grow flex-row justify-end gap-3">
36
+ {#if item.repository}
37
+ <div class="flex flex-row items-center gap-1">
38
+ <a
39
+ href={item.repository}
40
+ class="text-secondary"
41
+ target="_blank"
42
+ rel="noopener noreferrer"
43
+ >
44
+ Repository
45
+ </a>
46
+ <ArrowUpRight />
47
+ </div>
48
+ {/if}
49
+ </div>
50
+ </div>
51
+ {/snippet}
52
+ </List>
53
+ </Story>
54
+
55
+ <Story name="Compact" args={{ variant: 'compact' }}>
56
+ <List {items} variant="compact">
57
+ {#snippet item(item)}
58
+ <div class="flex min-h-2 flex-row gap-2">
59
+ <div class="flex flex-row justify-start gap-2">
60
+ <div class="max-w-56 truncate font-bold">
61
+ {item.name}
62
+ </div>
63
+ {#if item.licenses}
64
+ <Tag>
65
+ {item.licenses}
66
+ </Tag>
67
+ {/if}
68
+ </div>
69
+ <div class="flex grow flex-row justify-end gap-3">
70
+ {#if item.repository}
71
+ <div class="flex flex-row items-center gap-1">
72
+ <a
73
+ href={item.repository}
74
+ class="text-gray-700"
75
+ target="_blank"
76
+ rel="noopener noreferrer"
77
+ >
78
+ Repository
79
+ </a>
80
+ <ArrowUpRight />
81
+ </div>
82
+ {/if}
83
+ </div>
84
+ </div>
85
+ {/snippet}
86
+ </List>
87
+ </Story>
88
+
89
+ <Story name="Loading">
90
+ <List variant="compact" items={[{}, {}, {}]}>
91
+ {#snippet item({})}
92
+ <div class="flex h-8 w-full items-center">
93
+ <div class="skeleton h-6 w-full bg-neutral"></div>
94
+ </div>
95
+ {/snippet}
96
+ </List>
97
+ </Story>
@@ -0,0 +1,19 @@
1
+ import List from './List.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 List: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
16
+ [evt: string]: CustomEvent<any>;
17
+ }, {}, {}, string>;
18
+ type List = InstanceType<typeof List>;
19
+ export default List;
@@ -0,0 +1,69 @@
1
+ <script lang="ts" generics="T">
2
+ import type { Overflow } from '../../tailwind';
3
+ import type { Snippet } from 'svelte';
4
+
5
+ type Props = {
6
+ items: T[];
7
+ item: Snippet<[T]>;
8
+ overflow?: Overflow;
9
+ variant?: 'compact' | 'default';
10
+ };
11
+ let { items, item, overflow = 'overflow-y-auto', variant = 'default' }: Props = $props();
12
+ </script>
13
+
14
+ <div class="{`listStyles ${variant === 'compact' ? 'compact' : 'default'} ${overflow} `}}">
15
+ {#each items as currentItem, i}
16
+ <div class="item">
17
+ {@render item(currentItem)}
18
+ </div>
19
+ {/each}
20
+ </div>
21
+
22
+ <style>
23
+ .listStyles {
24
+
25
+ display: flex;
26
+
27
+ height: 100%;
28
+
29
+ flex-direction: column;
30
+
31
+ align-items: flex-start;
32
+
33
+ align-self: stretch;
34
+
35
+ border-radius: 0.25rem
36
+ }
37
+
38
+ .listStyles.default {
39
+
40
+ gap: 1rem
41
+ }
42
+
43
+ .listStyles.compact {
44
+
45
+ gap: 0px;
46
+
47
+ --tw-bg-opacity: 1;
48
+
49
+ background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
50
+
51
+ padding-left: 1rem;
52
+
53
+ padding-right: 1rem
54
+ }
55
+
56
+ .listStyles.compact :global(> .item:not(:last-child)) {
57
+
58
+ border-bottom-width: 1px;
59
+
60
+ border-style: solid;
61
+
62
+ border-color: #12192a14
63
+ }
64
+
65
+ .listStyles :global(.item) {
66
+
67
+ align-self: stretch
68
+ }
69
+ </style>
@@ -0,0 +1,24 @@
1
+ import type { Overflow } from '../../tailwind';
2
+ import type { Snippet } from 'svelte';
3
+ declare class __sveltets_Render<T> {
4
+ props(): {
5
+ items: T[];
6
+ item: Snippet<[T]>;
7
+ overflow?: Overflow;
8
+ variant?: "compact" | "default";
9
+ };
10
+ events(): {};
11
+ slots(): {};
12
+ bindings(): "";
13
+ exports(): {};
14
+ }
15
+ interface $$IsomorphicComponent {
16
+ new <T>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & {
17
+ $$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
18
+ } & ReturnType<__sveltets_Render<T>['exports']>;
19
+ <T>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
20
+ z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
21
+ }
22
+ declare const List: $$IsomorphicComponent;
23
+ type List<T> = InstanceType<typeof List<T>>;
24
+ export default List;
@@ -0,0 +1 @@
1
+ export { default as List } from './List.svelte';
@@ -0,0 +1 @@
1
+ export { default as List } from './List.svelte';
@@ -0,0 +1,21 @@
1
+ <script module>
2
+ import { defineMeta } from '@storybook/addon-svelte-csf';
3
+ import Logo from './Logo.svelte';
4
+
5
+ // More on how to set up stories at: https://storybook.js.org/docs/writing-stories
6
+ const { Story } = defineMeta({
7
+ title: 'Design System/Logo',
8
+ component: Logo,
9
+ tags: ['autodocs']
10
+ });
11
+ </script>
12
+
13
+ <Story name="Base">
14
+ <div class="flex flex-col gap-4">
15
+ <Logo size="xs" />
16
+ <Logo size="sm" />
17
+ <Logo size="md" />
18
+ <Logo size="lg" />
19
+ <Logo size="xl" />
20
+ </div>
21
+ </Story>
@@ -0,0 +1,27 @@
1
+ export default Logo;
2
+ type Logo = SvelteComponent<{
3
+ [x: string]: never;
4
+ }, {
5
+ [evt: string]: CustomEvent<any>;
6
+ }, {}> & {
7
+ $$bindings?: string | undefined;
8
+ };
9
+ declare const Logo: $$__sveltets_2_IsomorphicComponent<{
10
+ [x: string]: never;
11
+ }, {
12
+ [evt: string]: CustomEvent<any>;
13
+ }, {}, {}, string>;
14
+ import Logo from './Logo.svelte';
15
+ 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> {
16
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
17
+ $$bindings?: Bindings;
18
+ } & Exports;
19
+ (internal: unknown, props: {
20
+ $$events?: Events;
21
+ $$slots?: Slots;
22
+ }): Exports & {
23
+ $set?: any;
24
+ $on?: any;
25
+ };
26
+ z_$$bindings?: Bindings;
27
+ }
@@ -0,0 +1,39 @@
1
+ <script lang="ts">
2
+ type Props = {
3
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
4
+ color?: 'default' | 'white';
5
+ };
6
+
7
+ let { size = 'md', color = 'default' }: Props = $props();
8
+
9
+ const colorMap = {
10
+ default: '#ff7a00',
11
+ white: '#ffffff'
12
+ };
13
+
14
+ const sizeMap = {
15
+ xs: 16,
16
+ sm: 20,
17
+ md: 24,
18
+ lg: 32,
19
+ xl: 40
20
+ };
21
+ </script>
22
+
23
+ <svg
24
+ width={sizeMap[size]}
25
+ height={sizeMap[size]}
26
+ viewBox={`0 0 24 24`}
27
+ fill={colorMap[color]}
28
+ xmlns="http://www.w3.org/2000/svg"
29
+ >
30
+ <path
31
+ d="M5.25 10.5C2.3511 10.5 0 8.1489 0 5.25C0 2.3511 2.3511 0 5.25 0C8.1489 0 10.5 2.3511 10.5 5.25C10.5034 8.1489 8.1523 10.5 5.25 10.5Z"
32
+ />
33
+ <path
34
+ d="M18.75 10.5C15.8511 10.5 13.5 8.1489 13.5 5.25C13.5 2.3511 15.8511 0 18.75 0C21.6489 0 24 2.3511 24 5.25C24.0034 8.1489 21.6523 10.5 18.75 10.5Z"
35
+ />
36
+ <path
37
+ d="M0 18.75C0 15.8511 2.3511 13.5 5.25 13.5C8.1489 13.5 10.5 15.8511 10.5 18.75C10.5 21.6489 8.1489 24 5.25 24C2.3511 24 0 21.6489 0 18.75Z"
38
+ />
39
+ </svg>
@@ -0,0 +1,7 @@
1
+ type Props = {
2
+ size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
3
+ color?: 'default' | 'white';
4
+ };
5
+ declare const Logo: import("svelte").Component<Props, {}, "">;
6
+ type Logo = ReturnType<typeof Logo>;
7
+ export default Logo;
@@ -0,0 +1 @@
1
+ export { default as Logo } from './Logo.svelte';
@@ -0,0 +1 @@
1
+ export { default as Logo } from './Logo.svelte';
@@ -0,0 +1,41 @@
1
+ <script module>
2
+ import Markdown from './Markdown.svelte';
3
+
4
+ import { defineMeta } from '@storybook/addon-svelte-csf';
5
+
6
+ const { Story } = defineMeta({
7
+ component: Markdown,
8
+ title: 'Design System/Markdown',
9
+ tags: ['autodocs']
10
+ });
11
+ </script>
12
+
13
+ <Story name="Primary">
14
+ <Markdown
15
+ markdown={`# Welcome to My Markdown Story
16
+
17
+ ## Features
18
+
19
+ - **Bold** and *italic* text
20
+ - Lists (ordered and unordered)
21
+ - [Links](https://example.com)
22
+ - Code blocks
23
+
24
+ ### Example Code
25
+
26
+ \`\`\`javascript
27
+ function greet(name) {
28
+ console.log(\`Hello, \${name}!\`);
29
+ }
30
+ greet('Storybook');
31
+ \`\`\`
32
+
33
+ > This is a blockquote. It's great for highlighting important information.
34
+
35
+ ![Storybook Logo](https://storybook.js.org/images/logos/icon-storybook.svg)
36
+
37
+ ---
38
+
39
+ Happy storytelling with Markdown!`}
40
+ />
41
+ </Story>
@@ -0,0 +1,27 @@
1
+ export default Markdown;
2
+ type Markdown = SvelteComponent<{
3
+ [x: string]: never;
4
+ }, {
5
+ [evt: string]: CustomEvent<any>;
6
+ }, {}> & {
7
+ $$bindings?: string | undefined;
8
+ };
9
+ declare const Markdown: $$__sveltets_2_IsomorphicComponent<{
10
+ [x: string]: never;
11
+ }, {
12
+ [evt: string]: CustomEvent<any>;
13
+ }, {}, {}, string>;
14
+ import Markdown from './Markdown.svelte';
15
+ 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> {
16
+ new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
17
+ $$bindings?: Bindings;
18
+ } & Exports;
19
+ (internal: unknown, props: {
20
+ $$events?: Events;
21
+ $$slots?: Slots;
22
+ }): Exports & {
23
+ $set?: any;
24
+ $on?: any;
25
+ };
26
+ z_$$bindings?: Bindings;
27
+ }
@@ -0,0 +1,12 @@
1
+ <script lang="ts">
2
+ import { marked } from 'marked';
3
+ interface Props {
4
+ markdown: string;
5
+ }
6
+
7
+ let { markdown }: Props = $props();
8
+ </script>
9
+
10
+ <div class="prose text-sm text-tertiary dark:prose-invert">
11
+ {@html marked.parse(markdown ?? '')}
12
+ </div>
@@ -0,0 +1,6 @@
1
+ interface Props {
2
+ markdown: string;
3
+ }
4
+ declare const Markdown: import("svelte").Component<Props, {}, "">;
5
+ type Markdown = ReturnType<typeof Markdown>;
6
+ export default Markdown;
@@ -0,0 +1 @@
1
+ export { default as Markdown } from './Markdown.svelte';
@@ -0,0 +1 @@
1
+ export { default as Markdown } from './Markdown.svelte';