@reshape-biotech/design-system 2.7.52 → 2.7.53

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 (113) hide show
  1. package/dist/components/activity/Activity.figma.d.ts +7 -0
  2. package/dist/components/activity/Activity.figma.js +24 -0
  3. package/dist/components/activity/Activity.stories.svelte +0 -6
  4. package/dist/components/avatar/Avatar.figma.d.ts +7 -0
  5. package/dist/components/avatar/Avatar.figma.js +17 -0
  6. package/dist/components/avatar/Avatar.stories.svelte +0 -6
  7. package/dist/components/banner/Banner.figma.d.ts +7 -0
  8. package/dist/components/banner/Banner.figma.js +26 -0
  9. package/dist/components/button/Button.figma.d.ts +7 -0
  10. package/dist/components/button/Button.figma.js +51 -0
  11. package/dist/components/button/Button.stories.svelte +0 -6
  12. package/dist/components/checkbox/Checkbox.figma.d.ts +7 -0
  13. package/dist/components/checkbox/Checkbox.figma.js +24 -0
  14. package/dist/components/checkbox/Checkbox.stories.svelte +69 -10
  15. package/dist/components/checkbox/Checkbox.svelte +32 -8
  16. package/dist/components/checkbox/Checkbox.svelte.d.ts +4 -2
  17. package/dist/components/collapsible/Collapsible.figma.d.ts +7 -0
  18. package/dist/components/collapsible/Collapsible.figma.js +21 -0
  19. package/dist/components/combobox/Combobox.stories.svelte +0 -6
  20. package/dist/components/datepicker/DatePicker.figma.d.ts +7 -0
  21. package/dist/components/datepicker/DatePicker.figma.js +14 -0
  22. package/dist/components/datepicker/DatePicker.stories.svelte +0 -6
  23. package/dist/components/divider/Divider.figma.d.ts +7 -0
  24. package/dist/components/divider/Divider.figma.js +12 -0
  25. package/dist/components/drawer/Drawer.figma.d.ts +7 -0
  26. package/dist/components/drawer/Drawer.figma.js +26 -0
  27. package/dist/components/dropdown/Dropdown.figma.d.ts +7 -0
  28. package/dist/components/dropdown/Dropdown.figma.js +22 -0
  29. package/dist/components/empty-content/EmptyContent.figma.d.ts +7 -0
  30. package/dist/components/empty-content/EmptyContent.figma.js +20 -0
  31. package/dist/components/empty-content/EmptyContent.stories.svelte +43 -0
  32. package/dist/components/empty-content/EmptyContent.svelte +11 -2
  33. package/dist/components/empty-content/EmptyContent.svelte.d.ts +1 -0
  34. package/dist/components/icon-button/IconButton.figma.d.ts +7 -0
  35. package/dist/components/icon-button/IconButton.figma.js +42 -0
  36. package/dist/components/icons/Icon.stories.svelte +0 -6
  37. package/dist/components/input/Input.figma.d.ts +7 -0
  38. package/dist/components/input/Input.figma.js +23 -0
  39. package/dist/components/input/Input.stories.svelte +0 -6
  40. package/dist/components/label/Label.figma.d.ts +7 -0
  41. package/dist/components/label/Label.figma.js +12 -0
  42. package/dist/components/legend/Legend.figma.d.ts +7 -0
  43. package/dist/components/legend/Legend.figma.js +14 -0
  44. package/dist/components/list/List.figma.d.ts +7 -0
  45. package/dist/components/list/List.figma.js +23 -0
  46. package/dist/components/logo/Logo.figma.d.ts +7 -0
  47. package/dist/components/logo/Logo.figma.js +21 -0
  48. package/dist/components/logo/Logo.stories.svelte +17 -0
  49. package/dist/components/logo/Logo.svelte +44 -18
  50. package/dist/components/logo/Logo.svelte.d.ts +1 -0
  51. package/dist/components/markdown/Markdown.figma.d.ts +7 -0
  52. package/dist/components/markdown/Markdown.figma.js +14 -0
  53. package/dist/components/modal/Modal.figma.d.ts +7 -0
  54. package/dist/components/modal/Modal.figma.js +31 -0
  55. package/dist/components/nav/Nav.figma.d.ts +7 -0
  56. package/dist/components/nav/Nav.figma.js +21 -0
  57. package/dist/components/notification-popup/NotificationPopup.figma.d.ts +7 -0
  58. package/dist/components/notification-popup/NotificationPopup.figma.js +19 -0
  59. package/dist/components/notifications/Notifications.figma.d.ts +7 -0
  60. package/dist/components/notifications/Notifications.figma.js +26 -0
  61. package/dist/components/pill/Pill.figma.d.ts +7 -0
  62. package/dist/components/pill/Pill.figma.js +11 -0
  63. package/dist/components/progress-circle/ProgressCircle.figma.d.ts +7 -0
  64. package/dist/components/progress-circle/ProgressCircle.figma.js +15 -0
  65. package/dist/components/progress-circle/ProgressCircle.stories.svelte +12 -0
  66. package/dist/components/progress-circle/ProgressCircle.svelte +19 -11
  67. package/dist/components/progress-circle/ProgressCircle.svelte.d.ts +1 -1
  68. package/dist/components/required-status-indicator/RequiredStatusIndicator.figma.d.ts +7 -0
  69. package/dist/components/required-status-indicator/RequiredStatusIndicator.figma.js +18 -0
  70. package/dist/components/segmented-control-buttons/SegmentedControlButtons.figma.d.ts +7 -0
  71. package/dist/components/segmented-control-buttons/SegmentedControlButtons.figma.js +27 -0
  72. package/dist/components/segmented-control-buttons/SegmentedControlButtons.stories.svelte +29 -0
  73. package/dist/components/segmented-control-buttons/SegmentedControlButtons.svelte +8 -6
  74. package/dist/components/segmented-control-buttons/SegmentedControlButtons.svelte.d.ts +3 -1
  75. package/dist/components/select/Select.figma.d.ts +7 -0
  76. package/dist/components/select/Select.figma.js +17 -0
  77. package/dist/components/skeleton-loader/SkeletonLoader.figma.d.ts +7 -0
  78. package/dist/components/skeleton-loader/SkeletonLoader.figma.js +16 -0
  79. package/dist/components/slider/Slider.figma.d.ts +7 -0
  80. package/dist/components/slider/Slider.figma.js +12 -0
  81. package/dist/components/spinner/Spinner.figma.d.ts +7 -0
  82. package/dist/components/spinner/Spinner.figma.js +11 -0
  83. package/dist/components/stat-card/StatCard.figma.d.ts +7 -0
  84. package/dist/components/stat-card/StatCard.figma.js +18 -0
  85. package/dist/components/status-badge/StatusBadge.figma.d.ts +7 -0
  86. package/dist/components/status-badge/StatusBadge.figma.js +29 -0
  87. package/dist/components/stepper/Stepper.figma.d.ts +7 -0
  88. package/dist/components/stepper/Stepper.figma.js +15 -0
  89. package/dist/components/table/Table.figma.d.ts +7 -0
  90. package/dist/components/table/Table.figma.js +26 -0
  91. package/dist/components/tabs/Tabs.figma.d.ts +7 -0
  92. package/dist/components/tabs/Tabs.figma.js +24 -0
  93. package/dist/components/tabs/Tabs.stories.svelte +23 -0
  94. package/dist/components/tabs/components/Tabs.svelte +6 -1
  95. package/dist/components/tabs/components/Tabs.svelte.d.ts +2 -0
  96. package/dist/components/tag/Tag.figma.d.ts +7 -0
  97. package/dist/components/tag/Tag.figma.js +33 -0
  98. package/dist/components/tag/Tag.svelte +0 -1
  99. package/dist/components/textarea/Textarea.figma.d.ts +7 -0
  100. package/dist/components/textarea/Textarea.figma.js +17 -0
  101. package/dist/components/toast/Toast.figma.d.ts +7 -0
  102. package/dist/components/toast/Toast.figma.js +17 -0
  103. package/dist/components/toggle/Toggle.figma.d.ts +7 -0
  104. package/dist/components/toggle/Toggle.figma.js +23 -0
  105. package/dist/components/toggle/Toggle.stories.svelte +56 -4
  106. package/dist/components/toggle/Toggle.stories.svelte.d.ts +6 -14
  107. package/dist/components/toggle/Toggle.svelte +56 -58
  108. package/dist/components/toggle/Toggle.svelte.d.ts +2 -0
  109. package/dist/components/toggle-icon-button/ToggleIconButton.figma.d.ts +7 -0
  110. package/dist/components/toggle-icon-button/ToggleIconButton.figma.js +31 -0
  111. package/dist/components/tooltip/Tooltip.figma.d.ts +7 -0
  112. package/dist/components/tooltip/Tooltip.figma.js +22 -0
  113. package/package.json +3 -1
@@ -1,15 +1,67 @@
1
- <script module>
1
+ <script module lang="ts">
2
2
  import { defineMeta } from '@storybook/addon-svelte-csf';
3
3
  import Toggle from './Toggle.svelte';
4
4
 
5
- // More on how to set up stories at: https://storybook.js.org/docs/writing-stories
6
5
  const { Story } = defineMeta({
7
6
  title: 'Components/Toggle',
8
7
  component: Toggle,
9
8
  tags: ['autodocs'],
9
+ parameters: {
10
+ layout: 'fullscreen',
11
+ },
10
12
  });
13
+
14
+ const sizes = ['sm', 'md', 'lg'] as const;
11
15
  </script>
12
16
 
13
- <Story name="Base" asChild>
14
- <Toggle id="toggle-1" />
17
+ <Story name="Overview" asChild>
18
+ <div class="flex flex-col gap-8 text-sm">
19
+ <div class="overflow-x-auto">
20
+ <table class="w-full min-w-[480px] table-fixed border-collapse text-center">
21
+ <colgroup>
22
+ <col class="w-24" />
23
+ <col />
24
+ <col />
25
+ <col />
26
+ <col />
27
+ </colgroup>
28
+ <thead>
29
+ <tr class="border-b border-static text-left text-label font-medium text-secondary">
30
+ <th class="bg-base p-4 text-left">Size</th>
31
+ <th class="p-4 text-center">Off</th>
32
+ <th class="p-4 text-center">On</th>
33
+ <th class="p-4 text-center">Disabled off</th>
34
+ <th class="p-4 text-center">Disabled on</th>
35
+ </tr>
36
+ </thead>
37
+ <tbody>
38
+ {#each sizes as size}
39
+ <tr class="border-b border-static last:border-none">
40
+ <td class="bg-base p-4 text-left font-mono text-label text-secondary">{size}</td>
41
+ <td class="p-4">
42
+ <div class="flex w-full justify-center">
43
+ <Toggle id={`toggle-${size}-off`} {size} value={false} />
44
+ </div>
45
+ </td>
46
+ <td class="p-4">
47
+ <div class="flex w-full justify-center">
48
+ <Toggle id={`toggle-${size}-on`} {size} value={true} />
49
+ </div>
50
+ </td>
51
+ <td class="p-4">
52
+ <div class="flex w-full justify-center">
53
+ <Toggle id={`toggle-${size}-disabled-off`} {size} value={false} disabled />
54
+ </div>
55
+ </td>
56
+ <td class="p-4">
57
+ <div class="flex w-full justify-center">
58
+ <Toggle id={`toggle-${size}-disabled-on`} {size} value={true} disabled />
59
+ </div>
60
+ </td>
61
+ </tr>
62
+ {/each}
63
+ </tbody>
64
+ </table>
65
+ </div>
66
+ </div>
15
67
  </Story>
@@ -1,19 +1,6 @@
1
- export default Toggle;
2
- type Toggle = SvelteComponent<{
3
- [x: string]: never;
4
- }, {
5
- [evt: string]: CustomEvent<any>;
6
- }, {}> & {
7
- $$bindings?: string | undefined;
8
- };
9
- declare const Toggle: $$__sveltets_2_IsomorphicComponent<{
10
- [x: string]: never;
11
- }, {
12
- [evt: string]: CustomEvent<any>;
13
- }, {}, {}, string>;
14
1
  import Toggle from './Toggle.svelte';
15
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> {
16
- new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
3
+ new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
17
4
  $$bindings?: Bindings;
18
5
  } & Exports;
19
6
  (internal: unknown, props: {
@@ -25,3 +12,8 @@ interface $$__sveltets_2_IsomorphicComponent<Props extends Record<string, any> =
25
12
  };
26
13
  z_$$bindings?: Bindings;
27
14
  }
15
+ declare const Toggle: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
16
+ [evt: string]: CustomEvent<any>;
17
+ }, {}, {}, string>;
18
+ type Toggle = InstanceType<typeof Toggle>;
19
+ export default Toggle;
@@ -1,69 +1,67 @@
1
1
  <script lang="ts">
2
+ import { twMerge } from 'tailwind-merge';
3
+
2
4
  interface Props {
3
5
  value?: boolean;
4
6
  onclick?: (event?: MouseEvent) => void;
5
7
  id: string;
6
8
  'data-testid'?: string;
9
+ size?: 'sm' | 'md' | 'lg';
10
+ disabled?: boolean;
7
11
  }
8
12
 
9
- let { value = $bindable(false), onclick, id, 'data-testid': testId }: Props = $props();
10
- </script>
11
-
12
- <label class="switch">
13
- <input type="checkbox" bind:checked={value} {onclick} {id} data-testid={testId} />
14
- <span class="slider round"></span>
15
- </label>
16
-
17
- <style>
18
- @reference "../../app.css";
19
- /* The switch - the box around the slider */
20
- .switch {
21
- @apply relative inline-block h-5 w-9;
22
- }
23
-
24
- /* Hide default HTML checkbox */
25
- .switch input {
26
- @apply h-0 w-0 opacity-0;
27
- }
13
+ let { value = $bindable(false), onclick, id, 'data-testid': testId, size = 'md', disabled = false }: Props = $props();
28
14
 
29
- /* The slider */
30
- .slider {
31
- position: absolute;
32
- cursor: pointer;
33
- top: 0;
34
- left: 0;
35
- right: 0;
36
- bottom: 0;
37
- -webkit-transition: 0.1s;
38
- transition: 0.1s;
39
- @apply bg-neutral-darker;
40
- }
15
+ const sizeStyles = {
16
+ sm: {
17
+ track: 'h-4 w-7',
18
+ thumb: 'h-3 w-3',
19
+ thumbChecked: 'peer-checked:translate-x-[12px]',
20
+ },
21
+ md: {
22
+ track: 'h-5 w-8.5',
23
+ thumb: 'h-4 w-4',
24
+ thumbChecked: 'peer-checked:translate-x-[14px]',
25
+ },
26
+ lg: {
27
+ track: 'h-6 w-10',
28
+ thumb: 'h-5 w-5',
29
+ thumbChecked: 'peer-checked:translate-x-[16px]',
30
+ },
31
+ } as const;
41
32
 
42
- .slider:before {
43
- content: '';
44
- left: 2px;
45
- bottom: 2px;
46
- -webkit-transition: 0.1s;
47
- transition: 0.1s;
48
- @apply absolute h-4 w-4 bg-surface;
49
- }
50
-
51
- input:checked + .slider {
52
- @apply bg-accent-inverse;
53
- }
54
-
55
- input:checked + .slider:before {
56
- -webkit-transform: translateX(16px);
57
- -ms-transform: translateX(16px);
58
- transform: translateX(16px);
59
- }
60
-
61
- /* Rounded sliders */
62
- .slider.round {
63
- @apply rounded-full;
64
- }
33
+ const sz = $derived(sizeStyles[size]);
34
+ </script>
65
35
 
66
- .slider.round:before {
67
- @apply rounded-full;
68
- }
69
- </style>
36
+ <label
37
+ class={twMerge(
38
+ 'relative inline-block',
39
+ sz.track,
40
+ disabled ? 'cursor-not-allowed' : 'cursor-pointer',
41
+ )}
42
+ >
43
+ <input type="checkbox" class="peer sr-only" bind:checked={value} {onclick} {id} data-testid={testId} {disabled} />
44
+ <span
45
+ aria-hidden="true"
46
+ class={twMerge(
47
+ 'pointer-events-none absolute inset-0 rounded-full border transition-colors duration-100 ease-linear',
48
+ disabled &&
49
+ !value &&
50
+ 'border-interactive bg-transparent',
51
+ disabled &&
52
+ value &&
53
+ 'border-transparent bg-neutral-darker',
54
+ !disabled &&
55
+ 'border-static bg-neutral-darker peer-checked:border-interactive peer-checked:bg-accent-inverse',
56
+ )}
57
+ ></span>
58
+ <span
59
+ aria-hidden="true"
60
+ class={twMerge(
61
+ 'pointer-events-none absolute bottom-0.5 left-0.5 rounded-full bg-surface transition-transform duration-100 ease-linear',
62
+ disabled ? 'bg-neutral-darker shadow-none' : 'bg-surface shadow-button',
63
+ sz.thumb,
64
+ sz.thumbChecked,
65
+ )}
66
+ ></span>
67
+ </label>
@@ -3,6 +3,8 @@ interface Props {
3
3
  onclick?: (event?: MouseEvent) => void;
4
4
  id: string;
5
5
  'data-testid'?: string;
6
+ size?: 'sm' | 'md' | 'lg';
7
+ disabled?: boolean;
6
8
  }
7
9
  declare const Toggle: import("svelte").Component<Props, {}, "value">;
8
10
  type Toggle = ReturnType<typeof Toggle>;
@@ -0,0 +1,7 @@
1
+ import figma from 'figma';
2
+ declare const _default: {
3
+ example: figma.TemplateStringResult;
4
+ imports: string[];
5
+ id: string;
6
+ };
7
+ export default _default;
@@ -0,0 +1,31 @@
1
+ // url=https://www.figma.com/design/WkxhG4H2Ybc7STFi1VJIau/%F0%9F%92%A0-Reshape-Design-System--V1?node-id=6564-9274
2
+ // source=src/lib/components/toggle-icon-button/ToggleIconButton.svelte
3
+ // component=ToggleIconButton
4
+ import figma from 'figma';
5
+ const instance = figma.selectedInstance;
6
+ const variant = instance.getEnum('variant', {
7
+ 'primary-inverse': 'primary-inverse',
8
+ 'secondary': 'secondary',
9
+ });
10
+ const isActive = instance.getEnum('isActive', {
11
+ 'true': true,
12
+ 'false': false,
13
+ });
14
+ const disabled = instance.getBoolean('disabled');
15
+ const rounded = instance.getBoolean('rounded');
16
+ const loading = instance.getBoolean('loading');
17
+ export default {
18
+ example: figma.code `
19
+ <ToggleIconButton
20
+ variant="${variant}"
21
+ isActive={${isActive}}
22
+ ${disabled ? 'disabled' : ''}
23
+ ${rounded ? 'rounded' : ''}
24
+ ${loading ? 'loading' : ''}
25
+ >
26
+ <Icon icon={Plus} />
27
+ </ToggleIconButton>
28
+ `,
29
+ imports: ["import ToggleIconButton from './ToggleIconButton.svelte'"],
30
+ id: 'toggle-icon-button',
31
+ };
@@ -0,0 +1,7 @@
1
+ import figma from 'figma';
2
+ declare const _default: {
3
+ example: figma.TemplateStringResult;
4
+ imports: string[];
5
+ id: string;
6
+ };
7
+ export default _default;
@@ -0,0 +1,22 @@
1
+ // url=https://www.figma.com/design/WkxhG4H2Ybc7STFi1VJIau/%F0%9F%92%A0-Reshape-Design-System--V1?node-id=706-14439
2
+ // source=src/lib/components/tooltip/Tooltip.svelte
3
+ // component=Tooltip
4
+ import figma from 'figma';
5
+ const instance = figma.selectedInstance;
6
+ const placement = instance.getEnum('placement', {
7
+ 'top': 'top',
8
+ 'bottom': 'bottom',
9
+ 'left': 'left',
10
+ 'right': 'right',
11
+ });
12
+ const contentText = instance.getString('Content');
13
+ export default {
14
+ example: figma.code `
15
+ <Tooltip placement="${placement}">
16
+ {#snippet trigger()}<button>Hover me</button>{/snippet}
17
+ {#snippet content()}${contentText || 'Tooltip text'}{/snippet}
18
+ </Tooltip>
19
+ `,
20
+ imports: ["import Tooltip from './Tooltip.svelte'"],
21
+ id: 'tooltip',
22
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reshape-biotech/design-system",
3
- "version": "2.7.52",
3
+ "version": "2.7.53",
4
4
  "scripts": {
5
5
  "dev": "vite dev",
6
6
  "build": "vite build",
@@ -390,9 +390,11 @@
390
390
  "devDependencies": {
391
391
  "@chromatic-com/storybook": "^5.0.1",
392
392
  "@eslint/compat": "^1.2.3",
393
+ "@figma/code-connect": "^1.4.3",
393
394
  "@storybook/addon-a11y": "^10.2.14",
394
395
  "@storybook/addon-docs": "^10.2.0",
395
396
  "@storybook/addon-links": "^10.2.0",
397
+ "@storybook/addon-mcp": "^0.6.0",
396
398
  "@storybook/addon-svelte-csf": "^5.0.11",
397
399
  "@storybook/addon-vitest": "^10.2.13",
398
400
  "@storybook/svelte": "^10.2.0",