@reshape-biotech/design-system 0.0.22 → 0.0.24

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 (138) hide show
  1. package/README.md +30 -38
  2. package/dist/components/banner/Banner.stories.svelte +129 -0
  3. package/dist/components/banner/Banner.stories.svelte.d.ts +19 -0
  4. package/dist/components/banner/Banner.svelte +59 -0
  5. package/dist/components/banner/Banner.svelte.d.ts +11 -0
  6. package/dist/components/button/Button.stories.svelte +37 -0
  7. package/dist/components/button/Button.stories.svelte.d.ts +19 -0
  8. package/dist/components/button/Button.svelte +85 -0
  9. package/dist/components/button/Button.svelte.d.ts +17 -0
  10. package/dist/components/datepicker/DatePicker.svelte +283 -0
  11. package/dist/components/datepicker/DatePicker.svelte.d.ts +8 -0
  12. package/dist/components/divider/Divider.stories.svelte +14 -0
  13. package/dist/components/divider/Divider.stories.svelte.d.ts +27 -0
  14. package/dist/components/divider/Divider.svelte +9 -0
  15. package/dist/components/divider/Divider.svelte.d.ts +6 -0
  16. package/dist/components/drawer/Drawer.stories.svelte +99 -0
  17. package/dist/components/drawer/Drawer.stories.svelte.d.ts +27 -0
  18. package/dist/components/drawer/Drawer.svelte +45 -0
  19. package/dist/components/drawer/Drawer.svelte.d.ts +12 -0
  20. package/dist/components/drawer/DrawerLabel.svelte +13 -0
  21. package/dist/components/drawer/DrawerLabel.svelte.d.ts +9 -0
  22. package/dist/components/dropdown/Dropdown.stories.svelte +214 -0
  23. package/dist/components/dropdown/Dropdown.stories.svelte.d.ts +27 -0
  24. package/dist/components/dropdown/Dropdown.svelte +69 -0
  25. package/dist/components/dropdown/Dropdown.svelte.d.ts +14 -0
  26. package/dist/components/dropdown/components/DropdownContent.svelte +29 -0
  27. package/dist/components/dropdown/components/DropdownContent.svelte.d.ts +10 -0
  28. package/dist/components/dropdown/components/DropdownMenu.svelte +23 -0
  29. package/dist/components/dropdown/components/DropdownMenu.svelte.d.ts +8 -0
  30. package/dist/components/dropdown/components/DropdownTrigger.svelte +44 -0
  31. package/dist/components/dropdown/components/DropdownTrigger.svelte.d.ts +12 -0
  32. package/dist/components/icon-button/IconButton.stories.svelte +52 -0
  33. package/dist/components/icon-button/IconButton.stories.svelte.d.ts +19 -0
  34. package/dist/components/icon-button/IconButton.svelte +71 -0
  35. package/dist/components/icon-button/IconButton.svelte.d.ts +14 -0
  36. package/dist/components/image/Image.svelte +56 -0
  37. package/dist/components/image/Image.svelte.d.ts +7 -0
  38. package/dist/components/input/Input.stories.svelte +81 -0
  39. package/dist/components/input/Input.stories.svelte.d.ts +27 -0
  40. package/dist/components/input/Input.svelte +131 -0
  41. package/dist/components/input/Input.svelte.d.ts +20 -0
  42. package/dist/components/list/List.stories.svelte +97 -0
  43. package/dist/components/list/List.stories.svelte.d.ts +19 -0
  44. package/dist/components/list/List.svelte +75 -0
  45. package/dist/components/list/List.svelte.d.ts +24 -0
  46. package/dist/components/markdown/Markdown.stories.svelte +41 -0
  47. package/dist/components/markdown/Markdown.stories.svelte.d.ts +27 -0
  48. package/dist/components/markdown/Markdown.svelte +12 -0
  49. package/dist/components/markdown/Markdown.svelte.d.ts +6 -0
  50. package/dist/components/modal/Modal.stories.svelte +41 -0
  51. package/dist/components/modal/Modal.stories.svelte.d.ts +19 -0
  52. package/dist/components/modal/Modal.svelte +56 -0
  53. package/dist/components/modal/Modal.svelte.d.ts +16 -0
  54. package/dist/components/notification-popup/NotificationPopup.stories.svelte +27 -0
  55. package/dist/components/notification-popup/NotificationPopup.stories.svelte.d.ts +27 -0
  56. package/dist/components/notification-popup/NotificationPopup.svelte +31 -0
  57. package/dist/components/notification-popup/NotificationPopup.svelte.d.ts +11 -0
  58. package/dist/components/pill/Pill.svelte +39 -0
  59. package/dist/components/pill/Pill.svelte.d.ts +10 -0
  60. package/dist/components/progress-circle/ProgressCircle.svelte +79 -0
  61. package/dist/components/progress-circle/ProgressCircle.svelte.d.ts +7 -0
  62. package/dist/components/segmented-control-buttons/ControlButton.svelte +59 -0
  63. package/dist/components/segmented-control-buttons/ControlButton.svelte.d.ts +14 -0
  64. package/dist/components/segmented-control-buttons/SegmentedControlButtons.stories.svelte +45 -0
  65. package/dist/components/segmented-control-buttons/SegmentedControlButtons.stories.svelte.d.ts +19 -0
  66. package/dist/components/segmented-control-buttons/SegmentedControlButtons.svelte +21 -0
  67. package/dist/components/segmented-control-buttons/SegmentedControlButtons.svelte.d.ts +10 -0
  68. package/dist/components/select/Select.stories.svelte +113 -0
  69. package/dist/components/select/Select.stories.svelte.d.ts +19 -0
  70. package/dist/components/select/Select.svelte +137 -0
  71. package/dist/components/select/Select.svelte.d.ts +60 -0
  72. package/dist/components/select/index.d.ts +6 -0
  73. package/dist/components/select/index.js +1 -0
  74. package/dist/components/skeleton-loader/HorizontalCardSkeleton.svelte +31 -0
  75. package/dist/components/skeleton-loader/HorizontalCardSkeleton.svelte.d.ts +5 -0
  76. package/dist/components/skeleton-loader/ProjectCardSkeleton.svelte +12 -0
  77. package/dist/components/skeleton-loader/ProjectCardSkeleton.svelte.d.ts +18 -0
  78. package/dist/components/skeleton-loader/SkeletonLoader.stories.svelte +71 -0
  79. package/dist/components/skeleton-loader/SkeletonLoader.stories.svelte.d.ts +27 -0
  80. package/dist/components/skeleton-loader/SkeletonLoader.svelte +17 -0
  81. package/dist/components/skeleton-loader/SkeletonLoader.svelte.d.ts +9 -0
  82. package/dist/components/skeleton-loader/StatcardSkeleton.svelte +17 -0
  83. package/dist/components/skeleton-loader/StatcardSkeleton.svelte.d.ts +18 -0
  84. package/dist/components/skeleton-loader/components/Skeleton.svelte +14 -0
  85. package/dist/components/skeleton-loader/components/Skeleton.svelte.d.ts +8 -0
  86. package/dist/components/skeleton-loader/components/SkeletonImage.svelte +14 -0
  87. package/dist/components/skeleton-loader/components/SkeletonImage.svelte.d.ts +26 -0
  88. package/dist/components/skeleton-loader/index.d.ts +5 -0
  89. package/dist/components/skeleton-loader/index.js +5 -0
  90. package/dist/components/slider/Slider.stories.svelte +37 -0
  91. package/dist/components/slider/Slider.stories.svelte.d.ts +27 -0
  92. package/dist/components/slider/Slider.svelte +117 -0
  93. package/dist/components/slider/Slider.svelte.d.ts +29 -0
  94. package/dist/components/spinner/Spinner.svelte +27 -0
  95. package/dist/components/spinner/Spinner.svelte.d.ts +6 -0
  96. package/dist/components/stat-card/StatCard.stories.svelte +31 -0
  97. package/dist/components/stat-card/StatCard.stories.svelte.d.ts +27 -0
  98. package/dist/components/stat-card/StatCard.svelte +46 -0
  99. package/dist/components/stat-card/StatCard.svelte.d.ts +9 -0
  100. package/dist/components/status-badge/StatusBadge.stories.svelte +401 -0
  101. package/dist/components/status-badge/StatusBadge.stories.svelte.d.ts +19 -0
  102. package/dist/components/status-badge/StatusBadge.svelte +147 -0
  103. package/dist/components/status-badge/StatusBadge.svelte.d.ts +12 -0
  104. package/dist/components/table/Table.stories.svelte +86 -0
  105. package/dist/components/table/Table.stories.svelte.d.ts +24 -0
  106. package/dist/components/table/Table.svelte +33 -0
  107. package/dist/components/table/Table.svelte.d.ts +8 -0
  108. package/dist/components/table/components/Td.svelte +14 -0
  109. package/dist/components/table/components/Td.svelte.d.ts +8 -0
  110. package/dist/components/table/components/Th.svelte +15 -0
  111. package/dist/components/table/components/Th.svelte.d.ts +9 -0
  112. package/dist/components/table/components/Tr.svelte +31 -0
  113. package/dist/components/table/components/Tr.svelte.d.ts +8 -0
  114. package/dist/components/tabs/Tabs.stories.svelte +30 -0
  115. package/dist/components/tabs/Tabs.stories.svelte.d.ts +27 -0
  116. package/dist/components/tabs/Tabs.svelte +15 -0
  117. package/dist/components/tabs/Tabs.svelte.d.ts +8 -0
  118. package/dist/components/tabs/components/Content.svelte +15 -0
  119. package/dist/components/tabs/components/Content.svelte.d.ts +9 -0
  120. package/dist/components/tabs/components/Tab.svelte +21 -0
  121. package/dist/components/tabs/components/Tab.svelte.d.ts +10 -0
  122. package/dist/components/tabs/components/Tabs.svelte +14 -0
  123. package/dist/components/tabs/components/Tabs.svelte.d.ts +8 -0
  124. package/dist/components/tag/Tag.stories.svelte +50 -0
  125. package/dist/components/tag/Tag.stories.svelte.d.ts +19 -0
  126. package/dist/components/tag/Tag.svelte +104 -0
  127. package/dist/components/tag/Tag.svelte.d.ts +11 -0
  128. package/dist/components/toast/Toast.svelte +66 -0
  129. package/dist/components/toast/Toast.svelte.d.ts +5 -0
  130. package/dist/index.d.ts +1 -1
  131. package/dist/index.js +1 -1
  132. package/dist/tailwind-safelist.d.ts +14 -0
  133. package/dist/tailwind-safelist.js +148 -0
  134. package/dist/tailwind.preset.d.ts +1 -0
  135. package/dist/tokens.d.ts +314 -36
  136. package/dist/tokens.js +235 -248
  137. package/package.json +5 -6
  138. package/dist/tailwind-safelist.txt +0 -142
@@ -0,0 +1,16 @@
1
+ import type { Snippet } from 'svelte';
2
+ type ModalProps = {
3
+ Trigger?: Snippet<[{
4
+ openModal: () => void;
5
+ closeModal: () => void;
6
+ }]>;
7
+ Content: Snippet;
8
+ defaultOpen?: boolean;
9
+ id?: string;
10
+ withClose?: boolean;
11
+ closeOnClickOutside?: boolean;
12
+ class?: string;
13
+ };
14
+ declare const Modal: import("svelte").Component<ModalProps, {}, "">;
15
+ type Modal = ReturnType<typeof Modal>;
16
+ export default Modal;
@@ -0,0 +1,27 @@
1
+ <script module>
2
+ import NotificationPopup from './NotificationPopup.svelte';
3
+ import { Sparkle } from 'phosphor-svelte';
4
+
5
+ import { defineMeta } from '@storybook/addon-svelte-csf';
6
+
7
+ const { Story } = defineMeta({
8
+ component: NotificationPopup,
9
+ title: 'Design System/NotificationPopup',
10
+ tags: ['autodocs']
11
+ });
12
+
13
+ let visible = true;
14
+
15
+ function handleClick() {
16
+ visible = !visible;
17
+ }
18
+ </script>
19
+
20
+ <Story name="Primary">
21
+ <NotificationPopup onClose={handleClick} title="See what's new" {visible}>
22
+ <a href="_blank" color="transparent" class="flex items-center gap-1 font-sans">
23
+ <Sparkle />
24
+ <p>Product updates</p>
25
+ </a>
26
+ </NotificationPopup>
27
+ </Story>
@@ -0,0 +1,27 @@
1
+ export default NotificationPopup;
2
+ type NotificationPopup = SvelteComponent<{
3
+ [x: string]: never;
4
+ }, {
5
+ [evt: string]: CustomEvent<any>;
6
+ }, {}> & {
7
+ $$bindings?: string | undefined;
8
+ };
9
+ declare const NotificationPopup: $$__sveltets_2_IsomorphicComponent<{
10
+ [x: string]: never;
11
+ }, {
12
+ [evt: string]: CustomEvent<any>;
13
+ }, {}, {}, string>;
14
+ import NotificationPopup from './NotificationPopup.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,31 @@
1
+ <script lang="ts">
2
+ import { X } from 'phosphor-svelte';
3
+ import IconButton from 'design-system/components/icon-button/IconButton.svelte';
4
+ import { fade, fly } from 'svelte/transition';
5
+ import type { Snippet } from 'svelte';
6
+
7
+ interface Props {
8
+ onClose: () => void;
9
+ title: string;
10
+ visible: boolean;
11
+ id?: string | undefined;
12
+ children?: Snippet;
13
+ }
14
+
15
+ let { onClose, title, visible, id = undefined, children }: Props = $props();
16
+ </script>
17
+
18
+ {#if visible}
19
+ <div
20
+ {id}
21
+ class="flex w-[184px] justify-between rounded-lg bg-surface p-3 shadow-2xl"
22
+ in:fly={{ y: 100, duration: 1000 }}
23
+ out:fade
24
+ >
25
+ <div class="flex flex-col gap-2">
26
+ <h6 class="flex h-6 items-center">{title}</h6>
27
+ {@render children?.()}
28
+ </div>
29
+ <IconButton size="xs" onclick={onClose}><X /></IconButton>
30
+ </div>
31
+ {/if}
@@ -0,0 +1,11 @@
1
+ import type { Snippet } from 'svelte';
2
+ interface Props {
3
+ onClose: () => void;
4
+ title: string;
5
+ visible: boolean;
6
+ id?: string | undefined;
7
+ children?: Snippet;
8
+ }
9
+ declare const NotificationPopup: import("svelte").Component<Props, {}, "">;
10
+ type NotificationPopup = ReturnType<typeof NotificationPopup>;
11
+ export default NotificationPopup;
@@ -0,0 +1,39 @@
1
+ <script lang="ts">
2
+ import { X } from 'phosphor-svelte';
3
+
4
+ interface Props {
5
+ class?: string;
6
+ text: string;
7
+ type?: 'button' | 'submit';
8
+ testID?: string;
9
+ onclick?: () => void;
10
+ }
11
+
12
+ let { class: className = '', text, type = 'button', testID = '', onclick }: Props = $props();
13
+ </script>
14
+
15
+ <button class="{className} " {onclick} {type} data-testid={testID}>
16
+ {text}
17
+ <X class="opacity-50" weight="bold" />
18
+ </button>
19
+
20
+ <style>
21
+ button {
22
+ gap: 0.5rem;
23
+ border-radius: 9999px;
24
+ background-color: #5750ee1A;
25
+ padding-left: 1rem;
26
+ padding-right: 1rem;
27
+ padding-top: 0px;
28
+ padding-bottom: 0px;
29
+ font-size: 0.875rem;
30
+ line-height: 1.25rem;
31
+ --tw-text-opacity: 1;
32
+ color: rgb(71 65 193 / var(--tw-text-opacity, 1));
33
+ display: flex;
34
+ white-space: nowrap;
35
+ height: 32px;
36
+
37
+ align-items: center
38
+ }
39
+ </style>
@@ -0,0 +1,10 @@
1
+ interface Props {
2
+ class?: string;
3
+ text: string;
4
+ type?: 'button' | 'submit';
5
+ testID?: string;
6
+ onclick?: () => void;
7
+ }
8
+ declare const Pill: import("svelte").Component<Props, {}, "">;
9
+ type Pill = ReturnType<typeof Pill>;
10
+ export default Pill;
@@ -0,0 +1,79 @@
1
+ <script lang="ts">
2
+ // Make sure progress is between 0 and 100 and round down to the nearest 10 if over 90
3
+ $effect(() => {
4
+ progress =
5
+ progress > 90
6
+ ? Math.floor(Math.min(100, progress) / 10) * 10
7
+ : Math.min(100, Math.max(0, progress));
8
+ });
9
+
10
+ type Props = {
11
+ progress: number;
12
+ size?: 'md' | 'sm';
13
+ };
14
+
15
+ let { progress = $bindable(), size = 'md' }: Props = $props();
16
+
17
+ const viewBox = size === 'md' ? '0 0 20 20' : '0 0 16 16';
18
+ const center = size === 'md' ? 10 : 8;
19
+ const radius = size === 'md' ? 7 : 6;
20
+
21
+ // Create the circle path
22
+ const path = `M ${center} ${center - radius}
23
+ A ${radius} ${radius} 0 1 1 ${center - 0.01} ${center - radius}`;
24
+ </script>
25
+
26
+ <div class="progress-wrapper" class:sm={size === 'sm'} class:md={size === 'md'}>
27
+ <svg xmlns="http://www.w3.org/2000/svg" {viewBox} fill="none">
28
+ <!-- Background track -->
29
+ <path d={path} stroke="currentColor" stroke-opacity="0.25" stroke-width="2" fill="none" />
30
+ <!-- Progress indicator -->
31
+ <path
32
+ d={path}
33
+ stroke="currentColor"
34
+ stroke-width="2"
35
+ stroke-linecap="round"
36
+ fill="none"
37
+ style="stroke-dasharray: var(--pathLength);
38
+ stroke-dashoffset: calc(var(--pathLength) * (1 - {progress / 100}));"
39
+ pathLength="1"
40
+ />
41
+ </svg>
42
+ </div>
43
+
44
+ <style>
45
+ .progress-wrapper {
46
+
47
+ position: relative;
48
+
49
+ display: inline-block;
50
+
51
+ aspect-ratio: 1;
52
+ }
53
+ .progress-wrapper.md {
54
+
55
+ width: 1.25rem;
56
+
57
+ height: 1.25rem;
58
+ }
59
+ .progress-wrapper.sm {
60
+
61
+ width: 1rem;
62
+
63
+ height: 1rem;
64
+ }
65
+
66
+ svg {
67
+
68
+ position: absolute;
69
+
70
+ inset: 0px;
71
+ width: 100%;
72
+ height: 100%;
73
+ display: block;
74
+ }
75
+
76
+ path {
77
+ --pathLength: 1;
78
+ }
79
+ </style>
@@ -0,0 +1,7 @@
1
+ type Props = {
2
+ progress: number;
3
+ size?: 'md' | 'sm';
4
+ };
5
+ declare const ProgressCircle: import("svelte").Component<Props, {}, "progress">;
6
+ type ProgressCircle = ReturnType<typeof ProgressCircle>;
7
+ export default ProgressCircle;
@@ -0,0 +1,59 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte';
3
+
4
+ type Color = 'primary' | 'secondary';
5
+
6
+ interface Props {
7
+ class?: string;
8
+ color?: Color;
9
+ disabled?: boolean;
10
+ active?: boolean;
11
+ dataTestId?: string;
12
+ onclick?: () => void;
13
+ children?: Snippet;
14
+ }
15
+
16
+ let {
17
+ class: className = '',
18
+ color = 'primary',
19
+ disabled = false,
20
+ active = false,
21
+ dataTestId,
22
+ onclick,
23
+ children
24
+ }: Props = $props();
25
+ const colors: Record<Color, string> = {
26
+ primary:
27
+ 'bg-transparent text-primary hover:bg-neutral disabled:bg-neutral disabled:text-tertiary',
28
+ secondary:
29
+ 'bg-transparent text-primary hover:bg-neutral disabled:bg-neutral disabled:text-tertiary'
30
+ };
31
+ </script>
32
+
33
+ <div class="join-item flex h-full flex-1">
34
+ <button
35
+ {onclick}
36
+ class={`control-button flex flex-1 items-center justify-center gap-2 rounded-md text-sm leading-4 ${colors[color]} ${className} ${color}`}
37
+ class:active
38
+ type="button"
39
+ {disabled}
40
+ data-testid={dataTestId}
41
+ >
42
+ {@render children?.()}
43
+ </button>
44
+ </div>
45
+
46
+ <style>
47
+ .primary.active {
48
+ --tw-bg-opacity: 1;
49
+ background-color: rgb(87 80 238 / var(--tw-bg-opacity, 1));
50
+ --tw-text-opacity: 1;
51
+ color: rgb(255 255 255 / var(--tw-text-opacity, 1))
52
+ }
53
+ .secondary.active {
54
+ --tw-bg-opacity: 1;
55
+ background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
56
+ --tw-text-opacity: 1;
57
+ color: rgb(18 25 42 / var(--tw-text-opacity, 1))
58
+ }
59
+ </style>
@@ -0,0 +1,14 @@
1
+ import type { Snippet } from 'svelte';
2
+ type Color = 'primary' | 'secondary';
3
+ interface Props {
4
+ class?: string;
5
+ color?: Color;
6
+ disabled?: boolean;
7
+ active?: boolean;
8
+ dataTestId?: string;
9
+ onclick?: () => void;
10
+ children?: Snippet;
11
+ }
12
+ declare const ControlButton: import("svelte").Component<Props, {}, "">;
13
+ type ControlButton = ReturnType<typeof ControlButton>;
14
+ export default ControlButton;
@@ -0,0 +1,45 @@
1
+ <script module lang="ts">
2
+ import { Star } from 'phosphor-svelte';
3
+ import SegmentedControlButtons from './SegmentedControlButtons.svelte';
4
+ import { defineMeta } from '@storybook/addon-svelte-csf';
5
+
6
+ const { Story } = defineMeta({
7
+ component: SegmentedControlButtons,
8
+ title: 'Design System/SegmentedControlButtons',
9
+ tags: ['autodocs']
10
+ });
11
+ </script>
12
+
13
+ <Story name="Primary">
14
+ <SegmentedControlButtons class="w-[350px]">
15
+ {#snippet children(ControlButton)}
16
+ <ControlButton active><Star /> Low</ControlButton>
17
+ <ControlButton><Star /> Medium</ControlButton>
18
+ <ControlButton disabled><Star /> High</ControlButton>
19
+ {/snippet}
20
+ </SegmentedControlButtons>
21
+ </Story>
22
+ <Story name="Large">
23
+ <SegmentedControlButtons size="lg" class="w-[350px]">
24
+ {#snippet children(ControlButton)}
25
+ <ControlButton active><Star /> Low</ControlButton>
26
+ <ControlButton><Star /> Medium</ControlButton>
27
+ <ControlButton disabled><Star /> High</ControlButton>
28
+ {/snippet}
29
+ </SegmentedControlButtons>
30
+ </Story>
31
+ <Story name="Secondary">
32
+ <SegmentedControlButtons class="w-[350px]">
33
+ {#snippet children(ControlButton)}
34
+ <ControlButton active color="secondary">
35
+ <Star /> Low
36
+ </ControlButton>
37
+ <ControlButton color="secondary">
38
+ <Star /> Medium
39
+ </ControlButton>
40
+ <ControlButton color="secondary">
41
+ <Star /> High
42
+ </ControlButton>
43
+ {/snippet}
44
+ </SegmentedControlButtons>
45
+ </Story>
@@ -0,0 +1,19 @@
1
+ import SegmentedControlButtons from './SegmentedControlButtons.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 SegmentedControlButtons: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
16
+ [evt: string]: CustomEvent<any>;
17
+ }, {}, {}, string>;
18
+ type SegmentedControlButtons = InstanceType<typeof SegmentedControlButtons>;
19
+ export default SegmentedControlButtons;
@@ -0,0 +1,21 @@
1
+ <script lang="ts">
2
+ import type { Snippet } from 'svelte';
3
+ import ControlButton from './ControlButton.svelte';
4
+
5
+ interface Props {
6
+ class?: string;
7
+ size?: 'md' | 'lg';
8
+ children?: Snippet<[typeof ControlButton]>;
9
+ }
10
+
11
+ let { class: className = '', size = 'md', children }: Props = $props();
12
+
13
+ const sizes = {
14
+ md: 'h-10 ',
15
+ lg: 'h-16 [&>*>.control-button]:flex-col'
16
+ };
17
+ </script>
18
+
19
+ <div class={`join flex gap-1 rounded-lg bg-neutral p-1 ${sizes[size]} ${size} ${className}`}>
20
+ {@render children?.(ControlButton)}
21
+ </div>
@@ -0,0 +1,10 @@
1
+ import type { Snippet } from 'svelte';
2
+ import ControlButton from './ControlButton.svelte';
3
+ interface Props {
4
+ class?: string;
5
+ size?: 'md' | 'lg';
6
+ children?: Snippet<[typeof ControlButton]>;
7
+ }
8
+ declare const SegmentedControlButtons: import("svelte").Component<Props, {}, "">;
9
+ type SegmentedControlButtons = ReturnType<typeof SegmentedControlButtons>;
10
+ export default SegmentedControlButtons;
@@ -0,0 +1,113 @@
1
+ <script module lang="ts">
2
+ import Select from './Select.svelte';
3
+
4
+ import { defineMeta } from '@storybook/addon-svelte-csf';
5
+
6
+ const { Story } = defineMeta({
7
+ component: Select,
8
+ title: 'Design System/Select',
9
+ tags: ['autodocs']
10
+ });
11
+
12
+ const items = [
13
+ { value: '1', label: 'One', group: 'Group 1', description: 'Description 1' },
14
+ { value: '2', label: 'Two', group: 'Group 1', description: 'Description 2' },
15
+ { value: '3', label: 'Three', group: 'Group 2' },
16
+ { value: '4', label: 'Four', group: 'Group 2' }
17
+ ];
18
+ let value: any = $state();
19
+ let thisChanged = $state(false);
20
+
21
+ function handleInput(e: Event) {
22
+ thisChanged = true;
23
+ }
24
+ </script>
25
+
26
+ <Story name="Default">
27
+ <div class="py-12">
28
+ <Select listOpen {items} />
29
+ </div>
30
+ </Story>
31
+ <Story name="Grouped">
32
+ <div class="py-12">
33
+ <Select listOpen {items} withGroup />
34
+ </div>
35
+ </Story>
36
+
37
+ <Story name="DefaultValue">
38
+ <div class="py-12">
39
+ <Select listOpen {items} withGroup value={{ value: '1', label: 'One', group: 'Group 1' }} />
40
+ </div>
41
+ </Story>
42
+
43
+ <Story name="Disabled">
44
+ <div class="py-12">
45
+ <Select listOpen {items} disabled />
46
+ </div>
47
+ </Story>
48
+ <Story name="Searchable">
49
+ <div class="py-12">
50
+ <Select listOpen {items} searchable />
51
+ </div>
52
+ </Story>
53
+ <Story name="Open">
54
+ <div class="py-12">
55
+ <Select listOpen {items} />
56
+ </div>
57
+ </Story>
58
+ <Story name="Error">
59
+ <div class="py-12">
60
+ <Select listOpen {items} hasError />
61
+ </div>
62
+ </Story>
63
+ <Story name="Placeholder">
64
+ <div class="py-12">
65
+ <Select listOpen {items} placeholder="Select a value" />
66
+ </div>
67
+ </Story>
68
+ <Story name="Multiple">
69
+ <div class="py-12">
70
+ <Select listOpen {items} multiple bind:value />
71
+ </div>
72
+ </Story>
73
+
74
+ <Story name="Bind value input changed">
75
+ <div class="py-12">
76
+ <Select listOpen {items} bind:value on:input={handleInput} />
77
+ {#if thisChanged}
78
+ <p class="text-secondary">Wow you picked something from the dropdown 💪</p>{/if}
79
+ </div>
80
+ </Story>
81
+
82
+ <Story name="Custom Item">
83
+ <div class="py-12">
84
+ <Select listOpen {items} value={{ value: '1', label: 'One', group: 'Group 1' }}>
85
+ <!-- @migration-task: migrate this slot by hand, `custom-item` is an invalid identifier -->
86
+ <div
87
+ slot="custom-item"
88
+ class="flex h-14 w-full items-center overflow-hidden whitespace-nowrap"
89
+ let:item
90
+ >
91
+ <div class="flex flex-col">
92
+ <p class="text-sm">
93
+ {item.label}
94
+ </p>
95
+ <p class="max-w-20 text-xs text-secondary">
96
+ {item.description} very very long long loooooong long description
97
+ </p>
98
+ </div>
99
+ </div>
100
+ </Select>
101
+ </div>
102
+ </Story>
103
+
104
+ <Story name="Custom selection label">
105
+ <div class="py-12">
106
+ <Select {items} value={{ value: '1', label: 'One', group: 'Group 1' }}>
107
+ <!-- @migration-task: migrate this slot by hand, `custom-selection` is an invalid identifier -->
108
+ <div slot="custom-selection" let:selection>
109
+ <p>💩{selection.label} poopoo💩</p>
110
+ </div>
111
+ </Select>
112
+ </div>
113
+ </Story>
@@ -0,0 +1,19 @@
1
+ import Select from './Select.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 Select: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
16
+ [evt: string]: CustomEvent<any>;
17
+ }, {}, {}, string>;
18
+ type Select = InstanceType<typeof Select>;
19
+ export default Select;