@algolia/satellite 1.0.0-beta.126 → 1.0.0-beta.129

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 (65) 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 +28 -4
  18. package/cjs/Dropdown/DropdownButton.d.ts +1 -1
  19. package/cjs/Dropzone/Dropzone.d.ts +16 -0
  20. package/cjs/Dropzone/Dropzone.js +180 -0
  21. package/cjs/Dropzone/index.d.ts +2 -0
  22. package/cjs/Dropzone/index.js +32 -0
  23. package/cjs/EmptyState/types.d.ts +1 -1
  24. package/cjs/Insert/Insert.d.ts +1 -0
  25. package/cjs/Medallion/Medallion.js +5 -4
  26. package/cjs/Medallion/Medallion.tailwind.js +3 -3
  27. package/cjs/Medallion/types.d.ts +1 -1
  28. package/cjs/index.d.ts +1 -0
  29. package/cjs/index.js +14 -0
  30. package/cjs/utils/formatters.d.ts +25 -0
  31. package/cjs/utils/formatters.js +51 -0
  32. package/esm/AutoComplete/components/AutoCompleteEmptyState.d.ts +2 -0
  33. package/esm/Avatars/UserAvatar.js +15 -10
  34. package/esm/Banner/Banner.d.ts +6 -3
  35. package/esm/Banner/Banner.js +1 -1
  36. package/esm/Banners/Alert/Alert.d.ts +6 -2
  37. package/esm/Banners/Alert/Alert.js +1 -1
  38. package/esm/Banners/Promote/Promote.d.ts +2 -2
  39. package/esm/Banners/Promote/Promote.js +1 -1
  40. package/esm/DatePicker/DatePicker/DatePicker.d.ts +7 -2
  41. package/esm/DatePicker/DatePicker/DatePicker.js +13 -2
  42. package/esm/DatePicker/DatePicker.tailwind.js +10 -2
  43. package/esm/DatePicker/DateRangePicker/DateRangePicker.d.ts +7 -2
  44. package/esm/DatePicker/DateRangePicker/DateRangePicker.js +17 -3
  45. package/esm/DatePicker/components/Calendar.d.ts +8 -2
  46. package/esm/DatePicker/components/Calendar.js +43 -3
  47. package/esm/DatePicker/components/NavBar.d.ts +8 -1
  48. package/esm/DatePicker/components/NavBar.js +26 -4
  49. package/esm/Dropdown/DropdownButton.d.ts +1 -1
  50. package/esm/Dropzone/Dropzone.d.ts +16 -0
  51. package/esm/Dropzone/Dropzone.js +149 -0
  52. package/esm/Dropzone/index.d.ts +2 -0
  53. package/esm/Dropzone/index.js +2 -0
  54. package/esm/EmptyState/types.d.ts +1 -1
  55. package/esm/Insert/Insert.d.ts +1 -0
  56. package/esm/Medallion/Medallion.js +5 -4
  57. package/esm/Medallion/Medallion.tailwind.js +3 -3
  58. package/esm/Medallion/types.d.ts +1 -1
  59. package/esm/index.d.ts +1 -0
  60. package/esm/index.js +1 -0
  61. package/esm/utils/formatters.d.ts +25 -0
  62. package/esm/utils/formatters.js +40 -0
  63. package/package.json +13 -7
  64. package/satellite.css +22 -9
  65. package/satellite.min.css +1 -1
@@ -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,7 +1,10 @@
1
1
  import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
2
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
2
3
 
3
- var _templateObject;
4
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4;
4
5
 
6
+ var _excluded = ["onPreviousClick", "onNextClick", "showPreviousButton", "showNextButton", "month", "localeUtils"];
7
+ import cx from "classnames";
5
8
  import React from "react";
6
9
  import { ChevronLeft, ChevronRight } from "react-feather";
7
10
  import stl from "../../styles/helpers/satellitePrefixer";
@@ -11,9 +14,13 @@ var NavBar = function NavBar(_ref) {
11
14
  var onPreviousClick = _ref.onPreviousClick,
12
15
  onNextClick = _ref.onNextClick,
13
16
  showPreviousButton = _ref.showPreviousButton,
14
- showNextButton = _ref.showNextButton;
17
+ showNextButton = _ref.showNextButton,
18
+ month = _ref.month,
19
+ localeUtils = _ref.localeUtils,
20
+ props = _objectWithoutProperties(_ref, _excluded);
21
+
15
22
  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"])))
23
+ className: stl(_templateObject || (_templateObject = _taggedTemplateLiteral(["w-full top-3 left-0 pt-5 px-5 pb-2 flex justify-between"])))
17
24
  }, /*#__PURE__*/React.createElement(IconButton, {
18
25
  icon: ChevronLeft,
19
26
  title: "Previous month",
@@ -21,7 +28,22 @@ var NavBar = function NavBar(_ref) {
21
28
  return onPreviousClick();
22
29
  },
23
30
  disabled: !showPreviousButton
24
- }), /*#__PURE__*/React.createElement(IconButton, {
31
+ }), /*#__PURE__*/React.createElement("div", {
32
+ className: cx(stl(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["flex items-center text-center"]))))
33
+ }, /*#__PURE__*/React.createElement("div", {
34
+ className: stl(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["font-medium text-md"])))
35
+ }, localeUtils.getMonths()[month.getMonth()], " ", props.editableYear ? /*#__PURE__*/React.createElement("select", {
36
+ 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"])))),
37
+ value: month.getFullYear(),
38
+ onChange: function onChange(e) {
39
+ return props.onYearChange(parseInt(e.currentTarget.value));
40
+ }
41
+ }, props.years.map(function (year) {
42
+ return /*#__PURE__*/React.createElement("option", {
43
+ key: year,
44
+ value: year
45
+ }, year);
46
+ })) : month.getFullYear())), /*#__PURE__*/React.createElement(IconButton, {
25
47
  icon: ChevronRight,
26
48
  title: "Next month",
27
49
  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
  }
@@ -0,0 +1,16 @@
1
+ import { FC } from "react";
2
+ import { DropzoneProps as ReactDropZoneProps, FileRejection } from "react-dropzone";
3
+ interface DropzoneBaseProps {
4
+ id?: string;
5
+ onChange?(acceptedFiles: File[], fileRejections: FileRejection[]): void;
6
+ placeholder?: string;
7
+ /** @default false */
8
+ clearable?: boolean;
9
+ /** @ignore */
10
+ className?: string;
11
+ /** @default false */
12
+ multiple?: boolean;
13
+ }
14
+ export declare type DropzoneProps = DropzoneBaseProps & Omit<ReactDropZoneProps, "onDrop" | "onDropAccepted" | "onDropRejected" | "multiple">;
15
+ export declare const Dropzone: FC<DropzoneProps>;
16
+ export default Dropzone;
@@ -0,0 +1,149 @@
1
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
3
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
4
+ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
5
+ import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
6
+ var _excluded = ["id", "placeholder", "disabled", "multiple", "clearable", "onChange", "className"];
7
+
8
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11;
9
+
10
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
11
+
12
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
13
+
14
+ import cx from "classnames";
15
+ import React, { useCallback, useMemo, useState } from "react";
16
+ import { useDropzone } from "react-dropzone";
17
+ import { Check, UploadCloud, X } from "react-feather";
18
+ import { IconButton } from "../Button";
19
+ import { useFieldState } from "../Field";
20
+ import stl from "../styles/helpers/satellitePrefixer";
21
+ import { formatHumanSize } from "../utils/formatters";
22
+ import { uniqueId } from "../utils/uniqueId";
23
+
24
+ var DropzoneFileItem = function DropzoneFileItem(_ref) {
25
+ var file = _ref.file;
26
+ return /*#__PURE__*/React.createElement("span", {
27
+ className: stl(_templateObject || (_templateObject = _taggedTemplateLiteral(["truncate text-grey-900"])))
28
+ }, file.name, " - ", formatHumanSize(file.size));
29
+ };
30
+
31
+ var STATUS_CLASSNAMES = {
32
+ "default": "",
33
+ invalid: stl(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["input-invalid"]))),
34
+ validated: ""
35
+ };
36
+
37
+ var InvalidIcon = function InvalidIcon() {
38
+ return /*#__PURE__*/React.createElement(X, {
39
+ className: stl(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["mr-4 h-4 w-4 text-white bg-red-700 p-px rounded-full"])))
40
+ });
41
+ };
42
+
43
+ var ValidatedIcon = function ValidatedIcon() {
44
+ return /*#__PURE__*/React.createElement(Check, {
45
+ className: stl(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["mr-4 h-4 w-4 text-white bg-accent-700 p-px rounded-full"])))
46
+ });
47
+ };
48
+
49
+ export var Dropzone = function Dropzone(_ref2) {
50
+ var id = _ref2.id,
51
+ placeholder = _ref2.placeholder,
52
+ disabled = _ref2.disabled,
53
+ _ref2$multiple = _ref2.multiple,
54
+ multiple = _ref2$multiple === void 0 ? false : _ref2$multiple,
55
+ _ref2$clearable = _ref2.clearable,
56
+ clearable = _ref2$clearable === void 0 ? false : _ref2$clearable,
57
+ onChange = _ref2.onChange,
58
+ className = _ref2.className,
59
+ props = _objectWithoutProperties(_ref2, _excluded);
60
+
61
+ var _useState = useState([]),
62
+ _useState2 = _slicedToArray(_useState, 2),
63
+ files = _useState2[0],
64
+ setFiles = _useState2[1];
65
+
66
+ var _useState3 = useState(false),
67
+ _useState4 = _slicedToArray(_useState3, 2),
68
+ focused = _useState4[0],
69
+ setFocused = _useState4[1];
70
+
71
+ var _useFieldState = useFieldState(),
72
+ status = _useFieldState.status;
73
+
74
+ var onDrop = useCallback(function (acceptedFiles, fileRejections) {
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]);
79
+
80
+ var handleClear = function handleClear(evt) {
81
+ evt.stopPropagation();
82
+ setFiles([]);
83
+ onChange === null || onChange === void 0 ? void 0 : onChange([], []);
84
+ };
85
+
86
+ var _useDropzone = useDropzone(_objectSpread(_objectSpread({
87
+ disabled: disabled,
88
+ multiple: multiple
89
+ }, props), {}, {
90
+ onDrop: onDrop
91
+ })),
92
+ getRootProps = _useDropzone.getRootProps,
93
+ getInputProps = _useDropzone.getInputProps,
94
+ isDragActive = _useDropzone.isDragActive,
95
+ isDragReject = _useDropzone.isDragReject;
96
+
97
+ var dropzoneId = useMemo(function () {
98
+ return id !== null && id !== void 0 ? id : uniqueId("dropzone");
99
+ }, [id]);
100
+ var isValueEmpty = files.length === 0;
101
+ var StatusIcon = status === "invalid" ? InvalidIcon : status === "validated" ? ValidatedIcon : React.Fragment;
102
+ return /*#__PURE__*/React.createElement("div", getRootProps({
103
+ "aria-controls": dropzoneId,
104
+ className: cx(stl(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n input group\n ", "\n ", "\n min-h-16 cursor-pointer\n ", ""])), focused && "input-focused", disabled && "input-disabled cursor-not-allowed", isDragReject ? "border-red-200 cursor-not-allowed" : isDragActive ? "border-nebula-500" : null), STATUS_CLASSNAMES[status], className),
105
+ onClick: function onClick(evt) {
106
+ // Helps with https://github.com/react-dropzone/react-dropzone/issues/182
107
+ if (evt.target.closest("label")) {
108
+ evt.stopPropagation();
109
+ }
110
+ }
111
+ }), /*#__PURE__*/React.createElement("input", getInputProps({
112
+ id: dropzoneId,
113
+ onFocus: function onFocus() {
114
+ return setFocused(true);
115
+ },
116
+ onBlur: function onBlur() {
117
+ return setFocused(false);
118
+ }
119
+ })), /*#__PURE__*/React.createElement("div", {
120
+ className: stl(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["flex-1 flex items-center justify-center space-x-2 display-body"])))
121
+ }, files.length > 0 ? files.length > 1 ? /*#__PURE__*/React.createElement("ul", null, files.map(function (file) {
122
+ return /*#__PURE__*/React.createElement("li", {
123
+ key: file.name
124
+ }, /*#__PURE__*/React.createElement(DropzoneFileItem, {
125
+ file: file
126
+ }));
127
+ })) : /*#__PURE__*/React.createElement(DropzoneFileItem, {
128
+ file: files[0]
129
+ }) : /*#__PURE__*/React.createElement("div", {
130
+ className: stl(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["flex items-center justify-center space-x-2 display-body"])))
131
+ }, /*#__PURE__*/React.createElement(UploadCloud, {
132
+ size: "1rem",
133
+ className: stl(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["", ""])), disabled ? "text-grey-200" : "text-grey-500")
134
+ }), /*#__PURE__*/React.createElement("p", {
135
+ className: stl(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["", ""])), disabled ? "text-grey-300" : "typo-subdued")
136
+ }, placeholder !== null && placeholder !== void 0 ? placeholder : "Drop ".concat(multiple ? "files" : "file", " here or click to select.")))), clearable && !disabled && !isValueEmpty && /*#__PURE__*/React.createElement("span", {
137
+ className: stl(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral([""])))
138
+ }, /*#__PURE__*/React.createElement(IconButton, {
139
+ className: stl(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral(["mr-2 ", ""])), focused ? "visible" : "invisible group-hover:visible"),
140
+ title: "Clear input",
141
+ icon: X,
142
+ variant: "subtle",
143
+ size: "small",
144
+ tabIndex: -1,
145
+ "aria-hidden": true,
146
+ onClick: handleClear
147
+ })), /*#__PURE__*/React.createElement(StatusIcon, null));
148
+ };
149
+ export default Dropzone;
@@ -0,0 +1,2 @@
1
+ export * from "./Dropzone";
2
+ export { default } from "./Dropzone";
@@ -0,0 +1,2 @@
1
+ export * from "./Dropzone";
2
+ export { default } from "./Dropzone";
@@ -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
  };
@@ -1,2 +1,2 @@
1
- export declare type MedallionVariant = "accent" | "grey" | "pink" | "blue" | "green" | "orange" | "red";
1
+ export declare type MedallionVariant = "accent" | "grey" | "pink" | "blue" | "green" | "orange" | "red" | "white";
2
2
  export declare type MedallionSize = "default" | "large";
package/esm/index.d.ts CHANGED
@@ -16,6 +16,7 @@ export * from "./Checkbox";
16
16
  export * from "./ClickAwayContainer";
17
17
  export * from "./DatePicker";
18
18
  export * from "./Dropdown";
19
+ export * from "./Dropzone";
19
20
  export * from "./EmptyState";
20
21
  export * from "./Field";
21
22
  export * from "./Flag";
package/esm/index.js CHANGED
@@ -16,6 +16,7 @@ export * from "./Checkbox";
16
16
  export * from "./ClickAwayContainer";
17
17
  export * from "./DatePicker";
18
18
  export * from "./Dropdown";
19
+ export * from "./Dropzone";
19
20
  export * from "./EmptyState";
20
21
  export * from "./Field";
21
22
  export * from "./Flag";
@@ -0,0 +1,25 @@
1
+ declare const defaultHumanSizes: string[];
2
+ export declare function numberWithCommas(x: number | string, precision?: number): string;
3
+ export declare function formatHumanNumber(bytes: number, options?: {
4
+ /** @default 2 */
5
+ decimals?: number;
6
+ /** @default ['', 'K', 'M', 'B', 'T'] */
7
+ sizes?: typeof defaultHumanSizes;
8
+ /** @default 1000 */
9
+ divider?: number;
10
+ /**
11
+ * Hides the decimal points if they're 0
12
+ * @default false
13
+ */
14
+ prettyDecimals?: boolean;
15
+ }): string;
16
+ export declare function formatHumanSize(nb: number, options?: {
17
+ /** @default 2 */
18
+ decimals?: number;
19
+ /**
20
+ * Hides the decimal points if they're 0
21
+ * @default false
22
+ */
23
+ prettyDecimals?: boolean;
24
+ }): string;
25
+ export {};
@@ -0,0 +1,40 @@
1
+ var defaultHumanSizes = ["", "K", "M", "B", "T"];
2
+ export function numberWithCommas(x) {
3
+ var precision = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
4
+
5
+ if (typeof x !== "number") {
6
+ return x;
7
+ }
8
+
9
+ return (x || 0).toFixed(precision).replace(/\B(?=(\d{3})+(?!\d))/g, ",");
10
+ }
11
+ export function formatHumanNumber(bytes, options) {
12
+ var _ref = options !== null && options !== void 0 ? options : {},
13
+ _ref$decimals = _ref.decimals,
14
+ decimals = _ref$decimals === void 0 ? 2 : _ref$decimals,
15
+ _ref$sizes = _ref.sizes,
16
+ sizes = _ref$sizes === void 0 ? defaultHumanSizes : _ref$sizes,
17
+ _ref$divider = _ref.divider,
18
+ divider = _ref$divider === void 0 ? 1000 : _ref$divider,
19
+ _ref$prettyDecimals = _ref.prettyDecimals,
20
+ prettyDecimals = _ref$prettyDecimals === void 0 ? false : _ref$prettyDecimals;
21
+
22
+ if (bytes === 0) return "0";
23
+ var i = Math.min(Math.max(0, Math.floor(Math.log(Math.abs(bytes)) / Math.log(divider))), sizes.length - 1);
24
+ var nb = bytes / Math.pow(divider, i);
25
+ return (Math.abs(nb) > 1000 ? numberWithCommas(nb, decimals) : prettyDecimals ? parseFloat(nb.toFixed(decimals)) : nb.toFixed(decimals)) + sizes[i];
26
+ }
27
+ export function formatHumanSize(nb, options) {
28
+ var _ref2 = options !== null && options !== void 0 ? options : {},
29
+ _ref2$decimals = _ref2.decimals,
30
+ decimals = _ref2$decimals === void 0 ? 2 : _ref2$decimals,
31
+ _ref2$prettyDecimals = _ref2.prettyDecimals,
32
+ prettyDecimals = _ref2$prettyDecimals === void 0 ? false : _ref2$prettyDecimals;
33
+
34
+ return formatHumanNumber(nb, {
35
+ decimals: decimals,
36
+ sizes: ["", "K", "M", "G", "T"],
37
+ divider: 1000,
38
+ prettyDecimals: prettyDecimals
39
+ }) + "B";
40
+ }
package/package.json CHANGED
@@ -1,18 +1,18 @@
1
1
  {
2
2
  "name": "@algolia/satellite",
3
- "version": "1.0.0-beta.126",
3
+ "version": "1.0.0-beta.129",
4
4
  "description": "Algolia design system React components",
5
5
  "scripts": {
6
- "clean": "del dist",
6
+ "clean": "rimraf dist",
7
7
  "prebuild": "yarn clean",
8
8
  "build": "cross-env NODE_ENV=production run-p build:types build:js build:manifests build:css build:css-min build:scss",
9
9
  "build:_js": "babel src --extensions \".ts,.tsx,.js\" --ignore \"src/**/*.d.ts,src/**/*.stories.tsx,src/**/*.test.ts,src/**/*.test.tsx\"",
10
10
  "build:esm": "cross-env BABEL_MODULE_TYPE=ESM yarn build:_js --out-dir dist/esm",
11
11
  "build:cjs": "cross-env BABEL_MODULE_TYPE=CJS yarn build:_js --out-dir dist/cjs",
12
12
  "build:js": "run-p build:esm build:cjs",
13
- "build:css": "NODE_ENV= postcss -o dist/satellite.css src/styles/satellite.css",
14
- "build:css-min": "NODE_ENV=production postcss -o dist/satellite.min.css src/styles/satellite.css",
15
- "build:css-storybook": "NODE_ENV=storybook postcss -o dist/satellite.css src/styles/satellite.css",
13
+ "build:css": "cross-env NODE_ENV= postcss -o dist/satellite.css src/styles/satellite.css",
14
+ "build:css-min": "cross-env NODE_ENV=production postcss -o dist/satellite.min.css src/styles/satellite.css",
15
+ "build:css-storybook": "cross-env NODE_ENV=storybook postcss -o dist/satellite.css src/styles/satellite.css",
16
16
  "build:scss": "node ./scripts/build-scss-variables.js",
17
17
  "build:types": "node ./scripts/build-types.js",
18
18
  "build:manifests": "node ./scripts/prepare-manifests.js",
@@ -29,7 +29,7 @@
29
29
  "version": "yarn changelog && git add CHANGELOG.md",
30
30
  "postversion": "git push && git push --tags",
31
31
  "release": "./scripts/release.sh",
32
- "chromatic": "NODE_ENV=storybook chromatic --build-script-name build:storybook --exit-zero-on-changes --auto-accept-changes master"
32
+ "chromatic": "cross-env NODE_ENV=storybook chromatic --build-script-name build:storybook --exit-zero-on-changes --auto-accept-changes master"
33
33
  },
34
34
  "publishConfig": {
35
35
  "access": "public"
@@ -43,7 +43,12 @@
43
43
  "react",
44
44
  "design"
45
45
  ],
46
- "author": "Algolia (contact@algolia.com)",
46
+ "author": "Algolia <contact@algolia.com>",
47
+ "contributors": [
48
+ "Vincent Lemeunier <vincent.lemeunier@algolia.com>",
49
+ "Kevin Østerkilde <kevin.osterkilde@algolia.com>",
50
+ "Clément Aupiais <clement.aupiais@algolia.com>"
51
+ ],
47
52
  "license": "MIT",
48
53
  "bugs": {
49
54
  "url": "https://github.com/algolia/satellite/issues"
@@ -72,6 +77,7 @@
72
77
  "downshift": "^2.0.10",
73
78
  "lodash.throttle": "^4.1.1",
74
79
  "react-day-picker": "7.4.10",
80
+ "react-dropzone": "^11.5.1",
75
81
  "react-popper": "^2.2.5",
76
82
  "react-transition-group": "4.4.2",
77
83
  "react-use": "^15.3.8",