reshaped 3.7.4 → 3.8.0-canary.1

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 (110) hide show
  1. package/CHANGELOG-extra.md +3 -0
  2. package/CHANGELOG.md +68 -55
  3. package/LICENSE.md +1 -1
  4. package/README.md +24 -0
  5. package/dist/bundle.css +1 -1
  6. package/dist/bundle.js +11 -11
  7. package/dist/cjs/themes/index.d.ts +1 -0
  8. package/dist/cjs/themes/index.js +3 -1
  9. package/dist/components/Accordion/Accordion.types.d.ts +13 -2
  10. package/dist/components/ActionBar/ActionBar.types.d.ts +10 -0
  11. package/dist/components/Actionable/Actionable.types.d.ts +14 -0
  12. package/dist/components/Alert/Alert.types.d.ts +11 -0
  13. package/dist/components/Autocomplete/Autocomplete.types.d.ts +7 -0
  14. package/dist/components/Avatar/Avatar.types.d.ts +18 -0
  15. package/dist/components/Avatar/tests/Avatar.stories.js +1 -1
  16. package/dist/components/Badge/Badge.types.d.ts +25 -1
  17. package/dist/components/Badge/tests/Badge.test.stories.js +3 -1
  18. package/dist/components/Breadcrumbs/Breadcrumbs.types.d.ts +11 -0
  19. package/dist/components/Button/Button.types.d.ts +20 -0
  20. package/dist/components/Calendar/Calendar.types.d.ts +31 -0
  21. package/dist/components/Calendar/tests/Calendar.stories.js +1 -1
  22. package/dist/components/Card/Card.types.d.ts +12 -0
  23. package/dist/components/Carousel/Carousel.types.d.ts +13 -0
  24. package/dist/components/Checkbox/Checkbox.types.d.ts +19 -0
  25. package/dist/components/Checkbox/tests/Checkbox.stories.js +1 -1
  26. package/dist/components/CheckboxGroup/CheckboxGroup.types.d.ts +10 -0
  27. package/dist/components/Container/Container.types.d.ts +11 -1
  28. package/dist/components/Dismissible/Dismissible.types.d.ts +10 -0
  29. package/dist/components/Divider/Divider.types.d.ts +6 -0
  30. package/dist/components/DropdownMenu/DropdownMenu.types.d.ts +4 -1
  31. package/dist/components/FileUpload/FileUpload.types.d.ts +10 -0
  32. package/dist/components/Flyout/Flyout.types.d.ts +41 -0
  33. package/dist/components/Flyout/FlyoutContent.js +1 -1
  34. package/dist/components/Flyout/FlyoutControlled.js +2 -1
  35. package/dist/components/Flyout/tests/Flyout.stories.d.ts +4 -0
  36. package/dist/components/Flyout/tests/Flyout.stories.js +59 -1
  37. package/dist/components/Flyout/useFlyout.d.ts +1 -0
  38. package/dist/components/Flyout/useFlyout.js +3 -1
  39. package/dist/components/Flyout/utilities/calculatePosition.d.ts +1 -1
  40. package/dist/components/Flyout/utilities/calculatePosition.js +52 -28
  41. package/dist/components/Flyout/utilities/flyout.js +22 -18
  42. package/dist/components/Flyout/utilities/helpers.d.ts +7 -0
  43. package/dist/components/Flyout/utilities/helpers.js +14 -0
  44. package/dist/components/Flyout/utilities/isFullyVisible.d.ts +5 -1
  45. package/dist/components/Flyout/utilities/isFullyVisible.js +1 -1
  46. package/dist/components/FormControl/FormControl.types.d.ts +9 -0
  47. package/dist/components/Grid/Grid.js +3 -1
  48. package/dist/components/Grid/Grid.module.css +1 -1
  49. package/dist/components/Grid/Grid.types.d.ts +31 -0
  50. package/dist/components/Grid/tests/Grid.stories.d.ts +3 -0
  51. package/dist/components/Grid/tests/Grid.stories.js +39 -1
  52. package/dist/components/Hidden/Hidden.types.d.ts +4 -0
  53. package/dist/components/HiddenVisually/HiddenVisually.types.d.ts +1 -0
  54. package/dist/components/Hotkey/Hotkey.types.d.ts +4 -0
  55. package/dist/components/Icon/Icon.types.d.ts +6 -0
  56. package/dist/components/Image/Image.types.d.ts +15 -0
  57. package/dist/components/Link/Link.types.d.ts +7 -0
  58. package/dist/components/Loader/Loader.types.d.ts +5 -0
  59. package/dist/components/MenuItem/MenuItem.types.d.ts +13 -1
  60. package/dist/components/Modal/Modal.types.d.ts +19 -0
  61. package/dist/components/NumberField/NumberField.types.d.ts +10 -0
  62. package/dist/components/Overlay/Overlay.types.d.ts +13 -0
  63. package/dist/components/Pagination/Pagination.types.d.ts +11 -29
  64. package/dist/components/PinField/PinField.module.css +1 -1
  65. package/dist/components/PinField/PinField.types.d.ts +13 -0
  66. package/dist/components/PinField/tests/PinField.stories.d.ts +24 -3
  67. package/dist/components/PinField/tests/PinField.stories.js +194 -47
  68. package/dist/components/Popover/Popover.types.d.ts +4 -1
  69. package/dist/components/Progress/Progress.types.d.ts +9 -0
  70. package/dist/components/ProgressIndicator/ProgressIndicator.js +13 -84
  71. package/dist/components/ProgressIndicator/ProgressIndicator.module.css +1 -1
  72. package/dist/components/ProgressIndicator/ProgressIndicator.types.d.ts +8 -0
  73. package/dist/components/ProgressIndicator/tests/ProgressIndicator.stories.js +8 -1
  74. package/dist/components/Radio/Radio.types.d.ts +12 -0
  75. package/dist/components/RadioGroup/RadioGroup.types.d.ts +14 -0
  76. package/dist/components/Reshaped/Reshaped.css +1 -1
  77. package/dist/components/Reshaped/Reshaped.types.d.ts +12 -0
  78. package/dist/components/Resizable/Resizable.types.d.ts +7 -0
  79. package/dist/components/Scrim/Scrim.types.d.ts +6 -1
  80. package/dist/components/ScrollArea/ScrollArea.types.d.ts +7 -0
  81. package/dist/components/Select/Select.types.d.ts +27 -0
  82. package/dist/components/Skeleton/Skeleton.types.d.ts +2 -0
  83. package/dist/components/Slider/Slider.types.d.ts +56 -0
  84. package/dist/components/Stepper/Stepper.types.d.ts +13 -0
  85. package/dist/components/Switch/Switch.types.d.ts +16 -0
  86. package/dist/components/Table/Table.types.d.ts +29 -0
  87. package/dist/components/Tabs/Tabs.module.css +1 -1
  88. package/dist/components/Tabs/Tabs.types.d.ts +24 -0
  89. package/dist/components/Tabs/TabsItem.js +2 -2
  90. package/dist/components/Tabs/tests/Tabs.stories.js +6 -6
  91. package/dist/components/Text/Text.types.d.ts +12 -0
  92. package/dist/components/TextArea/TextArea.types.d.ts +17 -0
  93. package/dist/components/TextField/TextField.types.d.ts +29 -0
  94. package/dist/components/Theme/Theme.js +4 -1
  95. package/dist/components/Theme/Theme.types.d.ts +5 -0
  96. package/dist/components/Timeline/Timeline.types.d.ts +7 -0
  97. package/dist/components/Toast/Toast.types.d.ts +18 -0
  98. package/dist/components/ToggleButton/ToggleButton.types.d.ts +9 -0
  99. package/dist/components/ToggleButtonGroup/ToggleButtonGroup.types.d.ts +8 -0
  100. package/dist/components/Tooltip/Tooltip.types.d.ts +5 -0
  101. package/dist/components/View/View.types.d.ts +56 -1
  102. package/dist/components/_private/Aligner/Aligner.types.d.ts +6 -0
  103. package/dist/themes/index.d.ts +1 -0
  104. package/dist/themes/index.js +1 -0
  105. package/package.json +47 -32
  106. package/LICENSE-SOURCE.md +0 -40
  107. package/dist/components/Grid/tests/Grid.test.stories.d.ts +0 -23
  108. package/dist/components/Grid/tests/Grid.test.stories.js +0 -42
  109. package/dist/components/PinField/tests/PinField.test.stories.d.ts +0 -29
  110. package/dist/components/PinField/tests/PinField.test.stories.js +0 -177
@@ -1,177 +0,0 @@
1
- import { expect, fn, userEvent, waitFor } from "storybook/test";
2
- import FormControl from "../../FormControl/index.js";
3
- import PinField from "../index.js";
4
- export default {
5
- title: "Components/PinField/tests",
6
- component: PinField,
7
- parameters: {
8
- iframe: {
9
- url: "https://reshaped.so/docs/components/pin-field",
10
- },
11
- chromatic: { disableSnapshot: true },
12
- },
13
- };
14
- export const render = {
15
- name: "rendering",
16
- render: () => <PinField name="test-name" inputAttributes={{ "aria-label": "Label" }}/>,
17
- play: async ({ canvas }) => {
18
- const elInput = canvas.getByRole("textbox");
19
- expect(elInput).toBeInTheDocument();
20
- expect(elInput).toHaveAttribute("name", "test-name");
21
- expect(elInput).toHaveAttribute("autocomplete", "one-time-code");
22
- expect(elInput).toHaveAttribute("inputmode", "numeric");
23
- },
24
- };
25
- export const valueLength = {
26
- name: "valueLength",
27
- render: () => (<PinField name="test-name" valueLength={6} inputAttributes={{ "aria-label": "Label" }}/>),
28
- play: async ({ canvas }) => {
29
- const elInput = canvas.getByRole("textbox");
30
- expect(elInput).toHaveAttribute("maxlength", "6");
31
- },
32
- };
33
- export const defaultValue = {
34
- name: "defaultValue, uncontrolled",
35
- args: {
36
- handleChange: fn(),
37
- },
38
- render: (args) => (<PinField name="test-name" onChange={args.handleChange} defaultValue="12" inputAttributes={{ "aria-label": "Label" }}/>),
39
- play: async ({ canvas, args }) => {
40
- const elInput = canvas.getByRole("textbox");
41
- elInput.focus();
42
- await userEvent.keyboard("3");
43
- expect(args.handleChange).toHaveBeenCalledTimes(1);
44
- expect(args.handleChange).toHaveBeenCalledWith({
45
- value: "123",
46
- name: "test-name",
47
- event: expect.objectContaining({ target: elInput }),
48
- });
49
- expect(elInput).toHaveValue("123");
50
- },
51
- };
52
- export const value = {
53
- name: "value, controlled",
54
- args: {
55
- handleChange: fn(),
56
- },
57
- render: (args) => (<PinField name="test-name" onChange={args.handleChange} value="12" inputAttributes={{ "aria-label": "Label" }}/>),
58
- play: async ({ canvas, args }) => {
59
- const elInput = canvas.getByRole("textbox");
60
- elInput.focus();
61
- await userEvent.keyboard("3");
62
- expect(args.handleChange).toHaveBeenCalledTimes(1);
63
- expect(args.handleChange).toHaveBeenCalledWith({
64
- value: "123",
65
- name: "test-name",
66
- event: expect.objectContaining({ target: elInput }),
67
- });
68
- expect(elInput).toHaveValue("12");
69
- },
70
- };
71
- export const pattern = {
72
- name: "pattern",
73
- args: {
74
- handleChange: fn(),
75
- },
76
- render: (args) => (<PinField name="test-name" pattern="alphabetic" defaultValue="ab" onChange={args.handleChange} inputAttributes={{ "aria-label": "Label" }}/>),
77
- play: async ({ canvas, args }) => {
78
- const elInput = canvas.getByRole("textbox");
79
- elInput.focus();
80
- await userEvent.keyboard("3");
81
- expect(elInput).toHaveValue("ab");
82
- expect(args.handleChange).toHaveBeenCalledTimes(0);
83
- await userEvent.keyboard("c");
84
- expect(elInput).toHaveValue("abc");
85
- expect(args.handleChange).toHaveBeenCalledTimes(1);
86
- },
87
- };
88
- export const formControl = {
89
- name: "with FormControl",
90
- render: () => (<FormControl>
91
- <FormControl.Label>Label</FormControl.Label>
92
- <PinField name="test-name"/>
93
- </FormControl>),
94
- play: async ({ canvas }) => {
95
- const elInput = canvas.getByRole("textbox");
96
- expect(elInput).toHaveAccessibleName("Label");
97
- },
98
- };
99
- export const keyboard = {
100
- name: "keyboard navigation",
101
- render: () => <PinField name="test-name" inputAttributes={{ "aria-label": "Label" }}/>,
102
- play: async ({ canvas }) => {
103
- const elInput = canvas.getByRole("textbox");
104
- elInput.focus();
105
- expect(elInput.selectionStart).toEqual(0);
106
- expect(elInput.selectionEnd).toEqual(0);
107
- await userEvent.keyboard("1");
108
- await waitFor(() => {
109
- expect(elInput.selectionStart).toEqual(1);
110
- expect(elInput.selectionEnd).toEqual(1);
111
- });
112
- await userEvent.keyboard("234");
113
- await waitFor(() => {
114
- expect(elInput.selectionStart).toEqual(3);
115
- expect(elInput.selectionEnd).toEqual(4);
116
- });
117
- // Move back to the first character
118
- await userEvent.keyboard("{ArrowLeft/}");
119
- await waitFor(() => {
120
- expect(elInput.selectionStart).toEqual(2);
121
- expect(elInput.selectionEnd).toEqual(3);
122
- });
123
- await userEvent.keyboard("{ArrowLeft/}");
124
- await waitFor(() => {
125
- expect(elInput.selectionStart).toEqual(1);
126
- expect(elInput.selectionEnd).toEqual(2);
127
- });
128
- await userEvent.keyboard("{ArrowLeft}");
129
- await waitFor(() => {
130
- expect(elInput.selectionStart).toEqual(0);
131
- expect(elInput.selectionEnd).toEqual(1);
132
- });
133
- // Move to the third character
134
- await userEvent.keyboard("{ArrowRight}");
135
- await waitFor(() => {
136
- expect(elInput.selectionStart).toEqual(1);
137
- expect(elInput.selectionEnd).toEqual(2);
138
- });
139
- await userEvent.keyboard("{ArrowRight}");
140
- await waitFor(() => {
141
- expect(elInput.selectionStart).toEqual(2);
142
- expect(elInput.selectionEnd).toEqual(3);
143
- });
144
- expect(elInput).toHaveValue("1234");
145
- await userEvent.keyboard("{backspace}");
146
- expect(elInput).toHaveValue("124");
147
- await waitFor(() => {
148
- expect(elInput.selectionStart).toEqual(2);
149
- expect(elInput.selectionEnd).toEqual(3);
150
- });
151
- // Switched to type mode
152
- await userEvent.keyboard("{ArrowRight}");
153
- await waitFor(() => {
154
- expect(elInput.selectionStart).toEqual(3);
155
- expect(elInput.selectionStart).toEqual(3);
156
- });
157
- // Can't move further
158
- await userEvent.keyboard("{ArrowRight}");
159
- await waitFor(() => {
160
- expect(elInput.selectionStart).toEqual(3);
161
- expect(elInput.selectionStart).toEqual(3);
162
- });
163
- },
164
- };
165
- export const className = {
166
- name: "className, attributes",
167
- render: () => (<div data-testid="root">
168
- <PinField name="test-name" className="test-classname" attributes={{ id: "test-id" }} inputAttributes={{ "aria-label": "Label", id: "test-input-id" }}/>
169
- </div>),
170
- play: async ({ canvas }) => {
171
- const root = canvas.getByTestId("root").firstChild;
172
- const input = canvas.queryByLabelText("Label");
173
- expect(root).toHaveClass("test-classname");
174
- expect(root).toHaveAttribute("id", "test-id");
175
- expect(input).toHaveAttribute("id", "test-input-id");
176
- },
177
- };