@sproutsocial/racine 11.3.1-beta-deps.2 → 11.4.0-input-beta.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.
Files changed (48) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/__flow__/Button/__snapshots__/index.test.js.snap +511 -0
  3. package/__flow__/Button/index.js +0 -2
  4. package/__flow__/Button/index.stories.js +67 -51
  5. package/__flow__/Button/index.test.js +113 -0
  6. package/__flow__/Button/styles.js +1 -1
  7. package/__flow__/EmptyState/index.test.js +1 -1
  8. package/__flow__/Input/index.js +185 -66
  9. package/__flow__/Input/index.stories.js +65 -0
  10. package/__flow__/Input/index.test.js +227 -1
  11. package/__flow__/Input/styles.js +1 -1
  12. package/__flow__/Link/index.js +2 -1
  13. package/__flow__/Menu/__snapshots__/index.test.js.snap +2 -2
  14. package/__flow__/TokenInput/index.js +1 -1
  15. package/__flow__/setupTests.js +1 -1
  16. package/__flow__/systemProps/tests/__snapshots__/layout.test.js.snap +14 -0
  17. package/__flow__/systemProps/tests/layout.test.js +9 -0
  18. package/__flow__/themes/dark/theme.js +3 -0
  19. package/__flow__/themes/light/theme.js +3 -0
  20. package/__flow__/types/theme.colors.flow.js +3 -0
  21. package/commonjs/Button/index.js +0 -1
  22. package/commonjs/Button/styles.js +0 -1
  23. package/commonjs/DatePicker/styles.js +1 -5
  24. package/commonjs/Input/index.js +125 -31
  25. package/commonjs/Input/styles.js +1 -1
  26. package/commonjs/Menu/index.js +10 -10
  27. package/commonjs/Modal/styles.js +1 -5
  28. package/commonjs/Toast/index.js +14 -14
  29. package/commonjs/Toast/styles.js +2 -5
  30. package/commonjs/TokenInput/index.js +1 -1
  31. package/commonjs/themes/dark/theme.js +4 -1
  32. package/commonjs/themes/light/theme.js +4 -1
  33. package/dist/themes/dark/dark.scss +4 -1
  34. package/dist/themes/light/light.scss +4 -1
  35. package/lib/Button/index.js +0 -1
  36. package/lib/Button/styles.js +0 -1
  37. package/lib/DatePicker/styles.js +1 -5
  38. package/lib/Input/index.js +118 -31
  39. package/lib/Input/styles.js +1 -1
  40. package/lib/Menu/index.js +10 -11
  41. package/lib/Modal/styles.js +1 -5
  42. package/lib/Toast/index.js +14 -14
  43. package/lib/Toast/styles.js +1 -5
  44. package/lib/TokenInput/index.js +1 -1
  45. package/lib/themes/dark/theme.js +4 -1
  46. package/lib/themes/light/theme.js +4 -1
  47. package/package.json +21 -25
  48. package/bin/buildNpm.js +0 -58
@@ -141,6 +141,71 @@ leftAndRightIcons.story = {
141
141
  name: "Left and right icons",
142
142
  };
143
143
 
144
+ export const searchInput = () => (
145
+ <Input
146
+ type="search"
147
+ placeholder={text("placeholder", "Please enter a value...")}
148
+ value={text("value", "val")}
149
+ onClear={() => window.alert("Cleared!")}
150
+ clearButtonLabel={text("clearButtonLabel", "Clear search")}
151
+ ariaLabel={text("ariaLabel", "Descriptive label goes here")}
152
+ />
153
+ );
154
+
155
+ searchInput.story = {
156
+ name: "Search Input",
157
+ };
158
+
159
+ export const smallSearchInput = () => (
160
+ <Input
161
+ type="search"
162
+ size="small"
163
+ placeholder={text("placeholder", "Please enter a value...")}
164
+ value={text("value", "val")}
165
+ onClear={() => window.alert("Cleared!")}
166
+ clearButtonLabel={text("clearButtonLabel", "Clear search")}
167
+ ariaLabel={text("ariaLabel", "Descriptive label goes here")}
168
+ />
169
+ );
170
+
171
+ smallSearchInput.story = {
172
+ name: "Small Search Input",
173
+ };
174
+
175
+ export const largeSearchInput = () => (
176
+ <Input
177
+ type="search"
178
+ size="large"
179
+ placeholder={text("placeholder", "Please enter a value...")}
180
+ value={text("value", "val")}
181
+ onClear={() => window.alert("Cleared!")}
182
+ clearButtonLabel={text("clearButtonLabel", "Clear search")}
183
+ ariaLabel={text("ariaLabel", "Descriptive label goes here")}
184
+ />
185
+ );
186
+
187
+ largeSearchInput.story = {
188
+ name: "Large Search Input",
189
+ };
190
+
191
+ export const nonSearchClearButtonInput = () => {
192
+ return (
193
+ <Input
194
+ type="text"
195
+ placeholder={text("placeholder", "Please enter a value...")}
196
+ value={text("value", "val")}
197
+ onClear={() => window.alert("Cleared!")}
198
+ ariaLabel={text("ariaLabel", "Descriptive label goes here")}
199
+ clearButtonLabel={text("clearButtonLabel", "Clear text")}
200
+ elemAfter={<Input.ClearButton />}
201
+ />
202
+ );
203
+ };
204
+
205
+ nonSearchClearButtonInput.story = {
206
+ name: "Manual Input.ClearButton usage",
207
+ };
208
+
144
209
  export const autofocus = () => (
145
210
  <Input
146
211
  autoFocus
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
2
  import "jest-styled-components";
3
- import { render, fireEvent } from "../utils/react-testing-library";
3
+ import { render, fireEvent, userEvent } from "../utils/react-testing-library";
4
4
  import Input from "./";
5
5
  import Text from "../Text";
6
6
 
@@ -69,6 +69,232 @@ describe("Input", () => {
69
69
  expect(getByText("After")).toBeTruthy();
70
70
  });
71
71
 
72
+ describe("Input.ClearButton", () => {
73
+ describe("Input type=search", () => {
74
+ it("should render a clear button for search Inputs", () => {
75
+ const { getByRole } = render(
76
+ <Input
77
+ id="name"
78
+ name="name"
79
+ value="mic"
80
+ type="search"
81
+ onClear={jest.fn()}
82
+ clearButtonLabel="Clear search"
83
+ />
84
+ );
85
+ expect(getByRole("button")).toBeTruthy();
86
+ });
87
+
88
+ it("should not render a clear button for search Inputs if there is no text", () => {
89
+ const { queryByRole } = render(
90
+ <Input
91
+ id="name"
92
+ name="name"
93
+ value=""
94
+ type="search"
95
+ onClear={jest.fn()}
96
+ clearButtonLabel="Clear search"
97
+ />
98
+ );
99
+ expect(queryByRole("button")).toBeFalsy();
100
+ });
101
+
102
+ it("should not override an elemAfter prop if passed", () => {
103
+ const { getByText, queryByTitle } = render(
104
+ <Input
105
+ id="name"
106
+ name="name"
107
+ value="mic"
108
+ type="search"
109
+ onClear={jest.fn()}
110
+ elemAfter={<Text>After</Text>}
111
+ />
112
+ );
113
+ expect(getByText("After")).toBeTruthy();
114
+ expect(queryByTitle("Clear")).not.toBeInTheDocument();
115
+ });
116
+
117
+ it("should use the fallback title if clearButtonLabel is not provided", () => {
118
+ const { getByTitle } = render(
119
+ <Input
120
+ id="name"
121
+ name="name"
122
+ value="mic"
123
+ type="search"
124
+ onClear={jest.fn()}
125
+ />
126
+ );
127
+ expect(getByTitle("Clear")).toBeTruthy();
128
+ });
129
+
130
+ it("should call onClear when clicked", () => {
131
+ const mockOnClear = jest.fn();
132
+ const { getByRole } = render(
133
+ <Input
134
+ id="name"
135
+ name="name"
136
+ value="mic"
137
+ type="search"
138
+ onClear={mockOnClear}
139
+ clearButtonLabel="Clear search"
140
+ />
141
+ );
142
+ fireEvent.click(getByRole("button"));
143
+ expect(mockOnClear).toHaveBeenCalled();
144
+ });
145
+
146
+ it("should allow keyboard access to and Space key triggering of the clear button", () => {
147
+ const mockOnClear = jest.fn();
148
+ const { getByRole } = render(
149
+ <Input
150
+ id="name"
151
+ name="name"
152
+ value="mic"
153
+ type="search"
154
+ onClear={mockOnClear}
155
+ clearButtonLabel="Clear search"
156
+ />
157
+ );
158
+ const input = getByRole("searchbox");
159
+ const button = getByRole("button");
160
+ userEvent.tab();
161
+ expect(input).toHaveFocus();
162
+ userEvent.tab();
163
+ expect(button).toHaveFocus();
164
+ userEvent.keyboard("{space}");
165
+ expect(mockOnClear).toHaveBeenCalled();
166
+ });
167
+
168
+ it("should allow keyboard access to and Enter key triggering of the clear button", () => {
169
+ const mockOnClear = jest.fn();
170
+ const { getByRole } = render(
171
+ <Input
172
+ id="name"
173
+ name="name"
174
+ value="mic"
175
+ type="search"
176
+ onClear={mockOnClear}
177
+ clearButtonLabel="Clear search"
178
+ />
179
+ );
180
+ const input = getByRole("searchbox");
181
+ const button = getByRole("button");
182
+ userEvent.tab();
183
+ expect(input).toHaveFocus();
184
+ userEvent.tab();
185
+ expect(button).toHaveFocus();
186
+ userEvent.keyboard("{enter}");
187
+ expect(mockOnClear).toHaveBeenCalled();
188
+ });
189
+ });
190
+
191
+ describe("Manual Input.ClearButton usage", () => {
192
+ it("should render a clear button when passed with elemAfter", () => {
193
+ const { getByRole } = render(
194
+ <Input
195
+ id="name"
196
+ name="name"
197
+ value="mic"
198
+ type="text"
199
+ elemAfter={<Input.ClearButton />}
200
+ clearButtonLabel="Clear search"
201
+ />
202
+ );
203
+ expect(getByRole("button")).toBeTruthy();
204
+ });
205
+
206
+ it("should not render a clear button if there is no text", () => {
207
+ const { queryByRole } = render(
208
+ <Input
209
+ id="name"
210
+ name="name"
211
+ value=""
212
+ type="text"
213
+ elemAfter={<Input.ClearButton />}
214
+ clearButtonLabel="Clear search"
215
+ />
216
+ );
217
+ expect(queryByRole("button")).toBeFalsy();
218
+ });
219
+
220
+ it("should use the fallback title if clearButtonLabel is not provided", () => {
221
+ const { getByTitle } = render(
222
+ <Input
223
+ id="name"
224
+ name="name"
225
+ value="mic"
226
+ type="text"
227
+ elemAfter={<Input.ClearButton />}
228
+ />
229
+ );
230
+ expect(getByTitle("Clear")).toBeTruthy();
231
+ });
232
+
233
+ it("should call onClear when Input.ClearButton is clicked", () => {
234
+ const mockOnClear = jest.fn();
235
+ const { getByRole } = render(
236
+ <Input
237
+ id="name"
238
+ name="name"
239
+ value="mic"
240
+ type="text"
241
+ elemAfter={<Input.ClearButton />}
242
+ onClear={mockOnClear}
243
+ clearButtonLabel="Clear search"
244
+ />
245
+ );
246
+ fireEvent.click(getByRole("button"));
247
+ expect(mockOnClear).toHaveBeenCalled();
248
+ });
249
+
250
+ it("should allow keyboard access to and Space key triggering of the clear button", () => {
251
+ const mockOnClear = jest.fn();
252
+ const { getByRole } = render(
253
+ <Input
254
+ id="name"
255
+ name="name"
256
+ value="mic"
257
+ type="text"
258
+ elemAfter={<Input.ClearButton />}
259
+ onClear={mockOnClear}
260
+ clearButtonLabel="Clear search"
261
+ />
262
+ );
263
+ const input = getByRole("textbox");
264
+ const button = getByRole("button");
265
+ userEvent.tab();
266
+ expect(input).toHaveFocus();
267
+ userEvent.tab();
268
+ expect(button).toHaveFocus();
269
+ userEvent.keyboard("{space}");
270
+ expect(mockOnClear).toHaveBeenCalled();
271
+ });
272
+
273
+ it("should allow keyboard access to and Enter key triggering of the clear button", () => {
274
+ const mockOnClear = jest.fn();
275
+ const { getByRole } = render(
276
+ <Input
277
+ id="name"
278
+ name="name"
279
+ value="mic"
280
+ type="text"
281
+ elemAfter={<Input.ClearButton />}
282
+ onClear={mockOnClear}
283
+ clearButtonLabel="Clear search"
284
+ />
285
+ );
286
+ const input = getByRole("textbox");
287
+ const button = getByRole("button");
288
+ userEvent.tab();
289
+ expect(input).toHaveFocus();
290
+ userEvent.tab();
291
+ expect(button).toHaveFocus();
292
+ userEvent.keyboard("{enter}");
293
+ expect(mockOnClear).toHaveBeenCalled();
294
+ });
295
+ });
296
+ });
297
+
72
298
  describe("autoComplete prop", () => {
73
299
  it("should not have autoComplete attribute when passed prop is not passed", () => {
74
300
  const { getByDataQaLabel } = render(<Input id="name" name="name" />);
@@ -140,7 +140,7 @@ export const Accessory: StyledComponent<any, TypeTheme, *> = styled.div`
140
140
  ${(props) =>
141
141
  props.after &&
142
142
  css`
143
- right: ${props.theme.space[350]};
143
+ right: ${props.isClearButton ? 0 : props.theme.space[350]};
144
144
  `};
145
145
  `;
146
146
 
@@ -8,10 +8,11 @@ type TypeProps = {
8
8
  /** Optional prop to make the URL open in a new tab */
9
9
  external?: boolean,
10
10
  children: React.Node,
11
+ /** Setting this prop will cause the component to be rendered as a link */
11
12
  href?: string,
12
13
  /** Disables user action and applies a disabled style to the component */
13
14
  disabled?: boolean,
14
- /** Setting this prop will cause the component to be rendered as a button instead of an anchor) */
15
+ /** Can be used in addition to an href but still renders as a link. Omitting href will render as button */
15
16
  onClick?: (e: SyntheticEvent<HTMLButtonElement>) => void,
16
17
  as?: $PropertyType<TypeStyledComponentsCommonProps, "as">,
17
18
  underline?: boolean,
@@ -14,12 +14,12 @@ exports[`Menu AsMenuButton should match snapshot 1`] = `
14
14
  fill: currentColor;
15
15
  }
16
16
 
17
- _:-ms-fullscreen .c2,
17
+ _:-ms-fullscreen .c3,
18
18
  html .c3 {
19
19
  width: 16px;
20
20
  }
21
21
 
22
- .pdf-page .c2 {
22
+ .pdf-page .c3 {
23
23
  width: 16px;
24
24
  }
25
25
 
@@ -341,7 +341,7 @@ export default class TokenInput extends React.Component<TypeProps, TypeState> {
341
341
  aria-invalid={!!isInvalid}
342
342
  aria-label={ariaLabel}
343
343
  autoFocus={autoFocus}
344
- autocomplete={autocomplete}
344
+ autoComplete={autocomplete}
345
345
  disabled={disabled}
346
346
  id={id}
347
347
  name={name}
@@ -1,5 +1,5 @@
1
1
  import "mutationobserver-shim";
2
- import "@testing-library/jest-dom/extend-expect";
2
+ import "jest-dom/extend-expect";
3
3
  import "jest-axe/extend-expect";
4
4
  import "babel-polyfill";
5
5
  import "jest-styled-components";
@@ -1,5 +1,19 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
+ exports[`layout system props display 1`] = `
4
+ .c0 {
5
+ display: -webkit-string;
6
+ display: string;
7
+ }
8
+
9
+ <div>
10
+ <div
11
+ class="c0"
12
+ display="string"
13
+ />
14
+ </div>
15
+ `;
16
+
3
17
  exports[`layout system props height 1`] = `
4
18
  .c0 {
5
19
  height: string;
@@ -10,6 +10,15 @@ describe("layout system props", () => {
10
10
  ${layoutSystemProps}
11
11
  `;
12
12
 
13
+ test("display", () => {
14
+ const { container } = render(
15
+ <>
16
+ <Component display="string" />
17
+ </>
18
+ );
19
+ expect(container).toMatchSnapshot();
20
+ });
21
+
13
22
  test("height", () => {
14
23
  const { container } = render(
15
24
  <>
@@ -174,6 +174,9 @@ const colors = {
174
174
  body: COLORS.COLOR_NEUTRAL_100,
175
175
  inverse: COLORS.COLOR_NEUTRAL_900,
176
176
  error: COLORS.COLOR_RED_400,
177
+ background: {
178
+ highlight: COLORS.COLOR_YELLOW_900,
179
+ },
177
180
  },
178
181
  icon: {
179
182
  base: COLORS.COLOR_NEUTRAL_100,
@@ -171,6 +171,9 @@ const colors = {
171
171
  body: COLORS.COLOR_NEUTRAL_800,
172
172
  inverse: COLORS.COLOR_NEUTRAL_0,
173
173
  error: COLORS.COLOR_RED_800,
174
+ background: {
175
+ highlight: COLORS.COLOR_YELLOW_200,
176
+ },
174
177
  },
175
178
  icon: {
176
179
  base: COLORS.COLOR_NEUTRAL_800,
@@ -158,6 +158,9 @@ type TypeTextColors = {|
158
158
  body: string,
159
159
  inverse: string,
160
160
  error: string,
161
+ background: {
162
+ highlight: string,
163
+ },
161
164
  },
162
165
  |};
163
166
 
@@ -65,6 +65,5 @@ var Button = function Button(_ref) {
65
65
  }, qa, rest), children);
66
66
  };
67
67
 
68
- Button.displayName = "Button";
69
68
  var _default = Button;
70
69
  exports.default = _default;
@@ -60,7 +60,6 @@ var Container = _styledComponents.default.button.withConfig({
60
60
  return props.appearance === "pill" && (0, _styledComponents.css)(["display:inline-flex;align-items:center;justify-content:center;mix-blend-mode:", ";", ""], props.theme.mode === "dark" ? "screen" : "multiply", _mixins.pill);
61
61
  }, _styles.default, _systemProps.LAYOUT, _systemProps.COMMON);
62
62
 
63
- Container.displayName = "Button-Container";
64
63
  var _default = Container; //${props.theme.mode === "dark" ? "screen" : "multiply"}
65
64
 
66
65
  exports.default = _default;
@@ -11,16 +11,12 @@ var _Box = _interopRequireDefault(require("../Box"));
11
11
 
12
12
  var _mixins = require("../utils/mixins");
13
13
 
14
- var _templateObject;
15
-
16
14
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
15
 
18
16
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
17
 
20
18
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
19
 
22
- function _taggedTemplateLiteralLoose(strings, raw) { if (!raw) { raw = strings.slice(0); } strings.raw = raw; return strings; }
23
-
24
20
  /*
25
21
  * Partial list of modifiers given to renderDayContents by airbnb/react-dates. There may be more.
26
22
  *
@@ -87,7 +83,7 @@ var CalendarDay = (0, _styledComponents.default)(_Box.default).withConfig({
87
83
  }
88
84
  });
89
85
  exports.CalendarDay = CalendarDay;
90
- var ReactDatesCssOverrides = (0, _styledComponents.createGlobalStyle)(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["\n\t.DayPicker {\n\t\tbox-sizing: content-box;\n\t\tfont-weight: ", ";\n\t\tfont-family: ", ";\n\n\t\t/* override react-dates height to better reflect how tall the component actually is */\n\t\t/* adding margin/padding will be more truer to our seeds system because the height */\n\t\t/* of the calendar adds an extra row of padding if we do not override it */\n\t\t&_transitionContainer {\n\t\t\t/* need !important because react-dates sets height on the element itself */\n\t\t\theight: 228px !important;\n\t\t}\n\n\t\t&_weekHeader {\n\t\t\tcolor: ", ";\n\t\t\tborder-bottom: 1px solid ", ";\n\n \t\t\t/* Magic number to match position of .CalendarMonth_caption */\n\t\t\ttop: 26px;\n\n\t\t\t/* Magic number to make the bottom border line stretch the full width */\n\t\t\twidth: 230px;\n\n\t\t\t&_ul {\n \t\t\t\t/* Magic number to line up day name headings over the correct numbers */\n\t\t\t\tpadding-left: 10px;\n\t\t\t}\n\t\t}\n\n\t\t&_weekHeaders__horizontal {\n\t\t\tmargin-left: 0\n\t\t}\n\n\t\t&_weekHeader_li {\n\t\t\t", "\n\t\t\tcolor: ", ";\n\t\t\tfont-weight: ", ";\n\t\t\tmargin: 0;\n\t\t}\n\n\t\t&__horizontal {\n\t\t\tbox-shadow: none;\n\t\t\tbackground: ", ";\n\t\t}\n\t}\n\n .CalendarDay {\n\t\tbackground-color: transparent;\n\n &__selected, &__selected_span, &:hover {\n background-color: transparent;\n\t\t}\n\n\t\t&__default {\n\t\t\tcolor: ", ";\n\t\t}\n\t\t&__default,\n\t\t&__default:hover {\n\t\t\tborder: none;\n\t\t\tcolor: ", ";\n\t\t}\n\t}\n\n .CalendarMonth {\n\t\t", "\n\t\tbackground: ", ";\n\n \t\t/* spacing between visible months and months off canvas */\n\t\tpadding: 0 15px;\n\n\t\t&_caption {\n\t\t\t", "\n\t\t\tcolor: ", ";\n\t\t\tpadding-top: 0;\n\t\t\tbackground: ", ";\n\n\t\t\tstrong {\n\t\t\t\tfont-weight: ", ";\n\t\t\t}\n\n\t\t}\n\t\t&_table {\n\t\t\tline-height: 21.333px;\n\t\t\ttr {\n\t\t\t\tvertical-align: middle;\n\t\t\t}\n\t\t\ttd {\n\t\t\t\tpadding: 0;\n\t\t\t\tborder-bottom: none;\n\t\t\t}\n\t\t}\n\t}\n\n\t.CalendarMonthGrid {\n\t\tbackground: ", ";\n\t}\n\n\t/* Left and Right Arrow Buttons to navigate months */\n\t.DayPickerNavigation_button__horizontal {\n\t\tcolor: ", ";\n\t\ttop: -4px;\n\t\tpadding: 7px 8px;\n\t\tposition: absolute;\n\t\tline-height: 0.78;\n\t\tborder-radius: 9999px;\n\t\tborder: none;\n\t\tbackground: ", ";\n\n\t\t&:nth-child(1) {\n\t\t\tleft: 22px;\n\t\t}\n\t\t&:nth-child(2) {\n\t\t\tright: 22px;\n\t\t}\n\n\t\t&:hover {\n\t\t\tbackground: ", ";\n\t\t}\n\t}\n"])), function (_ref2) {
86
+ var ReactDatesCssOverrides = (0, _styledComponents.createGlobalStyle)([".DayPicker{box-sizing:content-box;font-weight:", ";font-family:", ";&_transitionContainer{height:228px !important;}&_weekHeader{color:", ";border-bottom:1px solid ", ";top:26px;width:230px;&_ul{padding-left:10px;}}&_weekHeaders__horizontal{margin-left:0}&_weekHeader_li{", " color:", ";font-weight:", ";margin:0;}&__horizontal{box-shadow:none;background:", ";}}.CalendarDay{background-color:transparent;&__selected,&__selected_span,&:hover{background-color:transparent;}&__default{color:", ";}&__default,&__default:hover{border:none;color:", ";}}.CalendarMonth{", " background:", ";padding:0 15px;&_caption{", " color:", ";padding-top:0;background:", ";strong{font-weight:", ";}}&_table{line-height:21.333px;tr{vertical-align:middle;}td{padding:0;border-bottom:none;}}}.CalendarMonthGrid{background:", ";}.DayPickerNavigation_button__horizontal{color:", ";top:-4px;padding:7px 8px;position:absolute;line-height:0.78;border-radius:9999px;border:none;background:", ";&:nth-child(1){left:22px;}&:nth-child(2){right:22px;}&:hover{background:", ";}}"], function (_ref2) {
91
87
  var theme = _ref2.theme;
92
88
  return theme.fontWeights.normal;
93
89
  }, function (props) {