@algolia/satellite 1.0.0-beta.124 → 1.0.0-beta.128
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.
- package/cjs/Banner/Banner.d.ts +3 -0
- package/cjs/Banner/Banner.js +13 -5
- package/cjs/Banners/Alert/Alert.d.ts +69 -0
- package/cjs/Banners/Alert/Alert.js +144 -0
- package/cjs/Banners/Alert/index.d.ts +2 -0
- package/cjs/Banners/Alert/index.js +32 -0
- package/cjs/Banners/BigBertha/BigBertha.d.ts +40 -0
- package/cjs/Banners/BigBertha/BigBertha.js +68 -0
- package/cjs/Banners/BigBertha/index.d.ts +2 -0
- package/cjs/Banners/BigBertha/index.js +32 -0
- package/cjs/Banners/Promote/Promote.d.ts +56 -0
- package/cjs/Banners/Promote/Promote.js +113 -0
- package/cjs/Banners/Promote/index.d.ts +2 -0
- package/cjs/Banners/Promote/index.js +32 -0
- package/cjs/Banners/index.d.ts +3 -0
- package/cjs/Banners/index.js +44 -0
- package/cjs/Button/Button.tailwind.js +1 -1
- package/cjs/Dropzone/Dropzone.d.ts +16 -0
- package/cjs/Dropzone/Dropzone.js +180 -0
- package/cjs/Dropzone/index.d.ts +2 -0
- package/cjs/Dropzone/index.js +32 -0
- package/cjs/Insert/Insert.d.ts +43 -0
- package/cjs/Insert/Insert.js +80 -0
- package/cjs/Insert/index.d.ts +2 -0
- package/cjs/Insert/index.js +32 -0
- package/cjs/Medallion/Medallion.js +5 -4
- package/cjs/Medallion/Medallion.tailwind.js +3 -3
- package/cjs/Medallion/types.d.ts +1 -1
- package/cjs/Tables/DataTable/DataTable.d.ts +14 -5
- package/cjs/Tables/DataTable/DataTable.js +3 -9
- package/cjs/Tables/DataTable/components/Header.js +2 -2
- package/cjs/Tables/DataTable/types.d.ts +1 -1
- package/cjs/index.d.ts +3 -0
- package/cjs/index.js +42 -0
- package/cjs/utils/formatters.d.ts +25 -0
- package/cjs/utils/formatters.js +51 -0
- package/esm/Banner/Banner.d.ts +3 -0
- package/esm/Banner/Banner.js +12 -5
- package/esm/Banners/Alert/Alert.d.ts +69 -0
- package/esm/Banners/Alert/Alert.js +127 -0
- package/esm/Banners/Alert/index.d.ts +2 -0
- package/esm/Banners/Alert/index.js +2 -0
- package/esm/Banners/BigBertha/BigBertha.d.ts +40 -0
- package/esm/Banners/BigBertha/BigBertha.js +54 -0
- package/esm/Banners/BigBertha/index.d.ts +2 -0
- package/esm/Banners/BigBertha/index.js +2 -0
- package/esm/Banners/Promote/Promote.d.ts +56 -0
- package/esm/Banners/Promote/Promote.js +95 -0
- package/esm/Banners/Promote/index.d.ts +2 -0
- package/esm/Banners/Promote/index.js +2 -0
- package/esm/Banners/index.d.ts +3 -0
- package/esm/Banners/index.js +3 -0
- package/esm/Button/Button.tailwind.js +1 -1
- package/esm/Dropzone/Dropzone.d.ts +16 -0
- package/esm/Dropzone/Dropzone.js +149 -0
- package/esm/Dropzone/index.d.ts +2 -0
- package/esm/Dropzone/index.js +2 -0
- package/esm/Insert/Insert.d.ts +43 -0
- package/esm/Insert/Insert.js +66 -0
- package/esm/Insert/index.d.ts +2 -0
- package/esm/Insert/index.js +2 -0
- package/esm/Medallion/Medallion.js +5 -4
- package/esm/Medallion/Medallion.tailwind.js +3 -3
- package/esm/Medallion/types.d.ts +1 -1
- package/esm/Tables/DataTable/DataTable.d.ts +14 -5
- package/esm/Tables/DataTable/DataTable.js +3 -9
- package/esm/Tables/DataTable/components/Header.js +2 -2
- package/esm/Tables/DataTable/types.d.ts +1 -1
- package/esm/index.d.ts +3 -0
- package/esm/index.js +3 -0
- package/esm/utils/formatters.d.ts +25 -0
- package/esm/utils/formatters.js +40 -0
- package/package.json +2 -1
- package/satellite.css +13 -8
- package/satellite.min.css +1 -1
@@ -0,0 +1,95 @@
|
|
1
|
+
import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
|
2
|
+
|
3
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12;
|
4
|
+
|
5
|
+
import React from "react";
|
6
|
+
import cx from "classnames";
|
7
|
+
import { X } from "react-feather";
|
8
|
+
import Card from "../../Card";
|
9
|
+
import { IconButton } from "../../Button";
|
10
|
+
import stl from "../../styles/helpers/satellitePrefixer";
|
11
|
+
var TITLE_VARIANT_CLASSNAMES = {
|
12
|
+
compact: stl(_templateObject || (_templateObject = _taggedTemplateLiteral(["display-heading mb-2"]))),
|
13
|
+
large: stl(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["display-medium mb-4"])))
|
14
|
+
};
|
15
|
+
var BODY_VARIANT_CLASSNAMES = {
|
16
|
+
compact: stl(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["display-caption typo-subdued"]))),
|
17
|
+
large: stl(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["display-body typo-subdued"])))
|
18
|
+
};
|
19
|
+
var ACTIONS_VARIANT_CLASSNAMES = {
|
20
|
+
compact: stl(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["mt-1"]))),
|
21
|
+
large: stl(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["mt-3"])))
|
22
|
+
};
|
23
|
+
/**
|
24
|
+
* A contextual way of showing our user that a new feature / product is available to them on a higher plan or as an option.
|
25
|
+
|
26
|
+
* ## Examples
|
27
|
+
* [See the component in Figma](https://www.figma.com/file/99l59il97k2n5y4n6Jucal/%5BSatellite%5D-Components?node-id=2912%3A279945)
|
28
|
+
|
29
|
+
* ## Current Status
|
30
|
+
* - [x] Figma
|
31
|
+
* - [x] React
|
32
|
+
* - [ ] Documentation
|
33
|
+
|
34
|
+
* ## Component structure
|
35
|
+
* This component is a bigger banner. It include an optional image, an optional product context, a title, a short text (2 lines maximum without an image and 3 lines maximum with an image), optional CTAs (one primary and one secondary). It comes in two different variants: `large` and `compact`.
|
36
|
+
|
37
|
+
* ## Guidelines
|
38
|
+
* ### How to use it?
|
39
|
+
* You should use this component to display to the users that a new features/product is now available for them in the current context they are in. This feature can be automatically available or locked behind higher plan tier, please make sure you adapt the content to not give false impression of availability to the user.
|
40
|
+
|
41
|
+
* This component is permanently dismissible by default.
|
42
|
+
|
43
|
+
* ### How to NOT use it?
|
44
|
+
* - Do not use this banner as a regular [Alert](https://algolia-satellite.netlify.app/?path=/docs/indicators-banners-alert--variants).
|
45
|
+
* - You can only use one `large` promotion banner per context and two/four compact per context.
|
46
|
+
|
47
|
+
* ### Variants
|
48
|
+
* - `large`
|
49
|
+
* - `compact`
|
50
|
+
|
51
|
+
* ### Do's and Don't
|
52
|
+
* TODO
|
53
|
+
|
54
|
+
* ## Accessibility
|
55
|
+
* TODO
|
56
|
+
*/
|
57
|
+
|
58
|
+
export var Promote = function Promote(_ref) {
|
59
|
+
var context = _ref.context,
|
60
|
+
title = _ref.title,
|
61
|
+
_ref$variant = _ref.variant,
|
62
|
+
variant = _ref$variant === void 0 ? "large" : _ref$variant,
|
63
|
+
illustration = _ref.illustration,
|
64
|
+
actions = _ref.actions,
|
65
|
+
children = _ref.children,
|
66
|
+
onDismiss = _ref.onDismiss;
|
67
|
+
return /*#__PURE__*/React.createElement(Card, {
|
68
|
+
className: stl(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["relative flex"]))),
|
69
|
+
fullBleed: true
|
70
|
+
}, illustration && /*#__PURE__*/React.createElement("div", {
|
71
|
+
className: stl(_templateObject8 || (_templateObject8 = _taggedTemplateLiteral(["w-full min-w-24 max-w-64 flex items-center justify-center bg-grey-100"])))
|
72
|
+
}, illustration), /*#__PURE__*/React.createElement("div", {
|
73
|
+
className: stl(_templateObject9 || (_templateObject9 = _taggedTemplateLiteral(["", ""])), variant === "large" ? "p-6" : "p-4")
|
74
|
+
}, context && /*#__PURE__*/React.createElement("span", {
|
75
|
+
className: stl(_templateObject10 || (_templateObject10 = _taggedTemplateLiteral(["block mb-1"])))
|
76
|
+
}, context), /*#__PURE__*/React.createElement("header", {
|
77
|
+
className: TITLE_VARIANT_CLASSNAMES[variant]
|
78
|
+
}, title), /*#__PURE__*/React.createElement("div", {
|
79
|
+
className: BODY_VARIANT_CLASSNAMES[variant]
|
80
|
+
}, children), actions && /*#__PURE__*/React.createElement("div", {
|
81
|
+
className: cx(stl(_templateObject11 || (_templateObject11 = _taggedTemplateLiteral(["flex space-x-2"]))), ACTIONS_VARIANT_CLASSNAMES[variant])
|
82
|
+
}, actions)), onDismiss && /*#__PURE__*/React.createElement("span", {
|
83
|
+
className: stl(_templateObject12 || (_templateObject12 = _taggedTemplateLiteral(["absolute top-2 right-2"])))
|
84
|
+
}, /*#__PURE__*/React.createElement(IconButton, {
|
85
|
+
icon: X,
|
86
|
+
title: "Close banner",
|
87
|
+
variant: "subtle",
|
88
|
+
size: "small",
|
89
|
+
onClick: function onClick(evt) {
|
90
|
+
evt.stopPropagation();
|
91
|
+
onDismiss();
|
92
|
+
}
|
93
|
+
})));
|
94
|
+
};
|
95
|
+
export default Promote;
|
@@ -29,7 +29,7 @@ var buttonPlugin = function buttonPlugin(_ref) {
|
|
29
29
|
".btn-subtle": {
|
30
30
|
color: theme("colors.grey.600"),
|
31
31
|
"&:hover": {
|
32
|
-
background: theme("colors.grey.
|
32
|
+
background: rgba(theme("colors.grey.300"), 0.15)
|
33
33
|
},
|
34
34
|
"&:focus": {
|
35
35
|
boxShadow: "0 0 0 1px ".concat(theme("colors.accent.600"))
|
@@ -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,43 @@
|
|
1
|
+
import React, { FC } from "react";
|
2
|
+
import { BadgeVariants } from "../Badge";
|
3
|
+
declare type InsertContext = {
|
4
|
+
label: string;
|
5
|
+
variant?: BadgeVariants;
|
6
|
+
};
|
7
|
+
export interface InsertProps {
|
8
|
+
title: React.ReactNode;
|
9
|
+
contexts?: Array<string | InsertContext>;
|
10
|
+
}
|
11
|
+
/**
|
12
|
+
* Put more emphasis on side content.
|
13
|
+
|
14
|
+
* ## Examples
|
15
|
+
* [See the component in Figma](https://www.figma.com/file/99l59il97k2n5y4n6Jucal/%5BSatellite%5D-Components?node-id=2912%3A279499)
|
16
|
+
|
17
|
+
* ## Current Status
|
18
|
+
* - [x] Figma
|
19
|
+
* - [x] React
|
20
|
+
* - [ ] Documentation
|
21
|
+
|
22
|
+
* ## Component structure
|
23
|
+
* The component is a simple and flexible container. It should include a Title and a short text. To give more context you can use optional badges and an optional link to forward users in the right direction.
|
24
|
+
|
25
|
+
* ## Guidelines
|
26
|
+
|
27
|
+
* ### How to use it?
|
28
|
+
* Use the `Insert` if you want to give extra information to the user about the flow they are in or to highlight and define some terms used. This component can be use on the side of existing content or as a block.
|
29
|
+
|
30
|
+
* ### How to NOT use it?
|
31
|
+
* - Don't use this component to display temporary and/or critical information, use an Alert instead.
|
32
|
+
|
33
|
+
* ### Variants
|
34
|
+
* - Grey background
|
35
|
+
|
36
|
+
* ### Do's and Don't
|
37
|
+
* TODO
|
38
|
+
|
39
|
+
* ## Accessibility
|
40
|
+
* TODO
|
41
|
+
*/
|
42
|
+
export declare const Insert: FC<InsertProps>;
|
43
|
+
export default Insert;
|
@@ -0,0 +1,66 @@
|
|
1
|
+
import _taggedTemplateLiteral from "@babel/runtime/helpers/taggedTemplateLiteral";
|
2
|
+
|
3
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4;
|
4
|
+
|
5
|
+
import React from "react";
|
6
|
+
import Badge from "../Badge";
|
7
|
+
import stl from "../styles/helpers/satellitePrefixer";
|
8
|
+
|
9
|
+
/**
|
10
|
+
* Put more emphasis on side content.
|
11
|
+
|
12
|
+
* ## Examples
|
13
|
+
* [See the component in Figma](https://www.figma.com/file/99l59il97k2n5y4n6Jucal/%5BSatellite%5D-Components?node-id=2912%3A279499)
|
14
|
+
|
15
|
+
* ## Current Status
|
16
|
+
* - [x] Figma
|
17
|
+
* - [x] React
|
18
|
+
* - [ ] Documentation
|
19
|
+
|
20
|
+
* ## Component structure
|
21
|
+
* The component is a simple and flexible container. It should include a Title and a short text. To give more context you can use optional badges and an optional link to forward users in the right direction.
|
22
|
+
|
23
|
+
* ## Guidelines
|
24
|
+
|
25
|
+
* ### How to use it?
|
26
|
+
* Use the `Insert` if you want to give extra information to the user about the flow they are in or to highlight and define some terms used. This component can be use on the side of existing content or as a block.
|
27
|
+
|
28
|
+
* ### How to NOT use it?
|
29
|
+
* - Don't use this component to display temporary and/or critical information, use an Alert instead.
|
30
|
+
|
31
|
+
* ### Variants
|
32
|
+
* - Grey background
|
33
|
+
|
34
|
+
* ### Do's and Don't
|
35
|
+
* TODO
|
36
|
+
|
37
|
+
* ## Accessibility
|
38
|
+
* TODO
|
39
|
+
*/
|
40
|
+
export var Insert = function Insert(_ref) {
|
41
|
+
var title = _ref.title,
|
42
|
+
contexts = _ref.contexts,
|
43
|
+
children = _ref.children;
|
44
|
+
return /*#__PURE__*/React.createElement("aside", {
|
45
|
+
className: stl(_templateObject || (_templateObject = _taggedTemplateLiteral(["inline-flex flex-col self-start p-4 bg-grey-100 rounded"])))
|
46
|
+
}, contexts ? /*#__PURE__*/React.createElement("span", {
|
47
|
+
className: stl(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["block space-x-2 mb-4"])))
|
48
|
+
}, contexts.map(function (context, idx) {
|
49
|
+
var _ref2 = typeof context === "string" ? {
|
50
|
+
label: context
|
51
|
+
} : context,
|
52
|
+
label = _ref2.label,
|
53
|
+
_ref2$variant = _ref2.variant,
|
54
|
+
variant = _ref2$variant === void 0 ? "grey" : _ref2$variant;
|
55
|
+
|
56
|
+
return /*#__PURE__*/React.createElement(Badge, {
|
57
|
+
key: idx,
|
58
|
+
variant: variant
|
59
|
+
}, label);
|
60
|
+
})) : null, /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("p", {
|
61
|
+
className: stl(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["display-heading mb-2"])))
|
62
|
+
}, title), /*#__PURE__*/React.createElement("span", {
|
63
|
+
className: stl(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["display-body typo-subdued"])))
|
64
|
+
}, children)));
|
65
|
+
};
|
66
|
+
export default Insert;
|
@@ -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(
|
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(
|
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: "
|
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
|
};
|
package/esm/Medallion/types.d.ts
CHANGED
@@ -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";
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import React from "react";
|
2
2
|
import type { ColumnDefinition, Row, Status, SelectMode, PaginationConfiguration, Sorting, DataConfiguration, GetItemId } from "./types";
|
3
3
|
declare type CanSelectItem<Item> = (item: Item, idx: number) => boolean;
|
4
|
-
|
4
|
+
interface BaseDataTableProps<Item> {
|
5
5
|
data: Item[];
|
6
6
|
itemId?: GetItemId<Item>;
|
7
7
|
pagination?: PaginationConfiguration;
|
@@ -11,13 +11,22 @@ export interface DataTableProps<Item> {
|
|
11
11
|
noDataContent?: React.ReactNode;
|
12
12
|
errorContent?: React.ReactNode;
|
13
13
|
columns: ColumnDefinition<Item>[];
|
14
|
-
selectMode?: SelectMode;
|
15
|
-
selection?: string[];
|
16
|
-
onSelectionChange?(rowId: string[]): void;
|
17
|
-
canSelectItem?: CanSelectItem<Item>;
|
18
14
|
canHoverRow?(row: Row<Item>): boolean;
|
19
15
|
onRowHoveredChanged?(row: Row<Item> | null): void;
|
20
16
|
}
|
17
|
+
declare type DataTableWithSelectMode<Item> = {
|
18
|
+
selectMode: Exclude<SelectMode, "none">;
|
19
|
+
selection?: string[];
|
20
|
+
onSelectionChange?(rowId: string[]): void;
|
21
|
+
canSelectItem?: CanSelectItem<Item>;
|
22
|
+
};
|
23
|
+
declare type DataTableWithoutSelectMode = {
|
24
|
+
selectMode?: Extract<SelectMode, "none">;
|
25
|
+
selection?: never;
|
26
|
+
onSelectionChange?: never;
|
27
|
+
canSelectItem?: never;
|
28
|
+
};
|
29
|
+
export declare type DataTableProps<Item> = BaseDataTableProps<Item> & (DataTableWithSelectMode<Item> | DataTableWithoutSelectMode);
|
21
30
|
/**
|
22
31
|
* Tables are used to structure content in a grid to make it easier to see relationships and to facilitate understanding.
|
23
32
|
*
|
@@ -95,9 +95,7 @@ export var DataTable = function DataTable(_ref) {
|
|
95
95
|
var computedColumns = compact([selectMode === "single" && {
|
96
96
|
id: "_internal_singleSelect",
|
97
97
|
accessor: "_internal_singleSelect",
|
98
|
-
Header:
|
99
|
-
return null;
|
100
|
-
},
|
98
|
+
Header: false,
|
101
99
|
Cell: function Cell(_ref2) {
|
102
100
|
var row = _ref2.row;
|
103
101
|
return /*#__PURE__*/React.createElement("div", {
|
@@ -155,13 +153,9 @@ export var DataTable = function DataTable(_ref) {
|
|
155
153
|
return typeof c === "string" ? {
|
156
154
|
id: c,
|
157
155
|
accessor: c,
|
158
|
-
Header:
|
159
|
-
return /*#__PURE__*/React.createElement("span", null, toSentenceCase(c));
|
160
|
-
}
|
156
|
+
Header: toSentenceCase(c)
|
161
157
|
} : _objectSpread(_objectSpread({}, c), {}, {
|
162
|
-
Header: (_c$Header = c.Header) !== null && _c$Header !== void 0 ? _c$Header :
|
163
|
-
return /*#__PURE__*/React.createElement("span", null, toSentenceCase(c.id));
|
164
|
-
}
|
158
|
+
Header: (_c$Header = c.Header) !== null && _c$Header !== void 0 ? _c$Header : toSentenceCase(c.id)
|
165
159
|
});
|
166
160
|
}))));
|
167
161
|
var getItemIdInternal = itemId || DEFAULT_GET_ITEM_ID;
|
@@ -21,9 +21,9 @@ export var Header = function Header(_ref) {
|
|
21
21
|
disabled: disabled,
|
22
22
|
sortingDirection: sortingDirection[1],
|
23
23
|
onToggleSort: onToggleSort
|
24
|
-
}, Header ? /*#__PURE__*/React.createElement(Header, {
|
24
|
+
}, !Header ? null : typeof Header === "string" ? Header : /*#__PURE__*/React.createElement(Header, {
|
25
25
|
column: column
|
26
|
-
})
|
26
|
+
}));
|
27
27
|
})));
|
28
28
|
};
|
29
29
|
export default Header;
|
@@ -25,7 +25,7 @@ export interface AdvancedColumnDefinition<Item> {
|
|
25
25
|
/** A string or a function which determines how to get the column data */
|
26
26
|
accessor: string | ((item: Item) => any);
|
27
27
|
sort?: boolean;
|
28
|
-
Header?: React.ComponentType<HeaderProps<Item
|
28
|
+
Header?: React.ComponentType<HeaderProps<Item>> | string | false;
|
29
29
|
Cell?: React.ComponentType<CellProps<Item>>;
|
30
30
|
className?: string;
|
31
31
|
}
|
package/esm/index.d.ts
CHANGED
@@ -9,18 +9,21 @@ export * from "./AutoComplete";
|
|
9
9
|
export * from "./Avatars";
|
10
10
|
export * from "./Badge";
|
11
11
|
export * from "./Banner";
|
12
|
+
export * from "./Banners";
|
12
13
|
export * from "./Button";
|
13
14
|
export * from "./Card";
|
14
15
|
export * from "./Checkbox";
|
15
16
|
export * from "./ClickAwayContainer";
|
16
17
|
export * from "./DatePicker";
|
17
18
|
export * from "./Dropdown";
|
19
|
+
export * from "./Dropzone";
|
18
20
|
export * from "./EmptyState";
|
19
21
|
export * from "./Field";
|
20
22
|
export * from "./Flag";
|
21
23
|
export * from "./FlexGrid";
|
22
24
|
export * from "./HelpUnderline";
|
23
25
|
export * from "./Input";
|
26
|
+
export * from "./Insert";
|
24
27
|
export * from "./Link";
|
25
28
|
export * from "./Medallion";
|
26
29
|
export * from "./Modal";
|
package/esm/index.js
CHANGED
@@ -9,18 +9,21 @@ export * from "./AutoComplete";
|
|
9
9
|
export * from "./Avatars";
|
10
10
|
export * from "./Badge";
|
11
11
|
export * from "./Banner";
|
12
|
+
export * from "./Banners";
|
12
13
|
export * from "./Button";
|
13
14
|
export * from "./Card";
|
14
15
|
export * from "./Checkbox";
|
15
16
|
export * from "./ClickAwayContainer";
|
16
17
|
export * from "./DatePicker";
|
17
18
|
export * from "./Dropdown";
|
19
|
+
export * from "./Dropzone";
|
18
20
|
export * from "./EmptyState";
|
19
21
|
export * from "./Field";
|
20
22
|
export * from "./Flag";
|
21
23
|
export * from "./FlexGrid";
|
22
24
|
export * from "./HelpUnderline";
|
23
25
|
export * from "./Input";
|
26
|
+
export * from "./Insert";
|
24
27
|
export * from "./Link";
|
25
28
|
export * from "./Medallion";
|
26
29
|
export * from "./Modal";
|
@@ -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 {};
|