@jobber/components 4.85.4-CJS-to-ESM.1 → 4.85.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 (139) hide show
  1. package/.eslintrc.js +10 -0
  2. package/dist/AnimatedPresence/index.js +12 -0
  3. package/dist/AnimatedPresence-20a02aaa.js +104 -0
  4. package/dist/AnimatedSwitcher/index.js +13 -0
  5. package/dist/AnimatedSwitcher-3d45ec5d.js +96 -0
  6. package/dist/Autocomplete/index.js +209 -0
  7. package/dist/Avatar/index.js +15 -0
  8. package/dist/Avatar-76a799fa.js +78 -0
  9. package/dist/Banner/index.js +110 -0
  10. package/dist/Button/index.js +16 -0
  11. package/dist/Button-b73a5e01.js +57 -0
  12. package/dist/ButtonDismiss/index.js +17 -0
  13. package/dist/ButtonDismiss-350af163.js +14 -0
  14. package/dist/Card/colors.css.d.ts +89 -0
  15. package/dist/Card/index.js +24 -0
  16. package/dist/Card-e3144022.js +93 -0
  17. package/dist/Checkbox/index.js +18 -0
  18. package/dist/Checkbox-787e2e47.js +63 -0
  19. package/dist/Chip/index.js +41 -0
  20. package/dist/Chip-3d1bfddc.js +89 -0
  21. package/dist/Chips/index.js +524 -0
  22. package/dist/Combobox/index.js +40 -0
  23. package/dist/Combobox-a24c8241.js +479 -0
  24. package/dist/ConfirmationModal/index.js +31 -0
  25. package/dist/ConfirmationModal-52e16873.js +100 -0
  26. package/dist/Content/Spacing.css.d.ts +13 -0
  27. package/dist/Content/index.js +12 -0
  28. package/dist/Content-e3f7b6fc.js +24 -0
  29. package/dist/Countdown/index.js +72 -0
  30. package/dist/DataDump/index.js +37 -0
  31. package/dist/DataList/index.js +1335 -0
  32. package/dist/DataTable/index.js +301 -0
  33. package/dist/DatePicker/index.js +20 -0
  34. package/dist/DatePicker-64c5ab1a.js +134 -0
  35. package/dist/DescriptionList/index.js +24 -0
  36. package/dist/Disclosure/index.js +46 -0
  37. package/dist/Divider/index.js +29 -0
  38. package/dist/Drawer/index.js +49 -0
  39. package/dist/Emphasis/index.js +13 -0
  40. package/dist/Emphasis-bda56d3b.js +19 -0
  41. package/dist/FeatureSwitch/index.js +70 -0
  42. package/dist/Flex/index.js +12 -0
  43. package/dist/Flex-d490c4db.js +38 -0
  44. package/dist/Form/index.js +56 -0
  45. package/dist/FormField/index.js +24 -0
  46. package/dist/FormField-6ff183f8.js +253 -0
  47. package/dist/FormatDate/index.js +11 -0
  48. package/dist/FormatDate-70ea5b43.js +34 -0
  49. package/dist/FormatEmail/index.js +23 -0
  50. package/dist/FormatFile/index.js +36 -0
  51. package/dist/FormatFile-f036902d.js +162 -0
  52. package/dist/FormatRelativeDateTime/index.js +72 -0
  53. package/dist/FormatTime/index.js +36 -0
  54. package/dist/Gallery/Gallery.css.d.ts +9 -0
  55. package/dist/Gallery/index.js +99 -0
  56. package/dist/Glimmer/index.js +15 -0
  57. package/dist/Glimmer/style/Shape.css.d.ts +9 -0
  58. package/dist/Glimmer/style/Sizes.css.d.ts +10 -0
  59. package/dist/Glimmer/style/Timing.css.d.ts +6 -0
  60. package/dist/Glimmer-84dee1ed.js +77 -0
  61. package/dist/Grid/GridAlign.css.d.ts +8 -0
  62. package/dist/Grid/index.js +76 -0
  63. package/dist/Heading/index.js +14 -0
  64. package/dist/Heading-1e8e4bd3.js +55 -0
  65. package/dist/Icon/index.js +11 -0
  66. package/dist/Icon-405a216c.js +40 -0
  67. package/dist/InlineLabel/index.js +13 -0
  68. package/dist/InlineLabel-a6557829.js +28 -0
  69. package/dist/InputAvatar/index.js +70 -0
  70. package/dist/InputDate/index.js +57 -0
  71. package/dist/InputEmail/index.js +43 -0
  72. package/dist/InputFile/index.js +25 -0
  73. package/dist/InputFile-bb945071.js +190 -0
  74. package/dist/InputGroup/index.js +12 -0
  75. package/dist/InputGroup-8d4fd4eb.js +33 -0
  76. package/dist/InputNumber/index.js +25 -0
  77. package/dist/InputNumber-d451b52e.js +62 -0
  78. package/dist/InputPassword/index.js +41 -0
  79. package/dist/InputPhoneNumber/index.js +116 -0
  80. package/dist/InputText/index.js +26 -0
  81. package/dist/InputText-55b6cb65.js +102 -0
  82. package/dist/InputTime/index.js +209 -0
  83. package/dist/InputValidation/index.js +17 -0
  84. package/dist/InputValidation-05e839fa.js +29 -0
  85. package/dist/LightBox/index.js +24 -0
  86. package/dist/LightBox-a89d8863.js +117 -0
  87. package/dist/Link/index.js +15 -0
  88. package/dist/List/index.js +93 -0
  89. package/dist/Markdown/index.js +19 -0
  90. package/dist/Markdown-f7c55304.js +62 -0
  91. package/dist/Menu/index.js +21 -0
  92. package/dist/Menu-083fc4c4.js +139 -0
  93. package/dist/Modal/Sizes.css.d.ts +6 -0
  94. package/dist/Modal/index.js +25 -0
  95. package/dist/Modal-c336cac6.js +71 -0
  96. package/dist/MultiSelect/index.js +182 -0
  97. package/dist/Option-3c4d377e.js +19 -0
  98. package/dist/Page/index.js +78 -0
  99. package/dist/Popover/index.js +61 -0
  100. package/dist/ProgressBar/Sizes.css.d.ts +7 -0
  101. package/dist/ProgressBar/index.js +12 -0
  102. package/dist/ProgressBar-b68edc8f.js +43 -0
  103. package/dist/RadioGroup/index.js +15 -0
  104. package/dist/RadioGroup-17b67ade.js +46 -0
  105. package/dist/RecurringSelect/index.js +227 -0
  106. package/dist/Select/index.js +26 -0
  107. package/dist/Spinner/index.js +12 -0
  108. package/dist/Spinner-9d8fc7ff.js +24 -0
  109. package/dist/StatusIndicator/index.js +11 -0
  110. package/dist/StatusIndicator-b179d06e.js +18 -0
  111. package/dist/StatusLabel/index.js +29 -0
  112. package/dist/Switch/index.js +13 -0
  113. package/dist/Switch-7d4aa7c3.js +56 -0
  114. package/dist/Table/index.js +66 -0
  115. package/dist/Tabs/index.js +80 -0
  116. package/dist/Text/index.js +13 -0
  117. package/dist/Text-259af966.js +31 -0
  118. package/dist/Toast/index.js +111 -0
  119. package/dist/Tooltip/index.js +16 -0
  120. package/dist/Tooltip-ef3d6ef4.js +112 -0
  121. package/dist/Typography/css/Emphasis.css.d.ts +6 -0
  122. package/dist/Typography/css/FontFamilies.css.d.ts +6 -0
  123. package/dist/Typography/css/FontSizes.css.d.ts +12 -0
  124. package/dist/Typography/css/FontWeights.css.d.ts +10 -0
  125. package/dist/Typography/css/TextAlignment.css.d.ts +7 -0
  126. package/dist/Typography/css/TextCases.css.d.ts +7 -0
  127. package/dist/Typography/css/TextColors.css.d.ts +22 -0
  128. package/dist/Typography/css/Truncate.css.d.ts +5 -0
  129. package/dist/Typography/css/Typography.css.d.ts +5 -0
  130. package/dist/Typography/index.js +12 -0
  131. package/dist/Typography-c45bf216.js +62 -0
  132. package/dist/getAtlantisConfig-0f3e8af2.js +13 -0
  133. package/dist/style-inject.es-9d2f5f4e.js +30 -0
  134. package/dist/tslib.es6-754e2961.js +46 -0
  135. package/package.json +4 -371
  136. package/rollup.config.js +77 -21
  137. package/dist/index.cjs +0 -6721
  138. package/dist/index.d.ts +0 -73
  139. package/dist/index.esm.js +0 -6603
@@ -0,0 +1,34 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+
5
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
6
+
7
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
8
+
9
+ function FormatDate({ date: inputDate, showYear = true, }) {
10
+ let dateObject;
11
+ if (inputDate instanceof Date) {
12
+ dateObject = inputDate;
13
+ }
14
+ else if (typeof inputDate === "string") {
15
+ dateObject = new Date(inputDate);
16
+ }
17
+ else {
18
+ dateObject = new Date(inputDate.year, inputDate.month - 1, inputDate.day);
19
+ }
20
+ return React__default["default"].createElement(React__default["default"].Fragment, null, strFormatDate(dateObject, showYear));
21
+ }
22
+ function strFormatDate(date, showYear = true) {
23
+ let formatOptions = {
24
+ month: "short",
25
+ day: "numeric",
26
+ };
27
+ if (showYear) {
28
+ formatOptions = Object.assign(Object.assign({}, formatOptions), { year: "numeric" });
29
+ }
30
+ return date.toLocaleDateString(undefined, formatOptions);
31
+ }
32
+
33
+ exports.FormatDate = FormatDate;
34
+ exports.strFormatDate = strFormatDate;
@@ -0,0 +1,23 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var React = require('react');
6
+ var classnames = require('classnames');
7
+ var styleInject_es = require('../style-inject.es-9d2f5f4e.js');
8
+
9
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
10
+
11
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
12
+ var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
13
+
14
+ var css_248z = ".Cr7OFSgq9WA- {\n font-style: normal;\n}\n";
15
+ var styles = {"email":"Cr7OFSgq9WA-"};
16
+ styleInject_es.styleInject(css_248z);
17
+
18
+ function FormatEmail({ email }) {
19
+ const className = classnames__default["default"](styles.email);
20
+ return React__default["default"].createElement("address", { className: className }, email);
21
+ }
22
+
23
+ exports.FormatEmail = FormatEmail;
@@ -0,0 +1,36 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var FormatFile = require('../FormatFile-f036902d.js');
6
+ require('react');
7
+ require('classnames');
8
+ require('filesize');
9
+ require('../style-inject.es-9d2f5f4e.js');
10
+ require('../Button-b73a5e01.js');
11
+ require('react-router-dom');
12
+ require('../Icon-405a216c.js');
13
+ require('@jobber/design');
14
+ require('../Typography-c45bf216.js');
15
+ require('../ConfirmationModal-52e16873.js');
16
+ require('@jobber/hooks/useOnKeyDown');
17
+ require('../Modal-c336cac6.js');
18
+ require('react-dom');
19
+ require('framer-motion');
20
+ require('@jobber/hooks/useRefocusOnActivator');
21
+ require('@jobber/hooks/useFocusTrap');
22
+ require('../Heading-1e8e4bd3.js');
23
+ require('../getAtlantisConfig-0f3e8af2.js');
24
+ require('../ButtonDismiss-350af163.js');
25
+ require('../Content-e3f7b6fc.js');
26
+ require('../Markdown-f7c55304.js');
27
+ require('react-markdown');
28
+ require('../Text-259af966.js');
29
+ require('../Emphasis-bda56d3b.js');
30
+ require('../Glimmer-84dee1ed.js');
31
+ require('../tslib.es6-754e2961.js');
32
+ require('../ProgressBar-b68edc8f.js');
33
+
34
+
35
+
36
+ exports.FormatFile = FormatFile.FormatFile;
@@ -0,0 +1,162 @@
1
+ 'use strict';
2
+
3
+ var React = require('react');
4
+ var classnames = require('classnames');
5
+ var getHumanReadableFileSize = require('filesize');
6
+ var styleInject_es = require('./style-inject.es-9d2f5f4e.js');
7
+ var Button = require('./Button-b73a5e01.js');
8
+ var ConfirmationModal = require('./ConfirmationModal-52e16873.js');
9
+ var Glimmer = require('./Glimmer-84dee1ed.js');
10
+ var Icon = require('./Icon-405a216c.js');
11
+ var Typography = require('./Typography-c45bf216.js');
12
+ var Text = require('./Text-259af966.js');
13
+ var ProgressBar = require('./ProgressBar-b68edc8f.js');
14
+
15
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
16
+
17
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
18
+ var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
19
+ var getHumanReadableFileSize__default = /*#__PURE__*/_interopDefaultLegacy(getHumanReadableFileSize);
20
+
21
+ var css_248z$2 = ":root {\n --file-card--height: calc(var(--space-base) * 3.5);\n --file-card--background-color: var(--color-white);\n --file-card--header-background-color: var(--color-greyBlue--lighter);\n --file-card--content-background-color: var(--color-white);\n --file-card--border-color: var(--color-border);\n --file-card--accent-color: var(--color-grey);\n --file-card--base-padding: var(--space-small);\n}\n\n.cx4iQqlNNvc- {\n display: grid;\n grid-template-columns: auto -webkit-max-content;\n grid-template-columns: auto max-content;\n gap: calc(16px / 2);\n grid-gap: calc(16px / 2);\n grid-gap: var(--file-card--base-padding);\n gap: var(--file-card--base-padding);\n -ms-flex-align: center;\n align-items: center;\n padding-right: calc(16px / 2);\n padding-right: var(--space-small);\n border: calc(16px / 16) solid rgb(217, 223, 225);\n border: var(--border-base) solid var(--file-card--border-color);\n border-radius: calc(16px / 8);\n border-radius: var(--radius-base);\n background-color: rgba(255, 255, 255, 1);\n background-color: var(--file-card--background-color);\n}\n\n.nSaog7-7Jn0-,\n.cx4iQqlNNvc- {\n position: relative;\n}\n\n._9jVt97W52JY- {\n display: grid;\n grid-template-columns: -webkit-max-content auto;\n grid-template-columns: max-content auto;\n gap: calc(16px / 2);\n grid-gap: calc(16px / 2);\n grid-gap: var(--file-card--base-padding);\n gap: var(--file-card--base-padding);\n -ms-flex-align: center;\n align-items: center;\n padding: 0;\n border: none;\n text-align: left;\n background-color: var(--color-transparent);\n}\n\n.z-kUGMs0Yfg- {\n width: 168px;\n height: 168px;\n}\n\n.x1Ql0enaIxY- {\n width: 56px;\n height: 56px;\n}\n\n.il9-MCeoBts- {\n display: -ms-flexbox;\n display: flex;\n position: relative;\n box-sizing: border-box;\n padding: 0;\n overflow: hidden;\n background-color: rgb(238, 240, 242);\n background-color: var(--color-surface--background);\n -ms-flex-negative: 0;\n flex-shrink: 0;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: center;\n justify-content: center;\n}\n\n.cx4iQqlNNvc- ._9jVt97W52JY- {\n outline: none;\n}\n\n.nSaog7-7Jn0- ._9jVt97W52JY-: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.nSaog7-7Jn0- .il9-MCeoBts- {\n border: calc(16px / 16) solid rgb(217, 223, 225);\n border: var(--border-base) solid var(--color-border);\n border-radius: calc(16px / 8);\n border-radius: var(--radius-base);\n}\n\n.cx4iQqlNNvc- ._9jVt97W52JY-:focus::after {\n content: \"\";\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\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.cx4iQqlNNvc- .il9-MCeoBts- {\n border-right: none;\n border-bottom-left-radius: calc(16px / 8);\n border-bottom-left-radius: var(--radius-base);\n border-top-left-radius: calc(16px / 8);\n border-top-left-radius: var(--radius-base);\n}\n\n.O9EG-xJYVco- {\n cursor: pointer;\n}\n\n.QmrRp5CTpGU- .il9-MCeoBts-::after,\n.N5qVYfi1Pgo- {\n content: \"\";\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.32);\n background-color: var(--color-overlay);\n opacity: 0;\n transition: all 200ms;\n transition: all var(--timing-base);\n}\n\n.QmrRp5CTpGU-:hover .il9-MCeoBts-::after,\n.QmrRp5CTpGU-:focus .il9-MCeoBts-::after,\n.N5qVYfi1Pgo- {\n opacity: 1;\n}\n\n.N5qVYfi1Pgo- {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n box-sizing: border-box;\n padding: calc(16px / 2);\n padding: var(--file-card--base-padding);\n}\n\n.TyXXZnJuVwo- {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-direction: column;\n flex-direction: column;\n min-width: 0;\n}\n\n.TyXXZnJuVwo- p {\n margin: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.nSaog7-7Jn0- ._7wDO6nPXy-g- {\n position: absolute;\n top: calc(16px / 4);\n top: var(--space-smaller);\n right: calc(16px / 4);\n right: var(--space-smaller);\n}\n\n.sgUJuNv0rUE- ~ ._7wDO6nPXy-g- {\n visibility: hidden;\n}\n\n._7wDO6nPXy-g-:focus-within,\n._7wDO6nPXy-g-:hover,\n.sgUJuNv0rUE-:hover ~ ._7wDO6nPXy-g-,\n.sgUJuNv0rUE-:focus ~ ._7wDO6nPXy-g- {\n visibility: visible;\n}\n";
22
+ var styles$2 = {"expanded":"cx4iQqlNNvc-","compact":"nSaog7-7Jn0-","wrapper":"_9jVt97W52JY-","large":"z-kUGMs0Yfg-","base":"x1Ql0enaIxY-","thumbnail":"il9-MCeoBts-","clickable":"O9EG-xJYVco-","hoverable":"QmrRp5CTpGU-","progress":"N5qVYfi1Pgo-","contentBlock":"TyXXZnJuVwo-","deleteButton":"_7wDO6nPXy-g-","deleteable":"sgUJuNv0rUE-"};
23
+ styleInject_es.styleInject(css_248z$2);
24
+
25
+ function FormatFileDeleteButton({ size, onDelete }) {
26
+ const buttonSize = size === "base" ? "small" : "base";
27
+ const [deleteConfirmationOpen, setDeleteConfirmationOpen] = React.useState(false);
28
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
29
+ React__default["default"].createElement(Button.Button, { onClick: () => setDeleteConfirmationOpen(true), variation: "destructive", type: "tertiary", icon: "trash", ariaLabel: "Delete File", size: buttonSize }),
30
+ React__default["default"].createElement(ConfirmationModal.ConfirmationModal, { title: "Confirm Deletion", message: `Are you sure you want to delete this file?`, confirmLabel: "Delete", variation: "destructive", open: deleteConfirmationOpen, onConfirm: () => onDelete === null || onDelete === void 0 ? void 0 : onDelete(), onRequestClose: () => setDeleteConfirmationOpen(false) })));
31
+ }
32
+
33
+ var css_248z$1 = ".M9Y7sOk6lTc- {\n display: grid;\n grid-template-columns: auto;\n grid-template-rows: auto -webkit-max-content;\n grid-template-rows: auto max-content;\n width: inherit;\n height: inherit;\n -ms-flex-align: center;\n align-items: center;\n justify-items: center;\n}\n\n.E4wclxY71oM-:not(.yReSfaruAh0-) {\n -ms-flex-align: end;\n align-items: end;\n}\n\n.YXN92rsh2eU- {\n width: 100%;\n min-width: 0;\n box-sizing: border-box;\n}\n\n.psaqxO2Lu7E- .YXN92rsh2eU- {\n padding: calc(16px / 4);\n padding: var(--space-smaller);\n font-size: calc(\n (16px * 1) * 0.625\n );\n font-size: calc(\n calc(16px * 1) * 0.625\n );\n font-size: var(--typography--fontSize-smaller);\n}\n\n.yReSfaruAh0- .YXN92rsh2eU- {\n position: absolute;\n bottom: 0;\n left: 0;\n padding: calc(16px / 2);\n padding: var(--space-small);\n font-size: calc((16px * 1) * 0.75);\n font-size: calc(calc(16px * 1) * 0.75);\n font-size: var(--typography--fontSize-small);\n}\n";
34
+ var styles$1 = {"content":"M9Y7sOk6lTc-","hasName":"E4wclxY71oM-","large":"yReSfaruAh0-","fileName":"YXN92rsh2eU-","base":"psaqxO2Lu7E-"};
35
+ styleInject_es.styleInject(css_248z$1);
36
+
37
+ var css_248z = "._62D0xyydQwo- {\n width: 100%;\n height: 100%;\n -o-object-fit: cover;\n object-fit: cover;\n -webkit-animation: _5GIEBejwNJc- 200ms ease;\n animation: _5GIEBejwNJc- 200ms ease;\n}\n\n.a5EQqLlJmCk- {\n display: none;\n}\n\n@-webkit-keyframes _5GIEBejwNJc- {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n\n@keyframes _5GIEBejwNJc- {\n from {\n opacity: 0;\n }\n\n to {\n opacity: 1;\n }\n}\n";
38
+ var styles = {"image":"_62D0xyydQwo-","fadeIn":"_5GIEBejwNJc-","hidden":"a5EQqLlJmCk-"};
39
+ styleInject_es.styleInject(css_248z);
40
+
41
+ function InternalThumbnailImage({ file }) {
42
+ const { name, src } = file;
43
+ const [imageSource, setImageSource] = React.useState();
44
+ const [imageLoaded, setImageLoaded] = React.useState(false);
45
+ if (!imageSource) {
46
+ src().then(url => setImageSource(url));
47
+ }
48
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
49
+ !imageLoaded && React__default["default"].createElement(Glimmer.Glimmer, { size: "auto" }),
50
+ React__default["default"].createElement("img", { src: imageSource, onLoad: handleImageLoad, alt: name, "data-testid": "internalThumbnailImage", className: classnames__default["default"](styles.image, { [styles.hidden]: !imageLoaded }) })));
51
+ function handleImageLoad() {
52
+ setImageLoaded(true);
53
+ }
54
+ }
55
+
56
+ // This function comes from MDN: https://developer.mozilla.org/en-US/docs/Web/API/Window/navigator
57
+ function getClientBrowser(userAgent) {
58
+ // The order matters here, and this may report false positives for unlisted browsers.
59
+ if (userAgent.includes("Firefox")) {
60
+ // "Mozilla/5.0 (X11; Linux i686; rv:104.0) Gecko/20100101 Firefox/104.0"
61
+ return "Mozilla Firefox";
62
+ }
63
+ else if (userAgent.includes("SamsungBrowser")) {
64
+ // "Mozilla/5.0 (Linux; Android 9; SAMSUNG SM-G955F Build/PPR1.180610.011) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/9.4 Chrome/67.0.3396.87 Mobile Safari/537.36"
65
+ return "Samsung Internet";
66
+ }
67
+ else if (userAgent.includes("Opera") || userAgent.includes("OPR")) {
68
+ // "Mozilla/5.0 (Macintosh; Intel Mac OS X 12_5_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36 OPR/90.0.4480.54"
69
+ return "Opera";
70
+ }
71
+ else if (userAgent.includes("Edge")) {
72
+ // "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299"
73
+ return "Microsoft Edge (Legacy)";
74
+ }
75
+ else if (userAgent.includes("Edg")) {
76
+ // "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36 Edg/104.0.1293.70"
77
+ return "Microsoft Edge (Chromium)";
78
+ }
79
+ else if (userAgent.includes("Chrome")) {
80
+ // "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36"
81
+ return "Google Chrome or Chromium";
82
+ }
83
+ else if (userAgent.includes("Safari")) {
84
+ // "Mozilla/5.0 (iPhone; CPU iPhone OS 15_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.6 Mobile/15E148 Safari/604.1"
85
+ return "Apple Safari";
86
+ }
87
+ else {
88
+ return "unknown";
89
+ }
90
+ }
91
+ function isSafari(userAgent) {
92
+ return getClientBrowser(userAgent) === "Apple Safari";
93
+ }
94
+
95
+ function InternalThumbnail({ compact = false, size, file, }) {
96
+ const { name, type } = file;
97
+ const iconName = getIconNameFromType(type);
98
+ const hasName = Boolean(name) && compact;
99
+ const nonHeicImage = !type.startsWith("image/heic");
100
+ const userAgent = typeof document === "undefined" ? "" : window.navigator.userAgent;
101
+ if (type.startsWith("image/") && (nonHeicImage || isSafari(userAgent))) {
102
+ return React__default["default"].createElement(InternalThumbnailImage, { file: file });
103
+ }
104
+ return (React__default["default"].createElement("div", { className: classnames__default["default"](styles$1.content, styles$1[size], {
105
+ [styles$1.hasName]: hasName,
106
+ }) },
107
+ React__default["default"].createElement(Icon.Icon, { name: iconName, color: "greyBlue", size: size }),
108
+ hasName && (React__default["default"].createElement("div", { className: styles$1.fileName },
109
+ React__default["default"].createElement(Typography.Typography, { element: "span", textColor: "text", numberOfLines: 1 }, name)))));
110
+ }
111
+ function getIconNameFromType(mimeType) {
112
+ if (mimeType.startsWith("image/"))
113
+ return "image";
114
+ if (mimeType.startsWith("video/"))
115
+ return "video";
116
+ switch (mimeType) {
117
+ case "application/pdf":
118
+ return "pdf";
119
+ case "application/vnd.ms-excel":
120
+ return "excel";
121
+ default:
122
+ return "file";
123
+ }
124
+ }
125
+
126
+ function FormatFile({ file, display = "expanded", displaySize = "base", onDelete, onClick, }) {
127
+ const isComplete = file.progress >= 1;
128
+ const fileSize = getHumanReadableFileSize__default["default"](file.size);
129
+ const wrapperClassNames = classnames__default["default"](styles$2[display], {
130
+ [styles$2[displaySize]]: display === "compact",
131
+ });
132
+ const DetailsContainer = isComplete && onClick ? "button" : "div";
133
+ const detailsClassNames = classnames__default["default"](styles$2.wrapper, {
134
+ [styles$2[displaySize]]: display === "compact",
135
+ [styles$2.hoverable]: isHoverable({ display, isComplete, onClick, onDelete }),
136
+ [styles$2.clickable]: onClick,
137
+ [styles$2.deleteable]: display === "compact",
138
+ });
139
+ const thumbnailContainerClassNames = classnames__default["default"](styles$2.thumbnail, styles$2[displaySize]);
140
+ return (React__default["default"].createElement("div", { className: wrapperClassNames },
141
+ React__default["default"].createElement(DetailsContainer, { type: "button", className: detailsClassNames, onClick: isComplete ? onClick : undefined, tabIndex: 0, "aria-busy": !isComplete },
142
+ React__default["default"].createElement("div", { className: thumbnailContainerClassNames },
143
+ React__default["default"].createElement(InternalThumbnail, { key: file.key, compact: display === "compact", file: file, size: displaySize }),
144
+ !isComplete && (React__default["default"].createElement("div", { className: styles$2.progress },
145
+ React__default["default"].createElement(ProgressBar.ProgressBar, { size: "small", currentStep: file.progress * 100, totalSteps: 100 })))),
146
+ display === "expanded" && (React__default["default"].createElement("div", { className: styles$2.contentBlock },
147
+ React__default["default"].createElement(Text.Text, { size: "base" }, file.name),
148
+ React__default["default"].createElement(Text.Text, { size: "small" }, fileSize)))),
149
+ isComplete && onDelete && (React__default["default"].createElement("div", { className: styles$2.deleteButton },
150
+ React__default["default"].createElement(FormatFileDeleteButton, { size: display === "expanded" ? "large" : displaySize, onDelete: onDelete })))));
151
+ }
152
+ function isHoverable({ display, isComplete, onClick, onDelete, }) {
153
+ if (display === "compact") {
154
+ return Boolean(isComplete && (onClick || onDelete));
155
+ }
156
+ else if (display === "expanded") {
157
+ return Boolean(isComplete && onClick);
158
+ }
159
+ return false;
160
+ }
161
+
162
+ exports.FormatFile = FormatFile;
@@ -0,0 +1,72 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var React = require('react');
6
+
7
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
+
9
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
10
+
11
+ function FormatRelativeDateTime({ date: inputDate, }) {
12
+ let dateObject;
13
+ if (inputDate instanceof Date) {
14
+ dateObject = inputDate;
15
+ }
16
+ else if (typeof inputDate === "string") {
17
+ dateObject = new Date(inputDate);
18
+ }
19
+ else {
20
+ dateObject = new Date(inputDate.toJSON());
21
+ }
22
+ const now = Date.now() / 1000; //seconds
23
+ const date = dateObject;
24
+ const delta = now - date.getTime() / 1000; //seconds;
25
+ switch (relativeTimeRange(delta)) {
26
+ case "less than an hour":
27
+ return React__default["default"].createElement(React__default["default"].Fragment, null, showMinutes(Math.round(delta / 60)));
28
+ case "less then a day":
29
+ return (React__default["default"].createElement(React__default["default"].Fragment, null, date.toLocaleTimeString(undefined, {
30
+ hour: "numeric",
31
+ minute: "numeric",
32
+ })));
33
+ case "less than a week":
34
+ return React__default["default"].createElement(React__default["default"].Fragment, null, strFormatDate(date, { weekday: "short" }));
35
+ case "less than a year":
36
+ return React__default["default"].createElement(React__default["default"].Fragment, null, strFormatDate(date, { month: "short", day: "numeric" }));
37
+ default:
38
+ return (React__default["default"].createElement(React__default["default"].Fragment, null, strFormatDate(date, {
39
+ month: "short",
40
+ day: "numeric",
41
+ year: "numeric",
42
+ })));
43
+ }
44
+ }
45
+ function relativeTimeRange(delta) {
46
+ delta = delta / 60;
47
+ if (delta < 60)
48
+ return "less than an hour";
49
+ delta = delta / 60;
50
+ if (delta < 24)
51
+ return "less then a day";
52
+ delta = delta / 24;
53
+ if (delta < 7)
54
+ return "less than a week";
55
+ delta = delta / 365;
56
+ if (delta < 1)
57
+ return "less than a year";
58
+ return "a year or more";
59
+ }
60
+ function strFormatDate(date, options) {
61
+ return date.toLocaleDateString(undefined, options);
62
+ }
63
+ function showMinutes(minutes) {
64
+ if (minutes <= 1) {
65
+ return "1 minute ago";
66
+ }
67
+ else {
68
+ return minutes + " minutes ago";
69
+ }
70
+ }
71
+
72
+ exports.FormatRelativeDateTime = FormatRelativeDateTime;
@@ -0,0 +1,36 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var React = require('react');
6
+
7
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
+
9
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
10
+
11
+ function FormatTime({ time: inputTime, use24HourClock, }) {
12
+ let dateObject;
13
+ if (inputTime instanceof Date) {
14
+ dateObject = inputTime;
15
+ }
16
+ else if (typeof inputTime === "string") {
17
+ dateObject = new Date(inputTime);
18
+ }
19
+ else {
20
+ const currentDate = new Date();
21
+ const currentYear = currentDate.getFullYear();
22
+ const currentMonth = currentDate.getMonth();
23
+ const currentDay = currentDate.getDay();
24
+ dateObject = new Date(currentYear, currentMonth, currentDay, inputTime.hour, inputTime.minute, inputTime.second, inputTime.millisecond);
25
+ }
26
+ return React__default["default"].createElement(React__default["default"].Fragment, null, formatCivilTime(dateObject, use24HourClock));
27
+ }
28
+ function formatCivilTime(date, use24HourClock) {
29
+ return date.toLocaleTimeString(navigator.language, {
30
+ hourCycle: use24HourClock ? "h23" : "h12",
31
+ minute: "2-digit",
32
+ hour: "numeric",
33
+ });
34
+ }
35
+
36
+ exports.FormatTime = FormatTime;
@@ -0,0 +1,9 @@
1
+ declare const styles: {
2
+ readonly "gallery": string;
3
+ readonly "galleryLarge": string;
4
+ readonly "showMoreButton": string;
5
+ readonly "baseShowMoreButton": string;
6
+ readonly "largeShowMoreButton": string;
7
+ };
8
+ export = styles;
9
+
@@ -0,0 +1,99 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var React = require('react');
6
+ var classnames = require('classnames');
7
+ var styleInject_es = require('../style-inject.es-9d2f5f4e.js');
8
+ var LightBox = require('../LightBox-a89d8863.js');
9
+ var FormatFile = require('../FormatFile-f036902d.js');
10
+ var Button = require('../Button-b73a5e01.js');
11
+ require('framer-motion');
12
+ require('react-dom');
13
+ require('lodash/debounce');
14
+ require('@jobber/hooks/useRefocusOnActivator');
15
+ require('@jobber/hooks/useOnKeyDown');
16
+ require('@jobber/hooks/useFocusTrap');
17
+ require('../ButtonDismiss-350af163.js');
18
+ require('filesize');
19
+ require('../ConfirmationModal-52e16873.js');
20
+ require('../Modal-c336cac6.js');
21
+ require('../Heading-1e8e4bd3.js');
22
+ require('../Typography-c45bf216.js');
23
+ require('../getAtlantisConfig-0f3e8af2.js');
24
+ require('../Content-e3f7b6fc.js');
25
+ require('../Markdown-f7c55304.js');
26
+ require('react-markdown');
27
+ require('../Text-259af966.js');
28
+ require('../Emphasis-bda56d3b.js');
29
+ require('../Glimmer-84dee1ed.js');
30
+ require('../tslib.es6-754e2961.js');
31
+ require('../Icon-405a216c.js');
32
+ require('@jobber/design');
33
+ require('../ProgressBar-b68edc8f.js');
34
+ require('react-router-dom');
35
+
36
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
37
+
38
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
39
+ var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
40
+
41
+ var css_248z = ".G3D4T8IYmwA-,\n._6sZaxiji5rQ- {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n gap: calc(16px / 2);\n gap: var(--space-small);\n}\n\n._6sZaxiji5rQ- {\n gap: calc(16px * 1);\n gap: var(--space-base);\n}\n\n.wh-FkS64oJ0- {\n display: -ms-flexbox;\n display: flex;\n}\n\n.Idp-BJIbUUs- {\n width: 56px;\n height: 56px;\n}\n\n.kOG-STgt5Hs- {\n width: 168px;\n height: 168px;\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}\n";
42
+ var styles = {"gallery":"G3D4T8IYmwA-","galleryLarge":"_6sZaxiji5rQ-","showMoreButton":"wh-FkS64oJ0-","baseShowMoreButton":"Idp-BJIbUUs-","largeShowMoreButton":"kOG-STgt5Hs-"};
43
+ styleInject_es.styleInject(css_248z);
44
+
45
+ function Gallery({ files, size = "base", max, onDelete }) {
46
+ const { images, filesToImageIndex } = generateImagesArray(files);
47
+ const [lightboxOpen, setLightboxOpen] = React.useState(false);
48
+ const [lightboxIndex, setLightboxIndex] = React.useState(0);
49
+ const [displayPastMax, setDisplayPastMax] = React.useState(max ? false : true);
50
+ const visibleFiles = displayPastMax ? files : files.slice(0, max);
51
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
52
+ React__default["default"].createElement("div", { className: size === "large" ? styles.galleryLarge : styles.gallery },
53
+ visibleFiles.map((file, index) => {
54
+ return (React__default["default"].createElement(FormatFile.FormatFile, { key: file.key, file: Object.assign(Object.assign({}, file), { src: () => Promise.resolve(file.src) }), display: "compact", displaySize: size, onClick: () => {
55
+ handleThumbnailClicked(index);
56
+ }, onDelete: onDelete ? () => onDelete === null || onDelete === void 0 ? void 0 : onDelete(file) : undefined }));
57
+ }),
58
+ max && files.length > max && !displayPastMax && (React__default["default"].createElement("div", { className: classnames__default["default"](styles.showMoreButton, styles[`${size}ShowMoreButton`]) },
59
+ React__default["default"].createElement(Button.Button, { type: "tertiary", size: size, label: `+ ${files.length - max}`, fullWidth: true, onClick: () => {
60
+ setDisplayPastMax(true);
61
+ } })))),
62
+ React__default["default"].createElement(LightBox.LightBox, { open: lightboxOpen, images: images, imageIndex: lightboxIndex, onRequestClose: handleLightboxClose })));
63
+ function handleThumbnailClicked(index) {
64
+ if (files[index].type.startsWith("image/")) {
65
+ handleLightboxOpen(index);
66
+ }
67
+ else {
68
+ window.open(files[index].src, "_blank");
69
+ }
70
+ }
71
+ function handleLightboxOpen(index) {
72
+ const fileToImageIndex = filesToImageIndex[index];
73
+ if (fileToImageIndex !== undefined) {
74
+ setLightboxIndex(fileToImageIndex);
75
+ setLightboxOpen(true);
76
+ }
77
+ }
78
+ function handleLightboxClose() {
79
+ setLightboxOpen(false);
80
+ }
81
+ }
82
+ function generateImagesArray(files) {
83
+ const images = [];
84
+ const filesToImageIndex = [];
85
+ let imageIndex = 0;
86
+ for (let i = 0; i < files.length; i++) {
87
+ if (files[i].type.startsWith("image/")) {
88
+ images.push({ title: files[i].name, url: files[i].src });
89
+ filesToImageIndex.push(imageIndex);
90
+ imageIndex++;
91
+ }
92
+ else {
93
+ filesToImageIndex.push(undefined);
94
+ }
95
+ }
96
+ return { images, filesToImageIndex };
97
+ }
98
+
99
+ exports.Gallery = Gallery;
@@ -0,0 +1,15 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var Glimmer = require('../Glimmer-84dee1ed.js');
6
+ require('../tslib.es6-754e2961.js');
7
+ require('react');
8
+ require('classnames');
9
+ require('../style-inject.es-9d2f5f4e.js');
10
+ require('../Content-e3f7b6fc.js');
11
+
12
+
13
+
14
+ exports.GLIMMER_TEST_ID = Glimmer.GLIMMER_TEST_ID;
15
+ exports.Glimmer = Glimmer.Glimmer;
@@ -0,0 +1,9 @@
1
+ declare const styles: {
2
+ readonly "rectangle": string;
3
+ readonly "rectangleShort": string;
4
+ readonly "rectangleShorter": string;
5
+ readonly "square": string;
6
+ readonly "circle": string;
7
+ };
8
+ export = styles;
9
+
@@ -0,0 +1,10 @@
1
+ declare const styles: {
2
+ readonly "small": string;
3
+ readonly "base": string;
4
+ readonly "large": string;
5
+ readonly "larger": string;
6
+ readonly "largest": string;
7
+ readonly "auto": string;
8
+ };
9
+ export = styles;
10
+
@@ -0,0 +1,6 @@
1
+ declare const styles: {
2
+ readonly "base": string;
3
+ readonly "fast": string;
4
+ };
5
+ export = styles;
6
+
@@ -0,0 +1,77 @@
1
+ 'use strict';
2
+
3
+ var tslib_es6 = require('./tslib.es6-754e2961.js');
4
+ var React = require('react');
5
+ var classnames = require('classnames');
6
+ var styleInject_es = require('./style-inject.es-9d2f5f4e.js');
7
+ var Content = require('./Content-e3f7b6fc.js');
8
+
9
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
10
+
11
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
12
+ var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
13
+
14
+ var css_248z$3 = ".FXzzrJAf890- {\n --glimmer-background: rgba(var(--color-black--rgb) 5%);\n --glimmer-shine: rgba(var(--color-white--rgb), var(--glimmer-shine-opacity));\n --glimmer-shine-opacity: 80%;\n --duration-base: calc(var(--timing-slowest) * 4); /* 2s */\n --duration-fast: calc(var(--duration-base) / 2); /* 1s */\n\n width: 100%;\n height: 100%;\n border-radius: calc(16px / 8);\n border-radius: var(--radius-base);\n background-color: rgba(0 0 0 5%);\n background-color: rgba(0, 0, 0 5%);\n background-color: var(--glimmer-background);\n background-image: linear-gradient(\n 90deg,\n transparent 0px,\n rgba(255, 255, 255, 0.8) calc(16px * 2),\n transparent calc(16px * 4)\n );\n background-image: linear-gradient(\n 90deg,\n transparent 0px,\n rgba(255, 255, 255, 80%) calc(16px * 2),\n transparent calc(16px * 4)\n );\n background-image: linear-gradient(\n 90deg,\n transparent 0px,\n var(--glimmer-shine) var(--space-larger),\n transparent var(--space-extravagant)\n );\n background-repeat: no-repeat;\n background-size: calc(16px * 4) 100%;\n background-size: var(--space-extravagant) 100%;\n -webkit-animation: FXzzrJAf890- 2s infinite linear;\n animation: FXzzrJAf890- 2s infinite linear;\n}@supports (color: rgb(0 0 0 / 0.5)) and (color: hsl(0 0% 0% / 0.5)) {.FXzzrJAf890- {\n --glimmer-background: rgba(var(--color-black--rgb), 5%);\n}\n}\n\n.s9bG0yRJR3A- {\n --glimmer-background: rgba(var(--color-white--rgb) 10%);\n --glimmer-shine-opacity: 25%;\n}\n\n@supports (color: rgb(0 0 0 / 0.5)) and (color: hsl(0 0% 0% / 0.5)) {\n\n.s9bG0yRJR3A- {\n --glimmer-background: rgba(var(--color-white--rgb), 10%);\n}\n}\n\n@-webkit-keyframes FXzzrJAf890- {\n 0%,\n 20% {\n background-position-x: calc((16px * 4) * -1);\n background-position-x: calc(calc(16px * 4) * -1);\n background-position-x: calc(var(--space-extravagant) * -1);\n }\n\n 100% {\n background-position-x: calc(100% + (16px * 4));\n background-position-x: calc(100% + calc(16px * 4));\n background-position-x: calc(100% + var(--space-extravagant));\n }\n}\n\n@keyframes FXzzrJAf890- {\n 0%,\n 20% {\n background-position-x: calc((16px * 4) * -1);\n background-position-x: calc(calc(16px * 4) * -1);\n background-position-x: calc(var(--space-extravagant) * -1);\n }\n\n 100% {\n background-position-x: calc(100% + (16px * 4));\n background-position-x: calc(100% + calc(16px * 4));\n background-position-x: calc(100% + var(--space-extravagant));\n }\n}\n\n.M0X0dxjIyv4- {\n width: 30%;\n max-width: 180px;\n min-width: 120px;\n}\n\n.v2Q1amzd7Ac- {\n display: inline-block;\n width: 100px;\n height: 36px;\n}\n\n._8va--lBgr38- {\n display: block;\n width: 100%;\n min-width: 100px;\n}\n";
15
+ var styles = {"glimmer":"FXzzrJAf890-","reverseTheme":"s9bG0yRJR3A-","header":"M0X0dxjIyv4-","button":"v2Q1amzd7Ac-","buttonFill":"_8va--lBgr38-"};
16
+ styleInject_es.styleInject(css_248z$3);
17
+
18
+ var css_248z$2 = ".siUUG4rZNSk- {\n height: calc(16px / 2);\n height: var(--space-small);\n}\n\n.nFuBXyrhG2Q- {\n height: calc(16px * 1);\n height: var(--space-base);\n}\n\n.oiVEoAqI-fU- {\n height: calc(16px * 1.5);\n height: var(--space-large);\n}\n\n.Tkmo6mSMI9Y- {\n height: calc(16px * 2);\n height: var(--space-larger);\n}\n\n.uVeaD3IhD6o- {\n height: calc(16px * 3);\n height: var(--space-largest);\n}\n\n._6Wak9NLJ3VQ- {\n height: 100%;\n min-width: calc(16px * 1);\n min-width: var(--space-base);\n min-height: calc(16px * 1);\n min-height: var(--space-base);\n}\n";
19
+ var sizes = {"small":"siUUG4rZNSk-","base":"nFuBXyrhG2Q-","large":"oiVEoAqI-fU-","larger":"Tkmo6mSMI9Y-","largest":"uVeaD3IhD6o-","auto":"_6Wak9NLJ3VQ-"};
20
+ styleInject_es.styleInject(css_248z$2);
21
+
22
+ var css_248z$1 = ".enoWbteryXg- {\n width: 100%;\n}\n\n._9qkwCdedX1M- {\n width: 85%;\n}\n\n.XtyJxvcJDFs- {\n width: 70%;\n}\n\n._8unQ0TS1He4-,\n.ameRMYEKfss- {\n width: auto;\n aspect-ratio: 1;\n}\n\n.ameRMYEKfss- {\n border-radius: 100%;\n border-radius: var(--radius-circle);\n}\n";
23
+ var shapes = {"rectangle":"enoWbteryXg-","rectangleShort":"_9qkwCdedX1M-","rectangleShorter":"XtyJxvcJDFs-","square":"_8unQ0TS1He4-","circle":"ameRMYEKfss-"};
24
+ styleInject_es.styleInject(css_248z$1);
25
+
26
+ var css_248z = ".hO0mZ6TeVko- {\n -webkit-animation-duration: var(--duration-base);\n animation-duration: var(--duration-base);\n}\n\n.WXi5-zF8Ll4- {\n -webkit-animation-duration: calc(var(--duration-fast));\n animation-duration: calc(var(--duration-fast));\n}\n";
27
+ var timings = {"base":"hO0mZ6TeVko-","fast":"WXi5-zF8Ll4-"};
28
+ styleInject_es.styleInject(css_248z);
29
+
30
+ const GLIMMER_TEST_ID = "ATL-Glimmer";
31
+ const GLIMMER_HEADER_TEST_ID = "ATL-GlimmerHeader";
32
+ const GLIMMER_TEXT_TEST_ID = "ATL-GlimmerText";
33
+ const GLIMMER_BUTTON_TEST_ID = "ATL-GlimmerButton";
34
+ /**
35
+ * **Experimental component! Use at your own risk.**
36
+ *
37
+ * Foundational component used to build loading states such as Skeleton UI
38
+ *
39
+ * @experimental
40
+ */
41
+ function Glimmer({ size = "base", shape = "rectangle", timing = "base", reverseTheme = false, width, }) {
42
+ const className = classnames__default["default"](styles.glimmer, sizes[size], shapes[shape], timings[timing], { [styles.reverseTheme]: reverseTheme });
43
+ return (React__default["default"].createElement("div", { "aria-busy": "true", role: "status", className: className, "data-testid": GLIMMER_TEST_ID, style: { width } }));
44
+ }
45
+ Glimmer.Header = function GlimmerHeader(_a) {
46
+ var { level = 3 } = _a, props = tslib_es6.__rest(_a, ["level"]);
47
+ const headerSize = {
48
+ 1: "largest",
49
+ 2: "larger",
50
+ 3: "large",
51
+ 4: "base",
52
+ 5: "small",
53
+ };
54
+ return (React__default["default"].createElement("div", { className: styles.header, "data-testid": GLIMMER_HEADER_TEST_ID },
55
+ React__default["default"].createElement(Glimmer, Object.assign({ size: headerSize[level] }, props))));
56
+ };
57
+ Glimmer.Text = function GlimmerText(_a) {
58
+ var { width, lines = 3 } = _a, props = tslib_es6.__rest(_a, ["width", "lines"]);
59
+ const children = [
60
+ React__default["default"].createElement(Glimmer, Object.assign({ key: "1", size: "small", shape: "rectangleShort" }, props)),
61
+ React__default["default"].createElement(Glimmer, Object.assign({ key: "2", size: "small" }, props)),
62
+ React__default["default"].createElement(Glimmer, Object.assign({ key: "3", size: "small", shape: "rectangleShorter" }, props)),
63
+ ].slice(0, lines);
64
+ return (React__default["default"].createElement("div", { style: { width }, "data-testid": GLIMMER_TEXT_TEST_ID },
65
+ React__default["default"].createElement(Content.Content, { spacing: "small" }, children)));
66
+ };
67
+ Glimmer.Button = function GlimmerButton(_a) {
68
+ var { fullWidth = false } = _a, props = tslib_es6.__rest(_a, ["fullWidth"]);
69
+ const buttonClassNames = classnames__default["default"](styles.button, {
70
+ [styles.buttonFill]: fullWidth,
71
+ });
72
+ return (React__default["default"].createElement("div", { className: buttonClassNames, "data-testid": GLIMMER_BUTTON_TEST_ID },
73
+ React__default["default"].createElement(Glimmer, Object.assign({}, props, { size: "auto" }))));
74
+ };
75
+
76
+ exports.GLIMMER_TEST_ID = GLIMMER_TEST_ID;
77
+ exports.Glimmer = Glimmer;
@@ -0,0 +1,8 @@
1
+ declare const styles: {
2
+ readonly "center": string;
3
+ readonly "start": string;
4
+ readonly "end": string;
5
+ readonly "stretch": string;
6
+ };
7
+ export = styles;
8
+