@reshape-biotech/design-system 0.0.23 → 0.0.25
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 +30 -38
- package/dist/app.css +4 -4
- package/dist/components/avatar/index.d.ts +1 -0
- package/dist/components/avatar/index.js +1 -0
- package/dist/components/banner/Banner.stories.svelte +129 -0
- package/dist/components/banner/Banner.svelte +59 -0
- package/dist/components/banner/Banner.svelte.d.ts +11 -0
- package/dist/components/banner/index.d.ts +1 -0
- package/dist/components/banner/index.js +1 -0
- package/dist/components/button/Button.stories.svelte +37 -0
- package/dist/components/button/Button.svelte +85 -0
- package/dist/components/button/Button.svelte.d.ts +17 -0
- package/dist/components/button/index.d.ts +1 -0
- package/dist/components/button/index.js +1 -0
- package/dist/components/datepicker/DatePicker.svelte +283 -0
- package/dist/components/datepicker/DatePicker.svelte.d.ts +8 -0
- package/dist/components/datepicker/index.d.ts +1 -0
- package/dist/components/datepicker/index.js +1 -0
- package/dist/components/divider/Divider.stories.svelte +14 -0
- package/dist/components/divider/Divider.svelte +9 -0
- package/dist/components/divider/Divider.svelte.d.ts +6 -0
- package/dist/components/divider/index.d.ts +1 -0
- package/dist/components/divider/index.js +1 -0
- package/dist/components/drawer/Drawer.stories.svelte +99 -0
- package/dist/components/drawer/Drawer.svelte +45 -0
- package/dist/components/drawer/Drawer.svelte.d.ts +12 -0
- package/dist/components/drawer/DrawerLabel.svelte +13 -0
- package/dist/components/drawer/DrawerLabel.svelte.d.ts +9 -0
- package/dist/components/drawer/index.d.ts +1 -0
- package/dist/components/drawer/index.js +1 -0
- package/dist/components/dropdown/Dropdown.stories.svelte +214 -0
- package/dist/components/dropdown/Dropdown.svelte +69 -0
- package/dist/components/dropdown/Dropdown.svelte.d.ts +14 -0
- package/dist/components/dropdown/components/DropdownContent.svelte +29 -0
- package/dist/components/dropdown/components/DropdownContent.svelte.d.ts +10 -0
- package/dist/components/dropdown/components/DropdownMenu.svelte +23 -0
- package/dist/components/dropdown/components/DropdownMenu.svelte.d.ts +8 -0
- package/dist/components/dropdown/components/DropdownTrigger.svelte +44 -0
- package/dist/components/dropdown/components/DropdownTrigger.svelte.d.ts +12 -0
- package/dist/components/dropdown/index.d.ts +1 -0
- package/dist/components/dropdown/index.js +1 -0
- package/dist/components/icon-button/IconButton.stories.svelte +52 -0
- package/dist/components/icon-button/IconButton.svelte +72 -0
- package/dist/components/icon-button/IconButton.svelte.d.ts +14 -0
- package/dist/components/icon-button/index.d.ts +1 -0
- package/dist/components/icon-button/index.js +1 -0
- package/dist/components/image/Image.svelte +56 -0
- package/dist/components/image/Image.svelte.d.ts +7 -0
- package/dist/components/image/index.d.ts +1 -0
- package/dist/components/image/index.js +1 -0
- package/dist/components/input/Input.stories.svelte +81 -0
- package/dist/components/input/Input.svelte +131 -0
- package/dist/components/input/Input.svelte.d.ts +20 -0
- package/dist/components/input/index.d.ts +1 -0
- package/dist/components/input/index.js +1 -0
- package/dist/components/list/List.stories.svelte +97 -0
- package/dist/components/list/List.svelte +75 -0
- package/dist/components/list/List.svelte.d.ts +24 -0
- package/dist/components/list/index.d.ts +1 -0
- package/dist/components/list/index.js +1 -0
- package/dist/components/markdown/Markdown.stories.svelte +41 -0
- package/dist/components/markdown/Markdown.svelte +12 -0
- package/dist/components/markdown/Markdown.svelte.d.ts +6 -0
- package/dist/components/markdown/index.d.ts +1 -0
- package/dist/components/markdown/index.js +1 -0
- package/dist/components/modal/Modal.stories.svelte +41 -0
- package/dist/components/modal/Modal.svelte +56 -0
- package/dist/components/modal/Modal.svelte.d.ts +16 -0
- package/dist/components/modal/index.d.ts +1 -0
- package/dist/components/modal/index.js +1 -0
- package/dist/components/notification-popup/NotificationPopup.stories.svelte +27 -0
- package/dist/components/notification-popup/NotificationPopup.svelte +31 -0
- package/dist/components/notification-popup/NotificationPopup.svelte.d.ts +11 -0
- package/dist/components/notification-popup/index.d.ts +1 -0
- package/dist/components/notification-popup/index.js +1 -0
- package/dist/components/pill/Pill.svelte +39 -0
- package/dist/components/pill/Pill.svelte.d.ts +10 -0
- package/dist/components/pill/index.d.ts +1 -0
- package/dist/components/pill/index.js +1 -0
- package/dist/components/progress-circle/ProgressCircle.svelte +79 -0
- package/dist/components/progress-circle/ProgressCircle.svelte.d.ts +7 -0
- package/dist/components/progress-circle/index.d.ts +1 -0
- package/dist/components/progress-circle/index.js +1 -0
- package/dist/components/segmented-control-buttons/ControlButton.svelte +59 -0
- package/dist/components/segmented-control-buttons/ControlButton.svelte.d.ts +14 -0
- package/dist/components/segmented-control-buttons/SegmentedControlButtons.stories.svelte +45 -0
- package/dist/components/segmented-control-buttons/SegmentedControlButtons.svelte +21 -0
- package/dist/components/segmented-control-buttons/SegmentedControlButtons.svelte.d.ts +10 -0
- package/dist/components/segmented-control-buttons/index.d.ts +2 -0
- package/dist/components/segmented-control-buttons/index.js +2 -0
- package/dist/components/select/Select.stories.svelte +113 -0
- package/dist/components/select/Select.svelte +137 -0
- package/dist/components/select/Select.svelte.d.ts +60 -0
- package/dist/components/select/index.d.ts +7 -0
- package/dist/components/select/index.js +1 -0
- package/dist/components/skeleton-loader/SkeletonLoader.stories.svelte +71 -0
- package/dist/components/skeleton-loader/SkeletonLoader.svelte +17 -0
- package/dist/components/skeleton-loader/SkeletonLoader.svelte.d.ts +9 -0
- package/dist/components/skeleton-loader/StatcardSkeleton.svelte +17 -0
- package/dist/components/skeleton-loader/StatcardSkeleton.svelte.d.ts +18 -0
- package/dist/components/skeleton-loader/components/Skeleton.svelte +14 -0
- package/dist/components/skeleton-loader/components/Skeleton.svelte.d.ts +8 -0
- package/dist/components/skeleton-loader/components/SkeletonImage.svelte +14 -0
- package/dist/components/{tooltip/Tooltip.stories.svelte.d.ts → skeleton-loader/components/SkeletonImage.svelte.d.ts} +3 -4
- package/dist/components/skeleton-loader/index.d.ts +3 -0
- package/dist/components/skeleton-loader/index.js +3 -0
- package/dist/components/slider/Slider.stories.svelte +37 -0
- package/dist/components/slider/Slider.svelte +117 -0
- package/dist/components/slider/Slider.svelte.d.ts +29 -0
- package/dist/components/slider/index.d.ts +1 -0
- package/dist/components/slider/index.js +1 -0
- package/dist/components/spinner/Spinner.svelte +27 -0
- package/dist/components/spinner/Spinner.svelte.d.ts +6 -0
- package/dist/components/spinner/index.d.ts +1 -0
- package/dist/components/spinner/index.js +1 -0
- package/dist/components/stat-card/StatCard.stories.svelte +32 -0
- package/dist/components/stat-card/StatCard.svelte +52 -0
- package/dist/components/stat-card/StatCard.svelte.d.ts +10 -0
- package/dist/components/stat-card/index.d.ts +1 -0
- package/dist/components/stat-card/index.js +1 -0
- package/dist/components/status-badge/StatusBadge.stories.svelte +401 -0
- package/dist/components/status-badge/StatusBadge.svelte +147 -0
- package/dist/components/status-badge/StatusBadge.svelte.d.ts +12 -0
- package/dist/components/status-badge/index.d.ts +1 -0
- package/dist/components/status-badge/index.js +1 -0
- package/dist/components/table/Table.stories.svelte +86 -0
- package/dist/components/table/Table.svelte +33 -0
- package/dist/components/table/Table.svelte.d.ts +8 -0
- package/dist/components/table/components/Td.svelte +14 -0
- package/dist/components/table/components/Td.svelte.d.ts +8 -0
- package/dist/components/table/components/Th.svelte +15 -0
- package/dist/components/table/components/Th.svelte.d.ts +9 -0
- package/dist/components/table/components/Tr.svelte +31 -0
- package/dist/components/table/components/Tr.svelte.d.ts +8 -0
- package/dist/components/table/index.d.ts +1 -0
- package/dist/components/table/index.js +1 -0
- package/dist/components/tabs/Tabs.stories.svelte +30 -0
- package/dist/components/tabs/Tabs.svelte +15 -0
- package/dist/components/tabs/Tabs.svelte.d.ts +8 -0
- package/dist/components/tabs/components/Content.svelte +15 -0
- package/dist/components/tabs/components/Content.svelte.d.ts +9 -0
- package/dist/components/tabs/components/Tab.svelte +21 -0
- package/dist/components/tabs/components/Tab.svelte.d.ts +10 -0
- package/dist/components/tabs/components/Tabs.svelte +14 -0
- package/dist/components/tabs/components/Tabs.svelte.d.ts +8 -0
- package/dist/components/tabs/index.d.ts +1 -0
- package/dist/components/tabs/index.js +1 -0
- package/dist/components/tag/Tag.stories.svelte +50 -0
- package/dist/components/tag/Tag.svelte +104 -0
- package/dist/components/tag/Tag.svelte.d.ts +11 -0
- package/dist/components/tag/index.d.ts +1 -0
- package/dist/components/tag/index.js +1 -0
- package/dist/components/toast/Toast.svelte +66 -0
- package/dist/components/toast/Toast.svelte.d.ts +5 -0
- package/dist/components/toast/index.d.ts +1 -0
- package/dist/components/toast/index.js +1 -0
- package/dist/components/tooltip/index.d.ts +1 -0
- package/dist/components/tooltip/index.js +1 -0
- package/dist/fonts/MDSystem-Medium.woff +0 -0
- package/dist/fonts/MDSystem-Medium.woff2 +0 -0
- package/dist/fonts/MDSystem-Regular.woff +0 -0
- package/dist/fonts/MDSystem-Regular.woff2 +0 -0
- package/dist/fonts/MDSystem-Semibold.woff +0 -0
- package/dist/fonts/MDSystem-Semibold.woff2 +0 -0
- package/dist/fonts/MDSystemMono-Regular.woff +0 -0
- package/dist/fonts/MDSystemMono-Regular.woff2 +0 -0
- package/dist/fonts/index.d.ts +6 -0
- package/dist/fonts/index.js +10 -0
- package/dist/index.d.ts +29 -3
- package/dist/index.js +31 -4
- package/dist/tailwind.preset.d.ts +1 -0
- package/dist/tokens.d.ts +314 -36
- package/dist/tokens.js +235 -248
- package/dist/types/fonts.d.ts +4 -0
- package/package.json +9 -15
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './Select.svelte';
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
<script module>
|
|
2
|
+
import SkeletonLoader from './index';
|
|
3
|
+
import { HorizontalCardSkeleton, StatcardSkeleton, ProjectCardSkeleton } from './index';
|
|
4
|
+
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
5
|
+
|
|
6
|
+
const { Story } = defineMeta({
|
|
7
|
+
component: SkeletonLoader,
|
|
8
|
+
title: 'Design System/SkeletonLoader'
|
|
9
|
+
});
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<Story name="Primary">
|
|
13
|
+
<SkeletonLoader class="h-[20px] w-[200px]">
|
|
14
|
+
{#snippet children({ Skeleton })}
|
|
15
|
+
<Skeleton class="h-full w-full" />
|
|
16
|
+
{/snippet}
|
|
17
|
+
</SkeletonLoader>
|
|
18
|
+
</Story>
|
|
19
|
+
|
|
20
|
+
<Story name="ImagePlaceholder">
|
|
21
|
+
<SkeletonLoader class="h-[100px] w-[500px]">
|
|
22
|
+
{#snippet children({ Skeleton, SkeletonImage })}
|
|
23
|
+
<div class="flex h-full gap-2">
|
|
24
|
+
<Skeleton class="flex h-full w-[160px] items-center justify-center">
|
|
25
|
+
<SkeletonImage />
|
|
26
|
+
</Skeleton>
|
|
27
|
+
<div class="flex flex-1 flex-col gap-2">
|
|
28
|
+
<Skeleton class="flex h-[20px] w-full" />
|
|
29
|
+
<Skeleton class="flex h-[20px] w-full" />
|
|
30
|
+
<Skeleton class="flex h-[20px] w-full" />
|
|
31
|
+
<Skeleton class="flex h-[20px] w-full" />
|
|
32
|
+
</div>
|
|
33
|
+
</div>
|
|
34
|
+
{/snippet}
|
|
35
|
+
</SkeletonLoader>
|
|
36
|
+
</Story>
|
|
37
|
+
|
|
38
|
+
<Story name="HorizontalCardWithIcon">
|
|
39
|
+
<div class="flex w-[900px] flex-col gap-4">
|
|
40
|
+
<HorizontalCardSkeleton />
|
|
41
|
+
<HorizontalCardSkeleton />
|
|
42
|
+
<HorizontalCardSkeleton />
|
|
43
|
+
<HorizontalCardSkeleton />
|
|
44
|
+
</div>
|
|
45
|
+
</Story>
|
|
46
|
+
<Story name="HorizontalCardWithoutIcon">
|
|
47
|
+
<div class="flex w-[900px] flex-col gap-4">
|
|
48
|
+
<HorizontalCardSkeleton withImage={false} />
|
|
49
|
+
<HorizontalCardSkeleton withImage={false} />
|
|
50
|
+
<HorizontalCardSkeleton withImage={false} />
|
|
51
|
+
<HorizontalCardSkeleton withImage={false} />
|
|
52
|
+
</div>
|
|
53
|
+
</Story>
|
|
54
|
+
<Story name="StatCard">
|
|
55
|
+
<div class="flex w-[900px] gap-4">
|
|
56
|
+
<StatcardSkeleton />
|
|
57
|
+
<StatcardSkeleton />
|
|
58
|
+
<StatcardSkeleton />
|
|
59
|
+
</div>
|
|
60
|
+
</Story>
|
|
61
|
+
|
|
62
|
+
<Story name="ProjectCard">
|
|
63
|
+
<div class="grid grid-cols-2 justify-start gap-2">
|
|
64
|
+
<ProjectCardSkeleton />
|
|
65
|
+
<ProjectCardSkeleton />
|
|
66
|
+
<ProjectCardSkeleton />
|
|
67
|
+
<ProjectCardSkeleton />
|
|
68
|
+
<ProjectCardSkeleton />
|
|
69
|
+
<ProjectCardSkeleton />
|
|
70
|
+
</div>
|
|
71
|
+
</Story>
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
import Skeleton from './components/Skeleton.svelte';
|
|
4
|
+
import SkeletonImage from './components/SkeletonImage.svelte';
|
|
5
|
+
|
|
6
|
+
interface Props {
|
|
7
|
+
class?: string;
|
|
8
|
+
dataTestId?: string;
|
|
9
|
+
children?: Snippet<[any]>;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
let { class: className = '', dataTestId = '', children }: Props = $props();
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<div role="status" class={`h-full w-full animate-pulse ${className}`} data-testid={dataTestId}>
|
|
16
|
+
{@render children?.({ Skeleton, SkeletonImage })}
|
|
17
|
+
</div>
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
interface Props {
|
|
3
|
+
class?: string;
|
|
4
|
+
dataTestId?: string;
|
|
5
|
+
children?: Snippet<[any]>;
|
|
6
|
+
}
|
|
7
|
+
declare const SkeletonLoader: import("svelte").Component<Props, {}, "">;
|
|
8
|
+
type SkeletonLoader = ReturnType<typeof SkeletonLoader>;
|
|
9
|
+
export default SkeletonLoader;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import SkeletonLoader from './SkeletonLoader.svelte';
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<SkeletonLoader>
|
|
6
|
+
{#snippet children({ Skeleton })}
|
|
7
|
+
<div
|
|
8
|
+
class="flex h-24 flex-1 flex-col justify-between gap-2 rounded-lg bg-surface p-4 shadow-field"
|
|
9
|
+
>
|
|
10
|
+
<Skeleton class="h-4 w-1/2 "></Skeleton>
|
|
11
|
+
<div class="flex items-baseline gap-2">
|
|
12
|
+
<Skeleton class="h-8 w-8 " />
|
|
13
|
+
<Skeleton class="h-4 w-16 " />
|
|
14
|
+
</div>
|
|
15
|
+
</div>
|
|
16
|
+
{/snippet}
|
|
17
|
+
</SkeletonLoader>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
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> {
|
|
2
|
+
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
3
|
+
$$bindings?: Bindings;
|
|
4
|
+
} & Exports;
|
|
5
|
+
(internal: unknown, props: {
|
|
6
|
+
$$events?: Events;
|
|
7
|
+
$$slots?: Slots;
|
|
8
|
+
}): Exports & {
|
|
9
|
+
$set?: any;
|
|
10
|
+
$on?: any;
|
|
11
|
+
};
|
|
12
|
+
z_$$bindings?: Bindings;
|
|
13
|
+
}
|
|
14
|
+
declare const StatcardSkeleton: $$__sveltets_2_IsomorphicComponent<Record<string, never>, {
|
|
15
|
+
[evt: string]: CustomEvent<any>;
|
|
16
|
+
}, {}, {}, string>;
|
|
17
|
+
type StatcardSkeleton = InstanceType<typeof StatcardSkeleton>;
|
|
18
|
+
export default StatcardSkeleton;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import type { Snippet } from 'svelte';
|
|
3
|
+
|
|
4
|
+
interface Props {
|
|
5
|
+
class?: string;
|
|
6
|
+
children?: Snippet;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
let { class: className = '', children }: Props = $props();
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<div class={`bg-neutral ${className}`}>
|
|
13
|
+
{@render children?.()}
|
|
14
|
+
</div>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<svg width="100%" height="100%" viewBox="0 0 160 97" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path
|
|
3
|
+
d="M71 46.4792C67.1348 46.4792 64 43.3117 64 39.4062C64 35.5008 67.1348 32.3333 71 32.3333C74.8652 32.3333 78 35.5008 78 39.4062C78.0045 43.3117 74.8697 46.4792 71 46.4792Z"
|
|
4
|
+
fill="#FFFFFF"
|
|
5
|
+
/>
|
|
6
|
+
<path
|
|
7
|
+
d="M89 46.4792C85.1348 46.4792 82 43.3117 82 39.4062C82 35.5008 85.1348 32.3333 89 32.3333C92.8652 32.3333 96 35.5008 96 39.4062C96.0045 43.3117 92.8697 46.4792 89 46.4792Z"
|
|
8
|
+
fill="#FFFFFF"
|
|
9
|
+
/>
|
|
10
|
+
<path
|
|
11
|
+
d="M64 57.5937C64 53.6883 67.1348 50.5208 71 50.5208C74.8652 50.5208 78 53.6883 78 57.5937C78 61.4992 74.8652 64.6667 71 64.6667C67.1348 64.6667 64 61.4992 64 57.5937Z"
|
|
12
|
+
fill="#FFFFFF"
|
|
13
|
+
/>
|
|
14
|
+
</svg>
|
|
@@ -1,17 +1,16 @@
|
|
|
1
|
-
export default
|
|
2
|
-
type
|
|
1
|
+
export default SkeletonImage;
|
|
2
|
+
type SkeletonImage = SvelteComponent<{
|
|
3
3
|
[x: string]: never;
|
|
4
4
|
}, {
|
|
5
5
|
[evt: string]: CustomEvent<any>;
|
|
6
6
|
}, {}> & {
|
|
7
7
|
$$bindings?: string | undefined;
|
|
8
8
|
};
|
|
9
|
-
declare const
|
|
9
|
+
declare const SkeletonImage: $$__sveltets_2_IsomorphicComponent<{
|
|
10
10
|
[x: string]: never;
|
|
11
11
|
}, {
|
|
12
12
|
[evt: string]: CustomEvent<any>;
|
|
13
13
|
}, {}, {}, string>;
|
|
14
|
-
import Tooltip from './Tooltip.svelte';
|
|
15
14
|
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
15
|
new (options: import("svelte").ComponentConstructorOptions<Props>): import("svelte").SvelteComponent<Props, Events, Slots> & {
|
|
17
16
|
$$bindings?: Bindings;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
<script module>
|
|
2
|
+
import Slider from './Slider.svelte';
|
|
3
|
+
|
|
4
|
+
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
5
|
+
|
|
6
|
+
const { Story } = defineMeta({
|
|
7
|
+
component: Slider,
|
|
8
|
+
title: 'Design System/Slider',
|
|
9
|
+
tags: ['autodocs']
|
|
10
|
+
});
|
|
11
|
+
|
|
12
|
+
let value = 3;
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<Story name="Default">
|
|
16
|
+
Value: {value + 1}
|
|
17
|
+
<Slider bind:value bind:buffer={value} max={4}></Slider>
|
|
18
|
+
</Story>
|
|
19
|
+
<Story name="Playback Controls Running Job">
|
|
20
|
+
Value: {value + 1}
|
|
21
|
+
<Slider bind:value buffer={35} max={49} bufferColorClass="bg-warning-inverse"></Slider>
|
|
22
|
+
</Story>
|
|
23
|
+
<Story name="Modern stepStyle">
|
|
24
|
+
Value: {value + 1}
|
|
25
|
+
<Slider bind:value bind:buffer={value} max={4} showSteps={true}></Slider>
|
|
26
|
+
</Story>
|
|
27
|
+
<Story name="Create Job Capture Interval">
|
|
28
|
+
Value: {value + 1}
|
|
29
|
+
<Slider
|
|
30
|
+
bind:value
|
|
31
|
+
max={6}
|
|
32
|
+
showSteps={true}
|
|
33
|
+
buffer={2}
|
|
34
|
+
bufferMin={1}
|
|
35
|
+
bufferColorClass="bg-danger-inverse"
|
|
36
|
+
></Slider>
|
|
37
|
+
</Story>
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { CaretLeft, CaretRight } from 'phosphor-svelte';
|
|
3
|
+
let className = '';
|
|
4
|
+
export { className as class };
|
|
5
|
+
export let value = 0;
|
|
6
|
+
export let max: number;
|
|
7
|
+
export let buffer = 0;
|
|
8
|
+
export let bufferMin = 0;
|
|
9
|
+
export let bufferColorClass = 'bg-accent-inverse';
|
|
10
|
+
export let showSteps = false;
|
|
11
|
+
export let onMousedown: () => void = () => {};
|
|
12
|
+
export let onMouseup: () => void = () => {};
|
|
13
|
+
export let id: string | undefined = undefined;
|
|
14
|
+
|
|
15
|
+
$: if (value > max) {
|
|
16
|
+
value = max;
|
|
17
|
+
} else if (value < 0) {
|
|
18
|
+
value = 0;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
$: visualMax = Math.max(max, 1);
|
|
22
|
+
$: buffer = Math.min(buffer, visualMax);
|
|
23
|
+
|
|
24
|
+
function calculatePosition(positionFactor: number): string {
|
|
25
|
+
return `calc((${positionFactor / visualMax} * (100% - 2.5rem))`;
|
|
26
|
+
}
|
|
27
|
+
</script>
|
|
28
|
+
|
|
29
|
+
<div class={`relative flex h-10 items-center ${className}`}>
|
|
30
|
+
<div class="track-overlay"></div>
|
|
31
|
+
<div
|
|
32
|
+
class="pointer-events-none absolute h-2 rounded-full {bufferColorClass}"
|
|
33
|
+
style="
|
|
34
|
+
width: {calculatePosition(buffer - bufferMin)} + 0.5rem);
|
|
35
|
+
left: {calculatePosition(bufferMin)} + 1rem)
|
|
36
|
+
"
|
|
37
|
+
></div>
|
|
38
|
+
{#if showSteps}
|
|
39
|
+
<div class="h-2">
|
|
40
|
+
{#each Array(visualMax + 1) as _, index}
|
|
41
|
+
<div
|
|
42
|
+
class="absolute h-1 w-1 translate-y-1/2 rounded-full bg-surface"
|
|
43
|
+
style="left: {calculatePosition(index)} + 1.125rem"
|
|
44
|
+
></div>
|
|
45
|
+
{/each}
|
|
46
|
+
</div>
|
|
47
|
+
{/if}
|
|
48
|
+
<input
|
|
49
|
+
{id}
|
|
50
|
+
data-testid={id}
|
|
51
|
+
type="range"
|
|
52
|
+
max={visualMax}
|
|
53
|
+
bind:value
|
|
54
|
+
on:mousedown={onMousedown}
|
|
55
|
+
on:mouseup={onMouseup}
|
|
56
|
+
/>
|
|
57
|
+
<div class="thumb-overlay" style="left: {calculatePosition(value)} + 1.25rem)">
|
|
58
|
+
<CaretLeft class="text-primary" size="0.75rem" weight="bold" />
|
|
59
|
+
<CaretRight class="text-primary" size="0.75rem" weight="bold" />
|
|
60
|
+
</div>
|
|
61
|
+
</div>
|
|
62
|
+
|
|
63
|
+
<style>
|
|
64
|
+
.track-overlay {
|
|
65
|
+
width: calc(100% - 2rem);
|
|
66
|
+
cursor: pointer;
|
|
67
|
+
pointer-events: none;
|
|
68
|
+
position: absolute;
|
|
69
|
+
margin-left: 1rem;
|
|
70
|
+
margin-right: 1rem;
|
|
71
|
+
height: 0.5rem;
|
|
72
|
+
border-radius: 9999px;
|
|
73
|
+
background-color: #12192A26;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
.thumb-overlay {
|
|
77
|
+
transform: translate(-50%, 50%);
|
|
78
|
+
pointer-events: none;
|
|
79
|
+
position: absolute;
|
|
80
|
+
bottom: 1.25rem;
|
|
81
|
+
display: inline-flex;
|
|
82
|
+
height: 2.5rem;
|
|
83
|
+
width: 2.5rem;
|
|
84
|
+
align-items: center;
|
|
85
|
+
justify-content: center;
|
|
86
|
+
border-radius: 9999px;
|
|
87
|
+
--tw-bg-opacity: 1;
|
|
88
|
+
background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1));
|
|
89
|
+
--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
|
|
90
|
+
--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);
|
|
91
|
+
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
input[type='range'] {
|
|
95
|
+
-webkit-appearance: none;
|
|
96
|
+
-moz-appearance: none;
|
|
97
|
+
appearance: none;
|
|
98
|
+
position: relative;
|
|
99
|
+
cursor: pointer;
|
|
100
|
+
height: 2.5rem;
|
|
101
|
+
width: 100%;
|
|
102
|
+
background-color: transparent;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
input[type='range']::-webkit-slider-thumb {
|
|
106
|
+
-webkit-appearance: none;
|
|
107
|
+
appearance: none;
|
|
108
|
+
width: 0;
|
|
109
|
+
height: 0;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
input[type='range']::-moz-range-thumb {
|
|
113
|
+
width: 0;
|
|
114
|
+
height: 0;
|
|
115
|
+
border: none;
|
|
116
|
+
}
|
|
117
|
+
</style>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
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> {
|
|
2
|
+
new (options: import('svelte').ComponentConstructorOptions<Props>): import('svelte').SvelteComponent<Props, Events, Slots> & {
|
|
3
|
+
$$bindings?: Bindings;
|
|
4
|
+
} & Exports;
|
|
5
|
+
(internal: unknown, props: Props & {
|
|
6
|
+
$$events?: Events;
|
|
7
|
+
$$slots?: Slots;
|
|
8
|
+
}): Exports & {
|
|
9
|
+
$set?: any;
|
|
10
|
+
$on?: any;
|
|
11
|
+
};
|
|
12
|
+
z_$$bindings?: Bindings;
|
|
13
|
+
}
|
|
14
|
+
declare const Slider: $$__sveltets_2_IsomorphicComponent<{
|
|
15
|
+
class?: string;
|
|
16
|
+
value?: number;
|
|
17
|
+
max: number;
|
|
18
|
+
buffer?: number;
|
|
19
|
+
bufferMin?: number;
|
|
20
|
+
bufferColorClass?: string;
|
|
21
|
+
showSteps?: boolean;
|
|
22
|
+
onMousedown?: () => void;
|
|
23
|
+
onMouseup?: () => void;
|
|
24
|
+
id?: string | undefined;
|
|
25
|
+
}, {
|
|
26
|
+
[evt: string]: CustomEvent<any>;
|
|
27
|
+
}, {}, {}, string>;
|
|
28
|
+
type Slider = InstanceType<typeof Slider>;
|
|
29
|
+
export default Slider;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './Slider.svelte';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './Slider.svelte';
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
interface Props {
|
|
3
|
+
testID?: string;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
let { testID = '' }: Props = $props();
|
|
7
|
+
</script>
|
|
8
|
+
|
|
9
|
+
<div data-testid={testID} class="spinner"></div>
|
|
10
|
+
|
|
11
|
+
<style>
|
|
12
|
+
.spinner {
|
|
13
|
+
background: conic-gradient(#0000 10%, currentColor);
|
|
14
|
+
mask: radial-gradient(farthest-side, #0000 calc(100% - 2px), #000 0);
|
|
15
|
+
-webkit-mask: radial-gradient(farthest-side, #0000 calc(100% - 2px), #000 0);
|
|
16
|
+
animation: spinner 1s infinite linear;
|
|
17
|
+
height: 0.75rem;
|
|
18
|
+
width: 0.75rem;
|
|
19
|
+
border-radius: 9999px;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
@keyframes spinner {
|
|
23
|
+
to {
|
|
24
|
+
transform: rotate(1turn);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
</style>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './Spinner.svelte';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './Spinner.svelte';
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
<script module>
|
|
2
|
+
import StatCard from './StatCard.svelte';
|
|
3
|
+
import { defineMeta } from '@storybook/addon-svelte-csf';
|
|
4
|
+
|
|
5
|
+
const { Story } = defineMeta({
|
|
6
|
+
component: StatCard,
|
|
7
|
+
title: 'Design System/StatCard',
|
|
8
|
+
tags: ['autodocs']
|
|
9
|
+
});
|
|
10
|
+
</script>
|
|
11
|
+
|
|
12
|
+
<Story name="Default">
|
|
13
|
+
<StatCard title="Title" value="Value" unit="unit" titleTooltip="Title tooltip" />
|
|
14
|
+
</Story>
|
|
15
|
+
|
|
16
|
+
<Story name="Germination Rate">
|
|
17
|
+
<StatCard
|
|
18
|
+
title="Germination Rate"
|
|
19
|
+
value="2"
|
|
20
|
+
unit="%"
|
|
21
|
+
titleTooltip="Something that explains what this is..."
|
|
22
|
+
showTitleTooltip={true}
|
|
23
|
+
/>
|
|
24
|
+
</Story>
|
|
25
|
+
|
|
26
|
+
<Story name="Home Page">
|
|
27
|
+
<div class="flex w-full gap-4">
|
|
28
|
+
<StatCard title="Current jobs" value="3" unit="of 5" />
|
|
29
|
+
<StatCard title="Run time" value="5.4" unit="hours" />
|
|
30
|
+
<StatCard title="Images taken" value="1366" />
|
|
31
|
+
</div>
|
|
32
|
+
</Story>
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { Info } from 'phosphor-svelte';
|
|
3
|
+
import Spinner from '../spinner/Spinner.svelte';
|
|
4
|
+
import Tooltip from '../tooltip/Tooltip.svelte';
|
|
5
|
+
|
|
6
|
+
interface Props {
|
|
7
|
+
title: string;
|
|
8
|
+
value?: string | number | null;
|
|
9
|
+
unit?: string | null;
|
|
10
|
+
titleTooltip?: string;
|
|
11
|
+
showTitleTooltip?: boolean;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
let {
|
|
15
|
+
title,
|
|
16
|
+
value = null,
|
|
17
|
+
unit = '',
|
|
18
|
+
titleTooltip = '',
|
|
19
|
+
showTitleTooltip = false
|
|
20
|
+
}: Props = $props();
|
|
21
|
+
const formattedValue = $derived(typeof value === 'number' ? value.toLocaleString() : value);
|
|
22
|
+
</script>
|
|
23
|
+
|
|
24
|
+
<div
|
|
25
|
+
class="flex h-24 min-w-[130px] flex-shrink-0 flex-grow basis-0 flex-col items-start gap-2 rounded-lg bg-surface p-4 shadow-field"
|
|
26
|
+
>
|
|
27
|
+
<h5 class="flex items-center justify-start gap-1 text-secondary">
|
|
28
|
+
{title}
|
|
29
|
+
{#if titleTooltip && showTitleTooltip}
|
|
30
|
+
<Tooltip>
|
|
31
|
+
{#snippet trigger()}
|
|
32
|
+
<Info class="icon" size="1rem" weight="bold" />
|
|
33
|
+
{/snippet}
|
|
34
|
+
{#snippet content()}
|
|
35
|
+
<span>
|
|
36
|
+
{titleTooltip}
|
|
37
|
+
</span>
|
|
38
|
+
{/snippet}
|
|
39
|
+
</Tooltip>
|
|
40
|
+
{/if}
|
|
41
|
+
</h5>
|
|
42
|
+
<div class="flex items-baseline gap-1">
|
|
43
|
+
{#if value !== null}
|
|
44
|
+
<h3>{formattedValue}</h3>
|
|
45
|
+
{#if unit}
|
|
46
|
+
<h5>{unit}</h5>
|
|
47
|
+
{/if}
|
|
48
|
+
{:else}
|
|
49
|
+
<Spinner />
|
|
50
|
+
{/if}
|
|
51
|
+
</div>
|
|
52
|
+
</div>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
interface Props {
|
|
2
|
+
title: string;
|
|
3
|
+
value?: string | number | null;
|
|
4
|
+
unit?: string | null;
|
|
5
|
+
titleTooltip?: string;
|
|
6
|
+
showTitleTooltip?: boolean;
|
|
7
|
+
}
|
|
8
|
+
declare const StatCard: import("svelte").Component<Props, {}, "">;
|
|
9
|
+
type StatCard = ReturnType<typeof StatCard>;
|
|
10
|
+
export default StatCard;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './StatCard.svelte';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default } from './StatCard.svelte';
|