@reshape-biotech/design-system 1.2.5 → 1.2.7

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 (175) hide show
  1. package/README.md +3 -1
  2. package/dist/app.css +97 -97
  3. package/dist/components/activity/Activity.stories.svelte +104 -104
  4. package/dist/components/activity/Activity.svelte +112 -112
  5. package/dist/components/avatar/Avatar.stories.svelte +23 -23
  6. package/dist/components/avatar/Avatar.svelte +54 -54
  7. package/dist/components/banner/Banner.stories.svelte +105 -105
  8. package/dist/components/banner/Banner.svelte +42 -42
  9. package/dist/components/button/Button.stories.svelte +61 -61
  10. package/dist/components/button/Button.svelte +95 -95
  11. package/dist/components/card/Card.stories.svelte +112 -112
  12. package/dist/components/card/Card.svelte +18 -18
  13. package/dist/components/checkbox/Checkbox.stories.svelte +8 -8
  14. package/dist/components/checkbox/Checkbox.svelte +17 -17
  15. package/dist/components/collapsible/Collapsible.stories.svelte +26 -26
  16. package/dist/components/collapsible/components/collapsible-content.svelte +20 -20
  17. package/dist/components/collapsible/components/collapsible-trigger.svelte +12 -12
  18. package/dist/components/combobox/Combobox.stories.svelte +412 -412
  19. package/dist/components/combobox/components/combobox-add.svelte +8 -8
  20. package/dist/components/combobox/components/combobox-content.svelte +39 -39
  21. package/dist/components/combobox/components/combobox-indicator.svelte +1 -1
  22. package/dist/components/datepicker/DatePicker.stories.svelte +196 -196
  23. package/dist/components/datepicker/DatePicker.svelte +173 -173
  24. package/dist/components/divider/Divider.stories.svelte +7 -7
  25. package/dist/components/divider/Divider.svelte +9 -9
  26. package/dist/components/drawer/Drawer.stories.svelte +51 -51
  27. package/dist/components/drawer/Drawer.svelte +33 -33
  28. package/dist/components/drawer/DrawerLabel.svelte +10 -10
  29. package/dist/components/dropdown/Dropdown.stories.svelte +210 -210
  30. package/dist/components/dropdown/Dropdown.svelte +57 -57
  31. package/dist/components/dropdown/components/DropdownContent.svelte +16 -16
  32. package/dist/components/dropdown/components/DropdownMenu.svelte +10 -10
  33. package/dist/components/dropdown/components/DropdownTrigger.svelte +37 -37
  34. package/dist/components/dropdown/components/OutlinedButton.svelte +9 -9
  35. package/dist/components/empty-content/EmptyContent.stories.svelte +38 -38
  36. package/dist/components/empty-content/EmptyContent.svelte +12 -12
  37. package/dist/components/graphs/bar-chart/BarChart.stories.svelte +91 -91
  38. package/dist/components/graphs/bar-chart/BarChart.svelte +147 -147
  39. package/dist/components/graphs/bar-chart/StackedBarChart.stories.svelte +57 -57
  40. package/dist/components/graphs/bar-chart/StackedBarChart.svelte +198 -199
  41. package/dist/components/graphs/chart/Chart.stories.svelte +96 -96
  42. package/dist/components/graphs/chart/Chart.svelte +207 -207
  43. package/dist/components/graphs/line/LineChart.stories.svelte +138 -138
  44. package/dist/components/graphs/line/LineChart.svelte +140 -142
  45. package/dist/components/graphs/matrix/Matrix.stories.svelte +117 -117
  46. package/dist/components/graphs/matrix/Matrix.svelte +141 -141
  47. package/dist/components/graphs/multiline/MultiLineChart.stories.svelte +168 -168
  48. package/dist/components/graphs/multiline/MultiLineChart.svelte +236 -236
  49. package/dist/components/graphs/scatterplot/Scatterplot.stories.svelte +84 -84
  50. package/dist/components/graphs/scatterplot/Scatterplot.svelte +302 -302
  51. package/dist/components/graphs/utils/duration.d.ts +1 -0
  52. package/dist/components/graphs/utils/duration.js +33 -0
  53. package/dist/components/graphs/utils/tooltipFormatter.js +1 -1
  54. package/dist/components/icon-button/IconButton.stories.svelte +64 -64
  55. package/dist/components/icon-button/IconButton.svelte +88 -88
  56. package/dist/components/icons/AnalysisIcon.stories.svelte +18 -18
  57. package/dist/components/icons/AnalysisIcon.svelte +96 -96
  58. package/dist/components/icons/Icon.stories.svelte +111 -111
  59. package/dist/components/icons/Icon.svelte +17 -17
  60. package/dist/components/icons/PrincipalIcon.svelte +59 -59
  61. package/dist/components/icons/custom/Halo.svelte +31 -31
  62. package/dist/components/icons/custom/Well.svelte +27 -27
  63. package/dist/components/icons/index.d.ts +3 -2
  64. package/dist/components/icons/index.js +3 -1
  65. package/dist/components/image/Image.svelte +42 -42
  66. package/dist/components/input/Input.stories.svelte +55 -55
  67. package/dist/components/input/Input.svelte +121 -121
  68. package/dist/components/label/Label.stories.svelte +18 -18
  69. package/dist/components/label/Label.svelte +11 -11
  70. package/dist/components/list/List.stories.svelte +84 -84
  71. package/dist/components/list/List.svelte +20 -20
  72. package/dist/components/logo/Logo.stories.svelte +15 -15
  73. package/dist/components/logo/Logo.svelte +30 -30
  74. package/dist/components/manual-cfu-counter/ManualCFUCounter.stories.svelte +102 -102
  75. package/dist/components/manual-cfu-counter/ManualCFUCounter.svelte +557 -565
  76. package/dist/components/manual-cfu-counter/test/ManualCFUCounterTestWrapper.svelte +11 -11
  77. package/dist/components/markdown/Markdown.stories.svelte +10 -10
  78. package/dist/components/markdown/Markdown.svelte +6 -6
  79. package/dist/components/modal/Modal.stories.svelte +29 -29
  80. package/dist/components/modal/Modal.svelte +71 -71
  81. package/dist/components/multi-cfu-counter/MultiCFUCounter.stories.svelte +215 -0
  82. package/dist/components/multi-cfu-counter/MultiCFUCounter.stories.svelte.d.ts +3 -0
  83. package/dist/components/multi-cfu-counter/MultiCFUCounter.svelte +662 -0
  84. package/dist/components/multi-cfu-counter/MultiCFUCounter.svelte.d.ts +32 -0
  85. package/dist/components/multi-cfu-counter/index.d.ts +1 -0
  86. package/dist/components/multi-cfu-counter/index.js +1 -0
  87. package/dist/components/multi-cfu-counter/test/MultiCFUCounterTestWrapper.svelte +28 -0
  88. package/dist/components/multi-cfu-counter/test/MultiCFUCounterTestWrapper.svelte.d.ts +20 -0
  89. package/dist/components/notification-popup/NotificationPopup.stories.svelte +18 -18
  90. package/dist/components/notification-popup/NotificationPopup.svelte +26 -26
  91. package/dist/components/notifications/Notifications.stories.svelte +101 -101
  92. package/dist/components/notifications/Notifications.svelte +9 -9
  93. package/dist/components/pill/Pill.stories.svelte +8 -8
  94. package/dist/components/pill/Pill.svelte +27 -27
  95. package/dist/components/progress-circle/ProgressCircle.stories.svelte +8 -8
  96. package/dist/components/progress-circle/ProgressCircle.svelte +54 -54
  97. package/dist/components/required-status-indicator/RequiredStatusIndicator.stories.svelte +18 -18
  98. package/dist/components/required-status-indicator/RequiredStatusIndicator.svelte +14 -14
  99. package/dist/components/segmented-control-buttons/ControlButton.svelte +36 -36
  100. package/dist/components/segmented-control-buttons/SegmentedControlButtons.stories.svelte +35 -35
  101. package/dist/components/segmented-control-buttons/SegmentedControlButtons.svelte +13 -13
  102. package/dist/components/select/Select.stories.svelte +77 -77
  103. package/dist/components/select/Select.svelte +114 -114
  104. package/dist/components/select-new/Select.stories.svelte +188 -188
  105. package/dist/components/select-new/components/Group.svelte +17 -17
  106. package/dist/components/select-new/components/MultiSelectTrigger.svelte +57 -57
  107. package/dist/components/select-new/components/SelectContent.svelte +22 -22
  108. package/dist/components/select-new/components/SelectGroupHeading.svelte +10 -10
  109. package/dist/components/select-new/components/SelectItem.svelte +25 -25
  110. package/dist/components/select-new/components/SelectTrigger.svelte +38 -38
  111. package/dist/components/sjsf-wrappers/SjsfNumberInputWrapper.svelte +76 -76
  112. package/dist/components/sjsf-wrappers/SjsfNumberInputWrapper.svelte.d.ts +1 -1
  113. package/dist/components/sjsf-wrappers/SjsfTextInputWrapper.svelte +53 -53
  114. package/dist/components/sjsf-wrappers/SjsfTextInputWrapper.svelte.d.ts +1 -1
  115. package/dist/components/sjsf-wrappers/sjsfCustomTheme.js +1 -1
  116. package/dist/components/skeleton-loader/SkeletonLoader.stories.svelte +32 -32
  117. package/dist/components/skeleton-loader/SkeletonLoader.svelte +10 -10
  118. package/dist/components/skeleton-loader/StatcardSkeleton.svelte +9 -9
  119. package/dist/components/skeleton-loader/components/Skeleton.svelte +7 -7
  120. package/dist/components/skeleton-loader/components/SkeletonImage.svelte +12 -12
  121. package/dist/components/slider/Slider.stories.svelte +23 -23
  122. package/dist/components/slider/Slider.svelte +107 -107
  123. package/dist/components/spinner/Spinner.stories.svelte +8 -8
  124. package/dist/components/spinner/Spinner.svelte +18 -18
  125. package/dist/components/stat-card/StatCard.stories.svelte +26 -26
  126. package/dist/components/stat-card/StatCard.svelte +128 -128
  127. package/dist/components/status-badge/StatusBadge.stories.svelte +365 -365
  128. package/dist/components/status-badge/StatusBadge.svelte +54 -54
  129. package/dist/components/stepper/Stepper.stories.svelte +219 -219
  130. package/dist/components/stepper/components/stepper-root.svelte +12 -12
  131. package/dist/components/stepper/components/stepper-step.svelte +83 -83
  132. package/dist/components/table/Table.stories.svelte +87 -87
  133. package/dist/components/table/Table.svelte +32 -32
  134. package/dist/components/table/components/TBody.svelte +7 -7
  135. package/dist/components/table/components/THead.svelte +7 -7
  136. package/dist/components/table/components/Td.svelte +8 -8
  137. package/dist/components/table/components/Th.svelte +8 -8
  138. package/dist/components/table/components/Tr.svelte +11 -11
  139. package/dist/components/tabs/Tabs.stories.svelte +20 -20
  140. package/dist/components/tabs/Tabs.svelte +8 -8
  141. package/dist/components/tabs/components/Content.svelte +8 -8
  142. package/dist/components/tabs/components/Tab.svelte +14 -14
  143. package/dist/components/tabs/components/Tabs.svelte +7 -7
  144. package/dist/components/tag/Tag.stories.svelte +57 -57
  145. package/dist/components/tag/Tag.svelte +95 -95
  146. package/dist/components/textarea/Textarea.stories.svelte +70 -70
  147. package/dist/components/textarea/Textarea.svelte +76 -76
  148. package/dist/components/toast/Toast.stories.svelte +204 -204
  149. package/dist/components/toast/Toast.svelte +53 -53
  150. package/dist/components/toggle/Toggle.stories.svelte +9 -9
  151. package/dist/components/toggle/Toggle.svelte +53 -53
  152. package/dist/components/toggle-icon-button/ToggleIconButton.stories.svelte +152 -152
  153. package/dist/components/toggle-icon-button/ToggleIconButton.svelte +99 -99
  154. package/dist/components/tooltip/Tooltip.stories.svelte +105 -105
  155. package/dist/components/tooltip/Tooltip.svelte +26 -26
  156. package/dist/fonts/index.js +1 -1
  157. package/dist/index.d.ts +4 -1
  158. package/dist/index.js +5 -1
  159. package/dist/notifications.d.ts +1 -4
  160. package/dist/notifications.js +1 -1
  161. package/dist/styles.d.ts +1 -0
  162. package/dist/styles.js +4 -0
  163. package/dist/tailwind-safelist.js +406 -398
  164. package/dist/tailwind.preset.d.ts +4 -0
  165. package/dist/tailwind.preset.js +10 -10
  166. package/dist/tokens/colors.d.ts +246 -0
  167. package/dist/tokens/colors.js +139 -0
  168. package/dist/tokens/index.d.ts +3 -0
  169. package/dist/tokens/index.js +5 -0
  170. package/dist/tokens/typography.d.ts +48 -0
  171. package/dist/tokens/typography.js +48 -0
  172. package/dist/tokens.d.ts +16 -252
  173. package/dist/tokens.js +33 -164
  174. package/dist/types/fonts.d.ts +2 -2
  175. package/package.json +398 -78
@@ -1,146 +1,146 @@
1
1
  <script lang="ts">
2
- import IconButton from '../icon-button/IconButton.svelte';
3
- import { Icon } from '../icons';
4
- import Spinner from '../spinner/Spinner.svelte';
5
- import Tooltip from '../tooltip/Tooltip.svelte';
6
- import { Input } from '../input';
7
- import { tick } from 'svelte';
2
+ import IconButton from '../icon-button/IconButton.svelte';
3
+ import { Icon } from '../icons';
4
+ import Spinner from '../spinner/Spinner.svelte';
5
+ import Tooltip from '../tooltip/Tooltip.svelte';
6
+ import { Input } from '../input';
7
+ import { tick } from 'svelte';
8
8
 
9
- interface Props {
10
- title: string;
11
- value?: string | number | null;
12
- unit?: string | null;
13
- titleTooltip?: string;
14
- showTitleTooltip?: boolean;
15
- editable?: boolean;
16
- onsubmit?: (value: string | number) => void;
17
- inputType?: 'text' | 'number';
18
- }
9
+ interface Props {
10
+ title: string;
11
+ value?: string | number | null;
12
+ unit?: string | null;
13
+ titleTooltip?: string;
14
+ showTitleTooltip?: boolean;
15
+ editable?: boolean;
16
+ onsubmit?: (value: string | number) => void;
17
+ inputType?: 'text' | 'number';
18
+ }
19
19
 
20
- let {
21
- title,
22
- value = null,
23
- unit = '',
24
- titleTooltip = '',
25
- showTitleTooltip = false,
26
- editable = false,
27
- inputType = 'text',
28
- onsubmit
29
- }: Props = $props();
30
- const formattedValue = $derived(typeof value === 'number' ? value.toLocaleString() : value);
31
- let isEditing = $state(false);
32
- let inputValue = $state('');
33
- let inputComponent = $state<Input | null>(null);
20
+ let {
21
+ title,
22
+ value = null,
23
+ unit = '',
24
+ titleTooltip = '',
25
+ showTitleTooltip = false,
26
+ editable = false,
27
+ inputType = 'text',
28
+ onsubmit,
29
+ }: Props = $props();
30
+ const formattedValue = $derived(typeof value === 'number' ? value.toLocaleString() : value);
31
+ let isEditing = $state(false);
32
+ let inputValue = $state('');
33
+ let inputComponent = $state<Input | null>(null);
34
34
 
35
- function startEditing(event?: MouseEvent) {
36
- if (event) {
37
- event.stopPropagation();
38
- }
39
- isEditing = true;
40
- inputValue = value !== null ? value.toString() : '';
41
- }
35
+ function startEditing(event?: MouseEvent) {
36
+ if (event) {
37
+ event.stopPropagation();
38
+ }
39
+ isEditing = true;
40
+ inputValue = value !== null ? value.toString() : '';
41
+ }
42
42
 
43
- function handleCardClick() {
44
- if (editable && !isEditing && value !== null) {
45
- startEditing();
46
- }
47
- }
43
+ function handleCardClick() {
44
+ if (editable && !isEditing && value !== null) {
45
+ startEditing();
46
+ }
47
+ }
48
48
 
49
- function handleInputBlur(event: Event) {
50
- const target = event.target as HTMLInputElement;
51
- inputValue = target.value;
52
- submitValue();
53
- }
49
+ function handleInputBlur(event: Event) {
50
+ const target = event.target as HTMLInputElement;
51
+ inputValue = target.value;
52
+ submitValue();
53
+ }
54
54
 
55
- function handleInputKeydown(event: KeyboardEvent) {
56
- const target = event.target as HTMLInputElement;
57
- inputValue = target.value;
58
- if (event.key === 'Escape') {
59
- isEditing = false;
60
- }
61
- if (event.key === 'Enter') {
62
- submitValue();
63
- }
64
- }
55
+ function handleInputKeydown(event: KeyboardEvent) {
56
+ const target = event.target as HTMLInputElement;
57
+ inputValue = target.value;
58
+ if (event.key === 'Escape') {
59
+ isEditing = false;
60
+ }
61
+ if (event.key === 'Enter') {
62
+ submitValue();
63
+ }
64
+ }
65
65
 
66
- function submitValue() {
67
- if (inputValue.trim() === '') {
68
- isEditing = false;
69
- return;
70
- }
66
+ function submitValue() {
67
+ if (inputValue.trim() === '') {
68
+ isEditing = false;
69
+ return;
70
+ }
71
71
 
72
- // Try to parse as number if possible
73
- const numValue = parseFloat(inputValue);
74
- const newValue = isNaN(numValue) ? inputValue : numValue;
72
+ // Try to parse as number if possible
73
+ const numValue = parseFloat(inputValue);
74
+ const newValue = isNaN(numValue) ? inputValue : numValue;
75
75
 
76
- if (onsubmit) {
77
- onsubmit(newValue);
78
- }
76
+ if (onsubmit) {
77
+ onsubmit(newValue);
78
+ }
79
79
 
80
- isEditing = false;
81
- }
80
+ isEditing = false;
81
+ }
82
82
 
83
- $effect(() => {
84
- if (isEditing && inputComponent) {
85
- tick().then(() => {
86
- inputComponent?.focus();
87
- });
88
- }
89
- });
83
+ $effect(() => {
84
+ if (isEditing && inputComponent) {
85
+ tick().then(() => {
86
+ inputComponent?.focus();
87
+ });
88
+ }
89
+ });
90
90
  </script>
91
91
 
92
92
  <!-- svelte-ignore a11y_no_static_element_interactions -->
93
93
  <div
94
- data-testid="stat-card-body"
95
- class="flex w-full flex-shrink-0 flex-grow basis-0 flex-col items-start gap-2 overflow-clip rounded-lg bg-neutral p-4 text-left transition-colors"
96
- class:hover:bg-neutral-hover={editable && !isEditing && value !== null}
97
- class:cursor-pointer={editable && !isEditing && value !== null}
98
- onclick={editable && !isEditing && value !== null ? handleCardClick : undefined}
99
- onkeydown={editable && !isEditing && value !== null ? handleInputKeydown : undefined}
100
- aria-label={editable && !isEditing && value !== null ? `Edit ${title}` : undefined}
94
+ data-testid="stat-card-body"
95
+ class="flex w-full flex-shrink-0 flex-grow basis-0 flex-col items-start gap-2 overflow-clip rounded-lg bg-neutral p-4 text-left transition-colors"
96
+ class:hover:bg-neutral-hover={editable && !isEditing && value !== null}
97
+ class:cursor-pointer={editable && !isEditing && value !== null}
98
+ onclick={editable && !isEditing && value !== null ? handleCardClick : undefined}
99
+ onkeydown={editable && !isEditing && value !== null ? handleInputKeydown : undefined}
100
+ aria-label={editable && !isEditing && value !== null ? `Edit ${title}` : undefined}
101
101
  >
102
- <p class="flex items-center justify-start gap-2 truncate font-medium text-secondary">
103
- {title}
104
- {#if titleTooltip && showTitleTooltip}
105
- <Tooltip>
106
- {#snippet trigger()}
107
- <Icon iconName="Info" color="icon-tertiary" />
108
- {/snippet}
109
- {#snippet content()}
110
- <span>
111
- {titleTooltip}
112
- </span>
113
- {/snippet}
114
- </Tooltip>
115
- {/if}
116
- </p>
117
- <div class="flex h-8 w-full items-center gap-1">
118
- {#if value !== null}
119
- {#if isEditing}
120
- <div class="flex-1">
121
- <Input
122
- bind:this={inputComponent}
123
- type={inputType}
124
- value={inputValue}
125
- onblur={handleInputBlur}
126
- onkeydown={handleInputKeydown}
127
- />
128
- </div>
129
- {:else}
130
- <div class="flex flex-1 flex-nowrap items-baseline gap-1">
131
- <p class="text-2xl font-medium">{formattedValue}</p>
132
- {#if unit}
133
- <p class="flex-1 truncate text-2xl font-medium text-tertiary">{unit}</p>
134
- {/if}
135
- </div>
136
- {#if editable}
137
- <IconButton onclick={(e) => startEditing(e)}>
138
- <Icon iconName="PencilSimple" />
139
- </IconButton>
140
- {/if}
141
- {/if}
142
- {:else}
143
- <Spinner />
144
- {/if}
145
- </div>
102
+ <p class="flex items-center justify-start gap-2 truncate font-medium text-secondary">
103
+ {title}
104
+ {#if titleTooltip && showTitleTooltip}
105
+ <Tooltip>
106
+ {#snippet trigger()}
107
+ <Icon iconName="Info" color="icon-tertiary" />
108
+ {/snippet}
109
+ {#snippet content()}
110
+ <span>
111
+ {titleTooltip}
112
+ </span>
113
+ {/snippet}
114
+ </Tooltip>
115
+ {/if}
116
+ </p>
117
+ <div class="flex h-8 w-full items-center gap-1">
118
+ {#if value !== null}
119
+ {#if isEditing}
120
+ <div class="flex-1">
121
+ <Input
122
+ bind:this={inputComponent}
123
+ type={inputType}
124
+ value={inputValue}
125
+ onblur={handleInputBlur}
126
+ onkeydown={handleInputKeydown}
127
+ />
128
+ </div>
129
+ {:else}
130
+ <div class="flex flex-1 flex-nowrap items-baseline gap-1">
131
+ <p class="text-2xl font-medium">{formattedValue}</p>
132
+ {#if unit}
133
+ <p class="flex-1 truncate text-2xl font-medium text-tertiary">{unit}</p>
134
+ {/if}
135
+ </div>
136
+ {#if editable}
137
+ <IconButton onclick={(e) => startEditing(e)}>
138
+ <Icon iconName="PencilSimple" />
139
+ </IconButton>
140
+ {/if}
141
+ {/if}
142
+ {:else}
143
+ <Spinner />
144
+ {/if}
145
+ </div>
146
146
  </div>