@jobber/components 4.58.0 → 4.58.2-hackathon.4

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 (63) hide show
  1. package/dist/Autocomplete/index.js +4 -4
  2. package/dist/Banner/index.js +2 -1
  3. package/dist/Button/Boom.d.ts +6 -0
  4. package/dist/Button/Button.d.ts +2 -0
  5. package/dist/Button/Button.types.d.ts +10 -0
  6. package/dist/Button/ButtonConfettiDelight.d.ts +9 -0
  7. package/dist/Button/ButtonDelight.d.ts +9 -0
  8. package/dist/Button/OutParticle.d.ts +4 -0
  9. package/dist/Button/Particle.d.ts +4 -0
  10. package/dist/Button/index.js +2 -1
  11. package/dist/Button-114b5e41.js +337 -0
  12. package/dist/ButtonDismiss/index.js +3 -2
  13. package/dist/{ButtonDismiss-1ccb84ec.js → ButtonDismiss-3c4be741.js} +1 -1
  14. package/dist/Card/index.js +4 -3
  15. package/dist/{Card-116af709.js → Card-756a230b.js} +2 -2
  16. package/dist/{Chip-4f12eec8.js → Chip-f4d1fcc5.js} +2 -2
  17. package/dist/Chips/index.js +4 -3
  18. package/dist/Combobox/index.js +1 -1
  19. package/dist/ConfirmationModal/index.js +5 -4
  20. package/dist/{ConfirmationModal-285c3cbe.js → ConfirmationModal-cebf2c2e.js} +1 -1
  21. package/dist/DataDump/index.js +4 -3
  22. package/dist/DataList/index.js +7 -7
  23. package/dist/DataTable/index.js +4 -4
  24. package/dist/DatePicker/index.js +3 -2
  25. package/dist/{DatePicker-49213434.js → DatePicker-f13767d0.js} +1 -1
  26. package/dist/Drawer/index.js +3 -2
  27. package/dist/FeatureSwitch/index.js +2 -1
  28. package/dist/FormField/index.js +3 -3
  29. package/dist/{FormField-fa9254dc.js → FormField-b3bfc3f9.js} +2 -2
  30. package/dist/FormatFile/index.js +6 -6
  31. package/dist/{FormatFile-6423c3b5.js → FormatFile-6a8472a9.js} +2 -2
  32. package/dist/Gallery/index.js +6 -6
  33. package/dist/InputAvatar/index.js +2 -2
  34. package/dist/InputDate/index.js +4 -4
  35. package/dist/InputEmail/index.js +3 -3
  36. package/dist/InputFile/index.js +2 -2
  37. package/dist/{InputFile-25c3369b.js → InputFile-8e9d18fd.js} +1 -1
  38. package/dist/InputNumber/index.js +4 -4
  39. package/dist/{InputNumber-ea9fcee1.js → InputNumber-65ea7cc0.js} +1 -1
  40. package/dist/InputPassword/index.js +3 -3
  41. package/dist/InputPhoneNumber/index.js +3 -3
  42. package/dist/InputText/index.js +4 -4
  43. package/dist/{InputText-ab237501.js → InputText-761b9183.js} +1 -1
  44. package/dist/InputTime/index.js +3 -3
  45. package/dist/LightBox/index.js +4 -3
  46. package/dist/{LightBox-93ef99b9.js → LightBox-4883f08f.js} +2 -2
  47. package/dist/Menu/index.js +3 -2
  48. package/dist/{Menu-2e64307a.js → Menu-ec6cfd07.js} +1 -1
  49. package/dist/Modal/index.js +4 -3
  50. package/dist/{Modal-c17cc105.js → Modal-8322c2f1.js} +2 -2
  51. package/dist/{Option-07a24acd.js → Option-2c7f82ca.js} +1 -1
  52. package/dist/Page/index.js +3 -2
  53. package/dist/Popover/index.js +4 -3
  54. package/dist/{Popover-7c966790.js → Popover-3b128829.js} +1 -1
  55. package/dist/RecurringSelect/index.js +5 -5
  56. package/dist/Select/index.js +4 -4
  57. package/dist/Spinner/Spinner.d.ts +5 -1
  58. package/dist/Spinner/index.js +1 -1
  59. package/dist/Spinner-1d8dd226.js +63 -0
  60. package/dist/Toast/index.js +2 -1
  61. package/package.json +3 -3
  62. package/dist/Button-db6114a6.js +0 -57
  63. package/dist/Spinner-9d8fc7ff.js +0 -24
@@ -13,17 +13,17 @@ var reactPopper = require('react-popper');
13
13
  var Text = require('../Text-54334431.js');
14
14
  var Icon = require('../Icon-405a216c.js');
15
15
  var Heading = require('../Heading-4cde9989.js');
16
- var InputText = require('../InputText-ab237501.js');
16
+ var InputText = require('../InputText-761b9183.js');
17
17
  require('../Typography-83915c54.js');
18
18
  require('@jobber/design');
19
- require('../FormField-fa9254dc.js');
19
+ require('../FormField-b3bfc3f9.js');
20
20
  require('uuid');
21
21
  require('react-hook-form');
22
- require('../Button-db6114a6.js');
22
+ require('../Button-114b5e41.js');
23
23
  require('react-router-dom');
24
24
  require('../InputValidation-377d6c62.js');
25
25
  require('framer-motion');
26
- require('../Spinner-9d8fc7ff.js');
26
+ require('../Spinner-1d8dd226.js');
27
27
 
28
28
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
29
29
 
@@ -8,10 +8,11 @@ var jobberHooks = require('@jobber/hooks/useResizeObserver');
8
8
  var styleInject_es = require('../style-inject.es-9d2f5f4e.js');
9
9
  var Icon = require('../Icon-405a216c.js');
10
10
  var Text = require('../Text-54334431.js');
11
- var Button = require('../Button-db6114a6.js');
11
+ var Button = require('../Button-114b5e41.js');
12
12
  require('@jobber/design');
13
13
  require('../Typography-83915c54.js');
14
14
  require('react-router-dom');
15
+ require('../tslib.es6-5b8768b7.js');
15
16
 
16
17
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
17
18
 
@@ -0,0 +1,6 @@
1
+ export declare const Boom: ({ enabled, particles, boomType, scheme, }: {
2
+ readonly enabled: boolean;
3
+ readonly particles: number;
4
+ readonly boomType?: string | undefined;
5
+ readonly scheme?: string | undefined;
6
+ }) => JSX.Element;
@@ -10,6 +10,8 @@ interface ButtonFoundationProps {
10
10
  readonly ariaControls?: string;
11
11
  readonly ariaHaspopup?: boolean;
12
12
  readonly ariaExpanded?: boolean;
13
+ readonly delight?: boolean;
14
+ readonly delightType?: string;
13
15
  readonly disabled?: boolean;
14
16
  readonly external?: boolean;
15
17
  readonly fullWidth?: boolean;
@@ -0,0 +1,10 @@
1
+ export interface TagProps {
2
+ className: string;
3
+ ["aria-controls"]?: string;
4
+ ["aria-haspopup"]?: boolean;
5
+ ["aria-expanded"]?: boolean;
6
+ ["aria-label"]?: string;
7
+ role?: string;
8
+ disabled?: boolean;
9
+ id?: string;
10
+ }
@@ -0,0 +1,9 @@
1
+ import React from "react";
2
+ import { TagProps } from "./Button.types";
3
+ interface ButtonConfettiProps extends TagProps {
4
+ readonly children?: React.ReactNode;
5
+ readonly onClick?: (e: React.MouseEvent<HTMLButtonElement> | undefined) => void;
6
+ readonly href?: string;
7
+ }
8
+ export declare const ButtonConfettiDelight: (props: ButtonConfettiProps) => JSX.Element;
9
+ export {};
@@ -0,0 +1,9 @@
1
+ import React from "react";
2
+ import { TagProps } from "./Button.types";
3
+ interface ButtonDelightProps extends TagProps {
4
+ readonly children?: React.ReactNode;
5
+ readonly onClick?: (e: React.MouseEvent<HTMLButtonElement> | undefined) => void;
6
+ readonly href?: string;
7
+ }
8
+ export declare const ButtonDelight: (props: ButtonDelightProps) => JSX.Element;
9
+ export {};
@@ -0,0 +1,4 @@
1
+ export declare const OutParticle: ({ enabled, scheme, }: {
2
+ readonly enabled: boolean;
3
+ readonly scheme: string;
4
+ }) => JSX.Element;
@@ -0,0 +1,4 @@
1
+ export declare const Particle: ({ enabled, scheme, }: {
2
+ readonly enabled: boolean;
3
+ readonly scheme: string;
4
+ }) => JSX.Element;
@@ -2,11 +2,12 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var Button = require('../Button-db6114a6.js');
5
+ var Button = require('../Button-114b5e41.js');
6
6
  require('react');
7
7
  require('classnames');
8
8
  require('react-router-dom');
9
9
  require('../style-inject.es-9d2f5f4e.js');
10
+ require('../tslib.es6-5b8768b7.js');
10
11
  require('../Icon-405a216c.js');
11
12
  require('@jobber/design');
12
13
  require('../Typography-83915c54.js');
@@ -0,0 +1,337 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var classnames = require('classnames');
5
+ var reactRouterDom = require('react-router-dom');
6
+ var styleInject_es = require('./style-inject.es-9d2f5f4e.js');
7
+ var tslib_es6 = require('./tslib.es6-5b8768b7.js');
8
+ var Icon = require('./Icon-405a216c.js');
9
+ var Typography = require('./Typography-83915c54.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$3 = ":root {\n --button--color-variation: var(--color-interactive);\n --button--color-variation--hover: var(--color-interactive--hover);\n --button--color-surface: var(--color-surface);\n --button--color-surface--hover: var(--color-surface--background);\n --button--color-primaryLabel: var(--color-white);\n\n --button--duration-loading: var(--timing-loading--extended);\n}\n\n.U9VsquOtk2I- {\n display: -ms-inline-flexbox;\n display: inline-flex;\n min-height: calc(16px * 2.25);\n min-height: calc(var(--base-unit) * 2.25);\n box-sizing: border-box;\n margin: 0;\n border: calc(16px / 16) solid rgb(125, 176, 14);\n border: var(--border-base) solid var(--button--color-variation);\n border-radius: calc(16px / 8);\n border-radius: var(--radius-base);\n color: rgb(125, 176, 14);\n color: var(--button--color-variation);\n -webkit-font-smoothing: antialiased;\n letter-spacing: calc(16px / 40);\n letter-spacing: var(--typography--letterSpacing-loose);\n text-align: center;\n -webkit-text-decoration: none;\n text-decoration: none;\n vertical-align: middle;\n background-color: rgba(255, 255, 255, 1);\n background-color: var(--button--color-surface);\n cursor: pointer;\n transition: all 200ms;\n transition: all var(--timing-base);\n -webkit-appearance: none;\n appearance: none;\n fill: rgb(125, 176, 14);\n fill: var(--button--color-variation);\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: center;\n justify-content: center;\n}\n\n.U9VsquOtk2I- * {\n fill: inherit !important;\n}\n\n.U9VsquOtk2I- * {\n color: inherit;\n /* required to over-ride very specific fill from <Icon> */\n}\n\n.U9VsquOtk2I-:hover,\na.U9VsquOtk2I-:hover,\n.U9VsquOtk2I-:focus,\na.U9VsquOtk2I-:focus,\n.U9VsquOtk2I-:active,\na.U9VsquOtk2I-:active {\n border-color: rgb(81, 114, 9);\n border-color: var(--button--color-variation--hover);\n color: rgb(81, 114, 9);\n color: var(--button--color-variation--hover);\n fill: rgb(81, 114, 9);\n fill: var(--button--color-variation--hover);\n background-color: rgb(244, 244, 244);\n background-color: var(--button--color-surface--hover);\n}\n\n.U9VsquOtk2I-:focus,\na.U9VsquOtk2I-:focus,\n.U9VsquOtk2I-:active,\na.U9VsquOtk2I-:active {\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}\n\n/* Variation */\n\n.qkFQwI0PKfw- {\n --button--color-variation: var(--color-interactive);\n --button--color-variation--hover: var(--color-interactive--hover);\n}\n\n.jsKQEOBdJ0k- {\n --button--color-variation: var(--color-informative);\n --button--color-variation--hover: var(--color-informative--onSurface);\n}\n\n._4W8X0dxZDK4- {\n --button--color-variation: var(--color-destructive);\n --button--color-variation--hover: var(--color-destructive--hover);\n}\n\n/* Subtle is special because, by default, it's styled as a secondary button */\n\n.vDKO-cmh8vY- {\n --button--color-variation: var(--color-interactive--subtle);\n --button--color-variation--hover: var(--color-interactive--subtle--hover);\n}\n\n/* Type */\n\n.FXqN12jWtPo-:not(.vDKO-cmh8vY-):not(.bg-l22drjd0-),\n.FXqN12jWtPo-:not(.vDKO-cmh8vY-):not(.bg-l22drjd0-):hover,\n.FXqN12jWtPo-:not(.vDKO-cmh8vY-):not(.bg-l22drjd0-):focus {\n color: rgba(255, 255, 255, 1);\n color: var(--button--color-primaryLabel);\n background-color: rgb(125, 176, 14);\n background-color: var(--button--color-variation);\n fill: rgba(255, 255, 255, 1);\n fill: var(--button--color-primaryLabel);\n}\n\n.FXqN12jWtPo-:not(.vDKO-cmh8vY-):not(.bg-l22drjd0-):hover,\n.FXqN12jWtPo-:not(.vDKO-cmh8vY-):not(.bg-l22drjd0-):focus {\n background-color: rgb(81, 114, 9);\n background-color: var(--button--color-variation--hover);\n}\n\n.vDKO-cmh8vY-.FXqN12jWtPo- {\n color: rgb(125, 176, 14);\n color: var(--button--color-variation);\n fill: rgb(125, 176, 14);\n fill: var(--button--color-variation);\n background-color: rgba(255, 255, 255, 1);\n background-color: var(--button--color-surface);\n}\n\n.pf6G840lKdA-,\n.vDKO-cmh8vY-.FXqN12jWtPo- {\n border-color: rgb(125, 176, 14);\n border-color: var(--button--color-variation);\n}\n\n.vDKO-cmh8vY-.FXqN12jWtPo-:hover,\n.vDKO-cmh8vY-.FXqN12jWtPo-:focus {\n color: rgb(81, 114, 9);\n color: var(--button--color-variation--hover);\n background-color: rgb(244, 244, 244);\n background-color: var(--button--color-surface--hover);\n fill: rgb(81, 114, 9);\n fill: var(--button--color-variation--hover);\n}\n\n.vDKO-cmh8vY-.pf6G840lKdA- {\n background-color: rgba(255, 255, 255, 1);\n background-color: var(--button--color-surface);\n}\n\n.m7DbwRZWcNk-,\n.vDKO-cmh8vY-.pf6G840lKdA- {\n border-color: transparent;\n}\n\n.vDKO-cmh8vY-.pf6G840lKdA-:hover,\n.vDKO-cmh8vY-.pf6G840lKdA-:focus {\n background-color: rgb(244, 244, 244);\n background-color: var(--button--color-surface--hover);\n}\n\n.m7DbwRZWcNk-:hover,\n.m7DbwRZWcNk-:focus,\na.m7DbwRZWcNk-:hover,\na.m7DbwRZWcNk-:focus,\n.vDKO-cmh8vY-.pf6G840lKdA-:hover,\n.vDKO-cmh8vY-.pf6G840lKdA-:focus,\na.vDKO-cmh8vY-.pf6G840lKdA-:hover,\na.vDKO-cmh8vY-.pf6G840lKdA-:focus {\n border-color: transparent;\n}\n\n.vDKO-cmh8vY-.m7DbwRZWcNk- {\n border-color: transparent;\n background-color: transparent;\n}\n\n.vDKO-cmh8vY-.m7DbwRZWcNk-:hover,\n.vDKO-cmh8vY-.m7DbwRZWcNk-:focus,\na.vDKO-cmh8vY-.m7DbwRZWcNk-:hover,\na.vDKO-cmh8vY-.m7DbwRZWcNk-:focus {\n border-color: transparent;\n color: rgb(66, 78, 86);\n color: var(--color-interactive--subtle--hover);\n fill: rgb(66, 78, 86);\n fill: var(--color-interactive--subtle--hover);\n}\n\n/* Disabled */\n\n.U9VsquOtk2I-.bg-l22drjd0-,\na.U9VsquOtk2I-.bg-l22drjd0-,\n.U9VsquOtk2I-.bg-l22drjd0-:hover,\na.U9VsquOtk2I-.bg-l22drjd0-:hover {\n border-color: rgb(225, 225, 225);\n border-color: var(--color-disabled--secondary);\n color: rgb(181, 181, 181);\n color: var(--color-disabled);\n -webkit-user-select: none;\n -ms-user-select: none;\n user-select: none;\n background-color: rgb(225, 225, 225);\n background-color: var(--color-disabled--secondary);\n fill: rgb(181, 181, 181);\n fill: var(--color-disabled);\n pointer-events: none;\n cursor: not-allowed;\n}\n\n/* Sizes */\n\n.STSDgSRREx4- {\n min-height: calc(16px * 1.5);\n min-height: calc(var(--base-unit) * 1.5);\n padding: 0 calc(16px / 2);\n padding: 0 var(--space-small);\n letter-spacing: 0;\n}\n\n.amIh7vPETfo- {\n min-height: calc(16px * 2.25);\n min-height: calc(var(--base-unit) * 2.25);\n padding: 0 calc((16px * 1) - 4px);\n padding: 0 calc(calc(16px * 1) - 4px);\n padding: 0 calc(var(--space-base) - 4px);\n}\n\n.ON6ezOojFVo- {\n min-height: calc(16px * 3);\n min-height: calc(var(--base-unit) * 3);\n padding: 0 calc(16px * 1);\n padding: 0 var(--space-base);\n}\n\n/* Icon */\n\n.Qq-idRLJTCk- {\n width: calc(16px * 2.25);\n width: calc(var(--base-unit) * 2.25);\n padding: 0;\n}\n\n.Qq-idRLJTCk-.STSDgSRREx4- {\n width: calc((16px / 2) * 3);\n width: calc(calc(16px / 2) * 3);\n width: calc(var(--space-small) * 3);\n}\n\n.Qq-idRLJTCk-.amIh7vPETfo- {\n width: calc((16px * 1) * 2.25);\n width: calc(calc(16px * 1) * 2.25);\n width: calc(var(--space-base) * 2.25);\n}\n\n.Qq-idRLJTCk-.ON6ezOojFVo- {\n width: calc((16px * 1.5) * 2);\n width: calc(calc(16px * 1.5) * 2);\n width: calc(var(--space-large) * 2);\n}\n\n.EWh1gvgPJQg- {\n width: auto;\n}\n\n.EWh1gvgPJQg- > * {\n text-align: left;\n}\n\n.EWh1gvgPJQg- > *:first-child {\n -ms-flex-negative: 0;\n flex-shrink: 0;\n margin-right: calc(16px / 2);\n margin-right: var(--space-small);\n}\n\n.pfzTUMgNb3o- > *:first-child {\n margin-left: calc(16px / 2);\n margin-left: var(--space-small);\n margin-right: 0;\n -ms-flex-order: 1;\n order: 1;\n}\n\n.ZCHqCEyLBw0- {\n width: 100%;\n}\n\n.VVFKEv1ksMA- {\n background-image: linear-gradient(\n 135deg,\n rgba(0, 0, 0, 0.1) 0%,\n rgba(0, 0, 0, 0.1) 25%,\n transparent 25%,\n transparent 50%,\n rgba(0, 0, 0, 0.1) 50%,\n rgba(0, 0, 0, 0.1) 75%,\n transparent 75%,\n transparent 100%\n );\n background-size: calc(16px * 2) calc(16px * 2);\n background-size: var(--space-larger) var(--space-larger);\n pointer-events: none;\n cursor: not-allowed;\n -webkit-animation-duration: 2000ms;\n -webkit-animation-duration: var(--button--duration-loading);\n animation-duration: 2000ms;\n animation-duration: var(--button--duration-loading);\n -webkit-animation-iteration-count: infinite;\n animation-iteration-count: infinite;\n -webkit-animation-name: a8Q-0lnKH5M-;\n animation-name: a8Q-0lnKH5M-;\n -webkit-animation-timing-function: linear;\n animation-timing-function: linear;\n}\n\n.FXqN12jWtPo-.VVFKEv1ksMA-:not(.vDKO-cmh8vY-) {\n background-image: linear-gradient(\n 135deg,\n rgba(255, 255, 255, 0.25) 0%,\n rgba(255, 255, 255, 0.25) 25%,\n transparent 25%,\n transparent 50%,\n rgba(255, 255, 255, 0.25) 50%,\n rgba(255, 255, 255, 0.25) 75%,\n transparent 75%,\n transparent 100%\n );\n}\n\n@-webkit-keyframes a8Q-0lnKH5M- {\n 0% {\n background-position: 0 0;\n }\n\n 100% {\n background-position: calc(16px * 2) calc(16px * 2);\n background-position: var(--space-larger) var(--space-larger);\n }\n}\n\n@keyframes a8Q-0lnKH5M- {\n 0% {\n background-position: 0 0;\n }\n\n 100% {\n background-position: calc(16px * 2) calc(16px * 2);\n background-position: var(--space-larger) var(--space-larger);\n }\n}\n";
17
+ var styles$3 = {"button":"U9VsquOtk2I-","work":"qkFQwI0PKfw-","learning":"jsKQEOBdJ0k-","destructive":"_4W8X0dxZDK4-","subtle":"vDKO-cmh8vY-","primary":"FXqN12jWtPo-","disabled":"bg-l22drjd0-","secondary":"pf6G840lKdA-","tertiary":"m7DbwRZWcNk-","small":"STSDgSRREx4-","base":"amIh7vPETfo-","large":"ON6ezOojFVo-","onlyIcon":"Qq-idRLJTCk-","hasIconAndLabel":"EWh1gvgPJQg-","iconOnRight":"pfzTUMgNb3o-","fullWidth":"ZCHqCEyLBw0-","loading":"VVFKEv1ksMA-","animateStripes":"a8Q-0lnKH5M-"};
18
+ styleInject_es.styleInject(css_248z$3);
19
+
20
+ var css_248z$2 = "._0Ny8u1tbZxI- {\n margin-right: 3.5px;\n\n -webkit-transform: translateY(0px);\n\n transform: translateY(0px);\n transition: -webkit-transform ease-in-out 0.2s;\n transition: transform ease-in-out 0.2s;\n transition: transform ease-in-out 0.2s, -webkit-transform ease-in-out 0.2s;\n}\n.XmAxSewWeOY- {\n font-family: \"Inter\", Helvetica, Arial, sans-serif;\n font-family: var(--typography--fontFamily-normal);\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: 800;\n line-height: 1.25;\n line-height: var(--typography--lineHeight-base);\n -webkit-transform: translateY(0px);\n transform: translateY(0px);\n transition: -webkit-transform ease-in-out 0.2s;\n transition: transform ease-in-out 0.2s;\n transition: transform ease-in-out 0.2s, -webkit-transform ease-in-out 0.2s;\n}\n.Gl1xZCG4GqA- {\n -webkit-transform: translateY(28px);\n transform: translateY(28px);\n transition: -webkit-transform ease-in 0.2s;\n transition: transform ease-in 0.2s;\n transition: transform ease-in 0.2s, -webkit-transform ease-in 0.2s;\n}\n.uvTy02yJMII- {\n -webkit-transform: translateY(-28px);\n transform: translateY(-28px);\n transition: -webkit-transform ease-in-out 0.1s;\n transition: transform ease-in-out 0.1s;\n transition: transform ease-in-out 0.1s, -webkit-transform ease-in-out 0.1s;\n}\n";
21
+ var styles$2 = {"space":"_0Ny8u1tbZxI-","span":"XmAxSewWeOY-","drop":"Gl1xZCG4GqA-","explode":"uvTy02yJMII-"};
22
+ styleInject_es.styleInject(css_248z$2);
23
+
24
+ var css_248z$1 = ".wA6kerwVqc0- {\n position: absolute;\n z-index: 0;\n width: 3px;\n height: 3px;\n border-radius: 50%;\n}\n";
25
+ var styles$1 = {"particle":"wA6kerwVqc0-"};
26
+ styleInject_es.styleInject(css_248z$1);
27
+
28
+ const schemes$1 = {
29
+ all: [
30
+ `var(--color-brand)`,
31
+ `var(--color-indigo)`,
32
+ `var(--color-blue)`,
33
+ `var(--color-yellow)`,
34
+ `var(--color-red)`,
35
+ `var(--color-lightBlue)`,
36
+ `var(--color-pink)`,
37
+ `var(--color-teal)`,
38
+ `var(--color-orange)`,
39
+ ],
40
+ strongBrand: [
41
+ `var(--color-brand)`,
42
+ `var(--color-indigo)`,
43
+ `var(--color-blue)`,
44
+ ],
45
+ redIsh: [`var(--color-orange)`, `var(--color-yellow)`, `var(--color-red)`],
46
+ };
47
+ const Particle = ({ enabled, scheme, }) => {
48
+ const fireworkProps = () => {
49
+ const xDirection = Math.random() * 350;
50
+ const yDirection = Math.random() * 150 + 75;
51
+ const xFlip = Math.random() > 0.5 ? -1 : 1;
52
+ return { xDirection, yDirection, xFlip };
53
+ };
54
+ const particleProps = React.useMemo(() => {
55
+ const colors = schemes$1[scheme];
56
+ const colorPick = Math.floor(Math.random() * (colors === null || colors === void 0 ? void 0 : colors.length));
57
+ const particleID = "id" + Math.floor(Math.random() * 100000);
58
+ const { xDirection, yDirection, xFlip } = fireworkProps();
59
+ return {
60
+ x: xDirection * xFlip,
61
+ y: yDirection * -1,
62
+ color: colors[colorPick],
63
+ id: particleID,
64
+ };
65
+ }, []);
66
+ const classes = classnames__default["default"](styles$1.particle, {
67
+ [`cl-${particleProps.id}`]: enabled,
68
+ "hi!": enabled,
69
+ });
70
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
71
+ React__default["default"].createElement("style", null, `
72
+ .cl-${particleProps.id} {
73
+ animation: ${particleProps.id};
74
+ }
75
+ @keyframes ${particleProps.id} {
76
+ 0% {
77
+ transform: translateX(0px) translateY(-5px);
78
+ opacity:0;
79
+ background-color:${particleProps.color};
80
+ }
81
+ 1% {
82
+ opacity:1;
83
+ }
84
+ 50% {
85
+ transform: translateX(${particleProps.x}px) translateY(${particleProps.y}px);
86
+ }
87
+ 61% {
88
+ opacity:0;
89
+ }
90
+ 100% {
91
+ opacity:0;
92
+ transform: translate(0,-25px);
93
+ }
94
+ }
95
+ `),
96
+ React__default["default"].createElement("div", { className: classes, style: {
97
+ animationDuration: "1.2s",
98
+ opacity: 0,
99
+ backgroundColor: particleProps.color,
100
+ } })));
101
+ };
102
+
103
+ const schemes = {
104
+ all: [
105
+ `var(--color-brand)`,
106
+ `var(--color-indigo)`,
107
+ `var(--color-blue)`,
108
+ `var(--color-yellow)`,
109
+ `var(--color-red)`,
110
+ `var(--color-lightBlue)`,
111
+ `var(--color-pink)`,
112
+ `var(--color-teal)`,
113
+ `var(--color-orange)`,
114
+ ],
115
+ strongBrand: [
116
+ `var(--color-brand)`,
117
+ `var(--color-indigo)`,
118
+ `var(--color-blue)`,
119
+ ],
120
+ redIsh: [`var(--color-orange)`, `var(--color-yellow)`, `var(--color-red)`],
121
+ };
122
+ const OutParticle = ({ enabled, scheme, }) => {
123
+ const confettiProps = () => {
124
+ const xDirection = Math.random() * 200;
125
+ const yDirection = Math.random() * 150;
126
+ const xFlip = Math.random() > 0.5 ? -1 : 1;
127
+ const yFlip = Math.random() > 0.5 ? -1 : 1;
128
+ const scale = Math.random() * 20;
129
+ return { xDirection, yDirection, xFlip, yFlip, scale };
130
+ };
131
+ const particleProps = React.useMemo(() => {
132
+ const colors = schemes[scheme];
133
+ const colorPick = Math.floor(Math.random() * (colors === null || colors === void 0 ? void 0 : colors.length));
134
+ const particleID = "id" + Math.floor(Math.random() * 100000);
135
+ const { xDirection, yDirection, xFlip, yFlip, scale } = confettiProps();
136
+ return {
137
+ x: xDirection * xFlip,
138
+ y: yDirection * yFlip,
139
+ color: colors[colorPick],
140
+ scale,
141
+ id: particleID,
142
+ };
143
+ }, []);
144
+ const classes = classnames__default["default"](styles$1.particle, {
145
+ [`cl-${particleProps.id}`]: enabled,
146
+ });
147
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
148
+ React__default["default"].createElement("style", null, `
149
+ .cl-${particleProps.id} {
150
+ animation: ${particleProps.id};
151
+ }
152
+ @keyframes ${particleProps.id} {
153
+ 0% {
154
+ transform: translateX(0px) translateY(0px) scale(0);
155
+ opacity:0;
156
+ background-color:${particleProps.color};
157
+ }
158
+ 1% {
159
+ opacity:1;
160
+ }
161
+ 20% {
162
+ transform: translateX(${particleProps.x / 1.05}px) translateY(${particleProps.y / 1.05}px) scale(${particleProps.scale - 0.1});
163
+ }
164
+ 60% {
165
+ transform: translateX(${particleProps.x}px) translateY(${particleProps.y}px) scale(${particleProps.scale});
166
+ }
167
+ 61% {
168
+ opacity:0;
169
+ }
170
+ 100% {
171
+ opacity:0;
172
+ }
173
+ }
174
+ `),
175
+ React__default["default"].createElement("div", { className: classes, style: {
176
+ animationDuration: "2.2s",
177
+ animationTimingFunction: "ease-in-out",
178
+ backgroundColor: particleProps.color,
179
+ } })));
180
+ };
181
+
182
+ const Boom = ({ enabled, particles = 50, boomType = "firework", scheme = "all", }) => {
183
+ const [particleAmount] = React.useState(particles);
184
+ const [particlesEnabled, setParticlesEnabled] = React.useState(false);
185
+ const [loopArray] = React.useState(Array.from({ length: particleAmount }));
186
+ React.useEffect(() => {
187
+ if (enabled) {
188
+ requestAnimationFrame(() => {
189
+ setParticlesEnabled(true);
190
+ });
191
+ }
192
+ else {
193
+ setParticlesEnabled(false);
194
+ }
195
+ }, [enabled]);
196
+ return (React__default["default"].createElement(React__default["default"].Fragment, null, enabled &&
197
+ loopArray.map((_, index) => {
198
+ return boomType === "firework" ? (React__default["default"].createElement(Particle, { key: index, enabled: particlesEnabled, scheme: scheme })) : (React__default["default"].createElement(OutParticle, { key: index, enabled: particlesEnabled, scheme: scheme }));
199
+ })));
200
+ };
201
+
202
+ const ButtonDelight = (props) => {
203
+ const [delightOn, setDelightOn] = React.useState(false);
204
+ const [explodeOn, setExplodeOn] = React.useState(false);
205
+ const [boomEnabled, setBoomEnabled] = React.useState(false);
206
+ const [splitWord, setSplitWord] = React.useState([]);
207
+ const delightfulButton = React.useRef(null);
208
+ const goGoDelight = () => tslib_es6.__awaiter(void 0, void 0, void 0, function* () {
209
+ const elem = delightfulButton.current;
210
+ if (elem && splitWord.length === 0) {
211
+ const words = elem.innerText;
212
+ const letters = words.split("");
213
+ setSplitWord(letters);
214
+ requestAnimationFrame(() => {
215
+ setDelightOn(true);
216
+ });
217
+ const delay = letters.length * 30;
218
+ setTimeout(() => {
219
+ setDelightOn(false);
220
+ setExplodeOn(true);
221
+ setTimeout(() => {
222
+ setBoomEnabled(true);
223
+ setTimeout(() => {
224
+ setBoomEnabled(false);
225
+ }, 1300);
226
+ }, 20);
227
+ setTimeout(() => {
228
+ setExplodeOn(false);
229
+ setTimeout(() => {
230
+ setSplitWord([]);
231
+ }, 200);
232
+ }, delay);
233
+ }, delay);
234
+ }
235
+ });
236
+ const delightfulClick = (e) => {
237
+ goGoDelight();
238
+ setTimeout(() => {
239
+ if (props.onClick && !props.href) {
240
+ props.onClick(e);
241
+ }
242
+ else if (props.onClick && props.href) {
243
+ window.location.href = props.href;
244
+ }
245
+ }, 1500);
246
+ };
247
+ return (React__default["default"].createElement("button", Object.assign({}, props, { onClick: delightfulClick, type: "button", ref: delightfulButton }),
248
+ React__default["default"].createElement(Boom, { enabled: boomEnabled, particles: 150, boomType: "firework" }),
249
+ splitWord.length === 0
250
+ ? props.children
251
+ : splitWord.map((letter, index) => {
252
+ const spanClassNames = classnames__default["default"](styles$2.span, {
253
+ [styles$2.space]: letter === " ",
254
+ [styles$2.drop]: delightOn,
255
+ [styles$2.explode]: explodeOn,
256
+ });
257
+ return (React__default["default"].createElement("span", { key: index, className: spanClassNames, style: {
258
+ transitionDelay: delightOn ? String(index / 100) + "s" : "0s",
259
+ } }, letter));
260
+ })));
261
+ };
262
+
263
+ var css_248z = ".kUL5UIN4awA- {\n -webkit-transform: scale(0.9);\n transform: scale(0.9);\n transition: -webkit-transform ease-in-out 0.2s;\n transition: transform ease-in-out 0.2s;\n transition: transform ease-in-out 0.2s, -webkit-transform ease-in-out 0.2s;\n}\n";
264
+ var styles = {"shrink":"kUL5UIN4awA-"};
265
+ styleInject_es.styleInject(css_248z);
266
+
267
+ const ButtonConfettiDelight = (props) => {
268
+ const delightfulButton = React.useRef(null);
269
+ const [shrink, setShrink] = React.useState(false);
270
+ const [confetti, setConfetti] = React.useState(false);
271
+ const delightfulClick = () => {
272
+ setConfetti(false);
273
+ setShrink(true);
274
+ setTimeout(() => {
275
+ setShrink(false);
276
+ setConfetti(true);
277
+ setTimeout(() => {
278
+ setConfetti(false);
279
+ }, 2300);
280
+ }, 150);
281
+ };
282
+ const classes = classnames__default["default"](props.className, {
283
+ [styles.shrink]: shrink,
284
+ });
285
+ return (React__default["default"].createElement("div", null,
286
+ React__default["default"].createElement("button", Object.assign({}, props, { onClick: delightfulClick, type: "button", ref: delightfulButton, className: classes }),
287
+ React__default["default"].createElement(Boom, { enabled: confetti, particles: 30, boomType: "confetti", scheme: "strongBrand" }),
288
+ props.children)));
289
+ };
290
+
291
+ function Button(props) {
292
+ const { ariaControls, ariaHaspopup, ariaExpanded, ariaLabel, delight, delightType = "firework", disabled = false, external, fullWidth, icon, label, iconOnRight, id, loading, onClick, onMouseDown, role, size = "base", type = "primary", url, to, variation = "work", submit, } = props;
293
+ const buttonClassNames = classnames__default["default"](styles$3.button, styles$3[size], {
294
+ [styles$3.onlyIcon]: icon && !label,
295
+ [styles$3.hasIconAndLabel]: icon && label,
296
+ [styles$3.iconOnRight]: iconOnRight,
297
+ [styles$3[variation]]: variation,
298
+ [styles$3[type]]: type,
299
+ [styles$3.disabled]: disabled,
300
+ [styles$3.fullWidth]: fullWidth,
301
+ [styles$3.loading]: loading,
302
+ });
303
+ const buttonType = submit ? "submit" : "button";
304
+ const tagProps = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ className: buttonClassNames, disabled,
305
+ id }, (!disabled && { href: url })), (!disabled && { onClick: onClick })), (!disabled && { onMouseDown: onMouseDown })), (external && { target: "_blank" })), (url === undefined && to === undefined && { type: buttonType })), { "aria-controls": ariaControls, "aria-haspopup": ariaHaspopup, "aria-expanded": ariaExpanded, "aria-label": ariaLabel, role: role });
306
+ const buttonInternals = React__default["default"].createElement(ButtonInternals, Object.assign({}, props));
307
+ if (to) {
308
+ return (React__default["default"].createElement(reactRouterDom.Link, Object.assign({}, tagProps, { to: to }), buttonInternals));
309
+ }
310
+ let Tag = url
311
+ ? "a"
312
+ : "button";
313
+ if (delight && delightType === "firework") {
314
+ Tag = ButtonDelight;
315
+ }
316
+ else if (delight && delightType === "confetti") {
317
+ Tag = ButtonConfettiDelight;
318
+ }
319
+ return React__default["default"].createElement(Tag, Object.assign({}, tagProps), buttonInternals);
320
+ }
321
+ function ButtonInternals({ label, icon, size = "base" }) {
322
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
323
+ icon && React__default["default"].createElement(Icon.Icon, { name: icon, size: size }),
324
+ React__default["default"].createElement(Typography.Typography, { element: "span", fontWeight: "extraBold", fontFamily: "base", size: getTypeSizes(size) }, label)));
325
+ }
326
+ function getTypeSizes(size) {
327
+ switch (size) {
328
+ case "small":
329
+ return "small";
330
+ case "large":
331
+ return "large";
332
+ default:
333
+ return "base";
334
+ }
335
+ }
336
+
337
+ exports.Button = Button;
@@ -2,12 +2,13 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var ButtonDismiss = require('../ButtonDismiss-1ccb84ec.js');
5
+ var ButtonDismiss = require('../ButtonDismiss-3c4be741.js');
6
6
  require('react');
7
- require('../Button-db6114a6.js');
7
+ require('../Button-114b5e41.js');
8
8
  require('classnames');
9
9
  require('react-router-dom');
10
10
  require('../style-inject.es-9d2f5f4e.js');
11
+ require('../tslib.es6-5b8768b7.js');
11
12
  require('../Icon-405a216c.js');
12
13
  require('@jobber/design');
13
14
  require('../Typography-83915c54.js');
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var React = require('react');
4
- var Button = require('./Button-db6114a6.js');
4
+ var Button = require('./Button-114b5e41.js');
5
5
 
6
6
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
7
7
 
@@ -2,17 +2,18 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var Card = require('../Card-116af709.js');
5
+ var Card = require('../Card-756a230b.js');
6
6
  require('react');
7
7
  require('classnames');
8
8
  require('../style-inject.es-9d2f5f4e.js');
9
9
  require('../Heading-4cde9989.js');
10
10
  require('../Typography-83915c54.js');
11
- require('../Button-db6114a6.js');
11
+ require('../Button-114b5e41.js');
12
12
  require('react-router-dom');
13
+ require('../tslib.es6-5b8768b7.js');
13
14
  require('../Icon-405a216c.js');
14
15
  require('@jobber/design');
15
- require('../Menu-2e64307a.js');
16
+ require('../Menu-ec6cfd07.js');
16
17
  require('uuid');
17
18
  require('framer-motion');
18
19
  require('@jobber/hooks/useOnKeyDown');
@@ -4,8 +4,8 @@ var React = require('react');
4
4
  var classnames = require('classnames');
5
5
  var styleInject_es = require('./style-inject.es-9d2f5f4e.js');
6
6
  var Heading = require('./Heading-4cde9989.js');
7
- var Button = require('./Button-db6114a6.js');
8
- var Menu = require('./Menu-2e64307a.js');
7
+ var Button = require('./Button-114b5e41.js');
8
+ var Menu = require('./Menu-ec6cfd07.js');
9
9
 
10
10
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
11
11
 
@@ -14,8 +14,8 @@ var useLiveAnnounce = require('@jobber/hooks/useLiveAnnounce');
14
14
  var debounce = require('lodash/debounce');
15
15
  var reactPopper = require('react-popper');
16
16
  var Text = require('./Text-54334431.js');
17
- var Button = require('./Button-db6114a6.js');
18
- var Spinner = require('./Spinner-9d8fc7ff.js');
17
+ var Button = require('./Button-114b5e41.js');
18
+ var Spinner = require('./Spinner-1d8dd226.js');
19
19
 
20
20
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
21
21
 
@@ -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-4f12eec8.js');
6
+ var Chip = require('../Chip-f4d1fcc5.js');
7
7
  require('uuid');
8
8
  require('../style-inject.es-9d2f5f4e.js');
9
9
  require('classnames');
@@ -21,9 +21,10 @@ require('lodash/sortBy');
21
21
  require('@jobber/hooks/useLiveAnnounce');
22
22
  require('lodash/debounce');
23
23
  require('../Text-54334431.js');
24
- require('../Button-db6114a6.js');
24
+ require('../Button-114b5e41.js');
25
25
  require('react-router-dom');
26
- require('../Spinner-9d8fc7ff.js');
26
+ require('../tslib.es6-5b8768b7.js');
27
+ require('../Spinner-1d8dd226.js');
27
28
 
28
29
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
29
30
 
@@ -10,7 +10,7 @@ var styleInject_es = require('../style-inject.es-9d2f5f4e.js');
10
10
  var Icon = require('../Icon-405a216c.js');
11
11
  var Text = require('../Text-54334431.js');
12
12
  var Typography = require('../Typography-83915c54.js');
13
- var Button = require('../Button-db6114a6.js');
13
+ var Button = require('../Button-114b5e41.js');
14
14
  var useRefocusOnActivator = require('@jobber/hooks/useRefocusOnActivator');
15
15
  var useFocusTrap = require('@jobber/hooks/useFocusTrap');
16
16
  var reactPopper = require('react-popper');
@@ -2,10 +2,10 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var ConfirmationModal = require('../ConfirmationModal-285c3cbe.js');
5
+ var ConfirmationModal = require('../ConfirmationModal-cebf2c2e.js');
6
6
  require('react');
7
7
  require('@jobber/hooks/useOnKeyDown');
8
- require('../Modal-c17cc105.js');
8
+ require('../Modal-8322c2f1.js');
9
9
  require('react-dom');
10
10
  require('classnames');
11
11
  require('framer-motion');
@@ -14,11 +14,12 @@ require('@jobber/hooks/useFocusTrap');
14
14
  require('../style-inject.es-9d2f5f4e.js');
15
15
  require('../Heading-4cde9989.js');
16
16
  require('../Typography-83915c54.js');
17
- require('../Button-db6114a6.js');
17
+ require('../Button-114b5e41.js');
18
18
  require('react-router-dom');
19
+ require('../tslib.es6-5b8768b7.js');
19
20
  require('../Icon-405a216c.js');
20
21
  require('@jobber/design');
21
- require('../ButtonDismiss-1ccb84ec.js');
22
+ require('../ButtonDismiss-3c4be741.js');
22
23
  require('../Content-2ca1ffe1.js');
23
24
  require('../Markdown-d53b01bf.js');
24
25
  require('react-markdown');
@@ -2,7 +2,7 @@
2
2
 
3
3
  var React = require('react');
4
4
  var useOnKeyDown = require('@jobber/hooks/useOnKeyDown');
5
- var Modal = require('./Modal-c17cc105.js');
5
+ var Modal = require('./Modal-8322c2f1.js');
6
6
  var Content = require('./Content-2ca1ffe1.js');
7
7
  var Markdown = require('./Markdown-d53b01bf.js');
8
8
 
@@ -3,18 +3,19 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var React = require('react');
6
- var Card = require('../Card-116af709.js');
6
+ var Card = require('../Card-756a230b.js');
7
7
  var Content = require('../Content-2ca1ffe1.js');
8
8
  var Emphasis = require('../Emphasis-e10dde65.js');
9
9
  require('classnames');
10
10
  require('../style-inject.es-9d2f5f4e.js');
11
11
  require('../Heading-4cde9989.js');
12
12
  require('../Typography-83915c54.js');
13
- require('../Button-db6114a6.js');
13
+ require('../Button-114b5e41.js');
14
14
  require('react-router-dom');
15
+ require('../tslib.es6-5b8768b7.js');
15
16
  require('../Icon-405a216c.js');
16
17
  require('@jobber/design');
17
- require('../Menu-2e64307a.js');
18
+ require('../Menu-ec6cfd07.js');
18
19
  require('uuid');
19
20
  require('framer-motion');
20
21
  require('@jobber/hooks/useOnKeyDown');