@telefonica/mistica 12.1.0 → 12.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/README.md +2 -2
  2. package/dist/button-group.d.ts +2 -1
  3. package/dist/button-group.js +35 -4
  4. package/dist/button-group.js.flow +2 -1
  5. package/dist/button-layout.d.ts +2 -1
  6. package/dist/button-layout.js +22 -4
  7. package/dist/button-layout.js.flow +2 -1
  8. package/dist/button.js +110 -32
  9. package/dist/carousel.js +36 -29
  10. package/dist/container-type-context.d.ts +5 -0
  11. package/dist/container-type-context.js +49 -0
  12. package/dist/container-type-context.js.flow +7 -0
  13. package/dist/dialog.d.ts +21 -4
  14. package/dist/dialog.js +51 -26
  15. package/dist/dialog.js.flow +17 -4
  16. package/dist/generated/mistica-icons/icon-gift-light.js +1 -1
  17. package/dist/generated/mistica-icons/icon-hand-snap-filled.js +1 -1
  18. package/dist/generated/mistica-icons/icon-intranet-light.js +1 -1
  19. package/dist/generated/mistica-icons/icon-support-agent-premium-regular.js +1 -1
  20. package/dist/generated/mistica-icons/icon-support-agent-regular.js +1 -1
  21. package/dist/generated/mistica-icons/icon-tag-discount-euro-regular.js +1 -1
  22. package/dist/generated/mistica-icons/icon-tips-and-tricks-regular.js +2 -2
  23. package/dist/generated/mistica-icons/icon-world-device-filled.d.ts +4 -0
  24. package/dist/generated/mistica-icons/icon-world-device-filled.js +109 -0
  25. package/dist/generated/mistica-icons/icon-world-device-filled.js.flow +6 -0
  26. package/dist/generated/mistica-icons/icon-world-device-light.d.ts +4 -0
  27. package/dist/generated/mistica-icons/icon-world-device-light.js +115 -0
  28. package/dist/generated/mistica-icons/icon-world-device-light.js.flow +6 -0
  29. package/dist/generated/mistica-icons/icon-world-device-regular.d.ts +4 -0
  30. package/dist/generated/mistica-icons/icon-world-device-regular.js +109 -0
  31. package/dist/generated/mistica-icons/icon-world-device-regular.js.flow +6 -0
  32. package/dist/grid-layout.d.ts +16 -0
  33. package/dist/grid-layout.js +173 -68
  34. package/dist/grid-layout.js.flow +33 -1
  35. package/dist/header.d.ts +3 -1
  36. package/dist/header.js +4 -2
  37. package/dist/header.js.flow +7 -1
  38. package/dist/hooks.d.ts +1 -1
  39. package/dist/hooks.js.flow +1 -1
  40. package/dist/index.d.ts +5 -1
  41. package/dist/index.js +58 -0
  42. package/dist/index.js.flow +11 -1
  43. package/dist/navigation-bar.js +121 -96
  44. package/dist/navigation-breadcrumbs.d.ts +7 -0
  45. package/dist/navigation-breadcrumbs.js +108 -29
  46. package/dist/navigation-breadcrumbs.js.flow +3 -0
  47. package/dist/overscroll-color-context.d.ts +1 -1
  48. package/dist/overscroll-color-context.js +12 -14
  49. package/dist/overscroll-color-context.js.flow +1 -1
  50. package/dist/package-version.js +1 -1
  51. package/dist/responsive-layout.js +13 -8
  52. package/dist/screen-size-context-provider.js +17 -5
  53. package/dist/screen-size-context.d.ts +1 -0
  54. package/dist/screen-size-context.js +2 -1
  55. package/dist/screen-size-context.js.flow +1 -0
  56. package/dist/skeleton-base.d.ts +9 -0
  57. package/dist/skeleton-base.js +75 -0
  58. package/dist/skeleton-base.js.flow +11 -0
  59. package/dist/skeletons.d.ts +21 -0
  60. package/dist/skeletons.js +232 -0
  61. package/dist/skeletons.js.flow +29 -0
  62. package/dist/skins/blau.js +1 -1
  63. package/dist/skins/movistar.js +1 -1
  64. package/dist/skins/o2-classic.js +1 -1
  65. package/dist/skins/o2.js +1 -1
  66. package/dist/skins/telefonica.js +2 -2
  67. package/dist/skins/utils.d.ts +2 -0
  68. package/dist/skins/utils.js +34 -1
  69. package/dist/skins/utils.js.flow +2 -0
  70. package/dist/skins/vivo.js +1 -1
  71. package/dist/snackbar.js +5 -4
  72. package/dist/tabs.d.ts +2 -1
  73. package/dist/tabs.js +22 -4
  74. package/dist/tabs.js.flow +2 -1
  75. package/dist/utils/types.d.ts +1 -0
  76. package/dist/utils/types.js.flow +6 -0
  77. package/dist-es/button-group.js +34 -4
  78. package/dist-es/button-layout.js +21 -4
  79. package/dist-es/button.js +110 -32
  80. package/dist-es/carousel.js +36 -29
  81. package/dist-es/container-type-context.js +21 -0
  82. package/dist-es/dialog.js +51 -25
  83. package/dist-es/generated/mistica-icons/icon-gift-light.js +1 -1
  84. package/dist-es/generated/mistica-icons/icon-hand-snap-filled.js +1 -1
  85. package/dist-es/generated/mistica-icons/icon-intranet-light.js +1 -1
  86. package/dist-es/generated/mistica-icons/icon-support-agent-premium-regular.js +1 -1
  87. package/dist-es/generated/mistica-icons/icon-support-agent-regular.js +1 -1
  88. package/dist-es/generated/mistica-icons/icon-tag-discount-euro-regular.js +1 -1
  89. package/dist-es/generated/mistica-icons/icon-tips-and-tricks-regular.js +2 -2
  90. package/dist-es/generated/mistica-icons/icon-world-device-filled.js +85 -0
  91. package/dist-es/generated/mistica-icons/icon-world-device-light.js +91 -0
  92. package/dist-es/generated/mistica-icons/icon-world-device-regular.js +85 -0
  93. package/dist-es/grid-layout.js +167 -68
  94. package/dist-es/header.js +4 -2
  95. package/dist-es/index.js +5 -1
  96. package/dist-es/navigation-bar.js +121 -96
  97. package/dist-es/navigation-breadcrumbs.js +106 -30
  98. package/dist-es/overscroll-color-context.js +12 -14
  99. package/dist-es/package-version.js +1 -1
  100. package/dist-es/responsive-layout.js +13 -8
  101. package/dist-es/screen-size-context-provider.js +17 -5
  102. package/dist-es/screen-size-context.js +2 -1
  103. package/dist-es/skeleton-base.js +43 -0
  104. package/dist-es/skeletons.js +196 -0
  105. package/dist-es/skins/blau.js +1 -1
  106. package/dist-es/skins/movistar.js +1 -1
  107. package/dist-es/skins/o2-classic.js +1 -1
  108. package/dist-es/skins/o2.js +1 -1
  109. package/dist-es/skins/telefonica.js +2 -2
  110. package/dist-es/skins/utils.js +12 -0
  111. package/dist-es/skins/vivo.js +1 -1
  112. package/dist-es/snackbar.js +6 -5
  113. package/dist-es/tabs.js +21 -4
  114. package/package.json +2 -2
@@ -55,6 +55,21 @@ function _nonIterableRest() {
55
55
  function _nonIterableSpread() {
56
56
  throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
57
57
  }
58
+ function _objectSpread(target) {
59
+ for(var i = 1; i < arguments.length; i++){
60
+ var source = arguments[i] != null ? arguments[i] : {};
61
+ var ownKeys = Object.keys(source);
62
+ if (typeof Object.getOwnPropertySymbols === "function") {
63
+ ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
64
+ return Object.getOwnPropertyDescriptor(source, sym).enumerable;
65
+ }));
66
+ }
67
+ ownKeys.forEach(function(key) {
68
+ _defineProperty(target, key, source[key]);
69
+ });
70
+ }
71
+ return target;
72
+ }
58
73
  function _slicedToArray(arr, i) {
59
74
  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
60
75
  }
@@ -76,6 +91,7 @@ import { useScreenSize, useIsomorphicLayoutEffect } from "./hooks";
76
91
  import { BUTTON_MIN_WIDTH, ButtonPrimary, ButtonSecondary, ButtonDanger } from "./button";
77
92
  import classNames from "classnames";
78
93
  import debounce from "lodash/debounce";
94
+ import { getPrefixedDataAttributes } from "./utils/dom";
79
95
  var buttonLayoutSpacing = 16;
80
96
  var useStyles = createUseStyles(function(theme) {
81
97
  var _obj;
@@ -181,7 +197,7 @@ var buttonsRange = [
181
197
  ButtonPrimary
182
198
  ];
183
199
  var ButtonLayout = function(param1) {
184
- var children = param1.children, _align = param1.align, align = _align === void 0 ? "full-width" : _align, link = param1.link, _withMargins = param1.withMargins, withMargins = _withMargins === void 0 ? false : _withMargins;
200
+ var children = param1.children, _align = param1.align, align = _align === void 0 ? "full-width" : _align, link = param1.link, _withMargins = param1.withMargins, withMargins = _withMargins === void 0 ? false : _withMargins, dataAttributes = param1.dataAttributes;
185
201
  var isTabletOrSmaller = useScreenSize().isTabletOrSmaller;
186
202
  var childrenCount = React.Children.count(children);
187
203
  var ref = _slicedToArray(React.useState({
@@ -273,9 +289,10 @@ var ButtonLayout = function(param1) {
273
289
  return range1 - range2;
274
290
  });
275
291
  var needsLinkAlignment = !isTabletOrSmaller && align === "left";
276
- var content = /*#__PURE__*/ _jsxs("div", {
292
+ var content = /*#__PURE__*/ _jsxs("div", _objectSpread({
277
293
  ref: wrapperElRef,
278
- className: classes.container,
294
+ className: classes.container
295
+ }, getPrefixedDataAttributes(dataAttributes), {
279
296
  children: [
280
297
  link ? /*#__PURE__*/ _jsx("div", {
281
298
  className: classNames(classes.link, _defineProperty({}, classes.linkAlignment, needsLinkAlignment)),
@@ -283,7 +300,7 @@ var ButtonLayout = function(param1) {
283
300
  }) : null,
284
301
  sortedButtons
285
302
  ]
286
- });
303
+ }));
287
304
  return withMargins ? /*#__PURE__*/ _jsx("div", {
288
305
  className: classes.margins,
289
306
  children: content
package/dist-es/button.js CHANGED
@@ -86,14 +86,19 @@ import Box from "./box";
86
86
  import { getTextFromChildren } from "./utils/common";
87
87
  import { eventActions, eventCategories, eventNames, useTrackingConfig } from "./utils/analytics";
88
88
  import { useTheme } from "./hooks";
89
+ import { flattenChildren } from "./skins/utils";
89
90
  export var BUTTON_MIN_WIDTH = 136;
90
91
  var transitionTiming = "0.3s cubic-bezier(0.77, 0, 0.175, 1)";
91
92
  var BORDER_PX = 1.5;
92
- var SPINNER_MARGIN_PX = 8;
93
+ var ICON_MARGIN_PX = 8;
93
94
  var X_PADDING_PX = 16 - BORDER_PX;
94
95
  var Y_PADDING_PX = 12 - BORDER_PX;
95
96
  var X_SMALL_PADDING_PX = 12 - BORDER_PX;
96
97
  var Y_SMALL_PADDING_PX = 6 - BORDER_PX;
98
+ var ICON_SIZE = 24;
99
+ var SMALL_ICON_SIZE = 20;
100
+ var SPINNER_SIZE = 20;
101
+ var SMALL_SPINNER_SIZE = 16;
97
102
  var commonClasses = function() {
98
103
  return {
99
104
  button: {
@@ -101,7 +106,6 @@ var commonClasses = function() {
101
106
  position: "relative",
102
107
  width: "auto",
103
108
  minWidth: BUTTON_MIN_WIDTH,
104
- textAlign: "center",
105
109
  border: "".concat(BORDER_PX, "px solid transparent"),
106
110
  borderRadius: 4,
107
111
  overflow: "hidden",
@@ -136,6 +140,9 @@ var commonClasses = function() {
136
140
  }
137
141
  },
138
142
  textContent: {
143
+ display: "flex",
144
+ alignItems: "center",
145
+ justifyContent: "center",
139
146
  padding: "".concat(Y_PADDING_PX, "px ").concat(X_PADDING_PX, "px"),
140
147
  opacity: 1,
141
148
  transition: "opacity ".concat(transitionTiming, ", transform ").concat(transitionTiming),
@@ -143,9 +150,7 @@ var commonClasses = function() {
143
150
  padding: "".concat(Y_SMALL_PADDING_PX, "px ").concat(X_SMALL_PADDING_PX, "px")
144
151
  },
145
152
  "& svg": {
146
- marginRight: SPINNER_MARGIN_PX,
147
- verticalAlign: "bottom",
148
- height: "100%"
153
+ display: "block"
149
154
  }
150
155
  },
151
156
  isLoading: {
@@ -266,6 +271,48 @@ var useDangerButtonStyles = createUseStyles(function(theme) {
266
271
  inverse: dangerButtonStyles(theme)
267
272
  });
268
273
  });
274
+ var renderButtonContent = function(param) {
275
+ var content = param.content, defaultIconSize = param.defaultIconSize, renderText = param.renderText;
276
+ var childrenArr = flattenChildren(content);
277
+ var length = childrenArr.length;
278
+ var resultChildrenArr = [];
279
+ var accText = [];
280
+ var flushAccText = function() {
281
+ resultChildrenArr.push(/*#__PURE__*/ _jsx(React.Fragment, {
282
+ children: renderText(accText)
283
+ }, resultChildrenArr.length));
284
+ accText = [];
285
+ };
286
+ childrenArr.forEach(function(element, idx) {
287
+ var isFirstChild = idx === 0;
288
+ var isLastChild = idx === length - 1;
289
+ var isIconElement = /*#__PURE__*/ React.isValidElement(element);
290
+ if (isIconElement) {
291
+ if (accText.length) {
292
+ flushAccText();
293
+ }
294
+ var _size;
295
+ var sizeInPx = (_size = element.props.size) !== null && _size !== void 0 ? _size : defaultIconSize;
296
+ resultChildrenArr.push(/*#__PURE__*/ _jsx("div", {
297
+ style: {
298
+ display: "flex",
299
+ alignItems: "center",
300
+ marginLeft: isFirstChild ? 0 : ICON_MARGIN_PX,
301
+ marginRight: isLastChild ? 0 : ICON_MARGIN_PX
302
+ },
303
+ children: /*#__PURE__*/ React.cloneElement(element, {
304
+ size: pxToRem(sizeInPx)
305
+ })
306
+ }, resultChildrenArr.length));
307
+ } else {
308
+ accText.push(element);
309
+ if (isLastChild) {
310
+ flushAccText();
311
+ }
312
+ }
313
+ });
314
+ return resultChildrenArr;
315
+ };
269
316
  var Button = function(props) {
270
317
  var eventFormat = useTrackingConfig().eventFormat;
271
318
  var ref = useForm(), formStatus = ref.formStatus, formId = ref.formId;
@@ -288,24 +335,6 @@ var Button = function(props) {
288
335
  shouldRenderSpinner,
289
336
  formStatus
290
337
  ]);
291
- var spinnerSizeRem = pxToRem(props.small ? 16 : 24);
292
- var renderText = function(text) {
293
- return props.small ? /*#__PURE__*/ _jsx(Text, {
294
- size: 14,
295
- lineHeight: 20,
296
- weight: "medium",
297
- truncate: 1,
298
- color: "inherit",
299
- as: "div",
300
- children: text
301
- }) : /*#__PURE__*/ _jsx(Text3, {
302
- medium: true,
303
- truncate: 1,
304
- color: "inherit",
305
- as: "div",
306
- children: text
307
- });
308
- };
309
338
  var createDefaultTrackingEvent = function() {
310
339
  if (eventFormat === "google-analytics-4") {
311
340
  return {
@@ -321,6 +350,25 @@ var Button = function(props) {
321
350
  };
322
351
  }
323
352
  };
353
+ var defaultIconSize = props.small ? SMALL_ICON_SIZE : ICON_SIZE;
354
+ var spinnerSizeRem = pxToRem(props.small ? SMALL_SPINNER_SIZE : SPINNER_SIZE);
355
+ var renderText = function(element) {
356
+ return props.small ? /*#__PURE__*/ _jsx(Text, {
357
+ size: 14,
358
+ lineHeight: 20,
359
+ weight: "medium",
360
+ truncate: 1,
361
+ color: "inherit",
362
+ as: "div",
363
+ children: element
364
+ }) : /*#__PURE__*/ _jsx(Text3, {
365
+ medium: true,
366
+ truncate: 1,
367
+ color: "inherit",
368
+ as: "div",
369
+ children: element
370
+ });
371
+ };
324
372
  var _trackingEvent;
325
373
  var _obj;
326
374
  var commonProps = {
@@ -338,16 +386,24 @@ var Button = function(props) {
338
386
  /*#__PURE__*/ _jsx("div", {
339
387
  "aria-hidden": showSpinner ? true : undefined,
340
388
  className: classes.textContent,
341
- children: renderText(props.children)
389
+ children: renderButtonContent({
390
+ content: props.children,
391
+ defaultIconSize: defaultIconSize,
392
+ renderText: renderText
393
+ })
342
394
  }),
343
395
  /*#__PURE__*/ _jsx("div", {
344
396
  className: classes.loadingFiller,
345
397
  "aria-hidden": true,
346
398
  style: {
347
399
  paddingLeft: spinnerSizeRem,
348
- paddingRight: SPINNER_MARGIN_PX + 2 * (props.small ? X_SMALL_PADDING_PX : X_PADDING_PX)
400
+ paddingRight: ICON_MARGIN_PX + 2 * (props.small ? X_SMALL_PADDING_PX : X_PADDING_PX)
349
401
  },
350
- children: renderText(loadingText)
402
+ children: renderButtonContent({
403
+ content: loadingText,
404
+ defaultIconSize: defaultIconSize,
405
+ renderText: renderText
406
+ })
351
407
  }),
352
408
  /*#__PURE__*/ _jsxs("div", {
353
409
  "aria-hidden": showSpinner ? undefined : true,
@@ -372,7 +428,11 @@ var Button = function(props) {
372
428
  }),
373
429
  loadingText ? /*#__PURE__*/ _jsx(Box, {
374
430
  paddingLeft: 8,
375
- children: renderText(loadingText)
431
+ children: renderButtonContent({
432
+ content: loadingText,
433
+ defaultIconSize: defaultIconSize,
434
+ renderText: renderText
435
+ })
376
436
  }) : null
377
437
  ]
378
438
  })
@@ -449,6 +509,14 @@ var useButtonLinkStyles = createUseStyles(function(theme) {
449
509
  }),
450
510
  "&[disabled]": disabledStyle
451
511
  },
512
+ textContent: {
513
+ display: "flex",
514
+ alignItems: "center",
515
+ justifyContent: "center",
516
+ "& svg": {
517
+ display: "block"
518
+ }
519
+ },
452
520
  inverse: {
453
521
  color: theme.colors.textLinkInverse,
454
522
  "&:enabled:active": {
@@ -485,17 +553,27 @@ export var ButtonLink = /*#__PURE__*/ React.forwardRef(function(props, ref) {
485
553
  };
486
554
  }
487
555
  };
556
+ var renderText = function(element) {
557
+ return /*#__PURE__*/ _jsx(Text2, {
558
+ medium: true,
559
+ truncate: 1,
560
+ color: "inherit",
561
+ children: element
562
+ });
563
+ };
488
564
  var _trackingEvent;
489
565
  var _obj;
490
566
  var commonProps = {
491
567
  className: classnames(classes.link, (_obj = {}, _defineProperty(_obj, classes.inverse, isInverse), _defineProperty(_obj, classes.aligned, props.aligned), _obj)),
492
568
  trackingEvent: (_trackingEvent = props.trackingEvent) !== null && _trackingEvent !== void 0 ? _trackingEvent : props.trackEvent ? createDefaultTrackingEvent() : undefined,
493
569
  dataAttributes: props.dataAttributes,
494
- children: /*#__PURE__*/ _jsx(Text2, {
495
- medium: true,
496
- truncate: 1,
497
- color: "inherit",
498
- children: props.children
570
+ children: /*#__PURE__*/ _jsx("div", {
571
+ className: classes.textContent,
572
+ children: renderButtonContent({
573
+ content: props.children,
574
+ defaultIconSize: SMALL_ICON_SIZE,
575
+ renderText: renderText
576
+ })
499
577
  }),
500
578
  disabled: props.disabled || formStatus === "sending"
501
579
  };
@@ -101,6 +101,7 @@ import { DisableBorderRadiusProvider } from "./image";
101
101
  import { getPrefixedDataAttributes, listenResize } from "./utils/dom";
102
102
  import { isAndroid } from "./utils/platform";
103
103
  import { useDocumentVisibility } from "./utils/document-visibility";
104
+ import { useContainerType } from "./container-type-context";
104
105
  var useShouldAutoplay = function(autoplay, ref) {
105
106
  var isDocumentVisible = useDocumentVisibility();
106
107
  var isInViewport = useIsInViewport(ref, false);
@@ -186,8 +187,19 @@ var arrowButtonStyle = function(theme) {
186
187
  display: "none"
187
188
  }));
188
189
  };
190
+ var arrowButtonSeparation = function(containerType, isLargeDesktop, sideMargin) {
191
+ switch(containerType){
192
+ case "mobile-column":
193
+ case "tablet-column":
194
+ return -sideMargin;
195
+ case "desktop-wide-column":
196
+ return isLargeDesktop ? -(24 + arrowButtonSize) : -arrowButtonSize / 2;
197
+ default:
198
+ return -arrowButtonSize / 2;
199
+ }
200
+ };
189
201
  var useStyles = createUseStyles(function(theme) {
190
- var _obj, _obj1, _obj2;
202
+ var _obj;
191
203
  return {
192
204
  carouselContainer: {
193
205
  // This value is a workaround to solve an issue when the page is rendered in a hidden webview
@@ -199,26 +211,18 @@ var useStyles = createUseStyles(function(theme) {
199
211
  position: "absolute",
200
212
  zIndex: 1,
201
213
  top: "calc(50% - ".concat(arrowButtonSize / 2, "px)"),
202
- "&.prev": (_obj = {
203
- left: -arrowButtonSize / 2
204
- }, _defineProperty(_obj, theme.mq.tabletOrSmaller, {
214
+ "&.prev": {
205
215
  left: function(param) {
206
- var sideMargin = param.sideMargin;
207
- return -sideMargin;
216
+ var containerType = param.containerType, isLargeDesktop = param.isLargeDesktop, sideMargin = param.sideMargin;
217
+ return arrowButtonSeparation(containerType, isLargeDesktop, sideMargin);
208
218
  }
209
- }), _defineProperty(_obj, theme.mq.largeDesktop, {
210
- left: -(24 + arrowButtonSize)
211
- }), _obj),
212
- "&.next": (_obj1 = {
213
- right: -arrowButtonSize / 2
214
- }, _defineProperty(_obj1, theme.mq.tabletOrSmaller, {
219
+ },
220
+ "&.next": {
215
221
  right: function(param) {
216
- var sideMargin = param.sideMargin;
217
- return -sideMargin;
222
+ var containerType = param.containerType, isLargeDesktop = param.isLargeDesktop, sideMargin = param.sideMargin;
223
+ return arrowButtonSeparation(containerType, isLargeDesktop, sideMargin);
218
224
  }
219
- }), _defineProperty(_obj1, theme.mq.largeDesktop, {
220
- right: -(24 + arrowButtonSize)
221
- }), _obj1)
225
+ }
222
226
  }),
223
227
  hasScroll: {},
224
228
  centered: {},
@@ -244,7 +248,7 @@ var useStyles = createUseStyles(function(theme) {
244
248
  width: "25%"
245
249
  }
246
250
  })),
247
- item: (_obj2 = {
251
+ item: (_obj = {
248
252
  scrollSnapStop: isAndroid(theme.platformOverrides) ? "always" : "normal",
249
253
  scrollSnapAlign: "start",
250
254
  flexShrink: 0,
@@ -264,7 +268,7 @@ var useStyles = createUseStyles(function(theme) {
264
268
  },
265
269
  scrollMargin: 0
266
270
  }
267
- }, _defineProperty(_obj2, theme.mq.tabletOrSmaller, {
271
+ }, _defineProperty(_obj, theme.mq.tabletOrSmaller, {
268
272
  width: function(param) {
269
273
  var itemsPerPageConfig = param.itemsPerPageConfig, gap = param.gap;
270
274
  return "calc(".concat(100 / itemsPerPageConfig.mobile, "% + ").concat(gap / itemsPerPageConfig.mobile, "px)");
@@ -319,14 +323,14 @@ var useStyles = createUseStyles(function(theme) {
319
323
  return 0;
320
324
  }
321
325
  }
322
- }), _defineProperty(_obj2, "&:not(:empty) ~ &:not(:empty)", {
326
+ }), _defineProperty(_obj, "&:not(:empty) ~ &:not(:empty)", {
323
327
  paddingLeft: function(param) {
324
328
  var gap = param.gap;
325
329
  return gap;
326
330
  }
327
- }), _defineProperty(_obj2, "&:empty", {
331
+ }), _defineProperty(_obj, "&:empty", {
328
332
  display: "none"
329
- }), _obj2),
333
+ }), _obj),
330
334
  bullets: {
331
335
  display: "flex",
332
336
  justifyContent: "center"
@@ -390,9 +394,10 @@ var DEFAULT_AUTOPLAY_TIME = 5000;
390
394
  var BaseCarousel = function(param) {
391
395
  var items = param.items, itemStyle = param.itemStyle, itemClassName = param.itemClassName, withBullets = param.withBullets, renderBullets = param.renderBullets, itemsPerPage = param.itemsPerPage, itemsToScroll = param.itemsToScroll, _mobilePageOffset = param.mobilePageOffset, mobilePageOffset = _mobilePageOffset === void 0 ? 16 : _mobilePageOffset, gapProp = param.gap, free = param.free, centered = param.centered, autoplay = param.autoplay, onPageChange = param.onPageChange, dataAttributes = param.dataAttributes;
392
396
  var texts = useTheme().texts;
397
+ var containerType = useContainerType();
393
398
  var itemsPerPageConfig = normalizeItemsPerPage(itemsPerPage);
394
399
  var mobilePageOffsetConfig = normalizeMobilePageOffset(mobilePageOffset);
395
- var isDesktopOrBigger = useScreenSize().isDesktopOrBigger;
400
+ var ref4 = useScreenSize(), isDesktopOrBigger = ref4.isDesktopOrBigger, isLargeDesktop = ref4.isLargeDesktop;
396
401
  var gap = gapProp !== null && gapProp !== void 0 ? gapProp : isDesktopOrBigger ? 16 : 8;
397
402
  var sideMargin = useResonsiveLayoutMargin();
398
403
  var classes = useStyles({
@@ -400,16 +405,18 @@ var BaseCarousel = function(param) {
400
405
  mobilePageOffsetConfig: mobilePageOffsetConfig,
401
406
  free: free,
402
407
  gap: gap,
403
- sideMargin: sideMargin
408
+ sideMargin: sideMargin,
409
+ containerType: containerType,
410
+ isLargeDesktop: isLargeDesktop
404
411
  });
405
412
  var carouselRef = React.useRef(null);
406
413
  var itemsPerPageFloor = isDesktopOrBigger ? Math.floor(itemsPerPageConfig.desktop) : Math.floor(itemsPerPageConfig.mobile);
407
414
  var pagesCount = Math.ceil(items.length / itemsPerPageFloor);
408
- var ref3 = _slicedToArray(React.useState({
415
+ var ref1 = _slicedToArray(React.useState({
409
416
  scrollLeft: 0,
410
417
  scrollRight: 0
411
- }), 2), ref1 = ref3[0], scrollLeft1 = ref1.scrollLeft, scrollRight1 = ref1.scrollRight, setScroll = ref3[1];
412
- var ref2 = _slicedToArray(React.useState([]), 2), itemScrollPositions = ref2[0], setItemScrollPositions = ref2[1];
418
+ }), 2), ref2 = ref1[0], scrollLeft1 = ref2.scrollLeft, scrollRight1 = ref2.scrollRight, setScroll = ref1[1];
419
+ var ref3 = _slicedToArray(React.useState([]), 2), itemScrollPositions = ref3[0], setItemScrollPositions = ref3[1];
413
420
  var pagesScrollPositions = calcPagesScrollPositions(itemScrollPositions, pagesCount);
414
421
  var scrollPositions = itemsToScroll ? calcPagesScrollPositions(itemScrollPositions, Math.ceil(items.length / itemsToScroll)) : pagesScrollPositions;
415
422
  var showNextArrow = scrollRight1 !== 0;
@@ -706,10 +713,10 @@ export var Slideshow = function(param) {
706
713
  sideMargin: sideMargin
707
714
  });
708
715
  var carouselRef = React.useRef(null);
709
- var ref5 = _slicedToArray(React.useState({
716
+ var ref6 = _slicedToArray(React.useState({
710
717
  scrollLeft: 0,
711
718
  scrollRight: 0
712
- }), 2), ref4 = ref5[0], scrollLeft2 = ref4.scrollLeft, scrollRight2 = ref4.scrollRight, setScroll = ref5[1];
719
+ }), 2), ref5 = ref6[0], scrollLeft2 = ref5.scrollLeft, scrollRight2 = ref5.scrollRight, setScroll = ref6[1];
713
720
  var goPrev = React.useCallback(function() {
714
721
  var carouselEl = carouselRef.current;
715
722
  if (carouselEl) {
@@ -0,0 +1,21 @@
1
+ import * as React from "react";
2
+ import { useScreenSize } from "./hooks";
3
+ var ContainerTypeContext = /*#__PURE__*/ React.createContext(null);
4
+ export var useContainerType = function() {
5
+ var containerType = React.useContext(ContainerTypeContext);
6
+ var ref = useScreenSize(), isTablet = ref.isTablet, isDesktopOrBigger = ref.isDesktopOrBigger, isLargeDesktop = ref.isLargeDesktop;
7
+ if (containerType) {
8
+ return containerType;
9
+ }
10
+ if (isLargeDesktop) {
11
+ return "desktop-wide-column";
12
+ }
13
+ if (isDesktopOrBigger) {
14
+ return "desktop-medium-column";
15
+ }
16
+ if (isTablet) {
17
+ return "tablet-column";
18
+ }
19
+ return "mobile-column";
20
+ };
21
+ export default ContainerTypeContext;
package/dist-es/dialog.js CHANGED
@@ -142,6 +142,7 @@ import { ESC } from "./utils/key-codes";
142
142
  import Box from "./box";
143
143
  import { isOldChrome, isRunningAcceptanceTest } from "./utils/platform";
144
144
  import { useSetModalState } from "./modal-context-provider";
145
+ import Stack from "./stack";
145
146
  var animationsSupported = function(platformOverrides) {
146
147
  return !isOldChrome(platformOverrides) && process.env.NODE_ENV !== "test" && !isRunningAcceptanceTest(platformOverrides);
147
148
  };
@@ -238,7 +239,7 @@ var useDialogStyles = createUseStyles(function(theme) {
238
239
  });
239
240
  var Dialog = function(props) {
240
241
  var ref = useTheme(), texts = ref.texts, colors = ref.colors;
241
- var className = props.className, title = props.title, message = props.message, icon = props.icon, _cancelText = props.cancelText, cancelText = _cancelText === void 0 ? texts.dialogCancelButton : _cancelText, _acceptText = props.acceptText, acceptText = _acceptText === void 0 ? texts.dialogAcceptButton : _acceptText, handleCancel = props.onCancel, handleAccept = props.onAccept, _showCancel = props.showCancel, showCancel = _showCancel === void 0 ? false : _showCancel, _destructive = props.destructive, destructive = _destructive === void 0 ? false : _destructive;
242
+ var className = props.className, title = props.title, message = props.message, icon = props.icon, extra = props.extra, _cancelText = props.cancelText, cancelText = _cancelText === void 0 ? texts.dialogCancelButton : _cancelText, _acceptText = props.acceptText, acceptText = _acceptText === void 0 ? texts.dialogAcceptButton : _acceptText, handleCancel = props.onCancel, handleAccept = props.onAccept, _showCancel = props.showCancel, showCancel = _showCancel === void 0 ? false : _showCancel, _destructive = props.destructive, destructive = _destructive === void 0 ? false : _destructive;
242
243
  var isTabletOrSmaller = useScreenSize().isTabletOrSmaller;
243
244
  var withSecondaryButton = showCancel && !!handleCancel;
244
245
  var classes = useDialogStyles({
@@ -267,10 +268,16 @@ var Dialog = function(props) {
267
268
  }),
268
269
  /*#__PURE__*/ _jsx("div", {
269
270
  className: classes.dialogContent,
270
- children: /*#__PURE__*/ _jsx(Text3, {
271
- color: colors.textSecondary,
272
- light: true,
273
- children: message
271
+ children: /*#__PURE__*/ _jsxs(Stack, {
272
+ space: 16,
273
+ children: [
274
+ /*#__PURE__*/ _jsx(Text3, {
275
+ color: colors.textSecondary,
276
+ light: true,
277
+ children: message
278
+ }),
279
+ extra
280
+ ]
274
281
  })
275
282
  }),
276
283
  /*#__PURE__*/ _jsx(Box, {
@@ -340,6 +347,19 @@ var useNativeDialog = function(param) {
340
347
  renderNative
341
348
  ]);
342
349
  };
350
+ var NativeModalDialog = function(props) {
351
+ useNativeDialog({
352
+ renderNative: true,
353
+ acceptText: props.acceptText || props.dialogAcceptButton,
354
+ cancelText: props.cancelText || props.dialogCancelButton,
355
+ showCancel: props.showCancel,
356
+ message: props.message,
357
+ title: props.title,
358
+ onAccept: props.onAccept,
359
+ onCancel: props.onCancel
360
+ });
361
+ return null;
362
+ };
343
363
  var ModalDialog = function(props) {
344
364
  var platformOverrides = useTheme().platformOverrides;
345
365
  var context = React.useContext(ThemeContext);
@@ -351,7 +371,7 @@ var ModalDialog = function(props) {
351
371
  if (!context) {
352
372
  throw Error("To use @telefonica/mistica components you must instantiate <ThemeContextProvider> as their parent.");
353
373
  }
354
- var renderNative = isWebViewBridgeAvailable();
374
+ var renderNative = !props.forceWeb && isWebViewBridgeAvailable();
355
375
  var onAccept = props.onAccept, isClosing = props.isClosing, onCancel = props.onCancel, onCloseTransitionEnd = props.onCloseTransitionEnd, dialogProps = _objectWithoutProperties(props, [
356
376
  "onAccept",
357
377
  "isClosing",
@@ -395,16 +415,6 @@ var ModalDialog = function(props) {
395
415
  }, [
396
416
  handleKeyDown
397
417
  ]);
398
- useNativeDialog({
399
- renderNative: renderNative,
400
- acceptText: props.acceptText || context.texts.dialogAcceptButton,
401
- cancelText: props.cancelText || context.texts.dialogCancelButton,
402
- showCancel: props.showCancel,
403
- message: props.message,
404
- title: props.title,
405
- onAccept: props.onAccept,
406
- onCancel: props.onCancel
407
- });
408
418
  React.useEffect(function() {
409
419
  if (!animationsSupported(platformOverrides)) {
410
420
  addKeyDownListener();
@@ -436,7 +446,10 @@ var ModalDialog = function(props) {
436
446
  setModalState
437
447
  ]);
438
448
  var _modalClose;
439
- /* eslint-disable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/no-static-element-interactions */ return renderNative ? null : /*#__PURE__*/ _jsx(Portal, {
449
+ /* eslint-disable jsx-a11y/no-noninteractive-element-interactions, jsx-a11y/no-static-element-interactions */ return renderNative ? /*#__PURE__*/ _jsx(NativeModalDialog, _objectSpread({}, props, {
450
+ dialogAcceptButton: context.texts.dialogAcceptButton,
451
+ dialogCancelButton: context.texts.dialogCancelButton
452
+ })) : /*#__PURE__*/ _jsx(Portal, {
440
453
  children: /*#__PURE__*/ _jsx("div", {
441
454
  className: classes.wrapper,
442
455
  children: /*#__PURE__*/ _jsx(FocusTrap, {
@@ -574,13 +587,13 @@ var DialogRoot = /*#__PURE__*/ function(_Component) {
574
587
  };
575
588
  _proto.render = function render() {
576
589
  var _state = this.state, isClosing = _state.isClosing, dialogProps = _state.dialogProps;
577
- var dialog = null;
590
+ var dialog1 = null;
578
591
  if (dialogProps && this.state.instanceNumber === 1) {
579
592
  var onCancel = dialogProps.onCancel, onAccept = dialogProps.onAccept, rest = _objectWithoutProperties(dialogProps, [
580
593
  "onCancel",
581
594
  "onAccept"
582
595
  ]);
583
- dialog = /*#__PURE__*/ _jsx(ModalDialog, _objectSpread({
596
+ dialog1 = /*#__PURE__*/ _jsx(ModalDialog, _objectSpread({
584
597
  onCancel: this.createCancelHandler(onCancel),
585
598
  onAccept: this.createAcceptHandler(onAccept),
586
599
  isClosing: isClosing,
@@ -590,27 +603,40 @@ var DialogRoot = /*#__PURE__*/ function(_Component) {
590
603
  return /*#__PURE__*/ _jsxs(_Fragment, {
591
604
  children: [
592
605
  this.props.children,
593
- dialog
606
+ dialog1
594
607
  ]
595
608
  });
596
609
  };
597
610
  return DialogRoot;
598
611
  }(React.Component);
599
612
  export { DialogRoot as default };
600
- var showDialog = function() {
601
- var showCancel = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : false;
613
+ var showDialog = function(param) {
614
+ var showCancel = param.showCancel, forceWeb = param.forceWeb;
602
615
  return function(props) {
603
616
  if (!dialogInstance) {
604
617
  throw Error("Tried to show a dialog but the DialogRoot component was not mounted (mount <ThemeContextProvider>)");
605
618
  }
606
619
  dialogInstance.show(_objectSpread({
607
- showCancel: showCancel
620
+ showCancel: showCancel,
621
+ forceWeb: forceWeb
608
622
  }, props));
609
623
  };
610
624
  };
611
625
  /**
612
626
  * Shows alert dialog with supplied props
613
- */ export var alert = showDialog(false);
627
+ */ export var alert = showDialog({
628
+ showCancel: false,
629
+ forceWeb: false
630
+ });
614
631
  /**
615
632
  * Shows confirm dialog with supplied props
616
- */ export var confirm = showDialog(true);
633
+ */ export var confirm = showDialog({
634
+ showCancel: true,
635
+ forceWeb: false
636
+ });
637
+ /**
638
+ * Shows dialog with supplied props
639
+ */ export var dialog = showDialog({
640
+ showCancel: false,
641
+ forceWeb: true
642
+ });
@@ -78,7 +78,7 @@ var IconGiftLight = function(_param) {
78
78
  role: "presentation"
79
79
  }, rest, {
80
80
  children: /*#__PURE__*/ _jsx("path", {
81
- d: "M19.675 21.242H12.19v-8.677h7.107v4.53c0 .207.167.376.373.376a.376.376 0 00.374-.377V10.3a1.883 1.883 0 00-1.872-1.888h-1.006a3.589 3.589 0 001.379-2.83C18.545 3.609 16.95 2 14.992 2c-1.686 0-3.099 1.193-3.463 2.786a2.599 2.599 0 00-1.963-.898 2.632 2.632 0 00-2.62 2.641c0 .739.302 1.405.79 1.888H5.453c-1.03 0-1.872.845-1.872 1.888v11.318c0 .208.168.377.374.377h15.712a.376.376 0 00.373-.377.372.372 0 00-.364-.381zM12.19 5.588c0-1.56 1.26-2.83 2.806-2.83 1.547 0 2.807 1.27 2.807 2.83s-1.26 2.83-2.807 2.83H12.19v-2.83zm5.986 3.582c.618 0 1.12.507 1.12 1.13v1.507H12.19V9.17h5.986zm-6.733 12.072H4.337v-8.677h7.106v8.677zm-7.106-9.43v-1.507c0-.623.503-1.13 1.12-1.13h5.986v2.637H4.337zm7.106-3.395H9.571A1.883 1.883 0 017.698 6.53a1.88 1.88 0 011.873-1.888 1.88 1.88 0 011.872 1.888v1.888zm8.232 11.69a.751.751 0 00.747-.753.751.751 0 00-.747-.753.751.751 0 00-.747.753.75.75 0 00.747.753z",
81
+ d: "M19.675 21.242H12.19v-8.677h7.107v4.53c0 .207.167.376.373.376a.376.376 0 00.374-.377V10.3a1.883 1.883 0 00-1.873-1.888h-1.005a3.589 3.589 0 001.379-2.83C18.545 3.609 16.95 2 14.992 2c-1.686 0-3.099 1.193-3.463 2.786a2.599 2.599 0 00-1.963-.898 2.632 2.632 0 00-2.62 2.641c0 .739.302 1.405.79 1.888H5.453c-1.03 0-1.872.845-1.872 1.888v11.318c0 .208.168.377.374.377h15.712a.376.376 0 00.373-.377.372.372 0 00-.364-.381zM12.19 5.588c0-1.56 1.26-2.83 2.806-2.83 1.547 0 2.807 1.27 2.807 2.83s-1.26 2.83-2.807 2.83H12.19v-2.83zm5.986 3.582c.618 0 1.12.507 1.12 1.13v1.507H12.19V9.17h5.986zm-6.733 12.072H4.337v-8.677h7.106v8.677zm-7.106-9.43v-1.507c0-.623.502-1.13 1.12-1.13h5.986v2.637H4.337zm7.106-3.395H9.571A1.883 1.883 0 017.698 6.53a1.88 1.88 0 011.873-1.888 1.88 1.88 0 011.872 1.888v1.888zm8.232 11.69a.751.751 0 00.747-.753.751.751 0 00-.747-.753.751.751 0 00-.747.753.75.75 0 00.747.753z",
82
82
  fill: fillColor
83
83
  })
84
84
  }));
@@ -77,7 +77,7 @@ var IconHandSnapFilled = function(_param) {
77
77
  role: "presentation"
78
78
  }, rest, {
79
79
  children: /*#__PURE__*/ _jsx("path", {
80
- d: "M9.222 2.716v3.587a.707.707 0 01-.695.717.707.707 0 01-.694-.717V2.716c0-.395.312-.716.694-.716.383 0 .695.321.695.716zm10.972 14.751c.325-.34.507-.79.507-1.267 0-.482-.182-.933-.516-1.277-.28-.29-.641-.46-1.029-.505a1.833 1.833 0 00-.2-2.283 1.698 1.698 0 00-1.029-.505 1.834 1.834 0 00-.2-2.282 1.703 1.703 0 00-.989-.5l2.467-2.545a1.836 1.836 0 000-2.535 1.704 1.704 0 00-2.458 0L9.13 11.63 6.403 8.82a1.672 1.672 0 00-2.422 0 1.77 1.77 0 00-.503 1.249c0 .473.178.914.503 1.249l1.79 1.846a5.5 5.5 0 011.434 2.723l.254 1.236a6.21 6.21 0 001.62 3.081 5.882 5.882 0 003.901 1.791h.008l.02.001c.039.001.111.004.213.004.69 0 2.694-.12 3.922-1.428a3.225 3.225 0 01.235-.217c.055-.049.111-.098.162-.15l2.654-2.738zM6.929 6.157a.734.734 0 010 1.014.685.685 0 01-.49.211.667.667 0 01-.49-.21L3.514 4.658a.734.734 0 010-1.015.681.681 0 01.984 0l2.43 2.512zm4.177 1.014L13.54 4.66a.734.734 0 000-1.015.681.681 0 00-.984 0L10.12 6.157a.734.734 0 000 1.015.667.667 0 00.49.211.703.703 0 00.495-.21z",
80
+ d: "M9.222 2.716v3.587a.707.707 0 01-.695.717.707.707 0 01-.694-.717V2.716c0-.395.311-.716.694-.716.383 0 .695.321.695.716zm10.972 14.751c.325-.34.507-.79.507-1.267 0-.482-.182-.933-.516-1.277a1.69 1.69 0 00-1.029-.505 1.834 1.834 0 00-.2-2.283 1.7 1.7 0 00-1.029-.505 1.834 1.834 0 00-.2-2.282 1.703 1.703 0 00-.989-.5l2.467-2.545a1.836 1.836 0 000-2.535 1.704 1.704 0 00-2.458 0L9.128 11.63 6.403 8.82a1.672 1.672 0 00-2.422 0 1.77 1.77 0 00-.503 1.249c0 .473.178.914.503 1.249l1.79 1.846a5.5 5.5 0 011.434 2.723l.254 1.236a6.21 6.21 0 001.62 3.081 5.882 5.882 0 003.901 1.791h.008l.02.001c.038.001.111.004.213.004.69 0 2.693-.12 3.922-1.428a8.106 8.106 0 01.235-.216c.055-.05.11-.1.162-.152l2.654-2.737zM6.928 6.157a.734.734 0 010 1.014.685.685 0 01-.49.211.667.667 0 01-.49-.21L3.514 4.658a.734.734 0 010-1.015.681.681 0 01.984 0l2.43 2.512zm4.176 1.014l2.436-2.512a.734.734 0 000-1.015.681.681 0 00-.984 0L10.12 6.156a.734.734 0 000 1.015.667.667 0 00.49.211.703.703 0 00.494-.21z",
81
81
  fill: fillColor
82
82
  })
83
83
  }));
@@ -79,7 +79,7 @@ var IconIntranetLight = function(_param) {
79
79
  }, rest, {
80
80
  children: [
81
81
  /*#__PURE__*/ _jsx("path", {
82
- d: "M2 12C2 6.5 6.5 2 12 2s10 4.5 10 10a9.871 9.871 0 01-1.572 5.356c-.104.18-.32.216-.5.108-.18-.104-.216-.32-.108-.5a9.588 9.588 0 001.428-4.608H17.32c-.036 3.824-1.216 7.036-2.928 8.608.892-.252 1.752-.608 2.536-1.108.176-.108.392-.072.5.108.108.176.072.392-.108.5A9.925 9.925 0 0112 22C6.5 22 2 17.5 2 12zm5.464-5.356c.5-1.536 1.248-2.784 2.144-3.608C5.752 4.072 2.856 7.5 2.716 11.644h3.928c0-.536.036-1.036.108-1.536a1.823 1.823 0 01-1.18-1.68c0-1 .784-1.784 1.784-1.784h.108zm.964 1.784c0 .608-.464 1.072-1.072 1.072a1.055 1.055 0 01-1.072-1.072c0-.608.464-1.072 1.072-1.072a1.057 1.057 0 011.072 1.072zM6.64 12.356H2.716c.14 4.144 3.036 7.572 6.888 8.608-1.712-1.572-2.892-4.788-2.964-8.608zm5.004 8.928v-8.928H7.36c.104 4.716 1.96 8.572 4.284 8.928zm-4.284-9.64h4.284l.004-8.924c-1.428.212-2.712 1.856-3.464 4.14.568.288.964.892.964 1.572 0 .96-.752 1.748-1.68 1.784a9.186 9.186 0 00-.108 1.428zm4.996 9.64c2.32-.356 4.18-4.216 4.284-8.928h-4.284v8.928zm0-18.568v8.928h4.284c-.104-4.716-1.96-8.572-4.284-8.928zm5 8.928h3.928c-.144-4.144-3.036-7.572-6.892-8.608 1.712 1.572 2.892 4.788 2.964 8.608z",
82
+ d: "M2 12C2 6.5 6.5 2 12 2s10 4.5 10 10a9.871 9.871 0 01-1.572 5.356c-.104.18-.32.216-.5.108-.18-.104-.216-.32-.108-.5a9.588 9.588 0 001.428-4.608H17.32c-.036 3.824-1.216 7.036-2.928 8.608.892-.252 1.752-.608 2.536-1.108.176-.108.392-.072.5.108.108.176.072.392-.108.5A9.925 9.925 0 0112 22C6.5 22 2 17.5 2 12zm5.464-5.356c.5-1.536 1.248-2.784 2.144-3.608C5.752 4.072 2.856 7.5 2.716 11.644h3.928c0-.536.036-1.036.108-1.536a1.823 1.823 0 01-1.18-1.68c0-1 .784-1.784 1.784-1.784h.108zm.964 1.784c0-.608-.468-1.068-1.072-1.072-.608 0-1.072.464-1.072 1.072 0 .608.468 1.072 1.072 1.072.608 0 1.072-.464 1.072-1.072zM6.64 12.356H2.716c.14 4.144 3.036 7.572 6.888 8.608-1.712-1.572-2.892-4.788-2.964-8.608zm5.004 8.928v-8.928H7.36c.104 4.716 1.96 8.572 4.284 8.928zm-4.284-9.64h4.284l.004-8.924c-1.428.212-2.712 1.856-3.464 4.14.568.288.964.892.964 1.572 0 .96-.752 1.748-1.68 1.784a9.186 9.186 0 00-.108 1.428zm4.996 9.64c2.32-.356 4.18-4.216 4.284-8.928h-4.284v8.928zm0-18.568v8.928h4.284c-.104-4.716-1.96-8.572-4.284-8.928zm5 8.928h3.928c-.144-4.144-3.036-7.572-6.892-8.608 1.712 1.572 2.892 4.788 2.964 8.608z",
83
83
  fill: fillColor
84
84
  }),
85
85
  /*#__PURE__*/ _jsx("path", {