@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.
- package/README.md +3 -1
- package/dist/app.css +97 -97
- package/dist/components/activity/Activity.stories.svelte +104 -104
- package/dist/components/activity/Activity.svelte +112 -112
- package/dist/components/avatar/Avatar.stories.svelte +23 -23
- package/dist/components/avatar/Avatar.svelte +54 -54
- package/dist/components/banner/Banner.stories.svelte +105 -105
- package/dist/components/banner/Banner.svelte +42 -42
- package/dist/components/button/Button.stories.svelte +61 -61
- package/dist/components/button/Button.svelte +95 -95
- package/dist/components/card/Card.stories.svelte +112 -112
- package/dist/components/card/Card.svelte +18 -18
- package/dist/components/checkbox/Checkbox.stories.svelte +8 -8
- package/dist/components/checkbox/Checkbox.svelte +17 -17
- package/dist/components/collapsible/Collapsible.stories.svelte +26 -26
- package/dist/components/collapsible/components/collapsible-content.svelte +20 -20
- package/dist/components/collapsible/components/collapsible-trigger.svelte +12 -12
- package/dist/components/combobox/Combobox.stories.svelte +412 -412
- package/dist/components/combobox/components/combobox-add.svelte +8 -8
- package/dist/components/combobox/components/combobox-content.svelte +39 -39
- package/dist/components/combobox/components/combobox-indicator.svelte +1 -1
- package/dist/components/datepicker/DatePicker.stories.svelte +196 -196
- package/dist/components/datepicker/DatePicker.svelte +173 -173
- package/dist/components/divider/Divider.stories.svelte +7 -7
- package/dist/components/divider/Divider.svelte +9 -9
- package/dist/components/drawer/Drawer.stories.svelte +51 -51
- package/dist/components/drawer/Drawer.svelte +33 -33
- package/dist/components/drawer/DrawerLabel.svelte +10 -10
- package/dist/components/dropdown/Dropdown.stories.svelte +210 -210
- package/dist/components/dropdown/Dropdown.svelte +57 -57
- package/dist/components/dropdown/components/DropdownContent.svelte +16 -16
- package/dist/components/dropdown/components/DropdownMenu.svelte +10 -10
- package/dist/components/dropdown/components/DropdownTrigger.svelte +37 -37
- package/dist/components/dropdown/components/OutlinedButton.svelte +9 -9
- package/dist/components/empty-content/EmptyContent.stories.svelte +38 -38
- package/dist/components/empty-content/EmptyContent.svelte +12 -12
- package/dist/components/graphs/bar-chart/BarChart.stories.svelte +91 -91
- package/dist/components/graphs/bar-chart/BarChart.svelte +147 -147
- package/dist/components/graphs/bar-chart/StackedBarChart.stories.svelte +57 -57
- package/dist/components/graphs/bar-chart/StackedBarChart.svelte +198 -199
- package/dist/components/graphs/chart/Chart.stories.svelte +96 -96
- package/dist/components/graphs/chart/Chart.svelte +207 -207
- package/dist/components/graphs/line/LineChart.stories.svelte +138 -138
- package/dist/components/graphs/line/LineChart.svelte +140 -142
- package/dist/components/graphs/matrix/Matrix.stories.svelte +117 -117
- package/dist/components/graphs/matrix/Matrix.svelte +141 -141
- package/dist/components/graphs/multiline/MultiLineChart.stories.svelte +168 -168
- package/dist/components/graphs/multiline/MultiLineChart.svelte +236 -236
- package/dist/components/graphs/scatterplot/Scatterplot.stories.svelte +84 -84
- package/dist/components/graphs/scatterplot/Scatterplot.svelte +302 -302
- package/dist/components/graphs/utils/duration.d.ts +1 -0
- package/dist/components/graphs/utils/duration.js +33 -0
- package/dist/components/graphs/utils/tooltipFormatter.js +1 -1
- package/dist/components/icon-button/IconButton.stories.svelte +64 -64
- package/dist/components/icon-button/IconButton.svelte +88 -88
- package/dist/components/icons/AnalysisIcon.stories.svelte +18 -18
- package/dist/components/icons/AnalysisIcon.svelte +96 -96
- package/dist/components/icons/Icon.stories.svelte +111 -111
- package/dist/components/icons/Icon.svelte +17 -17
- package/dist/components/icons/PrincipalIcon.svelte +59 -59
- package/dist/components/icons/custom/Halo.svelte +31 -31
- package/dist/components/icons/custom/Well.svelte +27 -27
- package/dist/components/icons/index.d.ts +3 -2
- package/dist/components/icons/index.js +3 -1
- package/dist/components/image/Image.svelte +42 -42
- package/dist/components/input/Input.stories.svelte +55 -55
- package/dist/components/input/Input.svelte +121 -121
- package/dist/components/label/Label.stories.svelte +18 -18
- package/dist/components/label/Label.svelte +11 -11
- package/dist/components/list/List.stories.svelte +84 -84
- package/dist/components/list/List.svelte +20 -20
- package/dist/components/logo/Logo.stories.svelte +15 -15
- package/dist/components/logo/Logo.svelte +30 -30
- package/dist/components/manual-cfu-counter/ManualCFUCounter.stories.svelte +102 -102
- package/dist/components/manual-cfu-counter/ManualCFUCounter.svelte +557 -565
- package/dist/components/manual-cfu-counter/test/ManualCFUCounterTestWrapper.svelte +11 -11
- package/dist/components/markdown/Markdown.stories.svelte +10 -10
- package/dist/components/markdown/Markdown.svelte +6 -6
- package/dist/components/modal/Modal.stories.svelte +29 -29
- package/dist/components/modal/Modal.svelte +71 -71
- package/dist/components/multi-cfu-counter/MultiCFUCounter.stories.svelte +215 -0
- package/dist/components/multi-cfu-counter/MultiCFUCounter.stories.svelte.d.ts +3 -0
- package/dist/components/multi-cfu-counter/MultiCFUCounter.svelte +662 -0
- package/dist/components/multi-cfu-counter/MultiCFUCounter.svelte.d.ts +32 -0
- package/dist/components/multi-cfu-counter/index.d.ts +1 -0
- package/dist/components/multi-cfu-counter/index.js +1 -0
- package/dist/components/multi-cfu-counter/test/MultiCFUCounterTestWrapper.svelte +28 -0
- package/dist/components/multi-cfu-counter/test/MultiCFUCounterTestWrapper.svelte.d.ts +20 -0
- package/dist/components/notification-popup/NotificationPopup.stories.svelte +18 -18
- package/dist/components/notification-popup/NotificationPopup.svelte +26 -26
- package/dist/components/notifications/Notifications.stories.svelte +101 -101
- package/dist/components/notifications/Notifications.svelte +9 -9
- package/dist/components/pill/Pill.stories.svelte +8 -8
- package/dist/components/pill/Pill.svelte +27 -27
- package/dist/components/progress-circle/ProgressCircle.stories.svelte +8 -8
- package/dist/components/progress-circle/ProgressCircle.svelte +54 -54
- package/dist/components/required-status-indicator/RequiredStatusIndicator.stories.svelte +18 -18
- package/dist/components/required-status-indicator/RequiredStatusIndicator.svelte +14 -14
- package/dist/components/segmented-control-buttons/ControlButton.svelte +36 -36
- package/dist/components/segmented-control-buttons/SegmentedControlButtons.stories.svelte +35 -35
- package/dist/components/segmented-control-buttons/SegmentedControlButtons.svelte +13 -13
- package/dist/components/select/Select.stories.svelte +77 -77
- package/dist/components/select/Select.svelte +114 -114
- package/dist/components/select-new/Select.stories.svelte +188 -188
- package/dist/components/select-new/components/Group.svelte +17 -17
- package/dist/components/select-new/components/MultiSelectTrigger.svelte +57 -57
- package/dist/components/select-new/components/SelectContent.svelte +22 -22
- package/dist/components/select-new/components/SelectGroupHeading.svelte +10 -10
- package/dist/components/select-new/components/SelectItem.svelte +25 -25
- package/dist/components/select-new/components/SelectTrigger.svelte +38 -38
- package/dist/components/sjsf-wrappers/SjsfNumberInputWrapper.svelte +76 -76
- package/dist/components/sjsf-wrappers/SjsfNumberInputWrapper.svelte.d.ts +1 -1
- package/dist/components/sjsf-wrappers/SjsfTextInputWrapper.svelte +53 -53
- package/dist/components/sjsf-wrappers/SjsfTextInputWrapper.svelte.d.ts +1 -1
- package/dist/components/sjsf-wrappers/sjsfCustomTheme.js +1 -1
- package/dist/components/skeleton-loader/SkeletonLoader.stories.svelte +32 -32
- package/dist/components/skeleton-loader/SkeletonLoader.svelte +10 -10
- package/dist/components/skeleton-loader/StatcardSkeleton.svelte +9 -9
- package/dist/components/skeleton-loader/components/Skeleton.svelte +7 -7
- package/dist/components/skeleton-loader/components/SkeletonImage.svelte +12 -12
- package/dist/components/slider/Slider.stories.svelte +23 -23
- package/dist/components/slider/Slider.svelte +107 -107
- package/dist/components/spinner/Spinner.stories.svelte +8 -8
- package/dist/components/spinner/Spinner.svelte +18 -18
- package/dist/components/stat-card/StatCard.stories.svelte +26 -26
- package/dist/components/stat-card/StatCard.svelte +128 -128
- package/dist/components/status-badge/StatusBadge.stories.svelte +365 -365
- package/dist/components/status-badge/StatusBadge.svelte +54 -54
- package/dist/components/stepper/Stepper.stories.svelte +219 -219
- package/dist/components/stepper/components/stepper-root.svelte +12 -12
- package/dist/components/stepper/components/stepper-step.svelte +83 -83
- package/dist/components/table/Table.stories.svelte +87 -87
- package/dist/components/table/Table.svelte +32 -32
- package/dist/components/table/components/TBody.svelte +7 -7
- package/dist/components/table/components/THead.svelte +7 -7
- package/dist/components/table/components/Td.svelte +8 -8
- package/dist/components/table/components/Th.svelte +8 -8
- package/dist/components/table/components/Tr.svelte +11 -11
- package/dist/components/tabs/Tabs.stories.svelte +20 -20
- package/dist/components/tabs/Tabs.svelte +8 -8
- package/dist/components/tabs/components/Content.svelte +8 -8
- package/dist/components/tabs/components/Tab.svelte +14 -14
- package/dist/components/tabs/components/Tabs.svelte +7 -7
- package/dist/components/tag/Tag.stories.svelte +57 -57
- package/dist/components/tag/Tag.svelte +95 -95
- package/dist/components/textarea/Textarea.stories.svelte +70 -70
- package/dist/components/textarea/Textarea.svelte +76 -76
- package/dist/components/toast/Toast.stories.svelte +204 -204
- package/dist/components/toast/Toast.svelte +53 -53
- package/dist/components/toggle/Toggle.stories.svelte +9 -9
- package/dist/components/toggle/Toggle.svelte +53 -53
- package/dist/components/toggle-icon-button/ToggleIconButton.stories.svelte +152 -152
- package/dist/components/toggle-icon-button/ToggleIconButton.svelte +99 -99
- package/dist/components/tooltip/Tooltip.stories.svelte +105 -105
- package/dist/components/tooltip/Tooltip.svelte +26 -26
- package/dist/fonts/index.js +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +5 -1
- package/dist/notifications.d.ts +1 -4
- package/dist/notifications.js +1 -1
- package/dist/styles.d.ts +1 -0
- package/dist/styles.js +4 -0
- package/dist/tailwind-safelist.js +406 -398
- package/dist/tailwind.preset.d.ts +4 -0
- package/dist/tailwind.preset.js +10 -10
- package/dist/tokens/colors.d.ts +246 -0
- package/dist/tokens/colors.js +139 -0
- package/dist/tokens/index.d.ts +3 -0
- package/dist/tokens/index.js +5 -0
- package/dist/tokens/typography.d.ts +48 -0
- package/dist/tokens/typography.js +48 -0
- package/dist/tokens.d.ts +16 -252
- package/dist/tokens.js +33 -164
- package/dist/types/fonts.d.ts +2 -2
- package/package.json +398 -78
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
<script module lang="ts">
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
3
|
+
import RequiredStatusIndicator from './RequiredStatusIndicator.svelte';
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
5
|
+
const { Story } = defineMeta({
|
|
6
|
+
title: 'Design System/RequiredStatusIndicator',
|
|
7
|
+
component: RequiredStatusIndicator,
|
|
8
|
+
tags: ['autodocs'],
|
|
9
|
+
argTypes: {
|
|
10
|
+
currentCount: { control: 'number', description: 'Current number of completed items' },
|
|
11
|
+
requiredCount: { control: 'number', description: 'Total number of required items' },
|
|
12
|
+
class: { control: 'text', description: 'Optional additional CSS classes' },
|
|
13
|
+
},
|
|
14
|
+
});
|
|
15
15
|
</script>
|
|
16
16
|
|
|
17
17
|
<Story name="Incomplete" args={{ currentCount: 1, requiredCount: 3 }} />
|
|
@@ -19,10 +19,10 @@
|
|
|
19
19
|
<Story name="Complete" args={{ currentCount: 3, requiredCount: 3 }} />
|
|
20
20
|
|
|
21
21
|
<Story
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
name="CustomClass"
|
|
23
|
+
args={{
|
|
24
|
+
currentCount: 2,
|
|
25
|
+
requiredCount: 4,
|
|
26
|
+
class: 'text-lg text-warning',
|
|
27
|
+
}}
|
|
28
28
|
/>
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
|
|
2
|
+
import { Icon } from '../icons';
|
|
3
3
|
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
type Props = {
|
|
5
|
+
currentCount: number;
|
|
6
|
+
requiredCount: number;
|
|
7
|
+
class?: string;
|
|
8
|
+
};
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
let { currentCount, requiredCount, class: className = '' }: Props = $props();
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
const isComplete = $derived(currentCount >= requiredCount);
|
|
13
13
|
</script>
|
|
14
14
|
|
|
15
15
|
<span class={`flex items-center gap-1 text-sm text-tertiary ${className}`}>
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
16
|
+
{currentCount} of {requiredCount} required
|
|
17
|
+
{#if isComplete}
|
|
18
|
+
<Icon iconName="CheckCircle" weight="fill" color="accent" size={16} />
|
|
19
|
+
{:else}
|
|
20
|
+
<Icon iconName="CheckCircle" size={16} />
|
|
21
|
+
{/if}
|
|
22
22
|
</span>
|
|
@@ -1,54 +1,54 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
type Color = 'primary' | 'secondary';
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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: 'bg-transparent text-primary hover:bg-neutral disabled:text-tertiary',
|
|
27
|
+
secondary: 'bg-transparent text-primary hover:bg-neutral disabled:text-tertiary',
|
|
28
|
+
};
|
|
29
29
|
</script>
|
|
30
30
|
|
|
31
31
|
<div class="join-item flex h-full flex-1">
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
32
|
+
<button
|
|
33
|
+
{onclick}
|
|
34
|
+
class={`control-button flex flex-1 items-center justify-center gap-2 rounded-md text-sm leading-4 ${colors[color]} ${className} ${color}`}
|
|
35
|
+
class:active
|
|
36
|
+
type="button"
|
|
37
|
+
{disabled}
|
|
38
|
+
data-testid={dataTestId}
|
|
39
|
+
>
|
|
40
|
+
{@render children?.()}
|
|
41
|
+
</button>
|
|
42
42
|
</div>
|
|
43
43
|
|
|
44
44
|
<style>
|
|
45
|
-
|
|
45
|
+
.primary.active {
|
|
46
46
|
--tw-bg-opacity: 1;
|
|
47
47
|
background-color: rgb(87 80 238 / var(--tw-bg-opacity, 1));
|
|
48
48
|
--tw-text-opacity: 1;
|
|
49
49
|
color: rgb(255 255 255 / var(--tw-text-opacity, 1))
|
|
50
50
|
}
|
|
51
|
-
|
|
51
|
+
.secondary.active {
|
|
52
52
|
--tw-bg-opacity: 1;
|
|
53
53
|
background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
|
|
54
54
|
--tw-text-opacity: 1;
|
|
@@ -1,45 +1,45 @@
|
|
|
1
1
|
<script module lang="ts">
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
import { Icon } from '../icons';
|
|
3
|
+
import SegmentedControlButtons from './SegmentedControlButtons.svelte';
|
|
4
|
+
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
const { Story } = defineMeta({
|
|
7
|
+
component: SegmentedControlButtons,
|
|
8
|
+
title: 'Design System/SegmentedControlButtons',
|
|
9
|
+
tags: ['autodocs'],
|
|
10
|
+
});
|
|
11
11
|
</script>
|
|
12
12
|
|
|
13
13
|
<Story name="Primary" asChild>
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
14
|
+
<SegmentedControlButtons class="w-[350px]">
|
|
15
|
+
{#snippet children({ ControlButton })}
|
|
16
|
+
<ControlButton active><Icon iconName="Star" /> Low</ControlButton>
|
|
17
|
+
<ControlButton><Icon iconName="Star" /> Medium</ControlButton>
|
|
18
|
+
<ControlButton disabled><Icon iconName="Star" /> High</ControlButton>
|
|
19
|
+
{/snippet}
|
|
20
|
+
</SegmentedControlButtons>
|
|
21
21
|
</Story>
|
|
22
22
|
<Story name="Large" asChild>
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
23
|
+
<SegmentedControlButtons size="lg" class="w-[350px]">
|
|
24
|
+
{#snippet children({ ControlButton })}
|
|
25
|
+
<ControlButton active><Icon iconName="Star" /> Low</ControlButton>
|
|
26
|
+
<ControlButton><Icon iconName="Star" /> Medium</ControlButton>
|
|
27
|
+
<ControlButton disabled><Icon iconName="Star" /> High</ControlButton>
|
|
28
|
+
{/snippet}
|
|
29
|
+
</SegmentedControlButtons>
|
|
30
30
|
</Story>
|
|
31
31
|
<Story name="Secondary" asChild>
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
32
|
+
<SegmentedControlButtons class="w-[350px]">
|
|
33
|
+
{#snippet children({ ControlButton })}
|
|
34
|
+
<ControlButton active color="secondary">
|
|
35
|
+
<Icon iconName="Star" /> Low
|
|
36
|
+
</ControlButton>
|
|
37
|
+
<ControlButton color="secondary">
|
|
38
|
+
<Icon iconName="Star" /> Medium
|
|
39
|
+
</ControlButton>
|
|
40
|
+
<ControlButton color="secondary">
|
|
41
|
+
<Icon iconName="Star" /> High
|
|
42
|
+
</ControlButton>
|
|
43
|
+
{/snippet}
|
|
44
|
+
</SegmentedControlButtons>
|
|
45
45
|
</Story>
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
import ControlButton from './ControlButton.svelte';
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
interface Props {
|
|
6
|
+
class?: string;
|
|
7
|
+
size?: 'md' | 'lg';
|
|
8
|
+
children?: Snippet<[{ ControlButton: typeof ControlButton }]>;
|
|
9
|
+
}
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
let { class: className = '', size = 'md', children }: Props = $props();
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
const sizes = {
|
|
14
|
+
md: 'h-10 ',
|
|
15
|
+
lg: 'h-16 [&>*>.control-button]:flex-col',
|
|
16
|
+
};
|
|
17
17
|
</script>
|
|
18
18
|
|
|
19
19
|
<div class={`join flex gap-1 rounded-lg bg-neutral p-1 ${sizes[size]} ${size} ${className}`}>
|
|
20
|
-
|
|
20
|
+
{@render children?.({ ControlButton })}
|
|
21
21
|
</div>
|
|
@@ -1,113 +1,113 @@
|
|
|
1
1
|
<script module lang="ts">
|
|
2
|
-
|
|
2
|
+
import Select from './Select.svelte';
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
const { Story } = defineMeta({
|
|
7
|
+
component: Select,
|
|
8
|
+
title: 'Design System/Select',
|
|
9
|
+
tags: ['autodocs'],
|
|
10
|
+
});
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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
20
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
function handleInput(e: Event) {
|
|
22
|
+
thisChanged = true;
|
|
23
|
+
}
|
|
24
24
|
</script>
|
|
25
25
|
|
|
26
26
|
<Story name="Default" asChild>
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
27
|
+
<div class="py-12">
|
|
28
|
+
<Select listOpen {items} />
|
|
29
|
+
</div>
|
|
30
30
|
</Story>
|
|
31
31
|
<Story name="Grouped" asChild>
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
32
|
+
<div class="py-12">
|
|
33
|
+
<Select listOpen {items} withGroup />
|
|
34
|
+
</div>
|
|
35
35
|
</Story>
|
|
36
36
|
|
|
37
37
|
<Story name="DefaultValue" asChild>
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
<div class="py-12">
|
|
39
|
+
<Select listOpen {items} withGroup value={{ value: '1', label: 'One', group: 'Group 1' }} />
|
|
40
|
+
</div>
|
|
41
41
|
</Story>
|
|
42
42
|
|
|
43
43
|
<Story name="Disabled" asChild>
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
<div class="py-12">
|
|
45
|
+
<Select listOpen {items} disabled />
|
|
46
|
+
</div>
|
|
47
47
|
</Story>
|
|
48
48
|
<Story name="Searchable" asChild>
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
49
|
+
<div class="py-12">
|
|
50
|
+
<Select listOpen {items} searchable />
|
|
51
|
+
</div>
|
|
52
52
|
</Story>
|
|
53
53
|
<Story name="Open" asChild>
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
54
|
+
<div class="py-12">
|
|
55
|
+
<Select listOpen {items} />
|
|
56
|
+
</div>
|
|
57
57
|
</Story>
|
|
58
58
|
<Story name="Error" asChild>
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
59
|
+
<div class="py-12">
|
|
60
|
+
<Select listOpen {items} hasError />
|
|
61
|
+
</div>
|
|
62
62
|
</Story>
|
|
63
63
|
<Story name="Placeholder" asChild>
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
64
|
+
<div class="py-12">
|
|
65
|
+
<Select listOpen {items} placeholder="Select a value" />
|
|
66
|
+
</div>
|
|
67
67
|
</Story>
|
|
68
68
|
<Story name="Multiple" asChild>
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
69
|
+
<div class="py-12">
|
|
70
|
+
<Select listOpen {items} multiple bind:value />
|
|
71
|
+
</div>
|
|
72
72
|
</Story>
|
|
73
73
|
|
|
74
74
|
<Story name="Bind value input changed" asChild>
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
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
80
|
</Story>
|
|
81
81
|
|
|
82
82
|
<Story name="Custom Item" asChild>
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
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
102
|
</Story>
|
|
103
103
|
|
|
104
104
|
<Story name="Custom selection label" asChild>
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
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
113
|
</Story>
|