reshaped 3.8.0-canary.7 → 3.8.0-canary.8
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/CHANGELOG.md +12 -0
- package/dist/bundle.css +1 -1
- package/dist/bundle.js +9 -9
- package/dist/components/Actionable/Actionable.module.css +1 -1
- package/dist/components/Alert/tests/Alert.stories.d.ts +6 -5
- package/dist/components/Alert/tests/Alert.stories.js +15 -2
- package/dist/components/Badge/Badge.module.css +1 -1
- package/dist/components/Badge/tests/Badge.stories.d.ts +5 -0
- package/dist/components/Badge/tests/Badge.stories.js +34 -0
- package/dist/components/Breadcrumbs/tests/Breadcrumbs.stories.d.ts +8 -4
- package/dist/components/Breadcrumbs/tests/Breadcrumbs.stories.js +57 -1
- package/dist/components/Button/tests/Button.stories.d.ts +54 -12
- package/dist/components/Button/tests/Button.stories.js +725 -588
- package/dist/components/Card/Card.module.css +1 -1
- package/dist/components/Card/tests/Card.stories.d.ts +28 -6
- package/dist/components/Card/tests/Card.stories.js +110 -65
- package/dist/components/Carousel/Carousel.module.css +1 -1
- package/dist/components/Checkbox/Checkbox.module.css +1 -1
- package/dist/components/Checkbox/tests/Checkbox.stories.d.ts +20 -4
- package/dist/components/Checkbox/tests/Checkbox.stories.js +150 -79
- package/dist/components/CheckboxGroup/tests/CheckboxGroup.stories.d.ts +9 -2
- package/dist/components/CheckboxGroup/tests/CheckboxGroup.stories.js +67 -35
- package/dist/components/Container/tests/Container.stories.d.ts +2 -0
- package/dist/components/Container/tests/Container.stories.js +14 -0
- package/dist/components/ContextMenu/tests/ContextMenu.stories.d.ts +10 -1
- package/dist/components/ContextMenu/tests/ContextMenu.stories.js +57 -13
- package/dist/components/Dismissible/tests/Dismissible.stories.d.ts +5 -0
- package/dist/components/Dismissible/tests/Dismissible.stories.js +30 -1
- package/dist/components/Divider/tests/Divider.stories.d.ts +8 -3
- package/dist/components/Divider/tests/Divider.stories.js +71 -41
- package/dist/components/DropdownMenu/tests/DropdownMenu.stories.d.ts +35 -6
- package/dist/components/DropdownMenu/tests/DropdownMenu.stories.js +222 -115
- package/dist/components/DropdownMenu/tests/DropdownMenu.test.stories.d.ts +0 -15
- package/dist/components/DropdownMenu/tests/DropdownMenu.test.stories.js +0 -106
- package/dist/components/FileUpload/FileUpload.module.css +1 -1
- package/dist/components/Flyout/Flyout.module.css +1 -1
- package/dist/components/Flyout/utilities/flyout.js +0 -1
- package/dist/components/FormControl/tests/FormControl.stories.d.ts +2 -0
- package/dist/components/FormControl/tests/FormControl.stories.js +35 -0
- package/dist/components/Hidden/tests/Hidden.stories.d.ts +2 -0
- package/dist/components/Hidden/tests/Hidden.stories.js +9 -0
- package/dist/components/HiddenVisually/tests/HiddenVisually.stories.d.ts +2 -0
- package/dist/components/HiddenVisually/tests/HiddenVisually.stories.js +9 -0
- package/dist/components/Hotkey/tests/Hotkey.stories.d.ts +2 -0
- package/dist/components/Hotkey/tests/Hotkey.stories.js +15 -0
- package/dist/components/Icon/tests/Icon.stories.d.ts +3 -0
- package/dist/components/Icon/tests/Icon.stories.js +23 -0
- package/dist/components/Link/tests/Link.stories.d.ts +28 -5
- package/dist/components/Link/tests/Link.stories.js +141 -58
- package/dist/components/Link/tests/Link.test.stories.d.ts +0 -13
- package/dist/components/Link/tests/Link.test.stories.js +0 -85
- package/dist/components/Loader/tests/Loader.stories.d.ts +11 -2
- package/dist/components/Loader/tests/Loader.stories.js +52 -25
- package/dist/components/Loader/tests/Loader.test.stories.d.ts +0 -3
- package/dist/components/Loader/tests/Loader.test.stories.js +0 -21
- package/dist/components/MenuItem/tests/MenuItem.stories.d.ts +37 -7
- package/dist/components/MenuItem/tests/MenuItem.stories.js +218 -112
- package/dist/components/Modal/Modal.js +1 -1
- package/dist/components/Modal/Modal.module.css +1 -1
- package/dist/components/Modal/tests/Modal.stories.d.ts +53 -10
- package/dist/components/Modal/tests/Modal.stories.js +366 -214
- package/dist/components/Overlay/tests/Overlay.stories.d.ts +15 -1
- package/dist/components/Overlay/tests/Overlay.stories.js +135 -1
- package/dist/components/Pagination/tests/Pagination.stories.d.ts +14 -1
- package/dist/components/Pagination/tests/Pagination.stories.js +93 -15
- package/dist/components/PinField/tests/PinField.stories.d.ts +1 -1
- package/dist/components/PinField/tests/PinField.stories.js +1 -1
- package/dist/components/Popover/Popover.module.css +1 -1
- package/dist/components/Progress/tests/Progress.stories.d.ts +19 -4
- package/dist/components/Progress/tests/Progress.stories.js +85 -49
- package/dist/components/Radio/Radio.module.css +1 -1
- package/dist/components/Radio/tests/Radio.stories.d.ts +25 -4
- package/dist/components/Radio/tests/Radio.stories.js +147 -65
- package/dist/components/RadioGroup/tests/RadioGroup.stories.d.ts +9 -2
- package/dist/components/RadioGroup/tests/RadioGroup.stories.js +64 -38
- package/dist/components/Reshaped/Reshaped.css +1 -1
- package/dist/components/Scrim/tests/Scrim.stories.d.ts +10 -2
- package/dist/components/Scrim/tests/Scrim.stories.js +51 -31
- package/dist/components/ScrollArea/ScrollArea.module.css +1 -1
- package/dist/components/Select/Select.module.css +1 -1
- package/dist/components/Select/Select.types.d.ts +38 -11
- package/dist/components/Select/SelectCustom.js +2 -1
- package/dist/components/Select/SelectCustomControlled.js +23 -9
- package/dist/components/Select/SelectCustomUncontrolled.js +10 -7
- package/dist/components/Select/SelectTrigger.js +1 -1
- package/dist/components/Select/tests/Select.stories.d.ts +3 -0
- package/dist/components/Select/tests/Select.stories.js +91 -34
- package/dist/components/Skeleton/tests/Skeleton.stories.d.ts +10 -2
- package/dist/components/Skeleton/tests/Skeleton.stories.js +46 -28
- package/dist/components/Slider/Slider.module.css +1 -1
- package/dist/components/Stepper/tests/Stepper.stories.d.ts +18 -4
- package/dist/components/Stepper/tests/Stepper.stories.js +99 -70
- package/dist/components/Switch/Switch.module.css +1 -1
- package/dist/components/Switch/tests/Switch.stories.d.ts +10 -2
- package/dist/components/Switch/tests/Switch.stories.js +77 -23
- package/dist/components/Switch/tests/Switch.test.stories.d.ts +0 -10
- package/dist/components/Switch/tests/Switch.test.stories.js +0 -68
- package/dist/components/Table/Table.module.css +1 -1
- package/dist/components/Table/tests/Table.stories.d.ts +25 -5
- package/dist/components/Table/tests/Table.stories.js +274 -177
- package/dist/components/Table/tests/Table.test.stories.d.ts +0 -5
- package/dist/components/Table/tests/Table.test.stories.js +0 -82
- package/dist/components/Tabs/Tabs.module.css +1 -1
- package/dist/components/TextArea/TextArea.module.css +1 -1
- package/dist/components/TextArea/tests/TextArea.stories.d.ts +41 -9
- package/dist/components/TextArea/tests/TextArea.stories.js +179 -93
- package/dist/components/TextField/TextField.js +1 -1
- package/dist/components/TextField/TextField.module.css +1 -1
- package/dist/components/TextField/tests/TextField.stories.d.ts +41 -11
- package/dist/components/TextField/tests/TextField.stories.js +206 -132
- package/dist/components/TextField/tests/TextField.test.stories.d.ts +0 -13
- package/dist/components/TextField/tests/TextField.test.stories.js +0 -88
- package/dist/components/Theme/Theme.module.css +1 -1
- package/dist/components/Timeline/tests/Timeline.stories.d.ts +10 -2
- package/dist/components/Timeline/tests/Timeline.stories.js +69 -42
- package/dist/components/Timeline/tests/Timeline.test.stories.d.ts +0 -2
- package/dist/components/Timeline/tests/Timeline.test.stories.js +0 -21
- package/dist/components/Toast/tests/Toast.stories.d.ts +32 -8
- package/dist/components/Toast/tests/Toast.stories.js +109 -37
- package/dist/components/Tooltip/tests/Tooltip.stories.d.ts +18 -4
- package/dist/components/Tooltip/tests/Tooltip.stories.js +139 -107
- package/dist/components/Tooltip/tests/Tooltip.test.stories.d.ts +0 -6
- package/dist/components/Tooltip/tests/Tooltip.test.stories.js +0 -29
- package/dist/components/View/tests/View.stories.d.ts +4 -0
- package/dist/components/View/tests/View.stories.js +39 -0
- package/dist/hooks/tests/useDrag.stories.js +1 -1
- package/dist/utilities/scroll/disable.js +2 -2
- package/package.json +1 -1
- package/dist/components/Alert/tests/Alert.test.stories.d.ts +0 -15
- package/dist/components/Alert/tests/Alert.test.stories.js +0 -26
- package/dist/components/Badge/tests/Badge.test.stories.d.ts +0 -20
- package/dist/components/Badge/tests/Badge.test.stories.js +0 -46
- package/dist/components/Breadcrumbs/tests/Breadcrumbs.test.stories.d.ts +0 -23
- package/dist/components/Breadcrumbs/tests/Breadcrumbs.test.stories.js +0 -76
- package/dist/components/Button/tests/Button.test.stories.d.ts +0 -28
- package/dist/components/Button/tests/Button.test.stories.js +0 -135
- package/dist/components/Card/tests/Card.test.stories.d.ts +0 -35
- package/dist/components/Card/tests/Card.test.stories.js +0 -54
- package/dist/components/Checkbox/tests/Checkbox.test.stories.d.ts +0 -25
- package/dist/components/Checkbox/tests/Checkbox.test.stories.js +0 -104
- package/dist/components/CheckboxGroup/tests/CheckboxGroup.test.stories.d.ts +0 -22
- package/dist/components/CheckboxGroup/tests/CheckboxGroup.test.stories.js +0 -78
- package/dist/components/Container/tests/Container.test.stories.d.ts +0 -15
- package/dist/components/Container/tests/Container.test.stories.js +0 -26
- package/dist/components/ContextMenu/tests/ContextMenu.test.stories.d.ts +0 -25
- package/dist/components/ContextMenu/tests/ContextMenu.test.stories.js +0 -53
- package/dist/components/Dismissible/tests/Dismissible.test.stories.d.ts +0 -19
- package/dist/components/Dismissible/tests/Dismissible.test.stories.js +0 -42
- package/dist/components/Divider/tests/Divider.test.stories.d.ts +0 -18
- package/dist/components/Divider/tests/Divider.test.stories.js +0 -47
- package/dist/components/FormControl/tests/FormControl.test.stories.d.ts +0 -20
- package/dist/components/FormControl/tests/FormControl.test.stories.js +0 -49
- package/dist/components/Hidden/tests/Hidden.test.stories.d.ts +0 -15
- package/dist/components/Hidden/tests/Hidden.test.stories.js +0 -20
- package/dist/components/HiddenVisually/tests/HiddenVisually.test.stories.d.ts +0 -15
- package/dist/components/HiddenVisually/tests/HiddenVisually.test.stories.js +0 -20
- package/dist/components/Hotkey/tests/Hotkey.test.stories.d.ts +0 -15
- package/dist/components/Hotkey/tests/Hotkey.test.stories.js +0 -26
- package/dist/components/Icon/tests/Icon.test.stories.d.ts +0 -16
- package/dist/components/Icon/tests/Icon.test.stories.js +0 -35
- package/dist/components/MenuItem/tests/MenuItem.test.stories.d.ts +0 -27
- package/dist/components/MenuItem/tests/MenuItem.test.stories.js +0 -116
- package/dist/components/Modal/tests/Modal.test.stories.d.ts +0 -31
- package/dist/components/Modal/tests/Modal.test.stories.js +0 -149
- package/dist/components/Overlay/tests/Overlay.test.stories.d.ts +0 -28
- package/dist/components/Overlay/tests/Overlay.test.stories.js +0 -148
- package/dist/components/Pagination/tests/Pagination.test.stories.d.ts +0 -23
- package/dist/components/Pagination/tests/Pagination.test.stories.js +0 -86
- package/dist/components/Progress/tests/Progress.test.stories.d.ts +0 -16
- package/dist/components/Progress/tests/Progress.test.stories.js +0 -35
- package/dist/components/Radio/tests/Radio.test.stories.d.ts +0 -30
- package/dist/components/Radio/tests/Radio.test.stories.js +0 -118
- package/dist/components/RadioGroup/tests/RadioGroup.test.stories.d.ts +0 -22
- package/dist/components/RadioGroup/tests/RadioGroup.test.stories.js +0 -78
- package/dist/components/Scrim/tests/Scrim.test.stories.d.ts +0 -15
- package/dist/components/Scrim/tests/Scrim.test.stories.js +0 -25
- package/dist/components/Skeleton/tests/Skeleton.test.stories.d.ts +0 -15
- package/dist/components/Skeleton/tests/Skeleton.test.stories.js +0 -23
- package/dist/components/Stepper/tests/Stepper.test.stories.d.ts +0 -20
- package/dist/components/Stepper/tests/Stepper.test.stories.js +0 -28
- package/dist/components/TextArea/tests/TextArea.test.stories.d.ts +0 -28
- package/dist/components/TextArea/tests/TextArea.test.stories.js +0 -99
- package/dist/components/Toast/tests/Toast.test.stories.d.ts +0 -16
- package/dist/components/Toast/tests/Toast.test.stories.js +0 -101
- package/dist/components/View/tests/View.test.stories.d.ts +0 -24
- package/dist/components/View/tests/View.test.stories.js +0 -50
@@ -1 +1 @@
|
|
1
|
-
.root{--rs-border-
|
1
|
+
.root{--rs-card-shadow-border:0 0 0 1px var(--rs-color-border-neutral-faded);--rs-card-shadow-elevation:0 0 transparent;background:var(--rs-color-background-elevation-base);box-shadow:var(--rs-card-shadow-border),var(--rs-card-shadow-elevation);color:var(--rs-color-foreground-neutral);display:block;overflow:hidden;position:relative;text-align:initial;transition:var(--rs-duration-fast) var(--rs-easing-accelerate);transition-property:box-shadow,border-color}.--selected{border-color:transparent;box-shadow:0 0 0 2px var(--rs-color-border-primary);transition-timing-function:var(--rs-easing-decelerate)}.--elevated{--rs-card-shadow-elevation:var(--rs-shadow-raised);background:var(--rs-color-background-elevation-raised)}.--actionable:not(.--selected){color:inherit;cursor:pointer;outline:none;text-decoration:none}[data-rs-keyboard] .--actionable:not(.--selected):focus{--rs-card-shadow-border:var(--rs-shadow-focus)}.--actionable:not(.--selected):before{background:rgba(var(--rs-color-rgb-background-neutral-faded),32%);content:"";inset:0;opacity:0;pointer-events:none;position:absolute;transition:opacity var(--rs-duration-fast) var(--rs-easing-standard)}@media (hover:hover) and (pointer:fine){.--actionable:not(.--selected):hover:before{opacity:1}}
|
@@ -1,4 +1,6 @@
|
|
1
1
|
import React from "react";
|
2
|
+
import { StoryObj } from "@storybook/react-vite";
|
3
|
+
import { fn } from "storybook/test";
|
2
4
|
declare const _default: {
|
3
5
|
title: string;
|
4
6
|
component: React.ForwardRefExoticComponent<{
|
@@ -22,9 +24,29 @@ declare const _default: {
|
|
22
24
|
};
|
23
25
|
};
|
24
26
|
export default _default;
|
25
|
-
export declare const padding:
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
export declare const
|
30
|
-
|
27
|
+
export declare const padding: {
|
28
|
+
name: string;
|
29
|
+
render: () => React.JSX.Element;
|
30
|
+
};
|
31
|
+
export declare const selected: {
|
32
|
+
name: string;
|
33
|
+
render: () => React.JSX.Element;
|
34
|
+
};
|
35
|
+
export declare const elevated: {
|
36
|
+
name: string;
|
37
|
+
render: () => React.JSX.Element;
|
38
|
+
};
|
39
|
+
export declare const bleed: {
|
40
|
+
name: string;
|
41
|
+
render: () => React.JSX.Element;
|
42
|
+
};
|
43
|
+
export declare const height: {
|
44
|
+
name: string;
|
45
|
+
render: () => React.JSX.Element;
|
46
|
+
};
|
47
|
+
export declare const onClick: StoryObj<{
|
48
|
+
handleClick: ReturnType<typeof fn>;
|
49
|
+
}>;
|
50
|
+
export declare const href: StoryObj;
|
51
|
+
export declare const as: StoryObj;
|
52
|
+
export declare const className: StoryObj;
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import React from "react";
|
2
2
|
import { Example, Placeholder } from "../../../utilities/storybook/index.js";
|
3
3
|
import Card from "../index.js";
|
4
|
+
import { expect, fn, userEvent } from "storybook/test";
|
4
5
|
export default {
|
5
6
|
title: "Components/Card",
|
6
7
|
component: Card,
|
@@ -10,71 +11,115 @@ export default {
|
|
10
11
|
},
|
11
12
|
},
|
12
13
|
};
|
13
|
-
export const padding =
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
14
|
+
export const padding = {
|
15
|
+
name: "padding",
|
16
|
+
render: () => (<Example>
|
17
|
+
<Example.Item title="padding: default">
|
18
|
+
<Card>
|
19
|
+
<Placeholder />
|
20
|
+
</Card>
|
21
|
+
</Example.Item>
|
19
22
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
23
|
+
<Example.Item title="padding: 2">
|
24
|
+
<Card padding={2}>
|
25
|
+
<Placeholder />
|
26
|
+
</Card>
|
27
|
+
</Example.Item>
|
25
28
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
29
|
+
<Example.Item title="padding: 0">
|
30
|
+
<Card padding={0}>
|
31
|
+
<Placeholder />
|
32
|
+
</Card>
|
33
|
+
</Example.Item>
|
31
34
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
<
|
53
|
-
<
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
35
|
+
<Example.Item title={["responsive padding", "[s] 4", "[m+] 8"]}>
|
36
|
+
<Card padding={{ s: 4, m: 8 }}>
|
37
|
+
<Placeholder />
|
38
|
+
</Card>
|
39
|
+
</Example.Item>
|
40
|
+
</Example>),
|
41
|
+
};
|
42
|
+
export const selected = {
|
43
|
+
name: "selected",
|
44
|
+
render: () => (<Example>
|
45
|
+
<Example.Item title="selected">
|
46
|
+
<Card selected>
|
47
|
+
<Placeholder />
|
48
|
+
</Card>
|
49
|
+
</Example.Item>
|
50
|
+
</Example>),
|
51
|
+
};
|
52
|
+
export const elevated = {
|
53
|
+
name: "elevated",
|
54
|
+
render: () => (<Example>
|
55
|
+
<Example.Item title="elevated">
|
56
|
+
<Card elevated>
|
57
|
+
<Placeholder />
|
58
|
+
</Card>
|
59
|
+
</Example.Item>
|
60
|
+
</Example>),
|
61
|
+
};
|
62
|
+
export const bleed = {
|
63
|
+
name: "bleed",
|
64
|
+
render: () => (<Example>
|
65
|
+
<Example.Item title="bleed: 4">
|
66
|
+
<Card bleed={4}>
|
67
|
+
<Placeholder />
|
68
|
+
</Card>
|
69
|
+
</Example.Item>
|
70
|
+
<Example.Item title={["responsive bleed", "[s] 4", "[m+] 0"]}>
|
71
|
+
<Card bleed={{ s: 4, m: 0 }}>
|
72
|
+
<Placeholder />
|
73
|
+
</Card>
|
74
|
+
</Example.Item>
|
75
|
+
</Example>),
|
76
|
+
};
|
77
|
+
export const height = {
|
78
|
+
name: "height",
|
79
|
+
render: () => (<Example>
|
80
|
+
<Example.Item title="height: 200px">
|
81
|
+
<Card height="200px"/>
|
82
|
+
</Example.Item>
|
83
|
+
</Example>),
|
84
|
+
};
|
85
|
+
export const onClick = {
|
86
|
+
name: "onClick",
|
87
|
+
args: {
|
88
|
+
handleClick: fn(),
|
89
|
+
},
|
90
|
+
render: (args) => <Card onClick={args.handleClick}>Trigger</Card>,
|
91
|
+
play: async ({ canvas, args }) => {
|
92
|
+
const { handleClick } = args;
|
93
|
+
const el = canvas.getAllByRole("button")[0];
|
94
|
+
await userEvent.click(el);
|
95
|
+
expect(handleClick).toHaveBeenCalledTimes(1);
|
96
|
+
expect(handleClick).toHaveBeenCalledWith(expect.objectContaining({ target: el }));
|
97
|
+
},
|
98
|
+
};
|
99
|
+
export const href = {
|
100
|
+
name: "href",
|
101
|
+
render: () => <Card href="https://reshaped.so">Trigger</Card>,
|
102
|
+
play: async ({ canvas }) => {
|
103
|
+
const el = canvas.getByRole("link");
|
104
|
+
expect(el).toHaveAttribute("href", "https://reshaped.so");
|
105
|
+
},
|
106
|
+
};
|
107
|
+
export const as = {
|
108
|
+
name: "as",
|
109
|
+
render: () => <Card as="span" attributes={{ "data-testid": "root" }}/>,
|
110
|
+
play: ({ canvas }) => {
|
111
|
+
const root = canvas.getByTestId("root");
|
112
|
+
expect(root.tagName).toBe("SPAN");
|
113
|
+
},
|
114
|
+
};
|
115
|
+
export const className = {
|
116
|
+
name: "className, attributes",
|
117
|
+
render: () => (<div data-testid="root">
|
118
|
+
<Card className="test-classname" attributes={{ id: "test-id" }}/>
|
119
|
+
</div>),
|
120
|
+
play: async ({ canvas }) => {
|
121
|
+
const root = canvas.getByTestId("root").firstChild;
|
122
|
+
expect(root).toHaveClass("test-classname");
|
123
|
+
expect(root).toHaveAttribute("id", "test-id");
|
124
|
+
},
|
125
|
+
};
|
@@ -1 +1 @@
|
|
1
|
-
.root{isolation:isolate;position:relative;width:100%}.control{display:none;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%) scale(.75);transform-origin:50%;transition:var(--rs-duration-fast) var(--rs-easing-standard);transition-property:opacity,transform;z-index:var(--rs-z-index-relative)}.--control-prev{left:0}.--control-next{left:100%}.--control-visible{opacity:1;transform:translate(-50%,-50%) scale(1)}.scroll{overflow:auto;-ms-overflow-style:none;overflow:-moz-scrollbars-none;-webkit-overflow-scrolling:touch;backface-visibility:hidden;margin:0 calc(var(--rs-unit-x1) * var(--rs-carousel-bleed) * -1);outline:none;padding:0 calc(var(--rs-unit-x1) * var(--rs-carousel-bleed));scroll-behavior:smooth;scroll-padding-inline-start:calc(var(--rs-unit-x1) * var(--rs-carousel-bleed));scroll-snap-type:x mandatory;scrollbar-width:none}[data-rs-keyboard] .scroll:focus{box-shadow:var(--rs-focus
|
1
|
+
.root{isolation:isolate;position:relative;width:100%}.control{display:none;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%) scale(.75);transform-origin:50%;transition:var(--rs-duration-fast) var(--rs-easing-standard);transition-property:opacity,transform;z-index:var(--rs-z-index-relative)}.--control-prev{left:0}.--control-next{left:100%}.--control-visible{opacity:1;transform:translate(-50%,-50%) scale(1)}.scroll{overflow:auto;-ms-overflow-style:none;overflow:-moz-scrollbars-none;-webkit-overflow-scrolling:touch;backface-visibility:hidden;margin:0 calc(var(--rs-unit-x1) * var(--rs-carousel-bleed) * -1);outline:none;padding:0 calc(var(--rs-unit-x1) * var(--rs-carousel-bleed));scroll-behavior:smooth;scroll-padding-inline-start:calc(var(--rs-unit-x1) * var(--rs-carousel-bleed));scroll-snap-type:x mandatory;scrollbar-width:none}[data-rs-keyboard] .scroll:focus{box-shadow:var(--rs-shadow-focus)}.scroll::-webkit-scrollbar{display:none;height:0;width:0}.item{--rs-carousel-item-width:calc(100% / var(--rs-carousel-items) - var(--rs-view-gap-value) * (var(--rs-carousel-items) - 1) / var(--rs-carousel-items));position:relative;scroll-snap-align:start;width:var(--rs-carousel-item-width)}@media (--rs-viewport-l ),(hover:hover){.--control-rendered{display:block}}@media (hover:none){.--bleed .item{width:calc(var(--rs-carousel-item-width) - 10% / var(--rs-carousel-items))}}@media (--rs-viewport-m ) and (hover:none){.--bleed-true--m .item{width:calc(var(--rs-carousel-item-width) - 10% / var(--rs-carousel-items))}.--bleed-false--m .item{width:var(--rs-carousel-item-width)}}@media (--rs-viewport-l ) and (hover:none){.--bleed-true--l .item{width:calc(var(--rs-carousel-item-width) - 10% / var(--rs-carousel-items))}.--bleed-false--l .item{width:var(--rs-carousel-item-width)}}@media (--rs-viewport-xl ) and (hover:none){.--bleed-true--xl .item{width:calc(var(--rs-carousel-item-width) - 10% / var(--rs-carousel-items))}.--bleed-false--xl .item{width:var(--rs-carousel-item-width)}}.root{--rs-carousel-items-s:unset;--rs-carousel-items-m:var(--rs-carousel-items-s);--rs-carousel-items-l:var(--rs-carousel-items-m);--rs-carousel-items-xl:var(--rs-carousel-items-l);--rs-carousel-items:var(--rs-carousel-items-s);--rs-carousel-bleed-s:0;--rs-carousel-bleed-m:var(--rs-carousel-bleed-s);--rs-carousel-bleed-l:var(--rs-carousel-bleed-m);--rs-carousel-bleed-xl:var(--rs-carousel-bleed-l);--rs-carousel-bleed:var(--rs-carousel-bleed-s)}@media (--rs-viewport-m ){.root{--rs-carousel-items:var(--rs-carousel-items-m);--rs-carousel-bleed:var(--rs-carousel-bleed-m)}}@media (--rs-viewport-l ){.root{--rs-carousel-items:var(--rs-carousel-items-l);--rs-carousel-bleed:var(--rs-carousel-bleed-l)}}@media (--rs-viewport-xl ){.root{--rs-carousel-items:var(--rs-carousel-items-xl);--rs-carousel-bleed:var(--rs-carousel-bleed-xl)}}
|
@@ -1 +1 @@
|
|
1
|
-
.root{align-items:center;cursor:pointer;display:inline-flex;gap:var(--rs-checkbox-gap);user-select:none;vertical-align:top;-webkit-tap-highlight-color:transparent}@media (hover:hover) and (pointer:fine){.root:hover .decorator{background:var(--rs-color-background-neutral-faded)}}.field{position:relative}.decorator{background:var(--rs-color-background-elevation-base);border:1px solid var(--rs-color-border-neutral);border-radius:var(--rs-radius-small);color:var(--rs-color-on-background-primary);height:var(--rs-checkbox-line-height);transition:var(--rs-duration-fast) var(--rs-easing-standard);transition-property:background-color,border-color;width:var(--rs-checkbox-line-height)}.decorator:before{background:var(--rs-color-on-background-primary);border-radius:var(--rs-radius-circular);content:"";height:1.5px;left:50%;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%) scale(0);transition:var(--rs-duration-fast) var(--rs-easing-standard);transition-property:opacity,transform;width:calc(var(--rs-checkbox-line-height) * .5)}.--size-small{--rs-checkbox-line-height:var(--rs-line-height-caption-1);--rs-checkbox-gap:var(--rs-unit-x1)}.--size-medium{--rs-checkbox-line-height:var(--rs-line-height-body-3);--rs-checkbox-gap:var(--rs-unit-x2)}.--size-large{--rs-checkbox-line-height:var(--rs-line-height-body-2);--rs-checkbox-gap:var(--rs-unit-x2)}.icon{left:50%;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%) scale(0);transition:var(--rs-duration-fast) var(--rs-easing-standard);transition-property:opacity,transform}[data-rs-keyboard] .input:focus-visible+.decorator{box-shadow:var(--rs-focus
|
1
|
+
.root{align-items:center;cursor:pointer;display:inline-flex;gap:var(--rs-checkbox-gap);user-select:none;vertical-align:top;-webkit-tap-highlight-color:transparent}@media (hover:hover) and (pointer:fine){.root:hover .decorator{background:var(--rs-color-background-neutral-faded)}}.field{position:relative}.decorator{background:var(--rs-color-background-elevation-base);border:1px solid var(--rs-color-border-neutral);border-radius:var(--rs-radius-small);color:var(--rs-color-on-background-primary);height:var(--rs-checkbox-line-height);transition:var(--rs-duration-fast) var(--rs-easing-standard);transition-property:background-color,border-color;width:var(--rs-checkbox-line-height)}.decorator:before{background:var(--rs-color-on-background-primary);border-radius:var(--rs-radius-circular);content:"";height:1.5px;left:50%;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%) scale(0);transition:var(--rs-duration-fast) var(--rs-easing-standard);transition-property:opacity,transform;width:calc(var(--rs-checkbox-line-height) * .5)}.--size-small{--rs-checkbox-line-height:var(--rs-line-height-caption-1);--rs-checkbox-gap:var(--rs-unit-x1)}.--size-medium{--rs-checkbox-line-height:var(--rs-line-height-body-3);--rs-checkbox-gap:var(--rs-unit-x2)}.--size-large{--rs-checkbox-line-height:var(--rs-line-height-body-2);--rs-checkbox-gap:var(--rs-unit-x2)}.icon{left:50%;opacity:0;position:absolute;top:50%;transform:translate(-50%,-50%) scale(0);transition:var(--rs-duration-fast) var(--rs-easing-standard);transition-property:opacity,transform}[data-rs-keyboard] .input:focus-visible+.decorator{box-shadow:var(--rs-shadow-focus)}.root.--error .decorator{border-color:var(--rs-color-border-critical)}.input:checked+.decorator,.input:indeterminate+.decorator{background:var(--rs-color-background-primary);border-color:var(--rs-color-background-primary)}.input:checked+.decorator .icon,.input:indeterminate+.decorator:before{opacity:1;transform:translate(-50%,-50%) scale(1)}.root.--disabled{color:var(--rs-color-foreground-disabled);cursor:not-allowed}.root.--disabled .decorator{background:var(--rs-color-background-disabled-faded);border-color:var(--rs-color-border-disabled);color:var(--rs-color-foreground-disabled)}.root.--disabled .input:checked+.decorator,.root.--disabled .input:indeterminate+.decorator{background:var(--rs-color-background-disabled);border-color:transparent}.root.--disabled .input:checked+.decorator:before,.root.--disabled .input:indeterminate+.decorator:before{background-color:var(--rs-color-foreground-disabled)}@media (--rs-viewport-m ){.--size-small--m{--rs-checkbox-line-height:var(--rs-line-height-caption-1);--rs-checkbox-gap:var(--rs-unit-x1)}.--size-medium--m{--rs-checkbox-line-height:var(--rs-line-height-body-3);--rs-checkbox-gap:var(--rs-unit-x2)}.--size-large--m{--rs-checkbox-line-height:var(--rs-line-height-body-2);--rs-checkbox-gap:var(--rs-unit-x2)}}@media (--rs-viewport-l ){.--size-small--l{--rs-checkbox-line-height:var(--rs-line-height-caption-1);--rs-checkbox-gap:var(--rs-unit-x1)}.--size-medium--l{--rs-checkbox-line-height:var(--rs-line-height-body-3);--rs-checkbox-gap:var(--rs-unit-x2)}.--size-large--l{--rs-checkbox-line-height:var(--rs-line-height-body-2);--rs-checkbox-gap:var(--rs-unit-x2)}}@media (--rs-viewport-xl ){.--size-small--xl{--rs-checkbox-line-height:var(--rs-line-height-caption-1);--rs-checkbox-gap:var(--rs-unit-x1)}.--size-medium--xl{--rs-checkbox-line-height:var(--rs-line-height-body-3);--rs-checkbox-gap:var(--rs-unit-x2)}.--size-large--xl{--rs-checkbox-line-height:var(--rs-line-height-body-2);--rs-checkbox-gap:var(--rs-unit-x2)}}
|
@@ -1,3 +1,5 @@
|
|
1
|
+
import { StoryObj } from "@storybook/react-vite";
|
2
|
+
import { fn } from "storybook/test";
|
1
3
|
declare const _default: {
|
2
4
|
title: string;
|
3
5
|
component: import("react").FC<import("./..").CheckboxProps>;
|
@@ -8,7 +10,21 @@ declare const _default: {
|
|
8
10
|
};
|
9
11
|
};
|
10
12
|
export default _default;
|
11
|
-
export declare const
|
12
|
-
export declare const size:
|
13
|
-
|
14
|
-
|
13
|
+
export declare const render: StoryObj;
|
14
|
+
export declare const size: {
|
15
|
+
name: string;
|
16
|
+
render: () => import("react").JSX.Element;
|
17
|
+
};
|
18
|
+
export declare const error: {
|
19
|
+
name: string;
|
20
|
+
render: () => import("react").JSX.Element;
|
21
|
+
};
|
22
|
+
export declare const disabled: StoryObj;
|
23
|
+
export declare const checked: StoryObj<{
|
24
|
+
handleChange: ReturnType<typeof fn>;
|
25
|
+
}>;
|
26
|
+
export declare const defaultChecked: StoryObj<{
|
27
|
+
handleChange: ReturnType<typeof fn>;
|
28
|
+
}>;
|
29
|
+
export declare const indeterminate: StoryObj;
|
30
|
+
export declare const className: StoryObj;
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import { Example } from "../../../utilities/storybook/index.js";
|
2
2
|
import Checkbox from "../index.js";
|
3
3
|
import View from "../../View/index.js";
|
4
|
+
import { expect, fn, userEvent } from "storybook/test";
|
4
5
|
export default {
|
5
6
|
title: "Components/Checkbox",
|
6
7
|
component: Checkbox,
|
@@ -10,91 +11,161 @@ export default {
|
|
10
11
|
},
|
11
12
|
},
|
12
13
|
};
|
13
|
-
export const
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
Checkbox
|
43
|
-
|
44
|
-
|
45
|
-
Checkbox
|
46
|
-
</
|
47
|
-
</
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
Checkbox
|
53
|
-
|
54
|
-
|
14
|
+
export const render = {
|
15
|
+
name: "name, value",
|
16
|
+
render: () => (<Checkbox name="test-name" value="test-value">
|
17
|
+
Content
|
18
|
+
</Checkbox>),
|
19
|
+
play: async ({ canvas }) => {
|
20
|
+
const input = canvas.getByRole("checkbox");
|
21
|
+
expect(input).toHaveAttribute("value", "test-value");
|
22
|
+
expect(input).toHaveAttribute("name", "test-name");
|
23
|
+
expect(input).not.toBeChecked();
|
24
|
+
},
|
25
|
+
};
|
26
|
+
export const size = {
|
27
|
+
name: "size",
|
28
|
+
render: () => (<Example>
|
29
|
+
<Example.Item title="size: small">
|
30
|
+
<View gap={4} direction="row">
|
31
|
+
<Checkbox name="animal" value="dog" size="small" defaultChecked>
|
32
|
+
Checkbox
|
33
|
+
</Checkbox>
|
34
|
+
<Checkbox name="animal" value="dog" size="small" indeterminate>
|
35
|
+
Checkbox
|
36
|
+
</Checkbox>
|
37
|
+
</View>
|
38
|
+
</Example.Item>
|
39
|
+
<Example.Item title="size: medium">
|
40
|
+
<View gap={4} direction="row">
|
41
|
+
<Checkbox name="animal" value="dog" size="medium" defaultChecked>
|
42
|
+
Checkbox
|
43
|
+
</Checkbox>
|
44
|
+
<Checkbox name="animal" value="dog" size="medium" indeterminate>
|
45
|
+
Checkbox
|
46
|
+
</Checkbox>
|
47
|
+
</View>
|
48
|
+
</Example.Item>
|
49
|
+
<Example.Item title="size: large">
|
50
|
+
<View gap={4} direction="row">
|
51
|
+
<Checkbox name="animal" value="dog" size="large" defaultChecked>
|
52
|
+
Checkbox
|
53
|
+
</Checkbox>
|
54
|
+
<Checkbox name="animal" value="dog" size="large" indeterminate>
|
55
|
+
Checkbox
|
56
|
+
</Checkbox>
|
57
|
+
</View>
|
58
|
+
</Example.Item>
|
59
|
+
<Example.Item title="size: responsive, s: small, m: large">
|
60
|
+
<View gap={4} direction="row">
|
61
|
+
<Checkbox name="animal" value="dog" size={{ s: "small", m: "large" }} defaultChecked>
|
62
|
+
Checkbox
|
63
|
+
</Checkbox>
|
64
|
+
</View>
|
65
|
+
</Example.Item>
|
66
|
+
</Example>),
|
67
|
+
};
|
68
|
+
export const error = {
|
69
|
+
name: "hasError",
|
70
|
+
render: () => (<Example>
|
71
|
+
<Example.Item title="error">
|
72
|
+
<Checkbox name="animal" value="dog" hasError>
|
55
73
|
Checkbox
|
56
74
|
</Checkbox>
|
57
|
-
</
|
58
|
-
</Example
|
59
|
-
|
60
|
-
|
61
|
-
|
75
|
+
</Example.Item>
|
76
|
+
</Example>),
|
77
|
+
};
|
78
|
+
export const disabled = {
|
79
|
+
name: "disabled",
|
80
|
+
render: () => (<Example>
|
81
|
+
<Example.Item title="disabled">
|
82
|
+
<Checkbox name="animal" value="dog" disabled>
|
62
83
|
Checkbox
|
63
84
|
</Checkbox>
|
64
|
-
|
85
|
+
</Example.Item>
|
86
|
+
<Example.Item title="disabled, checked">
|
87
|
+
<Checkbox name="animal" value="dog" disabled checked>
|
65
88
|
Checkbox
|
66
89
|
</Checkbox>
|
67
|
-
</
|
68
|
-
|
69
|
-
|
70
|
-
<View gap={4} direction="row">
|
71
|
-
<Checkbox name="animal" value="dog" size={{ s: "small", m: "large" }} defaultChecked>
|
90
|
+
</Example.Item>
|
91
|
+
<Example.Item title="disabled, indeterminate">
|
92
|
+
<Checkbox name="animal" value="dog" disabled indeterminate>
|
72
93
|
Checkbox
|
73
94
|
</Checkbox>
|
74
|
-
</
|
75
|
-
</Example
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
95
|
+
</Example.Item>
|
96
|
+
</Example>),
|
97
|
+
play: async ({ canvas }) => {
|
98
|
+
const [input] = canvas.getAllByRole("checkbox");
|
99
|
+
expect(input).toBeDisabled();
|
100
|
+
},
|
101
|
+
};
|
102
|
+
export const checked = {
|
103
|
+
name: "checked, controlled",
|
104
|
+
args: {
|
105
|
+
handleChange: fn(),
|
106
|
+
},
|
107
|
+
render: (args) => (<Checkbox name="test-name" value="test-value" checked onChange={args.handleChange}>
|
108
|
+
Content
|
109
|
+
</Checkbox>),
|
110
|
+
play: async ({ canvas, args }) => {
|
111
|
+
const input = canvas.getByRole("checkbox");
|
112
|
+
expect(input).toBeChecked();
|
113
|
+
await userEvent.click(input);
|
114
|
+
expect(args.handleChange).toHaveBeenCalledTimes(1);
|
115
|
+
expect(args.handleChange).toHaveBeenCalledWith({
|
116
|
+
name: "test-name",
|
117
|
+
value: "test-value",
|
118
|
+
checked: false,
|
119
|
+
event: expect.objectContaining({ target: input }),
|
120
|
+
});
|
121
|
+
// Still checked because it's controlled
|
122
|
+
expect(input).toBeChecked();
|
123
|
+
},
|
124
|
+
};
|
125
|
+
export const defaultChecked = {
|
126
|
+
name: "defaultChecked, uncontrolled",
|
127
|
+
args: {
|
128
|
+
handleChange: fn(),
|
129
|
+
},
|
130
|
+
render: (args) => (<Checkbox name="test-name" value="test-value" defaultChecked onChange={args.handleChange}>
|
131
|
+
Content
|
132
|
+
</Checkbox>),
|
133
|
+
play: async ({ canvas, args }) => {
|
134
|
+
const input = canvas.getByRole("checkbox");
|
135
|
+
expect(input).toBeChecked();
|
136
|
+
await userEvent.click(input);
|
137
|
+
expect(args.handleChange).toHaveBeenCalledTimes(1);
|
138
|
+
expect(args.handleChange).toHaveBeenCalledWith({
|
139
|
+
name: "test-name",
|
140
|
+
value: "test-value",
|
141
|
+
checked: false,
|
142
|
+
event: expect.objectContaining({ target: input }),
|
143
|
+
});
|
144
|
+
expect(input).not.toBeChecked();
|
145
|
+
},
|
146
|
+
};
|
147
|
+
export const indeterminate = {
|
148
|
+
name: "indeterminate",
|
149
|
+
render: () => (<Checkbox name="test-name" value="test-value" indeterminate>
|
150
|
+
Content
|
151
|
+
</Checkbox>),
|
152
|
+
play: async ({ canvas }) => {
|
153
|
+
const input = canvas.getByRole("checkbox");
|
154
|
+
expect(input.indeterminate).toBeTruthy();
|
155
|
+
await userEvent.click(input);
|
156
|
+
expect(input.indeterminate).toBeFalsy();
|
157
|
+
},
|
158
|
+
};
|
159
|
+
export const className = {
|
160
|
+
name: "className, attributes",
|
161
|
+
render: () => (<div data-testid="root">
|
162
|
+
<Checkbox className="test-classname" attributes={{ id: "test-id" }}>
|
163
|
+
Content
|
98
164
|
</Checkbox>
|
99
|
-
</
|
100
|
-
|
165
|
+
</div>),
|
166
|
+
play: async ({ canvas }) => {
|
167
|
+
const root = canvas.getByTestId("root").firstChild;
|
168
|
+
expect(root).toHaveClass("test-classname");
|
169
|
+
expect(root).toHaveAttribute("id", "test-id");
|
170
|
+
},
|
171
|
+
};
|
@@ -1,3 +1,5 @@
|
|
1
|
+
import { StoryObj } from "@storybook/react-vite";
|
2
|
+
import { fn } from "storybook/test";
|
1
3
|
declare const _default: {
|
2
4
|
title: string;
|
3
5
|
component: import("react").FC<import("./..").CheckboxGroupProps>;
|
@@ -8,5 +10,10 @@ declare const _default: {
|
|
8
10
|
};
|
9
11
|
};
|
10
12
|
export default _default;
|
11
|
-
export declare const
|
12
|
-
|
13
|
+
export declare const value: StoryObj<{
|
14
|
+
handleChange: ReturnType<typeof fn>;
|
15
|
+
}>;
|
16
|
+
export declare const defaultValue: StoryObj<{
|
17
|
+
handleChange: ReturnType<typeof fn>;
|
18
|
+
}>;
|
19
|
+
export declare const disabled: StoryObj;
|