@jobber/components 4.67.2-JOB-84126.13 → 4.67.2-JOB-85844.26

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 (146) hide show
  1. package/dist/AnimatedSwitcher/index.js +2 -2
  2. package/dist/{AnimatedSwitcher-d1e1ddcf.js → AnimatedSwitcher-2eab103a.js} +1 -1
  3. package/dist/Autocomplete/index.js +0 -0
  4. package/dist/Avatar/index.js +2 -3
  5. package/dist/{Avatar-76a799fa.js → Avatar-8955a61e.js} +1 -4
  6. package/dist/Banner/index.js +4 -9
  7. package/dist/Button/index.js +3 -4
  8. package/dist/Button-ee40b8fd.js +54 -0
  9. package/dist/ButtonDismiss/index.js +4 -5
  10. package/dist/{ButtonDismiss-2b98d075.js → ButtonDismiss-f45a7786.js} +1 -1
  11. package/dist/Card/index.js +7 -8
  12. package/dist/Card-6fe158ad.js +88 -0
  13. package/dist/Checkbox/index.js +5 -7
  14. package/dist/{Checkbox-ad7ec2e7.js → Checkbox-f92901ad.js} +5 -8
  15. package/dist/Chip/index.js +8 -7
  16. package/dist/Chip-eafb9c3b.js +86 -0
  17. package/dist/Chips/index.js +14 -18
  18. package/dist/ClientOnly-0bc210d3.js +23 -0
  19. package/dist/Combobox/index.js +11 -10
  20. package/dist/{Combobox-b6053eb7.js → Combobox-9112d247.js} +10 -23
  21. package/dist/ConfirmationModal/index.js +14 -13
  22. package/dist/{ConfirmationModal-0f85d96c.js → ConfirmationModal-298393b6.js} +3 -3
  23. package/dist/Content/index.js +1 -2
  24. package/dist/{Content-2ca1ffe1.js → Content-62118acd.js} +0 -5
  25. package/dist/DataDump/index.js +9 -10
  26. package/dist/DataList/components/DataListHeader/DataListHeaderCheckbox.d.ts +1 -2
  27. package/dist/DataList/components/DataListHeaderTile/DataListSortingArrows.d.ts +1 -1
  28. package/dist/DataList/hooks/useMediaQuery.d.ts +3 -1
  29. package/dist/DataList/index.js +0 -0
  30. package/dist/DataTable/DataTable.d.ts +1 -1
  31. package/dist/DataTable/index.js +0 -0
  32. package/dist/DatePicker/index.js +4 -5
  33. package/dist/DatePicker-189137c2.js +131 -0
  34. package/dist/DescriptionList/index.js +1 -4
  35. package/dist/Disclosure/index.js +2 -5
  36. package/dist/Divider/index.js +0 -3
  37. package/dist/Drawer/index.js +5 -10
  38. package/dist/Emphasis/index.js +2 -3
  39. package/dist/{Emphasis-b2d1b3aa.js → Emphasis-bf448c54.js} +1 -1
  40. package/dist/FeatureSwitch/index.js +11 -13
  41. package/dist/Flex/index.js +6 -4
  42. package/dist/Form/index.js +1 -1
  43. package/dist/FormField/index.js +0 -0
  44. package/dist/FormField-2e1d797a.js +252 -0
  45. package/dist/FormatDate/index.js +1 -1
  46. package/dist/FormatEmail/index.js +0 -3
  47. package/dist/FormatFile/index.js +17 -17
  48. package/dist/FormatFile-88fbd5dc.js +116 -0
  49. package/dist/FormatTime/FormatTime.d.ts +1 -2
  50. package/dist/FormatTime/index.js +11 -6
  51. package/dist/Gallery/index.js +18 -20
  52. package/dist/Glimmer/index.js +3 -4
  53. package/dist/Glimmer-5a4272bb.js +68 -0
  54. package/dist/Grid/index.js +1 -8
  55. package/dist/Heading/index.js +2 -3
  56. package/dist/{Heading-0f4ecb0c.js → Heading-2923b3c4.js} +1 -1
  57. package/dist/Icon/index.js +1 -1
  58. package/dist/InlineLabel/index.js +2 -3
  59. package/dist/InlineLabel-e52b42ee.js +25 -0
  60. package/dist/InputAvatar/index.js +8 -12
  61. package/dist/InputDate/index.js +0 -0
  62. package/dist/InputEmail/index.js +0 -0
  63. package/dist/InputFile/InputFile.d.ts +5 -1
  64. package/dist/InputFile/index.js +6 -8
  65. package/dist/{InputFile-540c1657.js → InputFile-e6c5c9be.js} +8 -11
  66. package/dist/InputGroup/index.js +1 -2
  67. package/dist/InputGroup-669bff5c.js +30 -0
  68. package/dist/InputNumber/index.js +0 -0
  69. package/dist/{InputNumber-ef949161.js → InputNumber-8dfdeef5.js} +1 -1
  70. package/dist/InputPassword/index.js +0 -0
  71. package/dist/InputPhoneNumber/index.js +0 -0
  72. package/dist/InputText/index.js +0 -0
  73. package/dist/{InputText-9e159467.js → InputText-61149f85.js} +3 -2
  74. package/dist/InputTime/InputTime.d.ts +3 -1
  75. package/dist/InputTime/InputTime.disabledTest.d.ts +1 -0
  76. package/dist/InputTime/InternalInputTime.d.ts +3 -0
  77. package/dist/InputTime/SupportsTimePolyfill.d.ts +2 -0
  78. package/dist/InputTime/TimeInputPolyfill.client.d.ts +2 -0
  79. package/dist/InputTime/index.js +0 -0
  80. package/dist/InputValidation/index.js +4 -5
  81. package/dist/{InputValidation-179f0926.js → InputValidation-42a70050.js} +2 -5
  82. package/dist/LightBox/ClientOnly.d.ts +6 -0
  83. package/dist/LightBox/LightBox.d.ts +2 -2
  84. package/dist/LightBox/index.js +6 -6
  85. package/dist/{LightBox-3f4dbc33.js → LightBox-282586ce.js} +5 -6
  86. package/dist/List/index.js +9 -15
  87. package/dist/Markdown/Markdown.d.ts +1 -1
  88. package/dist/Markdown/index.js +8 -8
  89. package/dist/Markdown-4382f0a4.js +90 -0
  90. package/dist/Menu/Menu.d.ts +4 -4
  91. package/dist/Menu/index.js +5 -6
  92. package/dist/{Menu-d7ea093c.js → Menu-df3c9332.js} +7 -10
  93. package/dist/Modal/Modal.d.ts +2 -2
  94. package/dist/Modal/index.js +7 -7
  95. package/dist/{Modal-70daa0e2.js → Modal-bec0202d.js} +6 -9
  96. package/dist/MultiSelect/index.js +5 -11
  97. package/dist/{Option-290b5594.js → Option-cdcc4d56.js} +1 -1
  98. package/dist/Page/index.js +12 -14
  99. package/dist/Popover/Popover.d.ts +2 -2
  100. package/dist/Popover/index.js +8 -8
  101. package/dist/ProgressBar/index.js +1 -2
  102. package/dist/ProgressBar-127f34ac.js +38 -0
  103. package/dist/RadioGroup/index.js +3 -5
  104. package/dist/RadioGroup-b775a2fc.js +44 -0
  105. package/dist/RecurringSelect/components/DayOfMonthSelect.d.ts +2 -2
  106. package/dist/RecurringSelect/components/WeeklySelect.d.ts +2 -2
  107. package/dist/RecurringSelect/index.js +0 -0
  108. package/dist/Select/index.js +0 -0
  109. package/dist/Spinner/index.js +1 -2
  110. package/dist/Spinner-db214d76.js +21 -0
  111. package/dist/StatusLabel/index.js +2 -5
  112. package/dist/SupportsTimePolyfill-c6769c3b.js +21 -0
  113. package/dist/Switch/index.js +2 -3
  114. package/dist/Switch-fc9c9120.js +53 -0
  115. package/dist/Table/index.js +2 -7
  116. package/dist/Tabs/index.js +1 -4
  117. package/dist/Text/index.js +2 -3
  118. package/dist/{Text-4a2bc89f.js → Text-3644f58e.js} +1 -1
  119. package/dist/TimeInputPolyfill.client-348881a8.js +687 -0
  120. package/dist/Toast/index.js +3 -6
  121. package/dist/Tooltip/index.js +3 -2
  122. package/dist/{Tooltip-6b12f1c2.js → Tooltip-e4cfb9e0.js} +14 -12
  123. package/dist/Typography/index.js +1 -2
  124. package/dist/Typography-26964114.js +43 -0
  125. package/dist/styles.css +8107 -0
  126. package/package.json +4 -4
  127. package/rollup.config.js +3 -1
  128. package/dist/Button-163a0641.js +0 -57
  129. package/dist/Card-3178033c.js +0 -93
  130. package/dist/Chip-168acf3e.js +0 -89
  131. package/dist/DatePicker-c18f1739.js +0 -134
  132. package/dist/FormField-181efe29.js +0 -0
  133. package/dist/FormatFile-3b650d02.js +0 -121
  134. package/dist/Glimmer-cfa92a88.js +0 -77
  135. package/dist/InlineLabel-9a517c19.js +0 -28
  136. package/dist/InputGroup-8d4fd4eb.js +0 -33
  137. package/dist/Markdown-96070121.js +0 -62
  138. package/dist/ProgressBar-b68edc8f.js +0 -43
  139. package/dist/RadioGroup-ebaa4f87.js +0 -47
  140. package/dist/Spinner-9d8fc7ff.js +0 -24
  141. package/dist/Switch-b85272bf.js +0 -56
  142. package/dist/Typography-973b122e.js +0 -62
  143. package/dist/style-inject.es-9d2f5f4e.js +0 -30
  144. /package/dist/{FormatDate-70ea5b43.js → FormatDate-3fc882ac.js} +0 -0
  145. /package/dist/{Icon-405a216c.js → Icon-e0b68533.js} +0 -0
  146. /package/dist/{tslib.es6-5b8768b7.js → tslib.es6-cb76b215.js} +0 -0
@@ -2,10 +2,10 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var AnimatedSwitcher = require('../AnimatedSwitcher-d1e1ddcf.js');
5
+ var AnimatedSwitcher = require('../AnimatedSwitcher-2eab103a.js');
6
6
  require('react');
7
7
  require('framer-motion');
8
- require('../Icon-405a216c.js');
8
+ require('../Icon-e0b68533.js');
9
9
  require('@jobber/design');
10
10
 
11
11
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  var React = require('react');
4
4
  var framerMotion = require('framer-motion');
5
- var Icon = require('./Icon-405a216c.js');
5
+ var Icon = require('./Icon-e0b68533.js');
6
6
 
7
7
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
8
 
Binary file
@@ -2,12 +2,11 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var Avatar = require('../Avatar-76a799fa.js');
5
+ var Avatar = require('../Avatar-8955a61e.js');
6
6
  require('react');
7
7
  require('classnames');
8
- require('../style-inject.es-9d2f5f4e.js');
9
8
  require('color');
10
- require('../Icon-405a216c.js');
9
+ require('../Icon-e0b68533.js');
11
10
  require('@jobber/design');
12
11
 
13
12
 
@@ -2,9 +2,8 @@
2
2
 
3
3
  var React = require('react');
4
4
  var classnames = require('classnames');
5
- var styleInject_es = require('./style-inject.es-9d2f5f4e.js');
6
5
  var Color = require('color');
7
- var Icon = require('./Icon-405a216c.js');
6
+ var Icon = require('./Icon-e0b68533.js');
8
7
 
9
8
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
10
9
 
@@ -12,9 +11,7 @@ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
12
11
  var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
13
12
  var Color__default = /*#__PURE__*/_interopDefaultLegacy(Color);
14
13
 
15
- var css_248z = ":root {\n --avatar-size: calc(var(--base-unit) * 2);\n --avatar-border-size: var(--border-base);\n}\n\n.WniTNadEyPk- {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: center;\n justify-content: center;\n width: calc(16px * 2);\n width: var(--avatar-size);\n height: calc(16px * 2);\n height: var(--avatar-size);\n min-width: calc(16px * 2);\n min-width: var(--avatar-size);\n min-height: calc(16px * 2);\n min-height: var(--avatar-size);\n border-radius: 100%;\n border-radius: var(--radius-circle);\n color: rgb(1, 41, 57);\n color: var(--color-heading);\n font-size: calc(16px * 2);\n font-size: var(--avatar-size);\n -webkit-font-smoothing: antialiased;\n background: no-repeat center center rgba(101, 120, 132, 1);\n background: no-repeat center center var(--color-greyBlue);\n background-size: cover;\n}\n\n.WniTNadEyPk-:focus {\n box-shadow: 0px 0px 0px calc(16px / 8) rgba(255, 255, 255, 1),\n 0px 0px 0px calc(16px / 4) rgb(147, 161, 169);\n box-shadow: var(--shadow-focus);\n outline: none;\n}\n\n._8Pqn2uZpaZg- {\n --avatar-size: calc(var(--base-unit) * 4.5);\n --avatar-border-size: var(--border-thick);\n}\n\n.S-edTXYA-7E- {\n --avatar-size: calc(var(--base-unit) * 1.5);\n}\n\n.S1iBGElfOUA- {\n color: rgba(255, 255, 255, 1);\n color: var(--color-text--reverse);\n}\n\n.ErPhpHHpiBQ- {\n font-size: calc((16px * 2) / 2);\n font-size: calc(calc(16px * 2) / 2);\n font-size: calc(var(--avatar-size) / 2);\n text-transform: uppercase;\n}\n\n.aC-d-mngrIc- {\n font-size: calc((16px * 2) / 2.25);\n font-size: calc(calc(16px * 2) / 2.25);\n font-size: calc(var(--avatar-size) / 2.25);\n}\n\n.nR0S-GzjDnQ- {\n width: calc((16px * 2) - (calc(16px / 16) * 2));\n width: calc(calc(16px * 2) - (calc(16px / 16) * 2));\n width: calc(var(--avatar-size) - (var(--avatar-border-size) * 2));\n height: calc((16px * 2) - (calc(16px / 16) * 2));\n height: calc(calc(16px * 2) - (calc(16px / 16) * 2));\n height: calc(var(--avatar-size) - (var(--avatar-border-size) * 2));\n box-shadow: 0 0 0 calc(16px / 8) rgba(255, 255, 255, 1) inset;\n box-shadow: 0 0 0 var(--border-thick) var(--color-white) inset;\n border-style: solid;\n border-width: calc(16px / 16);\n border-width: var(--avatar-border-size);\n}\n";
16
14
  var styles = {"avatar":"WniTNadEyPk-","large":"_8Pqn2uZpaZg-","small":"S-edTXYA-7E-","isDark":"S1iBGElfOUA-","initials":"ErPhpHHpiBQ-","smallInitials":"aC-d-mngrIc-","hasBorder":"nR0S-GzjDnQ-"};
17
- styleInject_es.styleInject(css_248z);
18
15
 
19
16
  function isDark(colorToCheck) {
20
17
  if (colorToCheck == undefined) {
@@ -5,12 +5,11 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var React = require('react');
6
6
  var classnames = require('classnames');
7
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-4a2bc89f.js');
11
- var Button = require('../Button-163a0641.js');
8
+ var Icon = require('../Icon-e0b68533.js');
9
+ var Text = require('../Text-3644f58e.js');
10
+ var Button = require('../Button-ee40b8fd.js');
12
11
  require('@jobber/design');
13
- require('../Typography-973b122e.js');
12
+ require('../Typography-26964114.js');
14
13
  require('react-router-dom');
15
14
 
16
15
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -18,13 +17,9 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
18
17
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
19
18
  var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
20
19
 
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(238, 240, 242);\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: 489px) {\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: 489px) {\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 0px calc(16px / 8) rgba(255, 255, 255, 1),\n 0px 0px 0px calc(16px / 4) rgb(147, 161, 169);\n box-shadow: var(--shadow-focus);\n outline: none;\n background: rgba(0, 0, 0, 0.05);\n}\n";
22
20
  var styles = {"banner":"meuT8gYQPJU-","bannerChildren":"y4BapyZr-fo-","bannerContent":"_6v1woNSLEvc-","medium":"bocgLmEhcTU-","bannerAction":"rtNjEzmABX4-","closeButton":"lunQ5SOfyLg-"};
23
- styleInject_es.styleInject(css_248z$1);
24
21
 
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
22
  var types = {"notice":"wWW-2T7rCV0-","success":"_7h8FUHIkVjg-","warning":"d5fXcE1L0lc-","error":"oYaw-T3c0IU-"};
27
- styleInject_es.styleInject(css_248z);
28
23
 
29
24
  function BannerIcon({ icon }) {
30
25
  return React__default["default"].createElement(Icon.Icon, { name: icon, color: "greyBlueDark" });
@@ -2,14 +2,13 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var Button = require('../Button-163a0641.js');
5
+ var Button = require('../Button-ee40b8fd.js');
6
6
  require('react');
7
7
  require('classnames');
8
8
  require('react-router-dom');
9
- require('../style-inject.es-9d2f5f4e.js');
10
- require('../Icon-405a216c.js');
9
+ require('../Icon-e0b68533.js');
11
10
  require('@jobber/design');
12
- require('../Typography-973b122e.js');
11
+ require('../Typography-26964114.js');
13
12
 
14
13
 
15
14
 
@@ -0,0 +1,54 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var classnames = require('classnames');
5
+ var reactRouterDom = require('react-router-dom');
6
+ var Icon = require('./Icon-e0b68533.js');
7
+ var Typography = require('./Typography-26964114.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 styles = {"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-"};
15
+
16
+ function Button(props) {
17
+ const { ariaControls, ariaHaspopup, ariaExpanded, ariaLabel, disabled = false, external, fullWidth, icon, label, iconOnRight, id, loading, onClick, onMouseDown, role, size = "base", type = "primary", url, to, variation = "work", submit, } = props;
18
+ const buttonClassNames = classnames__default["default"](styles.button, styles[size], {
19
+ [styles.onlyIcon]: icon && !label,
20
+ [styles.hasIconAndLabel]: icon && label,
21
+ [styles.iconOnRight]: iconOnRight,
22
+ [styles[variation]]: variation,
23
+ [styles[type]]: type,
24
+ [styles.disabled]: disabled,
25
+ [styles.fullWidth]: fullWidth,
26
+ [styles.loading]: loading,
27
+ });
28
+ const buttonType = submit ? "submit" : "button";
29
+ const tagProps = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ className: buttonClassNames, disabled,
30
+ 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 });
31
+ const buttonInternals = React__default["default"].createElement(ButtonInternals, Object.assign({}, props));
32
+ if (to) {
33
+ return (React__default["default"].createElement(reactRouterDom.Link, Object.assign({}, tagProps, { to: to }), buttonInternals));
34
+ }
35
+ const Tag = url ? "a" : "button";
36
+ return React__default["default"].createElement(Tag, Object.assign({}, tagProps), buttonInternals);
37
+ }
38
+ function ButtonInternals({ label, icon, size = "base" }) {
39
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
40
+ icon && React__default["default"].createElement(Icon.Icon, { name: icon, size: size }),
41
+ React__default["default"].createElement(Typography.Typography, { element: "span", fontWeight: "extraBold", fontFamily: "base", size: getTypeSizes(size) }, label)));
42
+ }
43
+ function getTypeSizes(size) {
44
+ switch (size) {
45
+ case "small":
46
+ return "small";
47
+ case "large":
48
+ return "large";
49
+ default:
50
+ return "base";
51
+ }
52
+ }
53
+
54
+ exports.Button = Button;
@@ -2,15 +2,14 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var ButtonDismiss = require('../ButtonDismiss-2b98d075.js');
5
+ var ButtonDismiss = require('../ButtonDismiss-f45a7786.js');
6
6
  require('react');
7
- require('../Button-163a0641.js');
7
+ require('../Button-ee40b8fd.js');
8
8
  require('classnames');
9
9
  require('react-router-dom');
10
- require('../style-inject.es-9d2f5f4e.js');
11
- require('../Icon-405a216c.js');
10
+ require('../Icon-e0b68533.js');
12
11
  require('@jobber/design');
13
- require('../Typography-973b122e.js');
12
+ require('../Typography-26964114.js');
14
13
 
15
14
 
16
15
 
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var React = require('react');
4
- var Button = require('./Button-163a0641.js');
4
+ var Button = require('./Button-ee40b8fd.js');
5
5
 
6
6
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
7
7
 
@@ -2,21 +2,20 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var Card = require('../Card-3178033c.js');
5
+ var Card = require('../Card-6fe158ad.js');
6
6
  require('react');
7
7
  require('classnames');
8
- require('../style-inject.es-9d2f5f4e.js');
9
- require('../Heading-0f4ecb0c.js');
10
- require('../Typography-973b122e.js');
11
- require('../Button-163a0641.js');
8
+ require('../Heading-2923b3c4.js');
9
+ require('../Typography-26964114.js');
10
+ require('../Button-ee40b8fd.js');
12
11
  require('react-router-dom');
13
- require('../Icon-405a216c.js');
12
+ require('../Icon-e0b68533.js');
14
13
  require('@jobber/design');
15
- require('../Menu-d7ea093c.js');
16
- require('uuid');
14
+ require('../Menu-df3c9332.js');
17
15
  require('framer-motion');
18
16
  require('@jobber/hooks/useOnKeyDown');
19
17
  require('@jobber/hooks/useRefocusOnActivator');
18
+ require('@jobber/hooks/useSafeLayoutEffect');
20
19
 
21
20
 
22
21
 
@@ -0,0 +1,88 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var classnames = require('classnames');
5
+ var Heading = require('./Heading-2923b3c4.js');
6
+ var Button = require('./Button-ee40b8fd.js');
7
+ var Menu = require('./Menu-df3c9332.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 styles = {"card":"_2wxPdv7kELk-","accent":"_5LfUFF9DYsk-","clickable":"tRfpysqqk8s-","header":"fAPeD1InvAI-"};
15
+
16
+ var colors = {"requestColor":"vvT4WQQNm1A-","quoteColor":"ewWSA-AqPBs-","jobColor":"ZuQFWmcM-38-","invoiceColor":"b9aB-DbfSI8-","blue":"_6tFyd9Op3QY-","blueLight":"uFlsik1sMf8-","blueLighter":"_2dO0zCHWU48-","blueLightest":"RR-XaNyu23U-","blueDark":"HLricrV5TRM-","green":"fvMAXzbYjVo-","greenLight":"vppB-fszJ7M-","greenLighter":"EH4yrRyVrog-","greenLightest":"jfuIATPvpzw-","greenDark":"mDgzdSzCmlw-","lime":"OWeyNXobrek-","limeLight":"gBd-jW7hc2A-","limeLighter":"PZ3p2kISQl8-","limeLightest":"wk56Avrf5u8-","limeDark":"BpxVs0ESZZQ-","yellowGreen":"W1Plus-w90s-","yellowGreenLight":"MBvezPZf2r0-","yellowGreenLighter":"HpMA-8L7gEQ-","yellowGreenLightest":"Z7K3xhC6jU8-","yellowGreenDark":"qYud5BgZVDQ-","yellow":"UmKFuhj-odE-","yellowLight":"urbYXsHvb-o-","yellowLighter":"J5f4ygfEe1M-","yellowLightest":"f0YOqNTXr2c-","yellowDark":"zYMhMXskG-o-","red":"xMW5G3bcZ-U-","redLight":"-O8T8zi0AkQ-","redLighter":"WNaOw-wPD40-","redLightest":"_3jne5angZmM-","redDark":"Ce3FxZAnXks-","grey":"Ubx9QHfbYVg-","greyLight":"_9orHaOxo3ew-","greyLighter":"gvgk4-Qr7G8-","greyLightest":"_6dk6hwjKwz8-","greyDark":"LFsxlyhhXWE-","greyBlue":"MNze-s50Qx0-","greyBlueLight":"_1O6fbjtLDXE-","greyBlueLighter":"_3coHcfDM3VA-","greyBlueLightest":"_1GwEUK3RMmk-","greyBlueDark":"_03qQDU55XhA-","lightBlue":"XrONNgApzcY-","lightBlueLight":"axCpC15OAsQ-","lightBlueLighter":"l7-ZKiT7ECs-","lightBlueLightest":"R-d7ifPGd-U-","lightBlueDark":"tjGcvlfZNo0-","purple":"_6yFi1QGzU-0-","purpleLight":"s5B034ADstg-","purpleLighter":"XvHFMKO2QkA-","purpleLightest":"z1yqV2h-X0o-","purpleDark":"ShqfQED9t1k-","pink":"TSAuQcS9guw-","pinkLight":"GwUX04DtVTg-","pinkLighter":"OOxzzrT-Kyg-","pinkLightest":"_9iIg4vnXMPQ-","pinkDark":"_3VTCutRlbfQ-","teal":"fG-k53wCdy8-","tealLight":"GMNha2EEVYg-","tealLighter":"_8mCqw-pGqc8-","tealLightest":"XHd3g6apCv8-","tealDark":"XadpYA5oNNU-","orange":"yOjNuw4uX2M-","orangeLight":"CFBZb6YwS8U-","orangeLighter":"dj0X5xsNtZA-","orangeLightest":"bSU2KCid1GE-","orangeDark":"dPKWRPFuIko-","brown":"i90uzcHXLBQ-","brownLight":"Q1g5O8oxNQ8-","brownLighter":"UimWc99bIs0-","brownLightest":"AUWBtBoPSB4-","brownDark":"_7xEA4hCoooA-","navy":"IqAniikSo1A-","navyLight":"NTbn2du5U28-","navyLighter":"RbY7pJetOU0-","navyLightest":"TAlHuH8GUaY-","navyDark":"Pm1CuBHrg0Q-","indigo":"_-4HRcMjMcTg-","indigoLight":"frP-WGi4cig-","indigoLighter":"GzJbf-nczMU-","indigoLightest":"LFsNJs2wsGY-","indigoDark":"KRBIaqOA1G4-","white":"OXOOKDn6V-M-"};
17
+
18
+ const ENTER_KEY = "Enter";
19
+ const SPACEBAR_KEY = " ";
20
+ /**
21
+ * This is only intended to be used in the Card component.
22
+ * Please use `<Card onClick={onClick} />` component instead.
23
+ */
24
+ function CardClickable({ className, onClick, children, }) {
25
+ const cardRef = React.useRef();
26
+ return (React__default["default"].createElement("div", { ref: cardRef, "data-testid": "clickable-card", className: className, onClick: onClick, onKeyUp: handleKeyup, onKeyDown: handleKeyDown, role: "button", tabIndex: 0 }, children));
27
+ function isCardFocused() {
28
+ return document.activeElement === cardRef.current;
29
+ }
30
+ function handleKeyup(event) {
31
+ var _a;
32
+ const shouldClick = event.key === ENTER_KEY || event.key === SPACEBAR_KEY;
33
+ if (shouldClick && isCardFocused()) {
34
+ (_a = cardRef.current) === null || _a === void 0 ? void 0 : _a.click();
35
+ }
36
+ }
37
+ function handleKeyDown(event) {
38
+ // Prevent page scroll when hitting spacebar while focused on a card
39
+ if (event.key === SPACEBAR_KEY && isCardFocused()) {
40
+ event.preventDefault();
41
+ }
42
+ }
43
+ }
44
+
45
+ /**
46
+ * Intended to be used in the Card component.
47
+ * Use `<Card header={header} />` component instead.
48
+ */
49
+ function CardHeader({ title, header, }) {
50
+ const heading = title || header;
51
+ if (React__default["default"].isValidElement(heading))
52
+ return React__default["default"].createElement(React__default["default"].Fragment, null, heading);
53
+ if (heading) {
54
+ const titleString = typeof heading === "string" ? heading : heading.title;
55
+ return (React__default["default"].createElement("div", { className: styles.header },
56
+ titleString && React__default["default"].createElement(Heading.Heading, { level: 3 }, titleString),
57
+ typeof heading === "object" && renderHeaderAction(heading === null || heading === void 0 ? void 0 : heading.action)));
58
+ }
59
+ return React__default["default"].createElement(React__default["default"].Fragment, null);
60
+ }
61
+ function renderHeaderAction(action) {
62
+ if ((action === null || action === void 0 ? void 0 : action.type) === Button.Button) {
63
+ const props = Object.assign(Object.assign({ type: "tertiary" }, action.props), { size: "small" });
64
+ return action && React__default["default"].createElement(Button.Button, Object.assign({}, props));
65
+ }
66
+ if ((action === null || action === void 0 ? void 0 : action.type) === Menu.Menu) {
67
+ return action && React__default["default"].createElement(Menu.Menu, Object.assign({}, action.props));
68
+ }
69
+ return React__default["default"].createElement(React__default["default"].Fragment, null);
70
+ }
71
+
72
+ function Card({ accent, header, children, onClick, title, url, external = false, }) {
73
+ const className = classnames__default["default"](styles.card, accent && styles.accent, (url || onClick) && styles.clickable, accent && colors[accent]);
74
+ const cardContent = (React__default["default"].createElement(React__default["default"].Fragment, null,
75
+ React__default["default"].createElement(CardHeader, { title: title, header: header }),
76
+ children));
77
+ if (onClick) {
78
+ return (React__default["default"].createElement(CardClickable, { className: className, onClick: onClick }, cardContent));
79
+ }
80
+ else if (url) {
81
+ return (React__default["default"].createElement("a", Object.assign({ className: className, href: url }, (external && { target: "_blank", rel: "noopener noreferrer" })), cardContent));
82
+ }
83
+ else {
84
+ return React__default["default"].createElement("div", { className: className }, cardContent);
85
+ }
86
+ }
87
+
88
+ exports.Card = Card;
@@ -2,17 +2,15 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var Checkbox = require('../Checkbox-ad7ec2e7.js');
6
- require('../tslib.es6-5b8768b7.js');
5
+ var Checkbox = require('../Checkbox-f92901ad.js');
6
+ require('../tslib.es6-cb76b215.js');
7
7
  require('react');
8
- require('uuid');
9
8
  require('classnames');
10
9
  require('react-hook-form');
11
- require('../style-inject.es-9d2f5f4e.js');
12
- require('../Icon-405a216c.js');
10
+ require('../Icon-e0b68533.js');
13
11
  require('@jobber/design');
14
- require('../Text-4a2bc89f.js');
15
- require('../Typography-973b122e.js');
12
+ require('../Text-3644f58e.js');
13
+ require('../Typography-26964114.js');
16
14
 
17
15
 
18
16
 
@@ -1,29 +1,26 @@
1
1
  'use strict';
2
2
 
3
- var tslib_es6 = require('./tslib.es6-5b8768b7.js');
3
+ var tslib_es6 = require('./tslib.es6-cb76b215.js');
4
4
  var React = require('react');
5
- var uuid = require('uuid');
6
5
  var classnames = require('classnames');
7
6
  var reactHookForm = require('react-hook-form');
8
- var styleInject_es = require('./style-inject.es-9d2f5f4e.js');
9
- var Icon = require('./Icon-405a216c.js');
10
- var Text = require('./Text-4a2bc89f.js');
7
+ var Icon = require('./Icon-e0b68533.js');
8
+ var Text = require('./Text-3644f58e.js');
11
9
 
12
10
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
11
 
14
12
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
15
13
  var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
16
14
 
17
- var css_248z = ".d-2MyyzKGN0- {\n display: inline-block;\n}\n\n.OFHQaLxY8zI- {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: start;\n align-items: flex-start;\n -webkit-user-select: none;\n -ms-user-select: none;\n user-select: none;\n cursor: pointer;\n}\n\n.HRrf3AZlpHc- {\n cursor: not-allowed;\n}\n\n.kMH5B1jwh-Y- {\n position: relative;\n}\n\n.rup0RBe4DNU- {\n /* Hide checkbox on UI but not screen readers and still allow focus state */\n position: absolute;\n width: 1px;\n height: 1px;\n overflow: hidden;\n clip: rect(0 0 0 0);\n -webkit-clip-path: inset(100%);\n clip-path: inset(100%);\n white-space: nowrap;\n}\n\n.lOQVnJA7zPM- {\n display: -ms-flexbox;\n display: flex;\n width: calc(16px * 1);\n width: var(--space-base);\n height: calc(16px * 1);\n height: var(--space-base);\n box-sizing: border-box;\n border: calc(16px / 8) solid rgb(125, 176, 14);\n border: var(--border-thick) solid var(--color-interactive);\n border-radius: calc(16px / 8);\n border-radius: var(--radius-base);\n background-color: rgba(255, 255, 255, 1);\n background-color: var(--color-surface);\n transition: all 200ms;\n -ms-flex-pack: center;\n justify-content: center;\n -ms-flex-align: center;\n align-items: center;\n}\n\n.HRrf3AZlpHc- .lOQVnJA7zPM- {\n border-color: rgb(225, 225, 225);\n border-color: var(--color-disabled--secondary);\n}\n\n.HRrf3AZlpHc- p {\n color: rgb(181, 181, 181);\n color: var(--color-disabled);\n}\n\n.HRrf3AZlpHc- .lOQVnJA7zPM- > * {\n opacity: 0;\n}\n\n.rup0RBe4DNU-.Njn2CQDXwVA- + .lOQVnJA7zPM-,\n.rup0RBe4DNU-:checked + .lOQVnJA7zPM- {\n border-color: rgb(125, 176, 14);\n border-color: var(--color-interactive);\n background-color: rgb(125, 176, 14);\n background-color: var(--color-interactive);\n}\n\n.rup0RBe4DNU-:focus + .lOQVnJA7zPM- {\n box-shadow: 0px 0px 0px calc(16px / 8) rgba(255, 255, 255, 1),\n 0px 0px 0px calc(16px / 4) rgb(147, 161, 169);\n box-shadow: var(--shadow-focus);\n}\n\n.HRrf3AZlpHc- .rup0RBe4DNU-.Njn2CQDXwVA- + .lOQVnJA7zPM-,\n.HRrf3AZlpHc- .rup0RBe4DNU-:checked + .lOQVnJA7zPM- {\n border-color: rgb(225, 225, 225);\n border-color: var(--color-disabled--secondary);\n background-color: rgb(225, 225, 225);\n background-color: var(--color-disabled--secondary);\n}\n\n.HRrf3AZlpHc- .rup0RBe4DNU-.Njn2CQDXwVA- + .lOQVnJA7zPM- > *,\n.HRrf3AZlpHc- .rup0RBe4DNU-:checked + .lOQVnJA7zPM- > * {\n opacity: 1;\n}\n\n.eHENKCs5umc- {\n margin: 0 calc(16px / 2);\n margin: 0 var(--space-small);\n}\n\n.fSEH0cAO9cI- {\n margin-bottom: calc(16px / 2);\n margin-bottom: var(--space-small);\n padding-left: calc(16px * 1.5);\n padding-left: var(--space-large);\n}\n";
18
15
  var styles = {"checkbox":"d-2MyyzKGN0-","wrapper":"OFHQaLxY8zI-","disabled":"HRrf3AZlpHc-","checkHolder":"kMH5B1jwh-Y-","input":"rup0RBe4DNU-","checkBox":"lOQVnJA7zPM-","indeterminate":"Njn2CQDXwVA-","label":"eHENKCs5umc-","description":"fSEH0cAO9cI-"};
19
- styleInject_es.styleInject(css_248z);
20
16
 
21
17
  function Checkbox({ checked, defaultChecked, disabled, label, name, value, indeterminate = false, description, children, onChange, onFocus, }) {
18
+ const id = React.useId();
22
19
  const { control, setValue, watch } = reactHookForm.useFormContext() != undefined
23
20
  ? reactHookForm.useFormContext()
24
21
  : // If there isn't a Form Context being provided, get a form for this field.
25
22
  reactHookForm.useForm({ mode: "onTouched" });
26
- const [identifier] = React.useState(uuid.v1());
23
+ const [identifier] = React.useState(id);
27
24
  /**
28
25
  * Generate a name if one is not supplied, this is the name
29
26
  * that will be used for react-hook-form and not neccessarily
@@ -2,20 +2,21 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var Chip = require('../Chip-168acf3e.js');
6
- var tslib_es6 = require('../tslib.es6-5b8768b7.js');
5
+ var Chip = require('../Chip-eafb9c3b.js');
6
+ var tslib_es6 = require('../tslib.es6-cb76b215.js');
7
7
  var React = require('react');
8
- var Icon = require('../Icon-405a216c.js');
8
+ var Icon = require('../Icon-e0b68533.js');
9
9
  require('classnames');
10
10
  require('@jobber/hooks/useInView');
11
- require('../style-inject.es-9d2f5f4e.js');
12
- require('../Avatar-76a799fa.js');
11
+ require('../Avatar-8955a61e.js');
13
12
  require('color');
14
- require('../Typography-973b122e.js');
15
- require('../Tooltip-6b12f1c2.js');
13
+ require('../Typography-26964114.js');
14
+ require('../Tooltip-e4cfb9e0.js');
16
15
  require('react-dom');
17
16
  require('framer-motion');
17
+ require('@jobber/hooks/useSafeLayoutEffect');
18
18
  require('react-popper');
19
+ require('../ClientOnly-0bc210d3.js');
19
20
  require('@jobber/design');
20
21
 
21
22
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -0,0 +1,86 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var classnames = require('classnames');
5
+ var useInView = require('@jobber/hooks/useInView');
6
+ var Avatar = require('./Avatar-8955a61e.js');
7
+ var Icon = require('./Icon-e0b68533.js');
8
+ var Typography = require('./Typography-26964114.js');
9
+ var Tooltip = require('./Tooltip-e4cfb9e0.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 styles = {"chip":"af7U8MvcbHE-","prefix":"e905AYK4SCc-","suffix":"ySADfZ0FckM-","empty":"usdkmQ9Sxbk-","chipBar":"dg1-Izy1eQA-","selected":"-lz0EYLTDgg-","base":"wSI5L-5rODg-","invalid":"SmUxkzpIC84-","subtle":"Mux23dmZSuw-","disabled":"MbRItb9vKhc-","chipContent":"tJhURjR2Vec-","truncateGradient":"G3QXY0rNcK0-","chipLabelRef":"MUKEW6c2nNA-"};
17
+
18
+ /**
19
+ * Returns the first React Child that receives `true` from isCorrectComponent
20
+ * @param children React Children
21
+ * @param isCorrectComponent a function that accepts a JSX Element and returns a boolean.
22
+ * @returns The first child component that returns true on isCorrectComponent
23
+ */
24
+ function useChildComponent(children, isCorrectComponent) {
25
+ return React.useMemo(() => {
26
+ return React__default["default"].Children.toArray(children).find(d => React.isValidElement(d) && isCorrectComponent(d));
27
+ }, [children]);
28
+ }
29
+
30
+ function ChipPrefix({ children }) {
31
+ const singleChild = useChildComponent(children, d => d.type === Avatar.Avatar || d.type === Icon.Icon);
32
+ return (React__default["default"].createElement("span", { className: classnames__default["default"](styles.prefix, !singleChild && styles.empty) }, singleChild));
33
+ }
34
+
35
+ function ChipSuffix({ children, className }) {
36
+ var _a;
37
+ let singleChild = useChildComponent(children, d => d.type === Icon.Icon);
38
+ if (!allowedSuffixIcons.includes((_a = singleChild === null || singleChild === void 0 ? void 0 : singleChild.props) === null || _a === void 0 ? void 0 : _a.name)) {
39
+ singleChild = undefined;
40
+ }
41
+ return (React__default["default"].createElement("span", { className: classnames__default["default"](styles.suffix, className, !singleChild && styles.empty) }, singleChild));
42
+ }
43
+ const allowedSuffixIcons = ["cross", "add", "checkmark", "arrowDown"];
44
+
45
+ const Chip = ({ ariaLabel, disabled, heading, invalid, label, value, onClick, onKeyDown, children, role = "button", tabIndex = 0, variation = "base", }) => {
46
+ const classes = classnames__default["default"](styles.chip, {
47
+ [styles.invalid]: invalid,
48
+ [styles.base]: variation === "base",
49
+ [styles.subtle]: variation === "subtle",
50
+ [styles.disabled]: disabled,
51
+ });
52
+ const prefix = useChildComponent(children, d => d.type === Chip.Prefix);
53
+ const suffix = useChildComponent(children, d => d.type === Chip.Suffix);
54
+ const [labelRef, labelFullyVisible] = useInView.useInView();
55
+ const [headingRef, headingFullyVisible] = useInView.useInView();
56
+ const tooltipMessage = getTooltipMessage(labelFullyVisible, headingFullyVisible, label, heading);
57
+ return (React__default["default"].createElement(Tooltip.Tooltip, { message: tooltipMessage },
58
+ React__default["default"].createElement("button", { className: classes, onClick: (ev) => onClick && onClick(value, ev), tabIndex: tabIndex, onKeyDown: onKeyDown, "aria-label": ariaLabel || label, disabled: disabled, role: role, type: "button" },
59
+ prefix,
60
+ React__default["default"].createElement("div", { className: styles.chipContent },
61
+ heading && (React__default["default"].createElement(React__default["default"].Fragment, null,
62
+ React__default["default"].createElement(Typography.Typography, { size: "base", fontWeight: "medium" },
63
+ heading,
64
+ React__default["default"].createElement("span", { ref: headingRef, className: styles.chipLabelRef })),
65
+ label && React__default["default"].createElement("span", { className: styles.chipBar }))),
66
+ React__default["default"].createElement(Typography.Typography, { size: "base" },
67
+ label,
68
+ React__default["default"].createElement("span", { ref: labelRef, className: styles.chipLabelRef })),
69
+ !labelFullyVisible && (React__default["default"].createElement("div", { className: styles.truncateGradient, "data-testid": "ATL-Chip-Truncation-Gradient" }))),
70
+ suffix)));
71
+ };
72
+ function getTooltipMessage(labelFullyVisible, headingFullyVisible, label, heading) {
73
+ let message = "";
74
+ if (heading && !headingFullyVisible) {
75
+ message = `${heading} | ${label}`;
76
+ }
77
+ else if (!labelFullyVisible) {
78
+ message = label;
79
+ }
80
+ return message;
81
+ }
82
+ Chip.Prefix = ChipPrefix;
83
+ Chip.Suffix = ChipSuffix;
84
+
85
+ exports.Chip = Chip;
86
+ exports.styles = styles;
@@ -4,24 +4,24 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var React = require('react');
6
6
  var classnames = require('classnames');
7
- var styleInject_es = require('../style-inject.es-9d2f5f4e.js');
8
7
  var useAssert = require('@jobber/hooks/useAssert');
9
- var Icon = require('../Icon-405a216c.js');
10
- var Avatar = require('../Avatar-76a799fa.js');
11
- var Typography = require('../Typography-973b122e.js');
12
- var Tooltip = require('../Tooltip-6b12f1c2.js');
13
- var uuid = require('uuid');
8
+ var Icon = require('../Icon-e0b68533.js');
9
+ var Avatar = require('../Avatar-8955a61e.js');
10
+ var Typography = require('../Typography-26964114.js');
11
+ var Tooltip = require('../Tooltip-e4cfb9e0.js');
14
12
  var sortBy = require('lodash/sortBy');
15
13
  var useLiveAnnounce = require('@jobber/hooks/useLiveAnnounce');
16
14
  var debounce = require('lodash/debounce');
17
- var reactPopper = require('react-popper');
18
- var Text = require('../Text-4a2bc89f.js');
19
- var Button = require('../Button-163a0641.js');
20
- var Spinner = require('../Spinner-9d8fc7ff.js');
21
15
  require('@jobber/design');
16
+ var reactPopper = require('react-popper');
17
+ var Text = require('../Text-3644f58e.js');
18
+ var Button = require('../Button-ee40b8fd.js');
19
+ var Spinner = require('../Spinner-db214d76.js');
22
20
  require('color');
23
21
  require('react-dom');
24
22
  require('framer-motion');
23
+ require('@jobber/hooks/useSafeLayoutEffect');
24
+ require('../ClientOnly-0bc210d3.js');
25
25
  require('react-router-dom');
26
26
 
27
27
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -31,9 +31,7 @@ var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
31
31
  var sortBy__default = /*#__PURE__*/_interopDefaultLegacy(sortBy);
32
32
  var debounce__default = /*#__PURE__*/_interopDefaultLegacy(debounce);
33
33
 
34
- var css_248z$1 = "/**\n * Used in the wrapping chips component:\n * - InternalChipSingleSelect\n * - InternalChipMultiSelect\n */\n\n.zn6onyiQVmA- {\n display: -ms-flexbox;\n display: flex;\n gap: calc(16px / 2);\n gap: var(--space-small);\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-align: center;\n align-items: center;\n}\n\n.PEnZzMEgbhU- {\n display: inline-grid;\n position: relative;\n max-width: 100%;\n box-sizing: border-box;\n padding: calc(16px / 2);\n padding: var(--space-small);\n border: calc(16px / 16) solid rgb(217, 223, 225);\n border: var(--border-base) solid var(--color-border);\n border-radius: calc(16px / 2);\n border-radius: var(--radius-larger);\n color: rgb(77, 105, 116);\n color: var(--color-text--secondary);\n text-align: left;\n vertical-align: middle;\n background-color: rgba(255, 255, 255, 1);\n background-color: var(--color-surface);\n transition: 200ms ease-in-out;\n transition: var(--timing-base) ease-in-out;\n transition-property: background-color, box-shadow, color;\n grid-template-columns: -webkit-max-content;\n grid-template-columns: max-content;\n -ms-flex-align: center;\n align-items: center;\n gap: calc(16px / 2);\n gap: var(--space-small);\n}\n\n.dtysUhwYdG4-,\n.xGaMCAYsdwA- {\n padding: calc((16px / 4) + (16px / 8)) calc(16px / 2);\n padding: calc(calc(16px / 4) + calc(16px / 8)) calc(16px / 2);\n padding: calc(var(--space-smaller) + var(--space-smallest)) var(--space-small);\n}\n\n.dtysUhwYdG4- {\n grid-template-columns: -webkit-min-content 1fr;\n grid-template-columns: min-content 1fr;\n}\n\n.xGaMCAYsdwA- {\n grid-template-columns: 1fr -webkit-min-content;\n grid-template-columns: 1fr min-content;\n}\n\n.dtysUhwYdG4-.xGaMCAYsdwA- {\n grid-template-columns: -webkit-min-content 1fr -webkit-min-content;\n grid-template-columns: min-content 1fr min-content;\n}\n\n.SNT7gGV-h-o-,\n.W4D98cvEth4- ~ .PEnZzMEgbhU- {\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 cursor: pointer;\n -webkit-appearance: none;\n appearance: none;\n}\n\n/**\n * Interaction\n */\n\n.PEnZzMEgbhU-:focus,\n.W4D98cvEth4-:focus ~ .PEnZzMEgbhU- {\n box-shadow: 0px 0px 0px calc(16px / 8) rgba(255, 255, 255, 1),\n 0px 0px 0px calc(16px / 4) rgb(147, 161, 169);\n box-shadow: var(--shadow-focus);\n outline: none;\n}\n\n.SNT7gGV-h-o-:hover,\n.W4D98cvEth4- ~ .PEnZzMEgbhU-:not(._0hEzaTXK9M0-):hover,\n.W4D98cvEth4-:focus ~ .PEnZzMEgbhU-:not(._0hEzaTXK9M0-) {\n background-color: rgb(244, 246, 250);\n background-color: var(--color-surface--hover);\n}\n\n/**\n * States\n */\n\n.PEnZzMEgbhU-._0hEzaTXK9M0- {\n border-color: rgb(1, 41, 57);\n border-color: var(--color-surface--reverse);\n color: rgba(255, 255, 255, 1);\n color: var(--color-text--reverse);\n background-color: rgb(1, 41, 57);\n background-color: var(--color-surface--reverse);\n}\n\n.PEnZzMEgbhU-.JApS2787BU8- {\n border-color: rgb(128, 25, 0);\n border-color: var(--color-critical--onSurface);\n color: rgb(128, 25, 0);\n color: var(--color-critical--onSurface);\n background-color: rgb(255, 226, 219);\n background-color: var(--color-critical--surface);\n}\n\n.PEnZzMEgbhU-.Kg0c8WVgMpg- {\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 background-color: rgb(225, 225, 225);\n background-color: var(--color-disabled--secondary);\n}\n\n._0hEzaTXK9M0-.Kg0c8WVgMpg- {\n border-color: rgb(181, 181, 181);\n border-color: var(--color-disabled);\n color: rgba(255, 255, 255, 1);\n color: var(--color-white);\n background-color: rgb(181, 181, 181);\n background-color: var(--color-disabled);\n}\n\n.JApS2787BU8-.Kg0c8WVgMpg- {\n border-color: rgb(201, 66, 33);\n border-color: var(--color-critical);\n}\n\n/**\n * Input checkbox/radio\n *\n * Hide checkbox on UI but not screen readers and still allow focus state\n */\n\n.W4D98cvEth4- {\n position: absolute;\n width: 1px;\n height: 1px;\n overflow: hidden;\n clip: rect(0 0 0 0);\n -webkit-clip-path: inset(100%);\n clip-path: inset(100%);\n white-space: nowrap;\n}\n\n/**\n * Button\n */\n\n._0-ZWexS4Gfg- {\n display: -ms-flexbox;\n display: flex;\n border-radius: calc(16px / 8);\n border-radius: var(--radius-base);\n cursor: pointer;\n transition: background-color 200ms ease;\n}\n\n._0-ZWexS4Gfg-:hover,\n._0-ZWexS4Gfg-:focus {\n background-color: rgb(244, 246, 250);\n background-color: var(--color-surface--hover);\n}\n\n._0-ZWexS4Gfg-:focus,\n.SNT7gGV-h-o- ._0-ZWexS4Gfg-:hover {\n box-shadow: 0px 0px 0px calc(16px / 8) rgba(255, 255, 255, 1),\n 0px 0px 0px calc(16px / 4) rgb(147, 161, 169);\n box-shadow: var(--shadow-focus);\n outline: none;\n}\n\n/**\n * Override icon default colors.\n *\n * NOTE: This is a workaround since some icons have default colors that we don't\n * want to override until the component color prop overrides it.\n * DO NOT COPY!\n */\n\n.DQPnZP4UZpw- > svg {\n fill: rgba(101, 120, 132, 1);\n fill: var(--color-interactive--subtle);\n}\n\n.DQPnZP4UZpw- {\n display: -ms-flexbox;\n display: flex;\n}\n";
35
34
  var styles$1 = {"wrapper":"zn6onyiQVmA-","chip":"PEnZzMEgbhU-","hasPrefix":"dtysUhwYdG4-","hasSuffix":"xGaMCAYsdwA-","clickable":"SNT7gGV-h-o-","input":"W4D98cvEth4-","active":"_0hEzaTXK9M0-","invalid":"JApS2787BU8-","disabled":"Kg0c8WVgMpg-","button":"_0-ZWexS4Gfg-","icon":"DQPnZP4UZpw-"};
36
- styleInject_es.styleInject(css_248z$1);
37
35
 
38
36
  function InternalChipButton({ icon, invalid, disabled, label, onClick, }) {
39
37
  const buttonRef = React.useRef();
@@ -94,7 +92,7 @@ function InternalChipAffix({ affix, active, invalid, disabled, }) {
94
92
  const isAvatar = (affix === null || affix === void 0 ? void 0 : affix.type) === Avatar.Avatar || false;
95
93
  const isIcon = (affix === null || affix === void 0 ? void 0 : affix.type) === Icon.Icon || false;
96
94
  const isChipButton = (affix === null || affix === void 0 ? void 0 : affix.type) === InternalChipButton || false;
97
- useAssert.useAssert(!!affix && !(isAvatar || isIcon || isChipButton), `Prefix prop only accepts "<Avatar />" or "<Icon />" component. You have "${affix === null || affix === void 0 ? void 0 : affix.type}".`);
95
+ useAssert.useSafeAssert(!!affix && !(isAvatar || isIcon || isChipButton), `Prefix prop only accepts "<Avatar />" or "<Icon />" component. You have "${affix === null || affix === void 0 ? void 0 : affix.type}".`);
98
96
  }
99
97
  }
100
98
 
@@ -129,7 +127,7 @@ function ChipDismissible({ label, disabled, invalid, prefix, onClick, onRequestR
129
127
  return (React__default["default"].createElement(InternalChip, { label: label, disabled: disabled, invalid: invalid, prefix: prefix, onClick: onClick, suffix: React__default["default"].createElement(InternalChipButton, { icon: "remove", label: label, invalid: invalid, disabled: disabled, onClick: onRequestRemove }) }));
130
128
  }
131
129
 
132
- function InternalChipSingleSelect({ children, selected, name = uuid.v1(), onChange, onClick, }) {
130
+ function InternalChipSingleSelect({ children, selected, name = React.useId(), onChange, onClick, }) {
133
131
  return (React__default["default"].createElement("div", { className: styles$1.wrapper, "data-testid": "singleselect-chips" }, React__default["default"].Children.map(children, child => {
134
132
  const isSelected = child.props.value === selected;
135
133
  return (React__default["default"].createElement("label", null,
@@ -204,9 +202,7 @@ function InternalChipMultiSelect({ children, selected, onChange, onClick, }) {
204
202
  }
205
203
  }
206
204
 
207
- var css_248z = ".sCNIjluCskc- {\n display: -ms-flexbox;\n display: flex;\n position: relative;\n box-sizing: border-box;\n border: calc(16px / 16) solid transparent;\n border: var(--border-base) solid transparent;\n border-radius: calc(16px / 8);\n border-radius: var(--radius-base);\n transition: all 200ms;\n transition: all var(--timing-base);\n gap: calc(16px / 2);\n gap: var(--space-small);\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-align: center;\n align-items: center;\n}\n\n.MFUlz1WQLdk- {\n -ms-flex: 1;\n flex: 1;\n min-width: 120px;\n padding: calc(16px / 2) 0;\n padding: var(--space-small) 0;\n border: none;\n border-radius: 0;\n color: inherit;\n font-family: inherit;\n font-size: inherit;\n font-size: calc(calc(16px * 1) * 0.875);\n font-size: var(--typography--fontSize-base);\n line-height: 1.25;\n line-height: var(--typography--lineHeight-base);\n background: transparent;\n -webkit-appearance: none;\n appearance: none;\n}\n\n.MFUlz1WQLdk-:focus {\n outline: none;\n}\n\n.V9eYJdjPAeY- {\n position: relative;\n z-index: 6;\n z-index: var(--elevation-menu);\n width: 100%;\n}\n\n.LdytkOeCU9c- {\n max-height: 320px;\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 / 2) 0;\n padding: var(--space-small) 0;\n border-radius: calc(16px / 8);\n border-radius: var(--radius-base);\n overflow-y: scroll;\n background-color: rgba(255, 255, 255, 1);\n background-color: var(--color-surface);\n}\n\n.y7Cz2u8BuNE-,\n._-7bmao8Q9As- {\n display: -ms-flexbox;\n display: flex;\n width: 100%;\n padding: calc(16px / 2);\n padding: var(--space-small);\n border: none;\n background-color: transparent;\n cursor: pointer;\n -webkit-appearance: none;\n appearance: none;\n -ms-flex-align: center;\n align-items: center;\n gap: calc(16px / 2);\n gap: var(--space-small);\n}\n\n.y7Cz2u8BuNE-:focus {\n box-shadow: 0px 0px 0px calc(16px / 8) rgba(255, 255, 255, 1),\n 0px 0px 0px calc(16px / 4) rgb(147, 161, 169);\n box-shadow: var(--shadow-focus);\n}\n\n.y7Cz2u8BuNE-:focus,\n.iCwWdcmtInc- {\n outline: none;\n background-color: rgb(244, 246, 250);\n background-color: var(--color-surface--hover);\n}\n\n._-7bmao8Q9As- {\n -ms-flex-pack: center;\n justify-content: center;\n}\n";
208
205
  var styles = {"wrapper":"sCNIjluCskc-","input":"MFUlz1WQLdk-","menu":"V9eYJdjPAeY-","menuList":"LdytkOeCU9c-","menuListOption":"y7Cz2u8BuNE-","loadingIndicator":"_-7bmao8Q9As-","activeOption":"iCwWdcmtInc-"};
209
- styleInject_es.styleInject(css_248z);
210
206
 
211
207
  function useInternalChipDismissible({ children, selected, onChange, onClick, onCustomAdd, }) {
212
208
  const ref = React.useRef(null);
@@ -269,9 +265,9 @@ function useInternalChipDismissible({ children, selected, onChange, onClick, onC
269
265
  availableChipOptions });
270
266
  }
271
267
 
272
- const menuId = uuid.v1();
273
268
  // eslint-disable-next-line max-statements
274
269
  function useInternalChipDismissibleInput({ options, isLoadingMore = false, onCustomOptionSelect, onOptionSelect, onSearch, }) {
270
+ const menuId = React.useId();
275
271
  const [allOptions, setAllOptions] = React.useState([]);
276
272
  const [searchValue, setSearchValue] = React.useState("");
277
273
  const [menuOpen, setMenuOpen] = React.useState(false);
@@ -515,7 +511,7 @@ function Chips(props) {
515
511
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
516
512
  function Chip(props) {
517
513
  // Throw error when <Chip /> gets used outside of the <Chips />
518
- useAssert.useAssert(true, "`<Chip>` component can only be used inside `<Chips>`");
514
+ useAssert.useSafeAssert(true, "`<Chip>` component can only be used inside `<Chips>`");
519
515
  return React__default["default"].createElement(React__default["default"].Fragment, null);
520
516
  }
521
517