@algolia/satellite 1.0.0-beta.127 → 1.0.0-beta.130

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 (55) hide show
  1. package/cjs/AutoComplete/components/AutoCompleteEmptyState.d.ts +2 -0
  2. package/cjs/Avatars/UserAvatar.js +14 -9
  3. package/cjs/Banner/Banner.d.ts +6 -3
  4. package/cjs/Banner/Banner.js +1 -1
  5. package/cjs/Banners/Alert/Alert.d.ts +6 -2
  6. package/cjs/Banners/Alert/Alert.js +1 -1
  7. package/cjs/Banners/Promote/Promote.d.ts +2 -2
  8. package/cjs/Banners/Promote/Promote.js +1 -1
  9. package/cjs/DatePicker/DatePicker/DatePicker.d.ts +7 -2
  10. package/cjs/DatePicker/DatePicker/DatePicker.js +12 -1
  11. package/cjs/DatePicker/DatePicker.tailwind.js +10 -2
  12. package/cjs/DatePicker/DateRangePicker/DateRangePicker.d.ts +7 -2
  13. package/cjs/DatePicker/DateRangePicker/DateRangePicker.js +18 -2
  14. package/cjs/DatePicker/components/Calendar.d.ts +8 -2
  15. package/cjs/DatePicker/components/Calendar.js +50 -3
  16. package/cjs/DatePicker/components/NavBar.d.ts +8 -1
  17. package/cjs/DatePicker/components/NavBar.js +50 -5
  18. package/cjs/Dropdown/DropdownButton.d.ts +1 -1
  19. package/cjs/Dropzone/Dropzone.js +4 -3
  20. package/cjs/EmptyState/types.d.ts +1 -1
  21. package/cjs/Insert/Insert.d.ts +1 -0
  22. package/cjs/Medallion/Medallion.js +5 -4
  23. package/cjs/Medallion/Medallion.tailwind.js +3 -3
  24. package/cjs/Medallion/types.d.ts +1 -1
  25. package/cjs/Tag/Tag.d.ts +7 -3
  26. package/cjs/Tag/Tag.js +13 -11
  27. package/esm/AutoComplete/components/AutoCompleteEmptyState.d.ts +2 -0
  28. package/esm/Avatars/UserAvatar.js +15 -10
  29. package/esm/Banner/Banner.d.ts +6 -3
  30. package/esm/Banner/Banner.js +1 -1
  31. package/esm/Banners/Alert/Alert.d.ts +6 -2
  32. package/esm/Banners/Alert/Alert.js +1 -1
  33. package/esm/Banners/Promote/Promote.d.ts +2 -2
  34. package/esm/Banners/Promote/Promote.js +1 -1
  35. package/esm/DatePicker/DatePicker/DatePicker.d.ts +7 -2
  36. package/esm/DatePicker/DatePicker/DatePicker.js +13 -2
  37. package/esm/DatePicker/DatePicker.tailwind.js +10 -2
  38. package/esm/DatePicker/DateRangePicker/DateRangePicker.d.ts +7 -2
  39. package/esm/DatePicker/DateRangePicker/DateRangePicker.js +17 -3
  40. package/esm/DatePicker/components/Calendar.d.ts +8 -2
  41. package/esm/DatePicker/components/Calendar.js +43 -3
  42. package/esm/DatePicker/components/NavBar.d.ts +8 -1
  43. package/esm/DatePicker/components/NavBar.js +41 -5
  44. package/esm/Dropdown/DropdownButton.d.ts +1 -1
  45. package/esm/Dropzone/Dropzone.js +4 -3
  46. package/esm/EmptyState/types.d.ts +1 -1
  47. package/esm/Insert/Insert.d.ts +1 -0
  48. package/esm/Medallion/Medallion.js +5 -4
  49. package/esm/Medallion/Medallion.tailwind.js +3 -3
  50. package/esm/Medallion/types.d.ts +1 -1
  51. package/esm/Tag/Tag.d.ts +7 -3
  52. package/esm/Tag/Tag.js +13 -11
  53. package/package.json +12 -7
  54. package/satellite.css +22 -9
  55. package/satellite.min.css +1 -1
package/cjs/Tag/Tag.js CHANGED
@@ -25,7 +25,7 @@ var _satellitePrefixer = _interopRequireDefault(require("../styles/helpers/satel
25
25
 
26
26
  var _excluded = ["children", "variant", "className", "onDelete"];
27
27
 
28
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15;
28
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17;
29
29
 
30
30
  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); }
31
31
 
@@ -37,15 +37,17 @@ var VARIANT_CLASSNAMES = {
37
37
  blue: (0, _satellitePrefixer["default"])(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2["default"])(["bg-blue-100 border-blue-200 text-blue-700"]))),
38
38
  green: (0, _satellitePrefixer["default"])(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2["default"])(["bg-green-100 border-green-300 text-green-800"]))),
39
39
  orange: (0, _satellitePrefixer["default"])(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2["default"])(["bg-orange-100 border-orange-300 text-orange-800"]))),
40
- red: (0, _satellitePrefixer["default"])(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["bg-red-100 border-red-200 text-red-700"])))
40
+ red: (0, _satellitePrefixer["default"])(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2["default"])(["bg-red-100 border-red-200 text-red-700"]))),
41
+ pink: (0, _satellitePrefixer["default"])(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["bg-pink-100 border-pink-200 text-pink-700"])))
41
42
  };
42
43
  var BUTTON_CLOSE_VARIANT_CLASSNAMES = {
43
- accent: (0, _satellitePrefixer["default"])(_templateObject7 || (_templateObject7 = (0, _taggedTemplateLiteral2["default"])(["border-accent-200 hover:bg-accent-200 focus:bg-accent-200"]))),
44
- grey: (0, _satellitePrefixer["default"])(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["border-grey-200 hover:bg-grey-200 focus:bg-grey-200"]))),
45
- blue: (0, _satellitePrefixer["default"])(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["border-blue-200 hover:bg-blue-200 focus:bg-blue-200"]))),
46
- green: (0, _satellitePrefixer["default"])(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["border-green-300 hover:bg-green-300 focus:bg-green-300"]))),
47
- orange: (0, _satellitePrefixer["default"])(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2["default"])(["border-orange-300 hover:bg-orange-300 focus:bg-orange-300"]))),
48
- red: (0, _satellitePrefixer["default"])(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2["default"])(["border-red-200 hover:bg-red-200 focus:bg-red-200"])))
44
+ accent: (0, _satellitePrefixer["default"])(_templateObject8 || (_templateObject8 = (0, _taggedTemplateLiteral2["default"])(["border-accent-200 hover:bg-accent-200 focus:bg-accent-200"]))),
45
+ grey: (0, _satellitePrefixer["default"])(_templateObject9 || (_templateObject9 = (0, _taggedTemplateLiteral2["default"])(["border-grey-200 hover:bg-grey-200 focus:bg-grey-200"]))),
46
+ blue: (0, _satellitePrefixer["default"])(_templateObject10 || (_templateObject10 = (0, _taggedTemplateLiteral2["default"])(["border-blue-200 hover:bg-blue-200 focus:bg-blue-200"]))),
47
+ green: (0, _satellitePrefixer["default"])(_templateObject11 || (_templateObject11 = (0, _taggedTemplateLiteral2["default"])(["border-green-300 hover:bg-green-300 focus:bg-green-300"]))),
48
+ orange: (0, _satellitePrefixer["default"])(_templateObject12 || (_templateObject12 = (0, _taggedTemplateLiteral2["default"])(["border-orange-300 hover:bg-orange-300 focus:bg-orange-300"]))),
49
+ red: (0, _satellitePrefixer["default"])(_templateObject13 || (_templateObject13 = (0, _taggedTemplateLiteral2["default"])(["border-red-200 hover:bg-red-200 focus:bg-red-200"]))),
50
+ pink: (0, _satellitePrefixer["default"])(_templateObject14 || (_templateObject14 = (0, _taggedTemplateLiteral2["default"])(["border-pink-200 hover:bg-pink-200 focus:bg-pink-200"])))
49
51
  };
50
52
  /**
51
53
  * Use tags to visually label UI objects for quick recognition and navigation. (!) **Tags can be added or removed from an object by users**.
@@ -77,7 +79,7 @@ var Tag = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
77
79
  onDelete = _ref.onDelete,
78
80
  props = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
79
81
  var title = typeof children === "string" ? children : "tag";
80
- var tagClassName = (0, _classnames["default"])((0, _satellitePrefixer["default"])(_templateObject13 || (_templateObject13 = (0, _taggedTemplateLiteral2["default"])(["tag"]))), VARIANT_CLASSNAMES[variant], className);
82
+ var tagClassName = (0, _classnames["default"])((0, _satellitePrefixer["default"])(_templateObject15 || (_templateObject15 = (0, _taggedTemplateLiteral2["default"])(["tag"]))), VARIANT_CLASSNAMES[variant], className);
81
83
  var editable = Boolean(onDelete);
82
84
 
83
85
  var handleDelete = function handleDelete(evt) {
@@ -93,9 +95,9 @@ var Tag = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
93
95
  "aria-label": title,
94
96
  ref: ref
95
97
  }), /*#__PURE__*/_react["default"].createElement("span", {
96
- className: (0, _satellitePrefixer["default"])(_templateObject14 || (_templateObject14 = (0, _taggedTemplateLiteral2["default"])(["truncate flex-1"])))
98
+ className: (0, _satellitePrefixer["default"])(_templateObject16 || (_templateObject16 = (0, _taggedTemplateLiteral2["default"])(["truncate flex-1"])))
97
99
  }, children), editable && /*#__PURE__*/_react["default"].createElement("button", {
98
- className: (0, _classnames["default"])((0, _satellitePrefixer["default"])(_templateObject15 || (_templateObject15 = (0, _taggedTemplateLiteral2["default"])(["tag-close-button"]))), BUTTON_CLOSE_VARIANT_CLASSNAMES[variant]),
100
+ className: (0, _classnames["default"])((0, _satellitePrefixer["default"])(_templateObject17 || (_templateObject17 = (0, _taggedTemplateLiteral2["default"])(["tag-close-button"]))), BUTTON_CLOSE_VARIANT_CLASSNAMES[variant]),
99
101
  type: "button",
100
102
  onClick: handleDelete,
101
103
  "aria-label": "Remove ".concat(title)
@@ -4,7 +4,9 @@ import { MedallionVariant } from "../../Medallion";
4
4
  export interface AutoCompleteEmptyStateProps {
5
5
  icon?: IconComponentType;
6
6
  variant?: MedallionVariant;
7
+ /** Descriptive title for state */
7
8
  title: React.ReactNode;
9
+ /** Optional description to explain why the screen is empty or define next steps */
8
10
  description?: React.ReactNode;
9
11
  }
10
12
  export declare const AutoCompleteEmptyState: ({ icon, variant, title, description, }: AutoCompleteEmptyStateProps) => JSX.Element;
@@ -1,9 +1,9 @@
1
1
  import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
2
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
3
 
4
- var _templateObject, _templateObject2;
4
+ var _templateObject, _templateObject2, _templateObject3;
5
5
 
6
- import React, { useState } from "react";
6
+ import React, { useEffect, useState } from "react";
7
7
  import cx from "classnames";
8
8
  import stl from "../styles/helpers/satellitePrefixer";
9
9
  import { getUserInitials, getUserBackgroundClassName } from "./utils";
@@ -19,23 +19,28 @@ export var UserAvatar = function UserAvatar(_ref) {
19
19
 
20
20
  var _useState = useState(false),
21
21
  _useState2 = _slicedToArray(_useState, 2),
22
- failedToLoadAvatar = _useState2[0],
23
- setFailedToLoadAvatar = _useState2[1];
22
+ imageLoaded = _useState2[0],
23
+ setImageLoaded = _useState2[1];
24
24
 
25
25
  var initials = getUserInitials(user);
26
- var hasValidAvatar = user.avatar && !failedToLoadAvatar;
26
+ useEffect(function () {
27
+ return setImageLoaded(false);
28
+ }, [user.avatar]);
27
29
  return /*#__PURE__*/React.createElement("div", {
28
- className: cx(stl(_templateObject || (_templateObject = _taggedTemplateLiteral(["relative overflow-hidden flex justify-center items-center rounded-full text-white uppercase"]))), !hasValidAvatar && getUserBackgroundClassName((_user$email = user.email) !== null && _user$email !== void 0 ? _user$email : "no-email"), className),
30
+ className: cx(stl(_templateObject || (_templateObject = _taggedTemplateLiteral(["relative overflow-hidden flex justify-center items-center rounded-full text-white uppercase transition-colors"]))), imageLoaded ? stl(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["bg-white"]))) : getUserBackgroundClassName((_user$email = user.email) !== null && _user$email !== void 0 ? _user$email : "no-email"), className),
29
31
  style: {
30
32
  width: size,
31
33
  height: size
32
34
  }
33
- }, /*#__PURE__*/React.createElement("span", null, initials), hasValidAvatar && /*#__PURE__*/React.createElement("img", {
34
- className: stl(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["w-full absolute top-0 left-0"]))),
35
+ }, /*#__PURE__*/React.createElement("span", null, initials), /*#__PURE__*/React.createElement("img", {
36
+ className: stl(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n w-full absolute top-0 left-0\n transition-opacity ", "\n "])), imageLoaded ? "opacity-100" : "opacity-0"),
35
37
  src: user.avatar,
36
- alt: "".concat(user.name || user.email, "'s avatar"),
38
+ alt: imageLoaded ? "".concat(user.name || user.email, "'s avatar") : "",
39
+ onLoad: function onLoad() {
40
+ return setImageLoaded(true);
41
+ },
37
42
  onError: function onError() {
38
- return setFailedToLoadAvatar(true);
43
+ return setImageLoaded(false);
39
44
  }
40
45
  }));
41
46
  };
@@ -14,14 +14,17 @@ export interface BannerPropsBase {
14
14
  export interface BannerPageProps extends BannerPropsBase {
15
15
  /**
16
16
  * Usage context description
17
- * @default content
17
+ * @default page
18
18
  */
19
19
  usageContext?: "page";
20
20
  }
21
21
  export interface BannerDefaultProps extends BannerPropsBase {
22
- /** Usage context description */
22
+ /**
23
+ * Usage context description
24
+ * @default content
25
+ */
23
26
  usageContext?: "inline" | "content" | "section";
24
- /** Notification title */
27
+ /** Descriptive title for the `Banner` */
25
28
  title?: React.ReactNode;
26
29
  }
27
30
  export declare type BannerProps = BannerPageProps | BannerDefaultProps;
@@ -142,7 +142,7 @@ export var Banner = function Banner(props) {
142
142
  }, children)), onDismiss && /*#__PURE__*/React.createElement("span", {
143
143
  className: stl(_templateObject36 || (_templateObject36 = _taggedTemplateLiteral(["absolute top-2 right-2"])))
144
144
  }, /*#__PURE__*/React.createElement(IconButton, {
145
- title: "Close banner",
145
+ title: "Close",
146
146
  variant: "subtle",
147
147
  size: "small",
148
148
  icon: X,
@@ -1,16 +1,20 @@
1
1
  import React, { FunctionComponent } from "react";
2
2
  import { ColorVariant, IconComponentType } from "../../types";
3
3
  export declare type AlertContextType = "page" | "section";
4
- declare type AlertColorVariant = Exclude<ColorVariant, "blue">;
4
+ export declare type AlertColorVariant = Exclude<ColorVariant, "blue">;
5
5
  export interface AlertProps {
6
6
  /** @ignore */
7
7
  className?: string;
8
8
  /** @ignore */
9
9
  style?: React.CSSProperties;
10
+ /** Descriptive title for `Alert` */
10
11
  title?: React.ReactNode;
11
12
  /** @default grey */
12
13
  variant?: AlertColorVariant;
13
- /** @default section */
14
+ /**
15
+ * Usage context description
16
+ * @default section
17
+ */
14
18
  usageContext?: AlertContextType;
15
19
  icon?: IconComponentType;
16
20
  onDismiss?(): void;
@@ -115,7 +115,7 @@ export var Alert = function Alert(_ref) {
115
115
  className: stl(_templateObject23 || (_templateObject23 = _taggedTemplateLiteral(["absolute top-2 right-2"])))
116
116
  }, /*#__PURE__*/React.createElement(IconButton, {
117
117
  icon: X,
118
- title: "Close banner",
118
+ title: "Close",
119
119
  variant: "subtle",
120
120
  size: "small",
121
121
  onClick: function onClick(evt) {
@@ -10,9 +10,9 @@ interface WidePromoteProps {
10
10
  illustration?: React.ReactNode;
11
11
  }
12
12
  export declare type PromoteProps = {
13
- /** Product context for the banner (either a string or a React component) */
13
+ /** Product context for the banner */
14
14
  context?: React.ReactNode;
15
- /** Descriptive title for banner (either a string or a React component) */
15
+ /** Descriptive title for banner */
16
16
  title: React.ReactNode;
17
17
  /** Buttons */
18
18
  actions?: React.ReactNode;
@@ -83,7 +83,7 @@ export var Promote = function Promote(_ref) {
83
83
  className: stl(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral(["absolute top-2 right-2"])))
84
84
  }, /*#__PURE__*/React.createElement(IconButton, {
85
85
  icon: X,
86
- title: "Close banner",
86
+ title: "Close",
87
87
  variant: "subtle",
88
88
  size: "small",
89
89
  onClick: function onClick(evt) {
@@ -16,7 +16,7 @@ interface RenderTargetParams {
16
16
  toggle: (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;
17
17
  isOpen: boolean;
18
18
  }
19
- export interface DatePickerProps {
19
+ export declare type DatePickerProps = {
20
20
  calendarProps?: Pick<CalendarProps, "fromMonth" | "toMonth" | "disabledDays">;
21
21
  onOpen?: DisplayProps["onClick"];
22
22
  onChange?: (value: Date | null) => void;
@@ -30,6 +30,11 @@ export interface DatePickerProps {
30
30
  initialValue?: Date | null;
31
31
  buttonSize?: DisplayProps["size"];
32
32
  modalPlacement?: ModalProps["placement"];
33
- }
33
+ } & ({
34
+ editableYear?: false;
35
+ } | {
36
+ editableYear: true;
37
+ years?: number[];
38
+ });
34
39
  declare const DatePicker: FunctionComponent<DatePickerProps>;
35
40
  export default DatePicker;
@@ -4,7 +4,7 @@ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
4
4
 
5
5
  var _templateObject, _templateObject2, _templateObject3, _templateObject4;
6
6
 
7
- import React, { useState } from "react";
7
+ import React, { useMemo, useState } from "react";
8
8
  import stl from "../../styles/helpers/satellitePrefixer";
9
9
  import Modal from "../components/Modal";
10
10
  import Footer from "../components/Footer";
@@ -77,6 +77,17 @@ var DatePicker = function DatePicker(props) {
77
77
  }
78
78
  };
79
79
 
80
+ var yearProps = useMemo(function () {
81
+ var _state$selected;
82
+
83
+ return props.editableYear ? {
84
+ editableYear: true,
85
+ initialDate: (_state$selected = state.selected) !== null && _state$selected !== void 0 ? _state$selected : undefined,
86
+ years: props.years
87
+ } : {
88
+ editableYear: false
89
+ };
90
+ }, [props]);
80
91
  return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("span", {
81
92
  ref: setTargetElement,
82
93
  className: stl(_templateObject || (_templateObject = _taggedTemplateLiteral(["inline-block"])))
@@ -108,7 +119,7 @@ var DatePicker = function DatePicker(props) {
108
119
  }, (_props$calendarProps = props === null || props === void 0 ? void 0 : props.calendarProps) !== null && _props$calendarProps !== void 0 ? _props$calendarProps : {}, {
109
120
  selectedDays: value !== null && value !== void 0 ? value : undefined,
110
121
  onDayClick: handleDayClick
111
- })), /*#__PURE__*/React.createElement(Footer, null, props.renderLeftFooter && /*#__PURE__*/React.createElement("div", null, props.renderLeftFooter({
122
+ }, yearProps)), /*#__PURE__*/React.createElement(Footer, null, props.renderLeftFooter && /*#__PURE__*/React.createElement("div", null, props.renderLeftFooter({
112
123
  state: state,
113
124
  dispatch: dispatch
114
125
  })), !props.renderRightPanel && /*#__PURE__*/React.createElement(FooterActions, {
@@ -24,8 +24,16 @@ var datePickerPlugin = function datePickerPlugin(_ref) {
24
24
  };
25
25
 
26
26
  addComponents((_addComponents = {
27
- ".DayPicker-Caption": {
28
- textAlign: "center"
27
+ ".DayPicker-Year": {
28
+ // ChevronDown svg from react-feather,
29
+ backgroundImage: 'url(\'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><polyline points="6 9 12 15 18 9"></polyline></svg>\')',
30
+ backgroundRepeat: "no-repeat",
31
+ backgroundPositionX: "100%",
32
+ backgroundPositionY: "5px",
33
+ paddingRight: "1rem"
34
+ },
35
+ ".DayPicker-Month": {
36
+ marginTop: "0rem"
29
37
  }
30
38
  }, _defineProperty(_addComponents, prefix(".date-picker, .date-range-picker"), {
31
39
  "& .DayPicker-Months": {
@@ -16,7 +16,7 @@ interface RenderTargetParams {
16
16
  toggle: () => void;
17
17
  isOpen: boolean;
18
18
  }
19
- export interface DateRangePickerProps {
19
+ export declare type DateRangePickerProps = {
20
20
  id?: string;
21
21
  range: DateRangePickerTimeRange | null;
22
22
  displayOnlyRanges?: DateRangePickerTimeRange[];
@@ -30,6 +30,11 @@ export interface DateRangePickerProps {
30
30
  renderRightPanel?: (args: RightSidePanelComponentArgs) => React.ReactNode;
31
31
  buttonSize?: DateRangePickerDisplayProps["buttonSize"];
32
32
  modalPlacement?: ModalProps["placement"];
33
- }
33
+ } & ({
34
+ editableYear?: false;
35
+ } | {
36
+ editableYear: true;
37
+ years?: number[];
38
+ });
34
39
  declare const DateRangePicker: FunctionComponent<DateRangePickerProps>;
35
40
  export default DateRangePicker;
@@ -1,10 +1,12 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
3
3
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
4
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
4
5
 
5
6
  var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5;
6
7
 
7
- import React, { useState } from "react";
8
+ var _excluded = ["id", "range", "displayOnlyRanges", "calendarProps", "initialState", "stateReducer", "onAction", "validate", "renderTarget", "renderLeftFooter", "renderRightPanel", "buttonSize", "modalPlacement"];
9
+ import React, { useMemo, useState } from "react";
8
10
  import stl from "../../styles/helpers/satellitePrefixer";
9
11
  import Modal from "../components/Modal";
10
12
  import Footer from "../components/Footer";
@@ -39,7 +41,8 @@ var DateRangePicker = function DateRangePicker(_ref2) {
39
41
  renderLeftFooter = _ref2.renderLeftFooter,
40
42
  renderRightPanel = _ref2.renderRightPanel,
41
43
  buttonSize = _ref2.buttonSize,
42
- modalPlacement = _ref2.modalPlacement;
44
+ modalPlacement = _ref2.modalPlacement,
45
+ props = _objectWithoutProperties(_ref2, _excluded);
43
46
 
44
47
  var _useState = useState(null),
45
48
  _useState2 = _slicedToArray(_useState, 2),
@@ -147,6 +150,17 @@ var DateRangePicker = function DateRangePicker(_ref2) {
147
150
  }),
148
151
  hoveredTo: (_state$hovered = state.hovered) !== null && _state$hovered !== void 0 ? _state$hovered : undefined
149
152
  };
153
+ var yearProps = useMemo(function () {
154
+ var _ref3, _displayedRange$start3;
155
+
156
+ return props.editableYear ? {
157
+ editableYear: true,
158
+ initialDate: (_ref3 = (_displayedRange$start3 = displayedRange.start) !== null && _displayedRange$start3 !== void 0 ? _displayedRange$start3 : displayedRange.end) !== null && _ref3 !== void 0 ? _ref3 : undefined,
159
+ years: props.years
160
+ } : {
161
+ editableYear: false
162
+ };
163
+ }, [props, displayedRange]);
150
164
  return /*#__PURE__*/React.createElement("div", {
151
165
  className: stl(_templateObject || (_templateObject = _taggedTemplateLiteral(["date-range-picker"])))
152
166
  }, /*#__PURE__*/React.createElement("span", {
@@ -186,7 +200,7 @@ var DateRangePicker = function DateRangePicker(_ref2) {
186
200
  onDayClick: handleDayClick,
187
201
  onDayMouseEnter: handleMouseEnter,
188
202
  onDayMouseLeave: handleMouseLeave
189
- })), /*#__PURE__*/React.createElement(Footer, null, renderLeftFooter && /*#__PURE__*/React.createElement("div", null, renderLeftFooter({
203
+ }, yearProps)), /*#__PURE__*/React.createElement(Footer, null, renderLeftFooter && /*#__PURE__*/React.createElement("div", null, renderLeftFooter({
190
204
  state: state,
191
205
  dispatch: dispatch
192
206
  })), !renderRightPanel && /*#__PURE__*/React.createElement(FooterActions, {
@@ -1,7 +1,13 @@
1
1
  import { FunctionComponent } from "react";
2
2
  import { DayPickerProps } from "react-day-picker";
3
3
  declare type ExcludedDayPickerProps = "captionElement" | "showOutsideDays" | "enableOutsideDaysClick" | "fixedWeeks" | "labels" | "navbarElement" | "onTodayButtonClick" | "pagedNavigation" | "renderDay" | "renderWeek" | "reverseMonths" | "showWeekNumbers" | "showWeekDays" | "todayButton" | "weekdayElement" | "weekdaysLong" | "weekdaysShort";
4
- export interface CalendarProps extends Omit<DayPickerProps, ExcludedDayPickerProps> {
5
- }
4
+ export declare type EditableYearProps = {
5
+ editableYear?: false;
6
+ } | {
7
+ editableYear: true;
8
+ years?: number[];
9
+ initialDate?: Date;
10
+ };
11
+ export declare type CalendarProps = Omit<DayPickerProps, ExcludedDayPickerProps> & EditableYearProps;
6
12
  declare const Calendar: FunctionComponent<CalendarProps>;
7
13
  export default Calendar;
@@ -1,24 +1,64 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
- import React from "react";
3
+ import React, { useCallback, useMemo, useState } from "react";
4
4
  import DayPicker from "react-day-picker";
5
+ import { add, eachYearOfInterval, getYear, setYear } from "date-fns";
5
6
  import NavBar from "./NavBar";
6
7
  var excludedDayPickerPropsList = ["captionElement", "showOutsideDays", "enableOutsideDaysClick", "fixedWeeks", "labels", "navbarElement", "onTodayButtonClick", "pagedNavigation", "renderDay", "renderWeek", "reverseMonths", "showWeekNumbers", "showWeekDays", "todayButton", "weekdayElement", "weekdaysLong", "weekdaysShort"];
7
8
 
8
9
  var Calendar = function Calendar(props) {
10
+ var initialDate = useMemo(function () {
11
+ return props.editableYear && props.initialDate ? props.initialDate : new Date();
12
+ }, [props]);
13
+
14
+ var _useState = useState(initialDate),
15
+ _useState2 = _slicedToArray(_useState, 2),
16
+ month = _useState2[0],
17
+ setMonth = _useState2[1];
18
+
19
+ var years = useMemo(function () {
20
+ if (!props.editableYear) return [];
21
+ if (props.years) return props.years;
22
+ return eachYearOfInterval({
23
+ start: add(initialDate, {
24
+ years: -5
25
+ }),
26
+ end: add(initialDate, {
27
+ years: 10
28
+ })
29
+ }).map(getYear);
30
+ }, [props, initialDate]);
31
+ var onYearChange = useCallback(function (year) {
32
+ return setMonth(setYear(month, year));
33
+ }, [month]);
9
34
  var curatedProps = Object.fromEntries(Object.entries(props).filter(function (_ref) {
10
35
  var _ref2 = _slicedToArray(_ref, 1),
11
36
  key = _ref2[0];
12
37
 
13
- return (// @ts-ignore
38
+ return (// @ts-expect-error
14
39
  !excludedDayPickerPropsList.includes(key)
15
40
  );
16
41
  }));
42
+ var yearsProps = useMemo(function () {
43
+ return props.editableYear ? {
44
+ editableYear: true,
45
+ years: years,
46
+ onYearChange: onYearChange
47
+ } : {
48
+ editableYear: false
49
+ };
50
+ }, [onYearChange, props, years]);
17
51
  return /*#__PURE__*/React.createElement(DayPicker, _extends({}, curatedProps, {
52
+ month: props.editableYear ? month : undefined,
18
53
  showOutsideDays: false,
19
54
  enableOutsideDaysClick: false,
20
55
  fixedWeeks: false,
21
- navbarElement: NavBar
56
+ navbarElement: function navbarElement(navBarProps) {
57
+ return /*#__PURE__*/React.createElement(NavBar, _extends({}, navBarProps, yearsProps));
58
+ },
59
+ captionElement: function captionElement() {
60
+ return null;
61
+ }
22
62
  }));
23
63
  };
24
64
 
@@ -1,5 +1,12 @@
1
1
  import { FunctionComponent } from "react";
2
2
  import { NavbarElementProps } from "react-day-picker";
3
- export declare type NavBarProps = NavbarElementProps;
3
+ export declare type NavBarYearProps = {
4
+ editableYear?: false;
5
+ } | {
6
+ editableYear: true;
7
+ years: number[];
8
+ onYearChange: (year: number) => void;
9
+ };
10
+ export declare type NavBarProps = NavbarElementProps & NavBarYearProps;
4
11
  declare const NavBar: FunctionComponent<NavBarProps>;
5
12
  export default NavBar;
@@ -1,8 +1,12 @@
1
1
  import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
2
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
3
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
2
4
 
3
- var _templateObject;
5
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4;
4
6
 
5
- import React from "react";
7
+ var _excluded = ["onPreviousClick", "onNextClick", "showPreviousButton", "showNextButton", "month", "localeUtils"];
8
+ import cx from "classnames";
9
+ import React, { useMemo } from "react";
6
10
  import { ChevronLeft, ChevronRight } from "react-feather";
7
11
  import stl from "../../styles/helpers/satellitePrefixer";
8
12
  import { IconButton } from "../../Button";
@@ -11,9 +15,26 @@ var NavBar = function NavBar(_ref) {
11
15
  var onPreviousClick = _ref.onPreviousClick,
12
16
  onNextClick = _ref.onNextClick,
13
17
  showPreviousButton = _ref.showPreviousButton,
14
- showNextButton = _ref.showNextButton;
18
+ showNextButton = _ref.showNextButton,
19
+ month = _ref.month,
20
+ localeUtils = _ref.localeUtils,
21
+ props = _objectWithoutProperties(_ref, _excluded);
22
+
23
+ var years = useMemo(function () {
24
+ if (!props.editableYear) return [];
25
+ var monthYear = month.getFullYear(); // year of the currently shown month
26
+
27
+ if (props.years.includes(monthYear)) return props.years;
28
+ var minYear = Math.min.apply(Math, _toConsumableArray(props.years).concat([monthYear]));
29
+ var maxYear = Math.max.apply(Math, _toConsumableArray(props.years).concat([monthYear]));
30
+ return Array.from({
31
+ length: maxYear - minYear + 1
32
+ }, function (_, i) {
33
+ return i + minYear;
34
+ });
35
+ }, [props, month]);
15
36
  return /*#__PURE__*/React.createElement("div", {
16
- className: stl(_templateObject || (_templateObject = _taggedTemplateLiteral(["w-full absolute top-3 left-0 px-5 pb-0 flex justify-between"])))
37
+ className: stl(_templateObject || (_templateObject = _taggedTemplateLiteral(["w-full top-3 left-0 pt-5 px-5 pb-2 flex justify-between"])))
17
38
  }, /*#__PURE__*/React.createElement(IconButton, {
18
39
  icon: ChevronLeft,
19
40
  title: "Previous month",
@@ -21,7 +42,22 @@ var NavBar = function NavBar(_ref) {
21
42
  return onPreviousClick();
22
43
  },
23
44
  disabled: !showPreviousButton
24
- }), /*#__PURE__*/React.createElement(IconButton, {
45
+ }), /*#__PURE__*/React.createElement("div", {
46
+ className: cx(stl(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["flex items-center text-center"]))))
47
+ }, /*#__PURE__*/React.createElement("div", {
48
+ className: stl(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["font-medium text-md"])))
49
+ }, localeUtils.getMonths()[month.getMonth()], " ", props.editableYear ? /*#__PURE__*/React.createElement("select", {
50
+ className: cx("DayPicker-Year", stl(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["pl-0.5 font-medium outline-none border-transparent border-2 rounded focus:border-nebula-600 focus:shadow-z100 appearance-none"])))),
51
+ value: month.getFullYear(),
52
+ onChange: function onChange(e) {
53
+ return props.onYearChange(parseInt(e.currentTarget.value));
54
+ }
55
+ }, years.map(function (year) {
56
+ return /*#__PURE__*/React.createElement("option", {
57
+ key: year,
58
+ value: year
59
+ }, year);
60
+ })) : month.getFullYear())), /*#__PURE__*/React.createElement(IconButton, {
25
61
  icon: ChevronRight,
26
62
  title: "Next month",
27
63
  onClick: function onClick() {
@@ -2,7 +2,7 @@ import React, { FunctionComponent } from "react";
2
2
  import { ButtonProps } from "../Button";
3
3
  import { RenderTargetParams } from "./Dropdown";
4
4
  export interface DropdownButtonProps extends Omit<ButtonProps<"button">, "title" | "endIcon"> {
5
- /** Title displayed in the `Dropdown` */
5
+ /** Descriptive title for `Dropdown` */
6
6
  title: React.ReactNode;
7
7
  renderFooter?: (args: RenderTargetParams) => React.ReactNode;
8
8
  }
@@ -72,9 +72,10 @@ export var Dropzone = function Dropzone(_ref2) {
72
72
  status = _useFieldState.status;
73
73
 
74
74
  var onDrop = useCallback(function (acceptedFiles, fileRejections) {
75
- setFiles([].concat(_toConsumableArray(files), _toConsumableArray(acceptedFiles)));
76
- onChange === null || onChange === void 0 ? void 0 : onChange([].concat(_toConsumableArray(files), _toConsumableArray(acceptedFiles)), fileRejections);
77
- }, [files, onChange]);
75
+ var updatedFiles = multiple ? [].concat(_toConsumableArray(files), _toConsumableArray(acceptedFiles)) : acceptedFiles;
76
+ setFiles(updatedFiles);
77
+ onChange === null || onChange === void 0 ? void 0 : onChange(updatedFiles, fileRejections);
78
+ }, [multiple, files, onChange]);
78
79
 
79
80
  var handleClear = function handleClear(evt) {
80
81
  evt.stopPropagation();
@@ -3,7 +3,7 @@ import { FlexGridDirection } from "../FlexGrid";
3
3
  export declare type EmptyStateUsageContexts = "result" | "feature" | "page";
4
4
  export declare type EmptyStateWidths = "medium" | "large" | "xlarge";
5
5
  export interface EmptyStatePropsAll {
6
- /** Descriptive title for the state (either a string or a React component) */
6
+ /** Descriptive title for the state */
7
7
  title: React.ReactNode;
8
8
  /** Optional description to explain why the screen is empty or define next steps */
9
9
  description?: React.ReactNode;
@@ -5,6 +5,7 @@ declare type InsertContext = {
5
5
  variant?: BadgeVariants;
6
6
  };
7
7
  export interface InsertProps {
8
+ /** Descriptive title for the `Insert` */
8
9
  title: React.ReactNode;
9
10
  contexts?: Array<string | InsertContext>;
10
11
  }
@@ -1,6 +1,6 @@
1
1
  import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
2
2
 
3
- var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9;
3
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10;
4
4
 
5
5
  import React from "react";
6
6
  import cx from "classnames";
@@ -12,7 +12,8 @@ var VARIANT_CLASSNAMES = {
12
12
  blue: stl(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["medallion-blue text-blue-600"]))),
13
13
  green: stl(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["medallion-green text-green-700"]))),
14
14
  orange: stl(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["medallion-orange text-orange-600"]))),
15
- red: stl(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["medallion-red text-red-600"])))
15
+ red: stl(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["medallion-red text-red-600"]))),
16
+ white: stl(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["medallion-white text-nebula-500"])))
16
17
  };
17
18
  export var Medallion = function Medallion(_ref) {
18
19
  var Icon = _ref.icon,
@@ -23,9 +24,9 @@ export var Medallion = function Medallion(_ref) {
23
24
  className = _ref.className;
24
25
  var medallionClassName = VARIANT_CLASSNAMES[variant];
25
26
  return /*#__PURE__*/React.createElement("div", {
26
- className: cx(stl(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["medallion inline-flex items-center justify-center rounded-full ", ""])), size === "large" && "medallion-large"), medallionClassName, className)
27
+ className: cx(stl(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["medallion inline-flex items-center justify-center rounded-full ", ""])), size === "large" && "medallion-large"), medallionClassName, className)
27
28
  }, /*#__PURE__*/React.createElement(Icon, {
28
- className: stl(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["p-1 ", ""])), size === "large" && "w-10 h-10")
29
+ className: stl(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["p-1 ", ""])), size === "large" && "w-10 h-10")
29
30
  }));
30
31
  };
31
32
  export default Medallion;
@@ -9,7 +9,7 @@ var rgba = _rgba;
9
9
  var medallionPlugin = function medallionPlugin(_ref) {
10
10
  var addComponents = _ref.addComponents,
11
11
  theme = _ref.theme;
12
- var colors = ["grey", "pink", "accent", "blue", "green", "orange", "red"];
12
+ var colors = ["grey", "pink", "accent", "blue", "green", "orange", "red", "white"];
13
13
  addComponents({
14
14
  ".medallion": {
15
15
  height: 40,
@@ -23,8 +23,8 @@ var medallionPlugin = function medallionPlugin(_ref) {
23
23
 
24
24
  colors.map(function (color) {
25
25
  return addComponents(_defineProperty({}, ".medallion-".concat(color), {
26
- backgroundImage: "linear-gradient(to bottom, ".concat(theme("colors.".concat(color, ".100")), " 0%, ").concat(theme("colors.".concat(color, ".200")), " 100%)"),
27
- boxShadow: "inset 0px -1px 0px 0px ".concat(theme("colors.".concat(color, ".300")), ", inset 0px 1px 0px 0px rgba(255, 255, 255, 0.5), 0px 7px 11px -3px ").concat(rgba(theme("colors.grey.900"), 0.2), ", 0px 2px 4px 0px ").concat(rgba(theme("colors.grey.900"), 0.3))
26
+ backgroundImage: color === "white" ? "linear-gradient(to bottom, ".concat(theme("colors.white"), " 0%, ").concat(theme("colors.grey.100"), " 100%)") : "linear-gradient(to bottom, ".concat(theme("colors.".concat(color, ".100")), " 0%, ").concat(theme("colors.".concat(color, ".200")), " 100%)"),
27
+ boxShadow: color === "white" ? "0px 4px 8px -2px rgba(33, 36, 61, 0.25), inset 0px -2px 2px rgba(35, 38, 59, 0.03)" : "0px 4px 8px -2px rgba(33, 36, 61, 0.25), inset 0px -2px 2px ".concat(rgba(theme("colors.".concat(color, ".300")), 0.03))
28
28
  }));
29
29
  });
30
30
  };