@jobber/components 4.49.2-JOB-80005.2 → 4.49.2-dependabot.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,7 +2,7 @@ import { ReactNode } from "react";
2
2
  import { IconNames } from "@jobber/design";
3
3
  import { ButtonProps } from "../Button";
4
4
  export type BannerType = "notice" | "success" | "warning" | "error";
5
- export interface BannerProps {
5
+ interface BannerProps {
6
6
  readonly children: ReactNode;
7
7
  readonly type: BannerType;
8
8
  /**
@@ -21,3 +21,4 @@ export interface BannerProps {
21
21
  onDismiss?(): void;
22
22
  }
23
23
  export declare function Banner({ children, type, primaryAction, dismissible, icon, onDismiss, }: BannerProps): JSX.Element;
24
+ export {};
@@ -1 +1 @@
1
- export { Banner, BannerType, BannerProps } from "./Banner";
1
+ export { Banner, BannerType } from "./Banner";
@@ -2,18 +2,80 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var Banner = require('../Banner-ecd9a7cf.js');
6
- require('react');
7
- require('classnames');
8
- require('@jobber/hooks/useResizeObserver');
9
- require('../style-inject.es-9d2f5f4e.js');
10
- require('../Icon-405a216c.js');
5
+ var React = require('react');
6
+ var classnames = require('classnames');
7
+ var jobberHooks = require('@jobber/hooks/useResizeObserver');
8
+ var styleInject_es = require('../style-inject.es-9d2f5f4e.js');
9
+ var Icon = require('../Icon-405a216c.js');
10
+ var Text = require('../Text-54334431.js');
11
+ var Button = require('../Button-db6114a6.js');
11
12
  require('@jobber/design');
12
- require('../Text-54334431.js');
13
13
  require('../Typography-83915c54.js');
14
- require('../Button-db6114a6.js');
15
14
  require('react-router-dom');
16
15
 
16
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
17
17
 
18
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
19
+ var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
18
20
 
19
- exports.Banner = Banner.Banner;
21
+ var css_248z$1 = ".meuT8gYQPJU- {\n display: -ms-flexbox;\n display: flex;\n position: relative;\n box-shadow: 0px calc(16px / 16) calc(16px / 4) 0px\n rgba(0, 0, 0, 0.1),\n 0px calc(16px / 4) 12px 0px rgba(0, 0, 0, 0.05);\n box-shadow: var(--shadow-base);\n padding: calc(16px * 1);\n padding: var(--space-base);\n color: rgb(66, 78, 86);\n color: var(--color-text);\n background-color: rgb(244, 244, 244);\n background-color: var(--color-surface--background);\n gap: calc(16px / 2);\n gap: var(--space-small);\n -ms-flex-align: center;\n align-items: center;\n}\n\n.y4BapyZr-fo- > a {\n color: rgb(66, 78, 86);\n color: var(--color-text);\n}\n\n.y4BapyZr-fo- > a:hover {\n color: rgb(1, 41, 57);\n color: var(--color-blue);\n}\n\n._6v1woNSLEvc- {\n display: -ms-flexbox;\n display: flex;\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n gap: calc(16px / 2);\n gap: var(--space-small);\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n -ms-flex-pack: justify;\n justify-content: space-between;\n -ms-flex-align: start;\n align-items: flex-start;\n}\n\n@media (max-width: 489.98px) {\n\n._6v1woNSLEvc- {\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n}\n }\n\n@media (--small-screens-and-below) {\n\n._6v1woNSLEvc- {\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n}\n }\n\n.y4BapyZr-fo- {\n -ms-flex: 1;\n flex: 1;\n -ms-flex-item-align: center;\n align-self: center;\n}\n\n._6v1woNSLEvc- > *:last-child {\n margin-bottom: 0;\n}\n\n.bocgLmEhcTU- .y4BapyZr-fo- {\n -ms-flex: 1;\n flex: 1;\n}\n\n.rtNjEzmABX4- {\n display: -ms-flexbox;\n display: flex;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n}\n\n@media (max-width: 489.98px) {\n\n.rtNjEzmABX4- {\n width: 100%;\n margin-top: calc(16px / 2);\n margin-top: var(--space-small);\n}\n }\n\n@media (--small-screens-and-below) {\n\n.rtNjEzmABX4- {\n width: 100%;\n margin-top: calc(16px / 2);\n margin-top: var(--space-small);\n}\n }\n\n.lunQ5SOfyLg- {\n margin: calc((16px / 8) * -1) 0;\n margin: calc(calc(16px / 8) * -1) 0;\n margin: calc(var(--space-smallest) * -1) 0;\n padding: calc(16px / 8);\n padding: var(--space-smallest);\n border: none;\n background-color: transparent;\n cursor: pointer;\n -webkit-appearance: none;\n appearance: none;\n -ms-flex: 0;\n flex: 0;\n -ms-flex-item-align: start;\n align-self: flex-start;\n}\n\n.lunQ5SOfyLg-:hover {\n background: rgba(0, 0, 0, 0.025);\n}\n\n.lunQ5SOfyLg-:focus {\n box-shadow: 0px 0px calc(16px / 4) calc(16px / 8)\n rgb(231, 213, 87);\n box-shadow: var(--shadow-focus);\n outline: none;\n background: rgba(0, 0, 0, 0.05);\n}\n";
22
+ var styles = {"banner":"meuT8gYQPJU-","bannerChildren":"y4BapyZr-fo-","bannerContent":"_6v1woNSLEvc-","medium":"bocgLmEhcTU-","bannerAction":"rtNjEzmABX4-","closeButton":"lunQ5SOfyLg-"};
23
+ styleInject_es.styleInject(css_248z$1);
24
+
25
+ var css_248z = ".wWW-2T7rCV0- {\n background-color: rgb(226, 241, 250);\n background-color: var(--color-informative--surface);\n}\n\n/* Our Banner \"surface\" colors should be lighter than they are so we're leaving the following alone for now */\n\n._7h8FUHIkVjg- {\n background-color: rgb(203, 223, 159);\n background-color: var(--color-green--lighter);\n}\n\n.d5fXcE1L0lc- {\n background-color: rgb(241, 231, 159);\n background-color: var(--color-yellow--lighter);\n}\n\n.oYaw-T3c0IU- {\n background-color: rgb(255, 206, 194);\n background-color: var(--color-red--lighter);\n}\n";
26
+ var types = {"notice":"wWW-2T7rCV0-","success":"_7h8FUHIkVjg-","warning":"d5fXcE1L0lc-","error":"oYaw-T3c0IU-"};
27
+ styleInject_es.styleInject(css_248z);
28
+
29
+ function BannerIcon({ icon }) {
30
+ return React__default["default"].createElement(Icon.Icon, { name: icon, color: "greyBlueDark" });
31
+ }
32
+
33
+ function Banner({ children, type, primaryAction, dismissible = true, icon, onDismiss, }) {
34
+ const [showBanner, setShowBanner] = React.useState(true);
35
+ const bannerWidths = {
36
+ small: 320,
37
+ medium: 480,
38
+ };
39
+ const [bannerRef, { width: bannerWidth = bannerWidths.small }] = jobberHooks.useResizeObserver({
40
+ widths: bannerWidths,
41
+ });
42
+ const iconColors = {
43
+ notice: "informative",
44
+ success: "success",
45
+ warning: "warning",
46
+ error: "critical",
47
+ };
48
+ if (primaryAction != undefined) {
49
+ primaryAction = Object.assign({
50
+ size: "small",
51
+ type: "tertiary",
52
+ variation: type === "notice" ? "learning" : "work",
53
+ }, primaryAction);
54
+ }
55
+ const bannerClassNames = classnames__default["default"](styles.banner, types[type], {
56
+ [styles.medium]: bannerWidth >= bannerWidths.medium,
57
+ });
58
+ return (React__default["default"].createElement(React__default["default"].Fragment, null, showBanner && (React__default["default"].createElement("div", { className: bannerClassNames, ref: bannerRef, role: type === "error" ? "alert" : "status" },
59
+ React__default["default"].createElement("div", { className: styles.bannerContent },
60
+ icon && React__default["default"].createElement(BannerIcon, { icon: icon }),
61
+ React__default["default"].createElement("div", { className: styles.bannerChildren },
62
+ React__default["default"].createElement(BannerChildren, null, children)),
63
+ primaryAction && (React__default["default"].createElement("div", { className: styles.bannerAction },
64
+ React__default["default"].createElement(Button.Button, Object.assign({}, primaryAction))))),
65
+ dismissible && (React__default["default"].createElement("button", { className: styles.closeButton, onClick: handleClose, "aria-label": "Close this notification" },
66
+ React__default["default"].createElement(Icon.Icon, { name: "cross", color: iconColors[type] })))))));
67
+ function handleClose() {
68
+ setShowBanner(!showBanner);
69
+ onDismiss && onDismiss();
70
+ }
71
+ }
72
+ function BannerChildren({ children }) {
73
+ if (!children)
74
+ return React__default["default"].createElement(React__default["default"].Fragment, null);
75
+ if (children && typeof children === "string") {
76
+ return React__default["default"].createElement(Text.Text, null, children);
77
+ }
78
+ return React__default["default"].createElement(React__default["default"].Fragment, null, children);
79
+ }
80
+
81
+ exports.Banner = Banner;
@@ -8,7 +8,7 @@ var useAssert = require('@jobber/hooks/useAssert');
8
8
  var Icon = require('./Icon-405a216c.js');
9
9
  var Avatar = require('./Avatar-1aa30ee1.js');
10
10
  var Typography = require('./Typography-83915c54.js');
11
- var Tooltip = require('./Tooltip-ae33a335.js');
11
+ var Tooltip = require('./Tooltip-d5257798.js');
12
12
  var sortBy = require('lodash/sortBy');
13
13
  var useLiveAnnounce = require('@jobber/hooks/useLiveAnnounce');
14
14
  var debounce = require('lodash/debounce');
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var React = require('react');
6
- var Chip = require('../Chip-4f7af21e.js');
6
+ var Chip = require('../Chip-53832bb2.js');
7
7
  require('uuid');
8
8
  require('../style-inject.es-9d2f5f4e.js');
9
9
  require('classnames');
@@ -13,14 +13,14 @@ require('@jobber/design');
13
13
  require('../Avatar-1aa30ee1.js');
14
14
  require('color');
15
15
  require('../Typography-83915c54.js');
16
- require('../Tooltip-ae33a335.js');
16
+ require('../Tooltip-d5257798.js');
17
17
  require('react-dom');
18
18
  require('framer-motion');
19
19
  require('react-popper');
20
+ require('../Text-54334431.js');
20
21
  require('lodash/sortBy');
21
22
  require('@jobber/hooks/useLiveAnnounce');
22
23
  require('lodash/debounce');
23
- require('../Text-54334431.js');
24
24
  require('../Button-db6114a6.js');
25
25
  require('react-router-dom');
26
26
  require('../Spinner-9d8fc7ff.js');
@@ -12,7 +12,7 @@ interface ContentProps {
12
12
  * Change the wrapping element to be one of the available
13
13
  * semantic tags.
14
14
  *
15
- * @default "div"
15
+ * @default 'div'
16
16
  */
17
17
  readonly type?: "section" | "aside" | "header" | "footer" | "article" | "main" | "div";
18
18
  }
@@ -19,5 +19,4 @@ export declare namespace DataList {
19
19
  var BulkActions: typeof DataListBulkActions;
20
20
  var ItemAction: typeof DataListAction;
21
21
  var BatchAction: (props: DataListBulkActionProps) => JSX.Element;
22
- var Banner: typeof import("../Banner").Banner;
23
22
  }
@@ -158,7 +158,6 @@ export interface DataListContextProps<T extends DataListObject> extends DataList
158
158
  readonly layoutComponents?: ReactElement<DataListLayoutProps<T>>[];
159
159
  readonly itemActionComponent?: ReactElement<DataListItemActionsProps<T>>;
160
160
  readonly bulkActionsComponent?: ReactElement<DataListItemActionsProps<T>>;
161
- readonly bannerComponent?: ReactElement;
162
161
  readonly layoutBreakpoints: Breakpoints[];
163
162
  readonly registerLayoutBreakpoints: (breakpoint: Breakpoints) => void;
164
163
  readonly layouts: {
@@ -11,7 +11,7 @@ var noop = require('lodash/noop');
11
11
  var design = require('@jobber/design');
12
12
  var framerMotion = require('framer-motion');
13
13
  var classnames = require('classnames');
14
- var Tooltip = require('../Tooltip-ae33a335.js');
14
+ var Tooltip = require('../Tooltip-d5257798.js');
15
15
  var Button = require('../Button-db6114a6.js');
16
16
  var useInView = require('@jobber/hooks/useInView');
17
17
  var isEmpty = require('lodash/isEmpty');
@@ -27,7 +27,7 @@ var reactRouterDom = require('react-router-dom');
27
27
  var AnimatedSwitcher = require('../AnimatedSwitcher-d1e1ddcf.js');
28
28
  var Popover = require('../Popover-7c966790.js');
29
29
  var Content = require('../Content-2ca1ffe1.js');
30
- var Chip = require('../Chip-4f7af21e.js');
30
+ var Chip = require('../Chip-53832bb2.js');
31
31
  require('@jobber/hooks/useAssert');
32
32
  require('../Avatar-1aa30ee1.js');
33
33
  require('color');
@@ -37,7 +37,6 @@ var debounce = require('lodash/debounce');
37
37
  var InputText = require('../InputText-ab237501.js');
38
38
  var Spinner = require('../Spinner-9d8fc7ff.js');
39
39
  var Icon = require('../Icon-405a216c.js');
40
- var Banner = require('../Banner-ecd9a7cf.js');
41
40
  require('uuid');
42
41
  require('react-hook-form');
43
42
  require('../ButtonDismiss-1ccb84ec.js');
@@ -45,7 +44,6 @@ require('lodash/sortBy');
45
44
  require('@jobber/hooks/useLiveAnnounce');
46
45
  require('../FormField-fa9254dc.js');
47
46
  require('../InputValidation-377d6c62.js');
48
- require('@jobber/hooks/useResizeObserver');
49
47
 
50
48
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
51
49
 
@@ -999,14 +997,12 @@ function DataList(_a) {
999
997
  const emptyStateComponents = getCompoundComponents(props.children, DataListEmptyState);
1000
998
  const itemActionComponent = getCompoundComponent(props.children, DataListItemActions);
1001
999
  const bulkActionsComponent = getCompoundComponent(props.children, DataListBulkActions);
1002
- const bannerComponent = getCompoundComponent(props.children, Banner.Banner);
1003
1000
  return (React__default["default"].createElement(DataListContext.Provider, { value: Object.assign(Object.assign({ searchComponent,
1004
1001
  filterComponent,
1005
1002
  layoutComponents,
1006
1003
  emptyStateComponents,
1007
1004
  itemActionComponent,
1008
1005
  bulkActionsComponent,
1009
- bannerComponent,
1010
1006
  layoutBreakpoints,
1011
1007
  registerLayoutBreakpoints,
1012
1008
  layouts,
@@ -1022,7 +1018,7 @@ function DataList(_a) {
1022
1018
  }
1023
1019
  }
1024
1020
  function InternalDataList() {
1025
- const { data, title, totalCount, loadingState = "none", layoutComponents, bannerComponent, } = useDataListContext();
1021
+ const { data, title, totalCount, loadingState = "none", layoutComponents, } = useDataListContext();
1026
1022
  const backToTopRef = React.useRef(null);
1027
1023
  const initialLoading = loadingState === "initial";
1028
1024
  const showEmptyState = !initialLoading && data.length === 0;
@@ -1036,7 +1032,6 @@ function InternalDataList() {
1036
1032
  React__default["default"].createElement("div", { className: styles$e.headerFilters },
1037
1033
  React__default["default"].createElement(InternalDataListFilters, null),
1038
1034
  React__default["default"].createElement(InternalDataListSearch, null)),
1039
- bannerComponent,
1040
1035
  React__default["default"].createElement(DataListHeader, null)),
1041
1036
  initialLoading && React__default["default"].createElement(DataListLoadingState, null),
1042
1037
  showEmptyState && React__default["default"].createElement(InternalDataListEmptyState, null),
@@ -1103,9 +1098,5 @@ DataList.ItemAction = DataListAction;
1103
1098
  DataList.BatchAction = function DataListBatchAction(props) {
1104
1099
  return React__default["default"].createElement(DataListAction, Object.assign({}, props));
1105
1100
  };
1106
- /**
1107
- * Defines a banner that is going to rendered between the filters and the header.
1108
- */
1109
- DataList.Banner = Banner.Banner;
1110
1101
 
1111
1102
  exports.DataList = DataList;
@@ -2,13 +2,15 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var Tooltip = require('../Tooltip-ae33a335.js');
5
+ var Tooltip = require('../Tooltip-d5257798.js');
6
6
  require('react');
7
7
  require('classnames');
8
8
  require('react-dom');
9
9
  require('framer-motion');
10
10
  require('../style-inject.es-9d2f5f4e.js');
11
11
  require('react-popper');
12
+ require('../Text-54334431.js');
13
+ require('../Typography-83915c54.js');
12
14
 
13
15
 
14
16
 
@@ -6,6 +6,7 @@ var ReactDOM = require('react-dom');
6
6
  var framerMotion = require('framer-motion');
7
7
  var styleInject_es = require('./style-inject.es-9d2f5f4e.js');
8
8
  var reactPopper = require('react-popper');
9
+ var Text = require('./Text-54334431.js');
9
10
 
10
11
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
11
12
 
@@ -13,8 +14,8 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
13
14
  var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
14
15
  var ReactDOM__default = /*#__PURE__*/_interopDefaultLegacy(ReactDOM);
15
16
 
16
- var css_248z = ":root {\n --tooltip--arrow-size: var(--space-small);\n --tooltip--offset: calc(-1 * var(--space-smaller));\n --tooltip--surface: var(--color-surface--reverse);\n}\n\n.q07bkGoq714- {\n display: none;\n}\n\n.dkCTRfc3vYk- {\n display: inline-block;\n position: absolute;\n z-index: 1002;\n z-index: var(--elevation-tooltip);\n}\n\n.yAFP4gRKlTM- {\n display: inline-block;\n position: relative;\n max-width: calc(16px * 15);\n max-width: calc(var(--base-unit) * 15);\n padding: calc((16px * 1) - (16px / 8)) calc(16px * 1);\n padding: calc(calc(16px * 1) - calc(16px / 8)) calc(16px * 1);\n padding: calc(var(--space-base) - var(--space-smallest)) var(--space-base);\n border-radius: calc(16px / 2);\n border-radius: var(--radius-larger);\n background-color: rgb(1, 41, 57);\n background-color: var(--tooltip--surface);\n}\n\n.yAFP4gRKlTM- .j9KgRON7iTU-,\n.yAFP4gRKlTM- .j9KgRON7iTU-::after {\n width: calc(16px / 2);\n width: var(--tooltip--arrow-size);\n height: calc(16px / 2);\n height: var(--tooltip--arrow-size);\n background-color: transparent;\n}\n\n.yAFP4gRKlTM- .j9KgRON7iTU-::after {\n content: \"\";\n display: block;\n position: absolute;\n background-color: rgb(1, 41, 57);\n background-color: var(--tooltip--surface);\n -webkit-transform: rotate(45deg);\n transform: rotate(45deg);\n}\n\n.B6uh34-qEuA- {\n padding-bottom: calc(16px / 2);\n padding-bottom: var(--space-small);\n}\n\n.B6uh34-qEuA- .yAFP4gRKlTM- {\n -webkit-transform-origin: bottom center;\n transform-origin: bottom center;\n}\n\n.B6uh34-qEuA- .yAFP4gRKlTM- .j9KgRON7iTU- {\n bottom: calc(-1 * (16px / 4));\n bottom: calc(-1 * calc(16px / 4));\n bottom: var(--tooltip--offset);\n}\n\n.B6uh34-qEuA- .yAFP4gRKlTM- .j9KgRON7iTU-::after {\n border-top-width: 0;\n border-left-width: 0;\n}\n\n.Wft7Ug-lXEc- {\n padding-top: calc(16px / 2);\n padding-top: var(--space-small);\n}\n\n.Wft7Ug-lXEc- .yAFP4gRKlTM- {\n -webkit-transform-origin: top center;\n transform-origin: top center;\n}\n\n.Wft7Ug-lXEc- .yAFP4gRKlTM- .j9KgRON7iTU- {\n top: calc(-1 * (16px / 4));\n top: calc(-1 * calc(16px / 4));\n top: var(--tooltip--offset);\n}\n\n.Wft7Ug-lXEc- .yAFP4gRKlTM- .j9KgRON7iTU-::after {\n border-bottom-width: 0;\n border-right-width: 0;\n}\n\n.TpdeLUuiQMg- {\n margin: 0;\n color: rgba(255, 255, 255, 1);\n color: var(--color-text--reverse);\n font-size: calc((16px * 1) * 0.875);\n font-size: calc(calc(16px * 1) * 0.875);\n font-size: var(--typography--fontSize-base);\n font-weight: 600;\n line-height: 1.25;\n line-height: var(--typography--lineHeight-base);\n}\n";
17
- var styles = {"shadowActivator":"q07bkGoq714-","tooltipWrapper":"dkCTRfc3vYk-","tooltip":"yAFP4gRKlTM-","arrow":"j9KgRON7iTU-","above":"B6uh34-qEuA-","below":"Wft7Ug-lXEc-","tooltipMessage":"TpdeLUuiQMg-"};
17
+ var css_248z = ":root {\n --tooltip--arrow-size: var(--space-small);\n --tooltip--offset: calc(-1 * calc(var(--space-smaller) + 1px));\n}\n\n.q07bkGoq714- {\n display: none;\n}\n\n.dkCTRfc3vYk- {\n display: inline-block;\n position: absolute;\n z-index: 1002;\n z-index: var(--elevation-tooltip);\n}\n\n.yAFP4gRKlTM- {\n display: inline-block;\n position: relative;\n max-width: calc(16px * 15);\n max-width: calc(var(--base-unit) * 15);\n padding: calc(16px / 2);\n padding: var(--space-small);\n border: calc(16px / 16) solid rgb(60, 162, 224);\n border: var(--border-base) solid var(--color-informative);\n border-radius: calc(16px / 8);\n border-radius: var(--radius-base);\n background-color: rgb(226, 241, 250);\n background-color: var(--color-informative--surface);\n}\n\n.yAFP4gRKlTM- .j9KgRON7iTU-,\n.yAFP4gRKlTM- .j9KgRON7iTU-::after {\n width: calc(16px / 2);\n width: var(--tooltip--arrow-size);\n height: calc(16px / 2);\n height: var(--tooltip--arrow-size);\n background-color: transparent;\n}\n\n.yAFP4gRKlTM- .j9KgRON7iTU-::after {\n content: \"\";\n display: block;\n position: absolute;\n border: calc(16px / 16) solid rgb(60, 162, 224);\n border: var(--border-base) solid var(--color-informative);\n background-color: rgb(226, 241, 250);\n background-color: var(--color-informative--surface);\n -webkit-transform: rotate(45deg);\n transform: rotate(45deg);\n}\n\n.B6uh34-qEuA- {\n padding-bottom: calc(16px / 2);\n padding-bottom: var(--space-small);\n}\n\n.B6uh34-qEuA- .yAFP4gRKlTM- {\n -webkit-transform-origin: bottom center;\n transform-origin: bottom center;\n}\n\n.B6uh34-qEuA- .yAFP4gRKlTM- .j9KgRON7iTU- {\n bottom: calc(-1 * ((16px / 4) + 1px));\n bottom: calc(-1 * calc(calc(16px / 4) + 1px));\n bottom: var(--tooltip--offset);\n}\n\n.B6uh34-qEuA- .yAFP4gRKlTM- .j9KgRON7iTU-::after {\n border-top-width: 0;\n border-left-width: 0;\n}\n\n.Wft7Ug-lXEc- {\n padding-top: calc(16px / 2);\n padding-top: var(--space-small);\n}\n\n.Wft7Ug-lXEc- .yAFP4gRKlTM- {\n -webkit-transform-origin: top center;\n transform-origin: top center;\n}\n\n.Wft7Ug-lXEc- .yAFP4gRKlTM- .j9KgRON7iTU- {\n top: calc(-1 * ((16px / 4) + 1px));\n top: calc(-1 * calc(calc(16px / 4) + 1px));\n top: var(--tooltip--offset);\n}\n\n.Wft7Ug-lXEc- .yAFP4gRKlTM- .j9KgRON7iTU-::after {\n border-bottom-width: 0;\n border-right-width: 0;\n}\n";
18
+ var styles = {"shadowActivator":"q07bkGoq714-","tooltipWrapper":"dkCTRfc3vYk-","tooltip":"yAFP4gRKlTM-","arrow":"j9KgRON7iTU-","above":"B6uh34-qEuA-","below":"Wft7Ug-lXEc-"};
18
19
  styleInject_es.styleInject(css_248z);
19
20
 
20
21
  function useTooltipPositioning() {
@@ -51,10 +52,11 @@ function Tooltip({ message, children }) {
51
52
  children,
52
53
  React__default["default"].createElement(TooltipPortal, null, show && (React__default["default"].createElement("div", Object.assign({ className: toolTipClassNames, style: popperStyles.popper, ref: setTooltipRef, role: "tooltip" }, attributes.popper),
53
54
  React__default["default"].createElement(framerMotion.motion.div, { className: styles.tooltip, variants: variation, initial: "startOrStop", animate: "done", exit: "startOrStop", transition: {
54
- damping: 50,
55
- stiffness: 500,
55
+ type: "spring",
56
+ damping: 20,
57
+ stiffness: 300,
56
58
  } },
57
- React__default["default"].createElement("p", { className: styles.tooltipMessage }, message),
59
+ React__default["default"].createElement(Text.Text, null, message),
58
60
  React__default["default"].createElement("div", { ref: setArrowRef, style: popperStyles.arrow, className: styles.arrow })))))));
59
61
  function initializeListeners() {
60
62
  const showTooltip = () => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jobber/components",
3
- "version": "4.49.2-JOB-80005.2+c6633b76",
3
+ "version": "4.49.2-dependabot.0+1455dd4e",
4
4
  "license": "MIT",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -19,9 +19,9 @@
19
19
  "dist/*"
20
20
  ],
21
21
  "dependencies": {
22
- "@jobber/design": "^0.46.0",
23
- "@jobber/formatters": "^0.2.2",
24
- "@jobber/hooks": "^2.6.1",
22
+ "@jobber/design": "^0.46.1-dependabot.24+1455dd4e",
23
+ "@jobber/formatters": "^0.2.3-dependabot.638+1455dd4e",
24
+ "@jobber/hooks": "^2.6.2-dependabot.0+1455dd4e",
25
25
  "@popperjs/core": "^2.0.6",
26
26
  "@std-proposal/temporal": "0.0.1",
27
27
  "@tanstack/react-table": "8.5.13",
@@ -84,5 +84,5 @@
84
84
  "> 1%",
85
85
  "IE 10"
86
86
  ],
87
- "gitHead": "c6633b76c850e8e2c32c3ef2966cf9a9b5745fd3"
87
+ "gitHead": "1455dd4e0ab510d0f3c605e9216f490e0b453c22"
88
88
  }
package/Flex.d.ts DELETED
@@ -1 +0,0 @@
1
- export * from "./dist/Flex";
package/Flex.js DELETED
@@ -1,17 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true,
5
- });
6
-
7
- var Flex = require("./dist/Flex");
8
-
9
- Object.keys(Flex).forEach(function(key) {
10
- if (key === "default" || key === "__esModule") return;
11
- Object.defineProperty(exports, key, {
12
- enumerable: true,
13
- get: function get() {
14
- return Flex[key];
15
- },
16
- });
17
- });
@@ -1,76 +0,0 @@
1
- 'use strict';
2
-
3
- var React = require('react');
4
- var classnames = require('classnames');
5
- var jobberHooks = require('@jobber/hooks/useResizeObserver');
6
- var styleInject_es = require('./style-inject.es-9d2f5f4e.js');
7
- var Icon = require('./Icon-405a216c.js');
8
- var Text = require('./Text-54334431.js');
9
- var Button = require('./Button-db6114a6.js');
10
-
11
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
12
-
13
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
14
- var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
15
-
16
- var css_248z$1 = ".meuT8gYQPJU- {\n display: -ms-flexbox;\n display: flex;\n position: relative;\n box-shadow: 0px calc(16px / 16) calc(16px / 4) 0px\n rgba(0, 0, 0, 0.1),\n 0px calc(16px / 4) 12px 0px rgba(0, 0, 0, 0.05);\n box-shadow: var(--shadow-base);\n padding: calc(16px * 1);\n padding: var(--space-base);\n color: rgb(66, 78, 86);\n color: var(--color-text);\n background-color: rgb(244, 244, 244);\n background-color: var(--color-surface--background);\n gap: calc(16px / 2);\n gap: var(--space-small);\n -ms-flex-align: center;\n align-items: center;\n}\n\n.y4BapyZr-fo- > a {\n color: rgb(66, 78, 86);\n color: var(--color-text);\n}\n\n.y4BapyZr-fo- > a:hover {\n color: rgb(1, 41, 57);\n color: var(--color-blue);\n}\n\n._6v1woNSLEvc- {\n display: -ms-flexbox;\n display: flex;\n -ms-flex: 1 1 auto;\n flex: 1 1 auto;\n gap: calc(16px / 2);\n gap: var(--space-small);\n -ms-flex-wrap: nowrap;\n flex-wrap: nowrap;\n -ms-flex-pack: justify;\n justify-content: space-between;\n -ms-flex-align: start;\n align-items: flex-start;\n}\n\n@media (max-width: 489.98px) {\n\n._6v1woNSLEvc- {\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n}\n }\n\n@media (--small-screens-and-below) {\n\n._6v1woNSLEvc- {\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n}\n }\n\n.y4BapyZr-fo- {\n -ms-flex: 1;\n flex: 1;\n -ms-flex-item-align: center;\n align-self: center;\n}\n\n._6v1woNSLEvc- > *:last-child {\n margin-bottom: 0;\n}\n\n.bocgLmEhcTU- .y4BapyZr-fo- {\n -ms-flex: 1;\n flex: 1;\n}\n\n.rtNjEzmABX4- {\n display: -ms-flexbox;\n display: flex;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n}\n\n@media (max-width: 489.98px) {\n\n.rtNjEzmABX4- {\n width: 100%;\n margin-top: calc(16px / 2);\n margin-top: var(--space-small);\n}\n }\n\n@media (--small-screens-and-below) {\n\n.rtNjEzmABX4- {\n width: 100%;\n margin-top: calc(16px / 2);\n margin-top: var(--space-small);\n}\n }\n\n.lunQ5SOfyLg- {\n margin: calc((16px / 8) * -1) 0;\n margin: calc(calc(16px / 8) * -1) 0;\n margin: calc(var(--space-smallest) * -1) 0;\n padding: calc(16px / 8);\n padding: var(--space-smallest);\n border: none;\n background-color: transparent;\n cursor: pointer;\n -webkit-appearance: none;\n appearance: none;\n -ms-flex: 0;\n flex: 0;\n -ms-flex-item-align: start;\n align-self: flex-start;\n}\n\n.lunQ5SOfyLg-:hover {\n background: rgba(0, 0, 0, 0.025);\n}\n\n.lunQ5SOfyLg-:focus {\n box-shadow: 0px 0px calc(16px / 4) calc(16px / 8)\n rgb(231, 213, 87);\n box-shadow: var(--shadow-focus);\n outline: none;\n background: rgba(0, 0, 0, 0.05);\n}\n";
17
- var styles = {"banner":"meuT8gYQPJU-","bannerChildren":"y4BapyZr-fo-","bannerContent":"_6v1woNSLEvc-","medium":"bocgLmEhcTU-","bannerAction":"rtNjEzmABX4-","closeButton":"lunQ5SOfyLg-"};
18
- styleInject_es.styleInject(css_248z$1);
19
-
20
- var css_248z = ".wWW-2T7rCV0- {\n background-color: rgb(226, 241, 250);\n background-color: var(--color-informative--surface);\n}\n\n/* Our Banner \"surface\" colors should be lighter than they are so we're leaving the following alone for now */\n\n._7h8FUHIkVjg- {\n background-color: rgb(203, 223, 159);\n background-color: var(--color-green--lighter);\n}\n\n.d5fXcE1L0lc- {\n background-color: rgb(241, 231, 159);\n background-color: var(--color-yellow--lighter);\n}\n\n.oYaw-T3c0IU- {\n background-color: rgb(255, 206, 194);\n background-color: var(--color-red--lighter);\n}\n";
21
- var types = {"notice":"wWW-2T7rCV0-","success":"_7h8FUHIkVjg-","warning":"d5fXcE1L0lc-","error":"oYaw-T3c0IU-"};
22
- styleInject_es.styleInject(css_248z);
23
-
24
- function BannerIcon({ icon }) {
25
- return React__default["default"].createElement(Icon.Icon, { name: icon, color: "greyBlueDark" });
26
- }
27
-
28
- function Banner({ children, type, primaryAction, dismissible = true, icon, onDismiss, }) {
29
- const [showBanner, setShowBanner] = React.useState(true);
30
- const bannerWidths = {
31
- small: 320,
32
- medium: 480,
33
- };
34
- const [bannerRef, { width: bannerWidth = bannerWidths.small }] = jobberHooks.useResizeObserver({
35
- widths: bannerWidths,
36
- });
37
- const iconColors = {
38
- notice: "informative",
39
- success: "success",
40
- warning: "warning",
41
- error: "critical",
42
- };
43
- if (primaryAction != undefined) {
44
- primaryAction = Object.assign({
45
- size: "small",
46
- type: "tertiary",
47
- variation: type === "notice" ? "learning" : "work",
48
- }, primaryAction);
49
- }
50
- const bannerClassNames = classnames__default["default"](styles.banner, types[type], {
51
- [styles.medium]: bannerWidth >= bannerWidths.medium,
52
- });
53
- return (React__default["default"].createElement(React__default["default"].Fragment, null, showBanner && (React__default["default"].createElement("div", { className: bannerClassNames, ref: bannerRef, role: type === "error" ? "alert" : "status" },
54
- React__default["default"].createElement("div", { className: styles.bannerContent },
55
- icon && React__default["default"].createElement(BannerIcon, { icon: icon }),
56
- React__default["default"].createElement("div", { className: styles.bannerChildren },
57
- React__default["default"].createElement(BannerChildren, null, children)),
58
- primaryAction && (React__default["default"].createElement("div", { className: styles.bannerAction },
59
- React__default["default"].createElement(Button.Button, Object.assign({}, primaryAction))))),
60
- dismissible && (React__default["default"].createElement("button", { className: styles.closeButton, onClick: handleClose, "aria-label": "Close this notification" },
61
- React__default["default"].createElement(Icon.Icon, { name: "cross", color: iconColors[type] })))))));
62
- function handleClose() {
63
- setShowBanner(!showBanner);
64
- onDismiss && onDismiss();
65
- }
66
- }
67
- function BannerChildren({ children, }) {
68
- if (!children)
69
- return React__default["default"].createElement(React__default["default"].Fragment, null);
70
- if (children && typeof children === "string") {
71
- return React__default["default"].createElement(Text.Text, null, children);
72
- }
73
- return React__default["default"].createElement(React__default["default"].Fragment, null, children);
74
- }
75
-
76
- exports.Banner = Banner;
@@ -1,32 +0,0 @@
1
- import { PropsWithChildren } from "react";
2
- import { ColumnKeys, Direction, Spacing } from "./Flex.types";
3
- interface FlexProps extends PropsWithChildren {
4
- /**
5
- * Determine how the children gets laid out
6
- *
7
- * **Supported keys**
8
- * - `"grow"` - Grows to the space available. If all children are set to
9
- * grow, then they'll have equal width.
10
- * - `"shrink"` - Shrinks to the smallest size possible. Normally the size of
11
- * the child.
12
- */
13
- readonly template: ColumnKeys[];
14
- /**
15
- * Adjusts the alignment of the Flex children.
16
- */
17
- readonly align?: "start" | "end" | "center";
18
- /**
19
- * The spacing between the children.
20
- *
21
- * @default "base"
22
- */
23
- readonly gap?: Spacing;
24
- /**
25
- * The direction of the content.
26
- *
27
- * @default "row"
28
- */
29
- readonly direction?: Direction;
30
- }
31
- export declare function Flex({ align, children, direction, gap, template, }: FlexProps): JSX.Element;
32
- export {};
@@ -1,6 +0,0 @@
1
- export type ColumnKeys = "shrink" | "grow";
2
- export type Direction = "row" | "column";
3
- export declare const spacing: readonly ["none", "smallest", "smaller", "small", "base", "large"];
4
- type ValuesOfSpacing<T extends typeof spacing> = T[number];
5
- export type Spacing = ValuesOfSpacing<typeof spacing>;
6
- export {};
@@ -1 +0,0 @@
1
- export { Flex } from "./Flex";
@@ -1,40 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var React = require('react');
6
- var classnames = require('classnames');
7
- var styleInject_es = require('../style-inject.es-9d2f5f4e.js');
8
-
9
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
10
-
11
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
12
- var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
13
-
14
- var css_248z = "._8VpnrMKmsqQ- {\n display: grid;\n /* If this gets wrapped in a flex container, it should take the remaining space */\n -ms-flex: 1;\n flex: 1;\n}\n\n.ooF1YfV4Usc- {\n gap: calc(16px / 8);\n gap: var(--space-smallest);\n}\n\n.ppCZfXq-Kqc- {\n gap: calc(16px / 4);\n gap: var(--space-smaller);\n}\n\n.tElkBalXH3g- {\n gap: calc(16px / 2);\n gap: var(--space-small);\n}\n\n._4u3OwUKxxbg- {\n gap: calc(16px * 1);\n gap: var(--space-base);\n}\n\n.RL7CJla0AAI- {\n gap: calc(16px * 1.5);\n gap: var(--space-large);\n}\n\n.fV4cvFYkhgo- {\n gap: 0;\n}\n\n._04xVVjZgr-0- {\n -ms-flex-align: start;\n align-items: start;\n}\n\n.Nc3zrqHHYSg- {\n -ms-flex-align: center;\n align-items: center;\n}\n\n.qA-v50wBX1U- {\n -ms-flex-align: end;\n align-items: end;\n}\n";
15
- var styles = {"flexible":"_8VpnrMKmsqQ-","smallestGap":"ooF1YfV4Usc-","smallerGap":"ppCZfXq-Kqc-","smallGap":"tElkBalXH3g-","baseGap":"_4u3OwUKxxbg-","largeGap":"RL7CJla0AAI-","noneGap":"fV4cvFYkhgo-","startAlign":"_04xVVjZgr-0-","centerAlign":"Nc3zrqHHYSg-","endAlign":"qA-v50wBX1U-"};
16
- styleInject_es.styleInject(css_248z);
17
-
18
- function Flex({ align = "center", children, direction = "row", gap = "base", template, }) {
19
- return (React__default["default"].createElement("div", { className: classnames__default["default"](styles.flexible, {
20
- [styles[`${gap}Gap`]]: Boolean(gap),
21
- [styles[`${align}Align`]]: Boolean(align),
22
- }), style: generateGridStylesFromTemplate(direction, template) }, children));
23
- }
24
- function generateGridStylesFromTemplate(direction, layoutTemplate) {
25
- const containerStyles = {};
26
- const templateKeys = {
27
- row: "gridTemplateColumns",
28
- column: "gridTemplateRows",
29
- };
30
- const templateValues = {
31
- grow: "1fr",
32
- shrink: "max-content",
33
- };
34
- containerStyles[templateKeys[direction]] = layoutTemplate
35
- .map(key => templateValues[key])
36
- .join(" ");
37
- return containerStyles;
38
- }
39
-
40
- exports.Flex = Flex;