@sproutsocial/racine 11.8.0 → 11.9.0-typescript.0

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.
@@ -1,37 +1,36 @@
1
- // @flow
2
- import * as React from "react";
1
+ import React from "react";
3
2
  import Container from "./styles";
4
3
 
5
- export type TypeProps = {
4
+ export interface ButtonType {
6
5
  /** If the button is being used as an anchor, this prop will cause the link to open in a new tab. */
7
- external?: boolean,
8
- size?: "large" | "default",
6
+ external?: boolean;
7
+ size?: "large" | "default";
9
8
  /** What the button looks like. "default" is deprecated in favor of "unstyled" */
10
- appearance?:
9
+ appearance:
11
10
  | "primary"
12
11
  | "secondary"
13
12
  | "pill"
14
13
  | "destructive"
15
14
  | "default"
16
15
  | "unstyled"
17
- | "placeholder",
16
+ | "placeholder";
18
17
  /** Set the button to display in its active state */
19
- active?: boolean,
18
+ active?: boolean;
20
19
  /** Disables user action and applies a disabled style on the button */
21
- disabled?: boolean,
22
- children: React.Node,
20
+ disabled?: boolean;
21
+ children: React.ReactNode;
23
22
  /** Setting this prop will cause the component to be rendered as an anchor element instead of a button element */
24
- href?: string,
23
+ href?: string;
25
24
  /** Used to get a reference to the underlying button */
26
- innerRef?: React.Ref<"button">,
25
+ innerRef?: React.Ref<"button">;
27
26
  /** Action to perform when the button is clicked */
28
- onClick?: (e: SyntheticEvent<HTMLButtonElement>) => any,
29
- title?: string,
30
- qa?: Object,
31
- as?: any,
27
+ onClick?: () => void;
28
+ title?: string;
29
+ qa?: Object;
30
+ as?: any;
32
31
  /** Label used to describe the button if the button does not have text within it */
33
- ariaLabel?: string,
34
- };
32
+ ariaLabel?: string;
33
+ }
35
34
 
36
35
  const Button = ({
37
36
  href,
@@ -47,8 +46,9 @@ const Button = ({
47
46
  qa = {},
48
47
  as,
49
48
  ariaLabel,
49
+
50
50
  ...rest
51
- }: TypeProps) => {
51
+ }: ButtonType) => {
52
52
  if (!href && external) {
53
53
  console.warn(
54
54
  "Warning: external prop cannot be set without a href declaration"
@@ -60,6 +60,7 @@ const Button = ({
60
60
 
61
61
  return (
62
62
  <Container
63
+ className="container"
63
64
  title={title}
64
65
  active={active}
65
66
  href={href}
@@ -84,6 +85,4 @@ const Button = ({
84
85
  );
85
86
  };
86
87
 
87
- Button.displayName = "Button";
88
-
89
88
  export default Button;
@@ -6,7 +6,7 @@ import Icon from "../Icon/styles";
6
6
 
7
7
  import type { TypeTheme } from "../types/theme.flow";
8
8
 
9
- const Container: StyledComponent<any, TypeTheme, *> = styled.button`
9
+ const Container = styled.button`
10
10
  display: inline-block;
11
11
  box-sizing: border-box;
12
12
  text-align: center;
@@ -1,114 +1,131 @@
1
1
  import React from "react";
2
- import { boolean } from "@storybook/addon-knobs";
3
2
  import { action } from "@storybook/addon-actions";
4
3
 
5
4
  import Checkbox from "./";
6
5
 
7
6
  export default {
8
7
  title: "Checkbox",
8
+ component: Checkbox,
9
9
  };
10
10
 
11
- export const Checked = () => <Checkbox checked={boolean("checked", true)} />;
12
- export const Unchecked = () => <Checkbox checked={boolean("checked", false)} />;
11
+ export const Checked = (args) => <Checkbox {...args} />;
13
12
 
14
- export const PillChecked = () => (
15
- <Checkbox appearance="pill" checked={boolean("checked", true)} />
16
- );
13
+ Checked.args = { checked: true };
14
+
15
+ export const Unchecked = (args) => <Checkbox {...args} />;
16
+
17
+ Unchecked.args = { checked: false };
18
+
19
+ export const PillChecked = (args) => <Checkbox {...args} />;
20
+
21
+ PillChecked.args = {
22
+ checked: true,
23
+ appearance: "pill",
24
+ };
17
25
 
18
26
  PillChecked.story = {
19
27
  name: "Pill/Checked",
20
28
  };
21
29
 
22
- export const PillUnchecked = () => (
23
- <Checkbox appearance="pill" checked={boolean("checked", false)} />
24
- );
30
+ export const PillUnchecked = (args) => <Checkbox {...args} />;
31
+
32
+ PillUnchecked.args = {
33
+ checked: false,
34
+ appearance: "pill",
35
+ };
25
36
 
26
37
  PillUnchecked.story = {
27
38
  name: "Pill/Unchecked",
28
39
  };
29
40
 
30
- export const DisabledChecked = () => (
31
- <Checkbox
32
- checked={boolean("checked", true)}
33
- disabled={boolean("disabled", true)}
34
- />
35
- );
41
+ export const DisabledChecked = (args) => <Checkbox {...args} />;
42
+
43
+ DisabledChecked.args = {
44
+ checked: true,
45
+ disabled: true,
46
+ };
36
47
 
37
48
  DisabledChecked.story = {
38
49
  name: "Disabled/Checked",
39
50
  };
40
51
 
41
- export const DisabledUnchecked = () => (
42
- <Checkbox
43
- checked={boolean("checked", false)}
44
- disabled={boolean("disabled", true)}
45
- />
46
- );
52
+ export const DisabledUnchecked = (args) => <Checkbox {...args} />;
53
+
54
+ DisabledUnchecked.args = {
55
+ checked: false,
56
+ disabled: true,
57
+ };
47
58
 
48
59
  DisabledUnchecked.story = {
49
60
  name: "Disabled/Unchecked",
50
61
  };
51
62
 
52
- export const IndeterminateChecked = () => (
53
- <Checkbox
54
- checked={boolean("checked", true)}
55
- indeterminate={boolean("indeterminate", true)}
56
- />
57
- );
63
+ export const IndeterminateChecked = (args) => <Checkbox {...args} />;
64
+
65
+ IndeterminateChecked.args = {
66
+ checked: true,
67
+ indeterminate: true,
68
+ };
58
69
 
59
70
  IndeterminateChecked.story = {
60
71
  name: "Indeterminate/Checked",
61
72
  };
62
73
 
63
- export const IndeterminateUnchecked = () => (
64
- <Checkbox
65
- checked={boolean("checked", false)}
66
- indeterminate={boolean("indeterminate", true)}
67
- />
68
- );
74
+ export const IndeterminateUnchecked = (args) => <Checkbox {...args} />;
75
+
76
+ IndeterminateUnchecked.args = {
77
+ checked: false,
78
+ indeterminate: true,
79
+ };
69
80
 
70
81
  IndeterminateUnchecked.story = {
71
82
  name: "Indeterminate/Unchecked",
72
83
  };
73
84
 
74
- export const LabelledChecked = () => (
75
- <Checkbox checked={boolean("checked", true)} label="Check Me" />
76
- );
85
+ export const LabelledChecked = (args) => <Checkbox {...args} />;
86
+
87
+ LabelledChecked.args = {
88
+ checked: true,
89
+ label: "Labelled checkbox",
90
+ };
77
91
 
78
92
  LabelledChecked.story = {
79
93
  name: "Labelled/Checked",
80
94
  };
81
95
 
82
- export const LabelledUnchecked = () => (
83
- <Checkbox checked={boolean("checked", false)} label="Check Me" />
84
- );
96
+ export const LabelledUnchecked = (args) => <Checkbox {...args} />;
97
+
98
+ LabelledUnchecked.args = {
99
+ checked: false,
100
+ label: "Labelled checkbox",
101
+ };
85
102
 
86
103
  LabelledUnchecked.story = {
87
104
  name: "Labelled/Unchecked",
88
105
  };
89
106
 
90
- export const LabelledDisabled = () => (
91
- <Checkbox
92
- checked={boolean("checked", true)}
93
- disabled={boolean("disabled", true)}
94
- label="Check Me"
95
- />
96
- );
107
+ export const LabelledDisabled = (args) => <Checkbox {...args} />;
108
+
109
+ LabelledDisabled.args = {
110
+ checked: true,
111
+ disabled: true,
112
+ label: "Labelled checkbox",
113
+ };
97
114
 
98
115
  LabelledDisabled.story = {
99
116
  name: "Labelled/Disabled",
100
117
  };
101
118
 
102
- export const InputPropsOnMouseOver = () => (
103
- <Checkbox
104
- checked={boolean("checked", true)}
105
- label="Check Me"
106
- inputProps={{
107
- onMouseOver: action("checkbox-mouseOver"),
108
- onClick: action("checkbox-click"),
109
- }}
110
- />
111
- );
119
+ export const InputPropsOnMouseOver = (args) => <Checkbox {...args} />;
120
+
121
+ InputPropsOnMouseOver.args = {
122
+ checked: true,
123
+ label: "Labelled checkbox",
124
+ inputProps: {
125
+ onMouseOver: action("checkbox-mouseOver"),
126
+ onClick: action("checkbox-click"),
127
+ },
128
+ };
112
129
 
113
130
  InputPropsOnMouseOver.story = {
114
131
  name: "InputProps/OnMouseOver",
@@ -182,90 +182,90 @@ const getIcon = (type, color) => {
182
182
 
183
183
  // eslint-disable-next-line prettier/prettier
184
184
  export const CheckboxContainer: StyledComponent<any, TypeTheme, *> = styled.span(
185
- (props) => css`
186
- display: inline-flex;
187
- align-items: center;
188
- box-sizing: border-box;
189
- position: relative;
190
- transition: all ${props.theme.duration.fast} ${props.theme.easing.ease_in};
191
-
192
- @supports (-webkit-appearance: none) {
193
- &:before {
194
- /* stylelint-disable */
195
- content: url("data:image/svg+xml;utf8,${getIcon(
196
- props.indeterminate ? "indeterminate" : "check",
197
-
198
- props.checked
199
- ? props.theme.colors.form.background.base
200
- : props.theme.colors.form.border.base
201
- )}");
202
- opacity: ${props.checked ? 1 : 0};
203
- position: absolute;
204
- width: ${props.theme.space[400]};
205
- height: ${props.theme.space[400]};
206
- text-align: center;
207
- transform: translateY(1px);
208
- line-height: 1;
209
- margin: auto;
210
- pointer-events: none;
211
- transition: ${props.theme.duration.fast}
212
- ${props.theme.easing.ease_inout};
185
+ (props) => css`
186
+ display: inline-flex;
187
+ align-items: center;
188
+ box-sizing: border-box;
189
+ position: relative;
190
+ transition: all ${props.theme.duration.fast} ${props.theme.easing.ease_in};
191
+
192
+ @supports (-webkit-appearance: none) {
193
+ &:before {
194
+ /* stylelint-disable */
195
+ content: url("data:image/svg+xml;utf8,${getIcon(
196
+ props.indeterminate ? "indeterminate" : "check",
197
+
198
+ props.checked
199
+ ? props.theme.colors.form.background.base
200
+ : props.theme.colors.form.border.base
201
+ )}");
202
+ opacity: ${props.checked ? 1 : 0};
203
+ position: absolute;
204
+ width: ${props.theme.space[400]};
205
+ height: ${props.theme.space[400]};
206
+ text-align: center;
207
+ transform: translateY(1px);
208
+ line-height: 1;
209
+ margin: auto;
210
+ pointer-events: none;
211
+ transition: ${props.theme.duration.fast}
212
+ ${props.theme.easing.ease_inout};
213
+ }
214
+
215
+ &:hover:before {
216
+ opacity: ${props.disabled && !props.checked ? 0 : 1};
217
+ }
218
+
219
+ ${props.disabled &&
220
+ css`
221
+ opacity: 0.4;
222
+ `}
223
+
224
+ input[type='checkbox'] {
225
+ box-sizing: border-box;
226
+ appearance: none;
227
+ margin: 0;
228
+ padding: 0;
229
+ width: ${props.theme.space[400]};
230
+ height: ${props.theme.space[400]};
231
+ border: 1px solid ${props.theme.colors.form.border.base};
232
+ border-radius: 4px;
233
+ background-color: ${props.theme.colors.form.background.base};
234
+ transition: all ${props.theme.duration.fast}
235
+ ${props.theme.easing.ease_in};
236
+ cursor: ${props.disabled ? "not-allowed" : "pointer"};
237
+ flex-shrink: 0;
238
+
239
+ &:not(:checked) {
240
+ ${!props.indeterminate &&
241
+ css`
242
+ border-color: ${props.theme.colors
243
+ .neutral[300]} !important; /* We don't want the focus ring to remove the border */
244
+ background-color: ${props.theme.colors.form.background.base};
245
+ `}
213
246
  }
214
247
 
215
- &:hover:before {
216
- opacity: ${props.disabled && !props.checked ? 0 : 1};
248
+ &:checked {
249
+ border-color: ${props.theme.colors.form.border.selected};
250
+ background-color: ${props.theme.colors.form.background.selected};
217
251
  }
218
252
 
219
- ${props.disabled &&
253
+ ${props.indeterminate &&
254
+ props.checked &&
220
255
  css`
221
- opacity: 0.4;
256
+ border-color: ${props.theme.colors.form.border.selected} !important;
257
+ background-color: ${props.theme.colors.form.background
258
+ .selected} !important;
222
259
  `}
223
260
 
224
- input[type='checkbox'] {
225
- box-sizing: border-box;
226
- appearance: none;
227
- margin: 0;
228
- padding: 0;
229
- width: ${props.theme.space[400]};
230
- height: ${props.theme.space[400]};
231
- border: 1px solid ${props.theme.colors.form.border.base};
232
- border-radius: 4px;
233
- background-color: ${props.theme.colors.form.background.base};
234
- transition: all ${props.theme.duration.fast}
235
- ${props.theme.easing.ease_in};
236
- cursor: ${props.disabled ? "not-allowed" : "pointer"};
237
- flex-shrink: 0;
238
-
239
- &:not(:checked) {
240
- ${!props.indeterminate &&
241
- css`
242
- border-color: ${props.theme.colors
243
- .neutral[300]} !important; /* We don't want the focus ring to remove the border */
244
- background-color: ${props.theme.colors.form.background.base};
245
- `}
246
- }
247
-
248
- &:checked {
249
- border-color: ${props.theme.colors.form.border.selected};
250
- background-color: ${props.theme.colors.form.background.selected};
251
- }
252
-
253
- ${props.indeterminate &&
254
- props.checked &&
255
- css`
256
- border-color: ${props.theme.colors.form.border.selected} !important;
257
- background-color: ${props.theme.colors.form.background
258
- .selected} !important;
259
- `}
260
-
261
- &:focus {
262
- ${focusRing}
263
- }
261
+ &:focus {
262
+ ${focusRing}
264
263
  }
265
264
  }
265
+ }
266
266
 
267
- ${COMMON}
268
- `
269
- );
267
+ ${COMMON}
268
+ `
269
+ );
270
270
 
271
271
  export default Container;
@@ -73,8 +73,9 @@ const Trigger = ({ children, ...rest }) => {
73
73
  };
74
74
 
75
75
  const Panel = ({ children, ...rest }) => {
76
- const { isOpen, id, offset, collapsedHeight, openHeight } =
77
- useContext(CollapsibleContext);
76
+ const { isOpen, id, offset, collapsedHeight, openHeight } = useContext(
77
+ CollapsibleContext
78
+ );
78
79
  const ref = useRef();
79
80
  const measurement = useMeasure(ref);
80
81
  const [isHidden, setIsHidden] = useState(undefined);
@@ -1,6 +1,4 @@
1
1
  import React, { useState } from "react";
2
- import { text } from "@storybook/addon-knobs";
3
-
4
2
  import Icon from "./";
5
3
  import Button from "../Button";
6
4
  import Box from "../Box";
@@ -10,65 +8,72 @@ export default {
10
8
  title: "Icon",
11
9
  };
12
10
 
13
- export const mini12X12 = () => (
14
- <Icon
15
- color="icon.base"
16
- name={text("name", "dashboard")}
17
- size={text("size", "mini")}
18
- />
19
- );
11
+ export const mini12X12 = (args) => <Icon {...args} />;
12
+
13
+ mini12X12.args = {
14
+ color: "icon.base",
15
+ name: "dashboard",
16
+ size: "mini",
17
+ };
20
18
 
21
19
  mini12X12.story = {
22
20
  name: "Mini (12 x 12)",
23
21
  };
24
22
 
25
- export const default16X16 = () => (
26
- <Icon color="icon.base" name={text("name", "dashboard")} />
27
- );
23
+ export const default16X16 = (args) => <Icon {...args} />;
24
+
25
+ default16X16.args = {
26
+ color: "icon.base",
27
+ name: "dashboard",
28
+ };
28
29
 
29
30
  default16X16.story = {
30
31
  name: "Default (16 x 16)",
31
32
  };
32
33
 
33
- export const medium24X24 = () => (
34
- <Icon
35
- color="icon.base"
36
- name={text("name", "dashboard")}
37
- size={text("size", "medium")}
38
- />
39
- );
34
+ export const medium24X24 = (args) => <Icon {...args} />;
35
+
36
+ medium24X24.args = {
37
+ color: "icon.base",
38
+ name: "dashboard",
39
+ size: "medium",
40
+ };
40
41
 
41
42
  medium24X24.story = {
42
43
  name: "Medium (24 x 24)",
43
44
  };
44
45
 
45
- export const large32X32 = () => (
46
- <Icon
47
- color="icon.base"
48
- name={text("name", "dashboard")}
49
- size={text("size", "large")}
50
- />
51
- );
46
+ export const large32X32 = (args) => <Icon {...args} />;
47
+
48
+ large32X32.args = {
49
+ color: "icon.base",
50
+ name: "dashboard",
51
+ size: "large",
52
+ };
52
53
 
53
54
  large32X32.story = {
54
55
  name: "Large (32 x 32)",
55
56
  };
56
57
 
57
- export const jumbo64X64 = () => (
58
- <Icon
59
- color="icon.base"
60
- name={text("name", "dashboard")}
61
- size={text("size", "jumbo")}
62
- />
63
- );
58
+ export const jumbo64X64 = (args) => <Icon {...args} />;
59
+
60
+ jumbo64X64.args = {
61
+ color: "icon.base",
62
+ name: "dashboard",
63
+ size: "jumbo",
64
+ };
64
65
 
65
66
  jumbo64X64.story = {
66
67
  name: "Jumbo (64 x 64)",
67
68
  };
68
69
 
69
- export const defaultFixedWidth = () => (
70
- <Icon color="icon.success" name={text("name", "dashboard")} fixedWidth />
71
- );
70
+ export const defaultFixedWidth = (args) => <Icon {...args} />;
71
+
72
+ defaultFixedWidth.args = {
73
+ color: "icon.success",
74
+ name: "dashboard",
75
+ fixedWidth: true,
76
+ };
72
77
 
73
78
  defaultFixedWidth.story = {
74
79
  name: "Fixed Width (16 x 16)",
@@ -80,8 +80,16 @@ export default class Image extends React.Component<TypeProps, TypeState> {
80
80
  };
81
81
 
82
82
  render() {
83
- const { alt, title, onClick, onError, onLoad, src, qa, ...rest } =
84
- this.props;
83
+ const {
84
+ alt,
85
+ title,
86
+ onClick,
87
+ onError,
88
+ onLoad,
89
+ src,
90
+ qa,
91
+ ...rest
92
+ } = this.props;
85
93
 
86
94
  return (
87
95
  <ImageContainer
@@ -1,34 +1,38 @@
1
1
  import React from "react";
2
- import { boolean, text } from "@storybook/addon-knobs";
3
-
4
2
  import Loader from "./";
5
3
 
6
4
  export default {
7
5
  title: "Loader",
6
+ component: Loader,
8
7
  };
9
8
 
10
- export const defaultStory = () => (
11
- <Loader text={text("text", "Content loading")} />
12
- );
9
+ export const defaultStory = (args) => <Loader {...args} />;
10
+
11
+ defaultStory.args = {
12
+ text: "Content loading",
13
+ };
13
14
 
14
15
  defaultStory.story = {
15
16
  name: "Default",
16
17
  };
17
18
 
18
- export const small = () => (
19
- <Loader text={text("text", "Content loading")} size={text("size", "small")} />
20
- );
19
+ export const small = (args) => <Loader {...args} />;
20
+
21
+ small.args = {
22
+ text: "Content loading",
23
+ size: "small",
24
+ };
21
25
 
22
26
  small.story = {
23
27
  name: "Small",
24
28
  };
25
29
 
26
- export const noDelay = () => (
27
- <Loader
28
- text={text("text", "Content loading")}
29
- delay={boolean("delay", false)}
30
- />
31
- );
30
+ export const noDelay = (args) => <Loader {...args} />;
31
+
32
+ noDelay.args = {
33
+ text: "Content loading",
34
+ delay: false,
35
+ };
32
36
 
33
37
  noDelay.story = {
34
38
  name: "No delay",