@jobber/components 9.1.0 → 9.2.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 (43) hide show
  1. package/dist/Autocomplete-es.js +1 -1
  2. package/dist/ConfirmationModal/index.cjs +3 -0
  3. package/dist/ConfirmationModal/index.mjs +3 -0
  4. package/dist/ConfirmationModal-cjs.js +21 -10
  5. package/dist/ConfirmationModal-es.js +21 -10
  6. package/dist/DatePicker/DatePicker.messages.d.ts +14 -0
  7. package/dist/DatePicker/index.cjs +2 -1
  8. package/dist/DatePicker/index.mjs +2 -1
  9. package/dist/DatePicker-cjs.js +24 -5
  10. package/dist/DatePicker-es.js +24 -5
  11. package/dist/FormatFile/index.cjs +3 -0
  12. package/dist/FormatFile/index.mjs +3 -0
  13. package/dist/Gallery/index.cjs +3 -0
  14. package/dist/Gallery/index.mjs +3 -0
  15. package/dist/InputDate/InputDate.messages.d.ts +6 -0
  16. package/dist/InputDate/index.cjs +2 -2
  17. package/dist/InputDate/index.mjs +2 -2
  18. package/dist/InputDate-cjs.js +10 -1
  19. package/dist/InputDate-es.js +10 -1
  20. package/dist/LightBox/LightBox.messages.d.ts +22 -0
  21. package/dist/LightBox/index.cjs +2 -0
  22. package/dist/LightBox/index.mjs +2 -0
  23. package/dist/LightBox-cjs.js +37 -7
  24. package/dist/LightBox-es.js +37 -7
  25. package/dist/Menu-es.js +1 -1
  26. package/dist/Modal/Modal.messages.d.ts +6 -0
  27. package/dist/Modal/index.cjs +13 -2
  28. package/dist/Modal/index.mjs +14 -3
  29. package/dist/Popover/Popover.messages.d.ts +6 -0
  30. package/dist/Popover/index.cjs +2 -0
  31. package/dist/Popover/index.mjs +2 -0
  32. package/dist/Popover-cjs.js +10 -1
  33. package/dist/Popover-es.js +10 -1
  34. package/dist/common.messages-cjs.js +20 -0
  35. package/dist/common.messages-es.js +18 -0
  36. package/dist/docs/ConfirmationModal/ConfirmationModal.md +2 -2
  37. package/dist/docs/LightBox/LightBox.md +1 -1
  38. package/dist/floating-ui.react-es.js +1 -1
  39. package/dist/index.cjs +1 -0
  40. package/dist/index.mjs +1 -0
  41. package/dist/sharedHelpers/i18n/index.cjs +3 -15
  42. package/dist/sharedHelpers/i18n/index.mjs +2 -19
  43. package/package.json +2 -2
@@ -1,5 +1,5 @@
1
1
  import React__default, { useState, useRef, useEffect, useCallback, useMemo, forwardRef } from 'react';
2
- import { u as useFloating, k as useClick, j as useListNavigation, c as useDismiss, d as useInteractions, F as FloatingPortal, h as FloatingFocusManager, l as useTransitionStyles } from './floating-ui.react-es.js';
2
+ import { u as useFloating, k as useClick, g as useListNavigation, c as useDismiss, d as useInteractions, F as FloatingPortal, i as FloatingFocusManager, l as useTransitionStyles } from './floating-ui.react-es.js';
3
3
  import classnames from 'classnames';
4
4
  import { tokens } from '@jobber/design';
5
5
  import { useCallbackRef, useDebounce } from '@jobber/hooks';
@@ -8,6 +8,8 @@ require('react-dom');
8
8
  require('classnames');
9
9
  require('framer-motion');
10
10
  require('../nestedEscape-cjs.js');
11
+ require('../useAtlantisI18n-cjs.js');
12
+ require('../AtlantisContext-cjs.js');
11
13
  require('../Heading-cjs.js');
12
14
  require('../Typography-cjs.js');
13
15
  require('../Button-cjs.js');
@@ -37,6 +39,7 @@ require('../Content-cjs.js');
37
39
  require('../Markdown-cjs.js');
38
40
  require('../Text-cjs.js');
39
41
  require('../Emphasis-cjs.js');
42
+ require('../common.messages-cjs.js');
40
43
 
41
44
 
42
45
 
@@ -6,6 +6,8 @@ import 'react-dom';
6
6
  import 'classnames';
7
7
  import 'framer-motion';
8
8
  import '../nestedEscape-es.js';
9
+ import '../useAtlantisI18n-es.js';
10
+ import '../AtlantisContext-es.js';
9
11
  import '../Heading-es.js';
10
12
  import '../Typography-es.js';
11
13
  import '../Button-es.js';
@@ -35,3 +37,4 @@ import '../Content-es.js';
35
37
  import '../Markdown-es.js';
36
38
  import '../Text-es.js';
37
39
  import '../Emphasis-es.js';
40
+ import '../common.messages-es.js';
@@ -5,11 +5,13 @@ var jobberHooks = require('@jobber/hooks');
5
5
  var Modal_index = require('./Modal/index.cjs');
6
6
  var Content = require('./Content-cjs.js');
7
7
  var Markdown = require('./Markdown-cjs.js');
8
+ var common_messages = require('./common.messages-cjs.js');
9
+ var useAtlantisI18n = require('./useAtlantisI18n-cjs.js');
8
10
 
9
11
  function confirmationModalReducer(state, action) {
10
12
  switch (action.type) {
11
13
  case "display":
12
- return Object.assign(Object.assign({}, state), { title: action.title, message: action.message, open: true, confirmLabel: action.confirmLabel, cancelLabel: action.cancelLabel || "Cancel", onConfirm: action.onConfirm, onCancel: action.onCancel });
14
+ return Object.assign(Object.assign({}, state), { title: action.title, message: action.message, open: true, confirmLabel: action.confirmLabel, cancelLabel: action.cancelLabel, onConfirm: action.onConfirm, onCancel: action.onCancel });
13
15
  case "confirm":
14
16
  return Object.assign(Object.assign({}, state), { open: false });
15
17
  case "cancel":
@@ -20,13 +22,17 @@ function confirmationModalReducer(state, action) {
20
22
  throw new Error();
21
23
  }
22
24
  }
23
- const ConfirmationModal = React.forwardRef(function ConfirmationModalInternal({ title, message, open = false, confirmLabel = "Confirm", cancelLabel = "Cancel", onConfirm, onCancel, onRequestClose, variation = "work", size, children, }, ref) {
25
+ const ConfirmationModal = React.forwardRef(function ConfirmationModalInternal({ title, message, open = false, confirmLabel, cancelLabel, onConfirm, onCancel, onRequestClose, variation = "work", size, children, }, ref) {
26
+ var _a, _b;
27
+ const { t } = useAtlantisI18n.useAtlantisI18n(common_messages.commonMessages);
28
+ const resolvedConfirmLabel = confirmLabel !== null && confirmLabel !== void 0 ? confirmLabel : t("Confirm");
29
+ const resolvedCancelLabel = cancelLabel !== null && cancelLabel !== void 0 ? cancelLabel : t("Cancel");
24
30
  const [state, dispatch] = React.useReducer(confirmationModalReducer, {
25
31
  title,
26
32
  message,
27
33
  open: false,
28
- confirmLabel,
29
- cancelLabel,
34
+ confirmLabel: resolvedConfirmLabel,
35
+ cancelLabel: resolvedCancelLabel,
30
36
  onConfirm,
31
37
  onCancel,
32
38
  });
@@ -47,19 +53,24 @@ const ConfirmationModal = React.forwardRef(function ConfirmationModalInternal({
47
53
  React.useEffect(() => {
48
54
  dispatch({
49
55
  type: "reset",
50
- state: Object.assign(Object.assign({}, state), { title, message: message, confirmLabel,
51
- cancelLabel,
52
- onConfirm,
56
+ state: Object.assign(Object.assign({}, state), { title, message: message, confirmLabel: resolvedConfirmLabel, cancelLabel: resolvedCancelLabel, onConfirm,
53
57
  onCancel }),
54
58
  });
55
- }, [title, message, confirmLabel, cancelLabel, onConfirm, onCancel]);
59
+ }, [
60
+ title,
61
+ message,
62
+ resolvedConfirmLabel,
63
+ resolvedCancelLabel,
64
+ onConfirm,
65
+ onCancel,
66
+ ]);
56
67
  jobberHooks.useOnKeyDown(handleKeyboardShortcut, ["Escape", "Enter"]);
57
68
  return (React.createElement(Modal_index.Modal, { title: state.title, open: open || state.open, size: size, dismissible: false, primaryAction: {
58
- label: state.confirmLabel,
69
+ label: (_a = state.confirmLabel) !== null && _a !== void 0 ? _a : t("Confirm"),
59
70
  onClick: handleAction("confirm"),
60
71
  variation: variation === "destructive" ? "destructive" : "work",
61
72
  }, secondaryAction: {
62
- label: state.cancelLabel,
73
+ label: (_b = state.cancelLabel) !== null && _b !== void 0 ? _b : t("Cancel"),
63
74
  onClick: handleAction("cancel"),
64
75
  } }, state.message ? (React.createElement(Content.Content, null,
65
76
  React.createElement(Markdown.Markdown, { content: state.message }))) : (children)));
@@ -3,11 +3,13 @@ import { useOnKeyDown } from '@jobber/hooks';
3
3
  import { Modal } from './Modal/index.mjs';
4
4
  import { C as Content } from './Content-es.js';
5
5
  import { M as Markdown } from './Markdown-es.js';
6
+ import { c as commonMessages } from './common.messages-es.js';
7
+ import { u as useAtlantisI18n } from './useAtlantisI18n-es.js';
6
8
 
7
9
  function confirmationModalReducer(state, action) {
8
10
  switch (action.type) {
9
11
  case "display":
10
- return Object.assign(Object.assign({}, state), { title: action.title, message: action.message, open: true, confirmLabel: action.confirmLabel, cancelLabel: action.cancelLabel || "Cancel", onConfirm: action.onConfirm, onCancel: action.onCancel });
12
+ return Object.assign(Object.assign({}, state), { title: action.title, message: action.message, open: true, confirmLabel: action.confirmLabel, cancelLabel: action.cancelLabel, onConfirm: action.onConfirm, onCancel: action.onCancel });
11
13
  case "confirm":
12
14
  return Object.assign(Object.assign({}, state), { open: false });
13
15
  case "cancel":
@@ -18,13 +20,17 @@ function confirmationModalReducer(state, action) {
18
20
  throw new Error();
19
21
  }
20
22
  }
21
- const ConfirmationModal = forwardRef(function ConfirmationModalInternal({ title, message, open = false, confirmLabel = "Confirm", cancelLabel = "Cancel", onConfirm, onCancel, onRequestClose, variation = "work", size, children, }, ref) {
23
+ const ConfirmationModal = forwardRef(function ConfirmationModalInternal({ title, message, open = false, confirmLabel, cancelLabel, onConfirm, onCancel, onRequestClose, variation = "work", size, children, }, ref) {
24
+ var _a, _b;
25
+ const { t } = useAtlantisI18n(commonMessages);
26
+ const resolvedConfirmLabel = confirmLabel !== null && confirmLabel !== void 0 ? confirmLabel : t("Confirm");
27
+ const resolvedCancelLabel = cancelLabel !== null && cancelLabel !== void 0 ? cancelLabel : t("Cancel");
22
28
  const [state, dispatch] = useReducer(confirmationModalReducer, {
23
29
  title,
24
30
  message,
25
31
  open: false,
26
- confirmLabel,
27
- cancelLabel,
32
+ confirmLabel: resolvedConfirmLabel,
33
+ cancelLabel: resolvedCancelLabel,
28
34
  onConfirm,
29
35
  onCancel,
30
36
  });
@@ -45,19 +51,24 @@ const ConfirmationModal = forwardRef(function ConfirmationModalInternal({ title,
45
51
  useEffect(() => {
46
52
  dispatch({
47
53
  type: "reset",
48
- state: Object.assign(Object.assign({}, state), { title, message: message, confirmLabel,
49
- cancelLabel,
50
- onConfirm,
54
+ state: Object.assign(Object.assign({}, state), { title, message: message, confirmLabel: resolvedConfirmLabel, cancelLabel: resolvedCancelLabel, onConfirm,
51
55
  onCancel }),
52
56
  });
53
- }, [title, message, confirmLabel, cancelLabel, onConfirm, onCancel]);
57
+ }, [
58
+ title,
59
+ message,
60
+ resolvedConfirmLabel,
61
+ resolvedCancelLabel,
62
+ onConfirm,
63
+ onCancel,
64
+ ]);
54
65
  useOnKeyDown(handleKeyboardShortcut, ["Escape", "Enter"]);
55
66
  return (React__default.createElement(Modal, { title: state.title, open: open || state.open, size: size, dismissible: false, primaryAction: {
56
- label: state.confirmLabel,
67
+ label: (_a = state.confirmLabel) !== null && _a !== void 0 ? _a : t("Confirm"),
57
68
  onClick: handleAction("confirm"),
58
69
  variation: variation === "destructive" ? "destructive" : "work",
59
70
  }, secondaryAction: {
60
- label: state.cancelLabel,
71
+ label: (_b = state.cancelLabel) !== null && _b !== void 0 ? _b : t("Cancel"),
61
72
  onClick: handleAction("cancel"),
62
73
  } }, state.message ? (React__default.createElement(Content, null,
63
74
  React__default.createElement(Markdown, { content: state.message }))) : (children)));
@@ -0,0 +1,14 @@
1
+ export declare const datePickerMessages: {
2
+ previousMonth: {
3
+ en: string;
4
+ es: string;
5
+ };
6
+ nextMonth: {
7
+ en: string;
8
+ es: string;
9
+ };
10
+ openDatepicker: {
11
+ en: string;
12
+ es: string;
13
+ };
14
+ };
@@ -11,6 +11,8 @@ require('react/jsx-runtime');
11
11
  require('react-dom');
12
12
  require('../floating-ui.react-dom-cjs.js');
13
13
  require('@jobber/hooks');
14
+ require('../useAtlantisI18n-cjs.js');
15
+ require('../AtlantisContext-cjs.js');
14
16
  require('../Typography-cjs.js');
15
17
  require('../Button-cjs.js');
16
18
  require('../tslib.es6-cjs.js');
@@ -28,7 +30,6 @@ require('../keysIn-cjs.js');
28
30
  require('../_baseAssignValue-cjs.js');
29
31
  require('../_baseFlatten-cjs.js');
30
32
  require('../_setToString-cjs.js');
31
- require('../AtlantisContext-cjs.js');
32
33
 
33
34
 
34
35
 
@@ -9,6 +9,8 @@ import 'react/jsx-runtime';
9
9
  import 'react-dom';
10
10
  import '../floating-ui.react-dom-es.js';
11
11
  import '@jobber/hooks';
12
+ import '../useAtlantisI18n-es.js';
13
+ import '../AtlantisContext-es.js';
12
14
  import '../Typography-es.js';
13
15
  import '../Button-es.js';
14
16
  import '../tslib.es6-es.js';
@@ -26,4 +28,3 @@ import '../keysIn-es.js';
26
28
  import '../_baseAssignValue-es.js';
27
29
  import '../_baseFlatten-es.js';
28
30
  import '../_setToString-es.js';
29
- import '../AtlantisContext-es.js';
@@ -7,8 +7,10 @@ var floatingUi_react = require('./floating-ui.react-cjs.js');
7
7
  var ReactDOM = require('react-dom');
8
8
  var floatingUi_reactDom = require('./floating-ui.react-dom-cjs.js');
9
9
  var jobberHooks = require('@jobber/hooks');
10
+ var useAtlantisI18n = require('./useAtlantisI18n-cjs.js');
10
11
  var Typography = require('./Typography-cjs.js');
11
12
  var Button = require('./Button-cjs.js');
13
+ var AtlantisContext = require('./AtlantisContext-cjs.js');
12
14
  var _commonjsHelpers = require('./_commonjsHelpers-cjs.js');
13
15
  var _getAllKeys = require('./_getAllKeys-cjs.js');
14
16
  var identity = require('./identity-cjs.js');
@@ -18,7 +20,6 @@ var isObjectLike$2 = require('./isObjectLike-cjs.js');
18
20
  var isTypedArray = require('./isTypedArray-cjs.js');
19
21
  var _baseFlatten = require('./_baseFlatten-cjs.js');
20
22
  var _setToString = require('./_setToString-cjs.js');
21
- var AtlantisContext = require('./AtlantisContext-cjs.js');
22
23
 
23
24
  /**
24
25
  * @module constants
@@ -12663,15 +12664,32 @@ var PRESELECT_CHANGE_VIA_NAVIGATE = "navigate";
12663
12664
 
12664
12665
  var styles = {"datePickerWrapper":"OmFI-Bfdzgw-","fullWidth":"HWDFy10kcYA-","datePicker":"Ma55F5Y-XhE-","inline":"_58kEbTu-IAA-","portalContainer":"LDxKi0E-1rg-","header":"Epg-Ub8Dn9A-","month":"Wx3NP8La95k-","spinning":"o0JLwNATy-M-"};
12665
12666
 
12667
+ const datePickerMessages = useAtlantisI18n.defineMessages({
12668
+ previousMonth: {
12669
+ en: "Previous Month",
12670
+ es: "Mes anterior",
12671
+ },
12672
+ nextMonth: {
12673
+ en: "Next Month",
12674
+ es: "Mes siguiente",
12675
+ },
12676
+ openDatepicker: {
12677
+ en: "Open Datepicker",
12678
+ es: "Abrir selector de fecha",
12679
+ },
12680
+ });
12681
+
12666
12682
  function DatePickerCustomHeader({ monthDate, decreaseMonth, increaseMonth, prevMonthButtonDisabled, nextMonthButtonDisabled, }) {
12683
+ const { locale } = AtlantisContext.useAtlantisContext();
12684
+ const { t } = useAtlantisI18n.useAtlantisI18n(datePickerMessages);
12667
12685
  return (React.createElement("div", { className: styles.header },
12668
- React.createElement(Button.Button, { onClick: decreaseMonth, disabled: prevMonthButtonDisabled, icon: "arrowLeft", ariaLabel: "Previous Month", variation: "work", type: "tertiary" }),
12686
+ React.createElement(Button.Button, { onClick: decreaseMonth, disabled: prevMonthButtonDisabled, icon: "arrowLeft", ariaLabel: t("previousMonth"), variation: "work", type: "tertiary" }),
12669
12687
  React.createElement("div", { className: styles.month },
12670
- React.createElement(Typography.Typography, { element: "span", fontFamily: "display", size: "large" }, monthDate.toLocaleString("en-US", {
12688
+ React.createElement(Typography.Typography, { element: "span", fontFamily: "display", size: "large" }, monthDate.toLocaleString(locale || "en-US", {
12671
12689
  month: "long",
12672
12690
  year: "numeric",
12673
12691
  }))),
12674
- React.createElement(Button.Button, { onClick: increaseMonth, disabled: nextMonthButtonDisabled, icon: "arrowRight", ariaLabel: "Next Month", variation: "work", type: "tertiary" })));
12692
+ React.createElement(Button.Button, { onClick: increaseMonth, disabled: nextMonthButtonDisabled, icon: "arrowRight", ariaLabel: t("nextMonth"), variation: "work", type: "tertiary" })));
12675
12693
  }
12676
12694
 
12677
12695
  /**
@@ -13446,6 +13464,7 @@ var omit$1 = /*@__PURE__*/_commonjsHelpers.getDefaultExportFromCjs(omit_1);
13446
13464
 
13447
13465
  const DatePickerActivator = React.forwardRef(InternalActivator);
13448
13466
  function InternalActivator(props, ref) {
13467
+ const { t } = useAtlantisI18n.useAtlantisI18n(datePickerMessages);
13449
13468
  const { activator, fullWidth } = props;
13450
13469
  const newActivatorProps = omit$1(props, ["activator", "fullWidth"]);
13451
13470
  if (activator) {
@@ -13466,7 +13485,7 @@ function InternalActivator(props, ref) {
13466
13485
  else {
13467
13486
  return (
13468
13487
  // @ts-expect-error - we need to desctructure the newActivatorProps with more care to XOR prop types.
13469
- React.createElement(Button.Button, Object.assign({ variation: "work", type: "tertiary", icon: "calendar", ariaLabel: "Open Datepicker", fullWidth: fullWidth }, newActivatorProps)));
13488
+ React.createElement(Button.Button, Object.assign({ variation: "work", type: "tertiary", icon: "calendar", ariaLabel: t("openDatepicker"), fullWidth: fullWidth }, newActivatorProps)));
13470
13489
  }
13471
13490
  }
13472
13491
 
@@ -5,8 +5,10 @@ import { u as useFloating, m as FloatingArrow, b as useFloatingNodeId, a as useF
5
5
  import ReactDOM__default from 'react-dom';
6
6
  import { b as autoUpdate, f as flip, o as offset, a as arrow } from './floating-ui.react-dom-es.js';
7
7
  import { useRefocusOnActivator } from '@jobber/hooks';
8
+ import { d as defineMessages, u as useAtlantisI18n } from './useAtlantisI18n-es.js';
8
9
  import { T as Typography } from './Typography-es.js';
9
10
  import { B as Button } from './Button-es.js';
11
+ import { u as useAtlantisContext } from './AtlantisContext-es.js';
10
12
  import { g as getDefaultExportFromCjs } from './_commonjsHelpers-es.js';
11
13
  import { k as keys_1, g as _getSymbols, _ as _arrayPush, s as stubArray_1, h as _baseGetAllKeys, c as _getAllKeys, b as _baseGet, d as _castPath, e as _toKey, a as _arrayMap } from './_getAllKeys-es.js';
12
14
  import { c as _Stack } from './identity-es.js';
@@ -16,7 +18,6 @@ import { b as _Symbol, i as isObjectLike_1, a as isObject_1 } from './isObjectLi
16
18
  import { m as _nodeUtilExports, j as _baseUnary, c as isBufferExports, a as isArray_1 } from './isTypedArray-es.js';
17
19
  import { _ as _baseFlatten } from './_baseFlatten-es.js';
18
20
  import { _ as _overRest, a as _setToString } from './_setToString-es.js';
19
- import { u as useAtlantisContext } from './AtlantisContext-es.js';
20
21
 
21
22
  /**
22
23
  * @module constants
@@ -12661,15 +12662,32 @@ var PRESELECT_CHANGE_VIA_NAVIGATE = "navigate";
12661
12662
 
12662
12663
  var styles = {"datePickerWrapper":"OmFI-Bfdzgw-","fullWidth":"HWDFy10kcYA-","datePicker":"Ma55F5Y-XhE-","inline":"_58kEbTu-IAA-","portalContainer":"LDxKi0E-1rg-","header":"Epg-Ub8Dn9A-","month":"Wx3NP8La95k-","spinning":"o0JLwNATy-M-"};
12663
12664
 
12665
+ const datePickerMessages = defineMessages({
12666
+ previousMonth: {
12667
+ en: "Previous Month",
12668
+ es: "Mes anterior",
12669
+ },
12670
+ nextMonth: {
12671
+ en: "Next Month",
12672
+ es: "Mes siguiente",
12673
+ },
12674
+ openDatepicker: {
12675
+ en: "Open Datepicker",
12676
+ es: "Abrir selector de fecha",
12677
+ },
12678
+ });
12679
+
12664
12680
  function DatePickerCustomHeader({ monthDate, decreaseMonth, increaseMonth, prevMonthButtonDisabled, nextMonthButtonDisabled, }) {
12681
+ const { locale } = useAtlantisContext();
12682
+ const { t } = useAtlantisI18n(datePickerMessages);
12665
12683
  return (React__default.createElement("div", { className: styles.header },
12666
- React__default.createElement(Button, { onClick: decreaseMonth, disabled: prevMonthButtonDisabled, icon: "arrowLeft", ariaLabel: "Previous Month", variation: "work", type: "tertiary" }),
12684
+ React__default.createElement(Button, { onClick: decreaseMonth, disabled: prevMonthButtonDisabled, icon: "arrowLeft", ariaLabel: t("previousMonth"), variation: "work", type: "tertiary" }),
12667
12685
  React__default.createElement("div", { className: styles.month },
12668
- React__default.createElement(Typography, { element: "span", fontFamily: "display", size: "large" }, monthDate.toLocaleString("en-US", {
12686
+ React__default.createElement(Typography, { element: "span", fontFamily: "display", size: "large" }, monthDate.toLocaleString(locale || "en-US", {
12669
12687
  month: "long",
12670
12688
  year: "numeric",
12671
12689
  }))),
12672
- React__default.createElement(Button, { onClick: increaseMonth, disabled: nextMonthButtonDisabled, icon: "arrowRight", ariaLabel: "Next Month", variation: "work", type: "tertiary" })));
12690
+ React__default.createElement(Button, { onClick: increaseMonth, disabled: nextMonthButtonDisabled, icon: "arrowRight", ariaLabel: t("nextMonth"), variation: "work", type: "tertiary" })));
12673
12691
  }
12674
12692
 
12675
12693
  /**
@@ -13444,6 +13462,7 @@ var omit$1 = /*@__PURE__*/getDefaultExportFromCjs(omit_1);
13444
13462
 
13445
13463
  const DatePickerActivator = forwardRef(InternalActivator);
13446
13464
  function InternalActivator(props, ref) {
13465
+ const { t } = useAtlantisI18n(datePickerMessages);
13447
13466
  const { activator, fullWidth } = props;
13448
13467
  const newActivatorProps = omit$1(props, ["activator", "fullWidth"]);
13449
13468
  if (activator) {
@@ -13464,7 +13483,7 @@ function InternalActivator(props, ref) {
13464
13483
  else {
13465
13484
  return (
13466
13485
  // @ts-expect-error - we need to desctructure the newActivatorProps with more care to XOR prop types.
13467
- React__default.createElement(Button, Object.assign({ variation: "work", type: "tertiary", icon: "calendar", ariaLabel: "Open Datepicker", fullWidth: fullWidth }, newActivatorProps)));
13486
+ React__default.createElement(Button, Object.assign({ variation: "work", type: "tertiary", icon: "calendar", ariaLabel: t("openDatepicker"), fullWidth: fullWidth }, newActivatorProps)));
13468
13487
  }
13469
13488
  }
13470
13489
 
@@ -21,6 +21,8 @@ require('../Modal/index.cjs');
21
21
  require('react-dom');
22
22
  require('framer-motion');
23
23
  require('../nestedEscape-cjs.js');
24
+ require('../useAtlantisI18n-cjs.js');
25
+ require('../AtlantisContext-cjs.js');
24
26
  require('../Heading-cjs.js');
25
27
  require('../ButtonDismiss-cjs.js');
26
28
  require('../noop-cjs.js');
@@ -42,6 +44,7 @@ require('../_isIterateeCall-cjs.js');
42
44
  require('../_setToString-cjs.js');
43
45
  require('../Markdown-cjs.js');
44
46
  require('../Emphasis-cjs.js');
47
+ require('../common.messages-cjs.js');
45
48
 
46
49
 
47
50
 
@@ -19,6 +19,8 @@ import '../Modal/index.mjs';
19
19
  import 'react-dom';
20
20
  import 'framer-motion';
21
21
  import '../nestedEscape-es.js';
22
+ import '../useAtlantisI18n-es.js';
23
+ import '../AtlantisContext-es.js';
22
24
  import '../Heading-es.js';
23
25
  import '../ButtonDismiss-es.js';
24
26
  import '../noop-es.js';
@@ -40,3 +42,4 @@ import '../_isIterateeCall-es.js';
40
42
  import '../_setToString-es.js';
41
43
  import '../Markdown-es.js';
42
44
  import '../Emphasis-es.js';
45
+ import '../common.messages-es.js';
@@ -10,6 +10,8 @@ require('react-dom');
10
10
  require('@jobber/hooks');
11
11
  require('../noop-cjs.js');
12
12
  require('../_commonjsHelpers-cjs.js');
13
+ require('../useAtlantisI18n-cjs.js');
14
+ require('../AtlantisContext-cjs.js');
13
15
  require('../ButtonDismiss-cjs.js');
14
16
  require('../Button-cjs.js');
15
17
  require('react-router-dom');
@@ -45,6 +47,7 @@ require('../nestedEscape-cjs.js');
45
47
  require('../AtlantisPortalContent-cjs.js');
46
48
  require('../Markdown-cjs.js');
47
49
  require('../Emphasis-cjs.js');
50
+ require('../common.messages-cjs.js');
48
51
 
49
52
 
50
53
 
@@ -8,6 +8,8 @@ import 'react-dom';
8
8
  import '@jobber/hooks';
9
9
  import '../noop-es.js';
10
10
  import '../_commonjsHelpers-es.js';
11
+ import '../useAtlantisI18n-es.js';
12
+ import '../AtlantisContext-es.js';
11
13
  import '../ButtonDismiss-es.js';
12
14
  import '../Button-es.js';
13
15
  import 'react-router-dom';
@@ -43,3 +45,4 @@ import '../nestedEscape-es.js';
43
45
  import '../AtlantisPortalContent-es.js';
44
46
  import '../Markdown-es.js';
45
47
  import '../Emphasis-es.js';
48
+ import '../common.messages-es.js';
@@ -0,0 +1,6 @@
1
+ export declare const inputDateMessages: {
2
+ showCalendar: {
3
+ en: string;
4
+ es: string;
5
+ };
6
+ };
@@ -2,6 +2,8 @@
2
2
 
3
3
  var InputDate = require('../InputDate-cjs.js');
4
4
  require('react');
5
+ require('../useAtlantisI18n-cjs.js');
6
+ require('../AtlantisContext-cjs.js');
5
7
  require('../DatePicker-cjs.js');
6
8
  require('classnames');
7
9
  require('../clsx-cjs.js');
@@ -29,13 +31,11 @@ require('../keysIn-cjs.js');
29
31
  require('../_baseAssignValue-cjs.js');
30
32
  require('../_baseFlatten-cjs.js');
31
33
  require('../_setToString-cjs.js');
32
- require('../AtlantisContext-cjs.js');
33
34
  require('../InputText-cjs.js');
34
35
  require('../useAtlantisFormFieldName-cjs.js');
35
36
  require('../FormFieldWrapper-cjs.js');
36
37
  require('framer-motion');
37
38
  require('../Text-cjs.js');
38
- require('../useAtlantisI18n-cjs.js');
39
39
  require('../useFormFieldFocus-cjs.js');
40
40
  require('../InputValidation-cjs.js');
41
41
  require('../FormFieldPostFix-cjs.js');
@@ -1,5 +1,7 @@
1
1
  export { I as InputDate } from '../InputDate-es.js';
2
2
  import 'react';
3
+ import '../useAtlantisI18n-es.js';
4
+ import '../AtlantisContext-es.js';
3
5
  import '../DatePicker-es.js';
4
6
  import 'classnames';
5
7
  import '../clsx-es.js';
@@ -27,13 +29,11 @@ import '../keysIn-es.js';
27
29
  import '../_baseAssignValue-es.js';
28
30
  import '../_baseFlatten-es.js';
29
31
  import '../_setToString-es.js';
30
- import '../AtlantisContext-es.js';
31
32
  import '../InputText-es.js';
32
33
  import '../useAtlantisFormFieldName-es.js';
33
34
  import '../FormFieldWrapper-es.js';
34
35
  import 'framer-motion';
35
36
  import '../Text-es.js';
36
- import '../useAtlantisI18n-es.js';
37
37
  import '../useFormFieldFocus-es.js';
38
38
  import '../InputValidation-es.js';
39
39
  import '../FormFieldPostFix-es.js';
@@ -1,6 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var React = require('react');
4
+ var useAtlantisI18n = require('./useAtlantisI18n-cjs.js');
4
5
  var DatePicker = require('./DatePicker-cjs.js');
5
6
  var InputText = require('./InputText-cjs.js');
6
7
 
@@ -25,6 +26,13 @@ function useInputDateActivatorActions({ onChange, onBlur, onFocus, }) {
25
26
  };
26
27
  }
27
28
 
29
+ const inputDateMessages = useAtlantisI18n.defineMessages({
30
+ showCalendar: {
31
+ en: "Show calendar",
32
+ es: "Mostrar calendario",
33
+ },
34
+ });
35
+
28
36
  const InputDate = React.forwardRef((props, forwardedRef) => {
29
37
  const { onChange } = props;
30
38
  const isCalendarOpenRef = React.useRef(false);
@@ -46,6 +54,7 @@ const InputDate = React.forwardRef((props, forwardedRef) => {
46
54
  }
47
55
  } }));
48
56
  function InputDateActivator(activatorProps) {
57
+ const { t } = useAtlantisI18n.useAtlantisI18n(inputDateMessages);
49
58
  const { onClick, value } = activatorProps;
50
59
  const { handleChange, handleFocus, handleBlur, isFocused } = useInputDateActivatorActions({
51
60
  onChange: activatorProps.onChange,
@@ -74,7 +83,7 @@ const InputDate = React.forwardRef((props, forwardedRef) => {
74
83
  const suffix = props.showIcon !== false
75
84
  ? {
76
85
  icon: "calendar",
77
- ariaLabel: "Show calendar",
86
+ ariaLabel: t("showCalendar"),
78
87
  onClick: !props.disabled && onClick && onClick,
79
88
  }
80
89
  : undefined;
@@ -1,4 +1,5 @@
1
1
  import React__default, { useState, forwardRef, useRef } from 'react';
2
+ import { d as defineMessages, u as useAtlantisI18n } from './useAtlantisI18n-es.js';
2
3
  import { D as DatePicker } from './DatePicker-es.js';
3
4
  import { I as InputText } from './InputText-es.js';
4
5
 
@@ -23,6 +24,13 @@ function useInputDateActivatorActions({ onChange, onBlur, onFocus, }) {
23
24
  };
24
25
  }
25
26
 
27
+ const inputDateMessages = defineMessages({
28
+ showCalendar: {
29
+ en: "Show calendar",
30
+ es: "Mostrar calendario",
31
+ },
32
+ });
33
+
26
34
  const InputDate = forwardRef((props, forwardedRef) => {
27
35
  const { onChange } = props;
28
36
  const isCalendarOpenRef = useRef(false);
@@ -44,6 +52,7 @@ const InputDate = forwardRef((props, forwardedRef) => {
44
52
  }
45
53
  } }));
46
54
  function InputDateActivator(activatorProps) {
55
+ const { t } = useAtlantisI18n(inputDateMessages);
47
56
  const { onClick, value } = activatorProps;
48
57
  const { handleChange, handleFocus, handleBlur, isFocused } = useInputDateActivatorActions({
49
58
  onChange: activatorProps.onChange,
@@ -72,7 +81,7 @@ const InputDate = forwardRef((props, forwardedRef) => {
72
81
  const suffix = props.showIcon !== false
73
82
  ? {
74
83
  icon: "calendar",
75
- ariaLabel: "Show calendar",
84
+ ariaLabel: t("showCalendar"),
76
85
  onClick: !props.disabled && onClick && onClick,
77
86
  }
78
87
  : undefined;
@@ -0,0 +1,22 @@
1
+ export declare const lightBoxMessages: {
2
+ close: {
3
+ en: string;
4
+ es: string;
5
+ };
6
+ lightbox: {
7
+ en: string;
8
+ es: string;
9
+ };
10
+ previousImage: {
11
+ en: string;
12
+ es: string;
13
+ };
14
+ nextImage: {
15
+ en: string;
16
+ es: string;
17
+ };
18
+ openInNewTab: {
19
+ en: string;
20
+ es: string;
21
+ };
22
+ };
@@ -8,6 +8,8 @@ require('@jobber/hooks');
8
8
  require('classnames');
9
9
  require('../noop-cjs.js');
10
10
  require('../_commonjsHelpers-cjs.js');
11
+ require('../useAtlantisI18n-cjs.js');
12
+ require('../AtlantisContext-cjs.js');
11
13
  require('../ButtonDismiss-cjs.js');
12
14
  require('../Button-cjs.js');
13
15
  require('../tslib.es6-cjs.js');
@@ -6,6 +6,8 @@ import '@jobber/hooks';
6
6
  import 'classnames';
7
7
  import '../noop-es.js';
8
8
  import '../_commonjsHelpers-es.js';
9
+ import '../useAtlantisI18n-es.js';
10
+ import '../AtlantisContext-es.js';
9
11
  import '../ButtonDismiss-es.js';
10
12
  import '../Button-es.js';
11
13
  import '../tslib.es6-es.js';
@@ -6,6 +6,7 @@ var ReactDOM = require('react-dom');
6
6
  var jobberHooks = require('@jobber/hooks');
7
7
  var classnames = require('classnames');
8
8
  var noop = require('./noop-cjs.js');
9
+ var useAtlantisI18n = require('./useAtlantisI18n-cjs.js');
9
10
  var ButtonDismiss = require('./ButtonDismiss-cjs.js');
10
11
  var Text = require('./Text-cjs.js');
11
12
  var Button = require('./Button-cjs.js');
@@ -169,10 +170,34 @@ function togglePrintStyles(open) {
169
170
  }
170
171
  }
171
172
 
173
+ const lightBoxMessages = useAtlantisI18n.defineMessages({
174
+ close: {
175
+ en: "Close",
176
+ es: "Cerrar",
177
+ },
178
+ lightbox: {
179
+ en: "Lightbox",
180
+ es: "Lightbox",
181
+ },
182
+ previousImage: {
183
+ en: "Previous image",
184
+ es: "Imagen anterior",
185
+ },
186
+ nextImage: {
187
+ en: "Next image",
188
+ es: "Imagen siguiente",
189
+ },
190
+ openInNewTab: {
191
+ en: "Open image in new tab",
192
+ es: "Abrir imagen en nueva pestaña",
193
+ },
194
+ });
195
+
172
196
  function LightBoxContent() {
173
197
  const { open, lightboxRef, handleMouseMove } = useLightBoxContext();
198
+ const { t } = useAtlantisI18n.useAtlantisI18n(lightBoxMessages);
174
199
  const mounted = jobberHooks.useIsMounted();
175
- const template = (React.createElement(React.Fragment, null, open && (React.createElement("div", { className: styles.lightboxWrapper, tabIndex: 0, "aria-label": "Lightbox", key: "Lightbox", ref: lightboxRef, onMouseMove: handleMouseMove },
200
+ const template = (React.createElement(React.Fragment, null, open && (React.createElement("div", { className: styles.lightboxWrapper, tabIndex: 0, "aria-label": t("lightbox"), key: "Lightbox", ref: lightboxRef, onMouseMove: handleMouseMove },
176
201
  React.createElement(LightBoxBackground, null),
177
202
  React.createElement(LightBoxOverlay, null),
178
203
  React.createElement(LightBoxToolbar, null),
@@ -186,13 +211,15 @@ function LightBoxContent() {
186
211
  }
187
212
  function PreviousButton({ onClick, hideButton, className }) {
188
213
  const { mediumAndUp } = jobberHooks.useBreakpoints();
214
+ const { t } = useAtlantisI18n.useAtlantisI18n(lightBoxMessages);
189
215
  return (React.createElement("div", { className: `${className} ${hideButton ? styles.buttonHidden : styles.buttonVisible}` },
190
- React.createElement(Button.Button, { size: mediumAndUp ? "large" : "small", variation: "subtle", type: "secondary", icon: "arrowLeft", ariaLabel: "Previous image", onClick: onClick })));
216
+ React.createElement(Button.Button, { size: mediumAndUp ? "large" : "small", variation: "subtle", type: "secondary", icon: "arrowLeft", ariaLabel: t("previousImage"), onClick: onClick })));
191
217
  }
192
218
  function NextButton({ onClick, hideButton, className }) {
193
219
  const { mediumAndUp } = jobberHooks.useBreakpoints();
220
+ const { t } = useAtlantisI18n.useAtlantisI18n(lightBoxMessages);
194
221
  return (React.createElement("div", { className: `${className} ${hideButton ? styles.buttonHidden : styles.buttonVisible}` },
195
- React.createElement(Button.Button, { size: mediumAndUp ? "large" : "small", variation: "subtle", type: "secondary", icon: "arrowRight", ariaLabel: "Next image", onClick: onClick })));
222
+ React.createElement(Button.Button, { size: mediumAndUp ? "large" : "small", variation: "subtle", type: "secondary", icon: "arrowRight", ariaLabel: t("nextImage"), onClick: onClick })));
196
223
  }
197
224
  /**
198
225
  * Blurred, desaturated copy of the current image rendered as a full-bleed
@@ -218,26 +245,29 @@ function LightBoxOverlay({ className }) {
218
245
  */
219
246
  function LightBoxToolbar() {
220
247
  const { images, currentImageIndex, handleRequestClose } = useLightBoxContext();
248
+ const { t } = useAtlantisI18n.useAtlantisI18n(lightBoxMessages);
221
249
  return (React.createElement(AtlantisThemeContext.AtlantisThemeContextProvider, { dangerouslyOverrideTheme: "dark" },
222
250
  React.createElement("div", { className: styles.toolbar },
223
251
  React.createElement(LightBoxOpenInNewTabAction, null),
224
252
  React.createElement("div", { className: styles.slideNumber },
225
253
  React.createElement(Text.Text, null, `${currentImageIndex + 1}/${images.length}`)),
226
254
  React.createElement("div", { className: styles.closeButton },
227
- React.createElement(ButtonDismiss.ButtonDismiss, { ariaLabel: "Close", onClick: handleRequestClose })))));
255
+ React.createElement(ButtonDismiss.ButtonDismiss, { ariaLabel: t("close"), onClick: handleRequestClose })))));
228
256
  }
229
257
  /**
230
258
  * Opens the current image in a new browser tab. Included in the default
231
259
  * `LightBox.Toolbar`. Returns `null` if the current image has no `url`.
232
260
  */
233
- function LightBoxOpenInNewTabAction({ ariaLabel = "Open image in new tab", }) {
261
+ function LightBoxOpenInNewTabAction({ ariaLabel, }) {
234
262
  const { images, currentImageIndex } = useLightBoxContext();
263
+ const { t } = useAtlantisI18n.useAtlantisI18n(lightBoxMessages);
264
+ const effectiveAriaLabel = ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel : t("openInNewTab");
235
265
  const currentImage = images[currentImageIndex];
236
266
  if (!(currentImage === null || currentImage === void 0 ? void 0 : currentImage.url))
237
267
  return null;
238
268
  return (React.createElement("div", { className: styles.leftAction },
239
- React.createElement(Tooltip.Tooltip, { message: ariaLabel },
240
- React.createElement(Button.Button, { size: "small", variation: "subtle", type: "secondary", icon: "export", ariaLabel: ariaLabel, url: currentImage.url, external: true }))));
269
+ React.createElement(Tooltip.Tooltip, { message: effectiveAriaLabel },
270
+ React.createElement(Button.Button, { size: "small", variation: "subtle", type: "secondary", icon: "export", ariaLabel: effectiveAriaLabel, url: currentImage.url, external: true }))));
241
271
  }
242
272
  /**
243
273
  * The animated hero image with swipe-to-navigate and slide animation.
@@ -4,6 +4,7 @@ import ReactDOM__default from 'react-dom';
4
4
  import { useFocusTrap, useDebounce, useIsMounted, useRefocusOnActivator, useOnKeyDown, useBreakpoints } from '@jobber/hooks';
5
5
  import classnames from 'classnames';
6
6
  import { n as noop } from './noop-es.js';
7
+ import { d as defineMessages, u as useAtlantisI18n } from './useAtlantisI18n-es.js';
7
8
  import { B as ButtonDismiss } from './ButtonDismiss-es.js';
8
9
  import { T as Text } from './Text-es.js';
9
10
  import { B as Button } from './Button-es.js';
@@ -167,10 +168,34 @@ function togglePrintStyles(open) {
167
168
  }
168
169
  }
169
170
 
171
+ const lightBoxMessages = defineMessages({
172
+ close: {
173
+ en: "Close",
174
+ es: "Cerrar",
175
+ },
176
+ lightbox: {
177
+ en: "Lightbox",
178
+ es: "Lightbox",
179
+ },
180
+ previousImage: {
181
+ en: "Previous image",
182
+ es: "Imagen anterior",
183
+ },
184
+ nextImage: {
185
+ en: "Next image",
186
+ es: "Imagen siguiente",
187
+ },
188
+ openInNewTab: {
189
+ en: "Open image in new tab",
190
+ es: "Abrir imagen en nueva pestaña",
191
+ },
192
+ });
193
+
170
194
  function LightBoxContent() {
171
195
  const { open, lightboxRef, handleMouseMove } = useLightBoxContext();
196
+ const { t } = useAtlantisI18n(lightBoxMessages);
172
197
  const mounted = useIsMounted();
173
- const template = (React__default.createElement(React__default.Fragment, null, open && (React__default.createElement("div", { className: styles.lightboxWrapper, tabIndex: 0, "aria-label": "Lightbox", key: "Lightbox", ref: lightboxRef, onMouseMove: handleMouseMove },
198
+ const template = (React__default.createElement(React__default.Fragment, null, open && (React__default.createElement("div", { className: styles.lightboxWrapper, tabIndex: 0, "aria-label": t("lightbox"), key: "Lightbox", ref: lightboxRef, onMouseMove: handleMouseMove },
174
199
  React__default.createElement(LightBoxBackground, null),
175
200
  React__default.createElement(LightBoxOverlay, null),
176
201
  React__default.createElement(LightBoxToolbar, null),
@@ -184,13 +209,15 @@ function LightBoxContent() {
184
209
  }
185
210
  function PreviousButton({ onClick, hideButton, className }) {
186
211
  const { mediumAndUp } = useBreakpoints();
212
+ const { t } = useAtlantisI18n(lightBoxMessages);
187
213
  return (React__default.createElement("div", { className: `${className} ${hideButton ? styles.buttonHidden : styles.buttonVisible}` },
188
- React__default.createElement(Button, { size: mediumAndUp ? "large" : "small", variation: "subtle", type: "secondary", icon: "arrowLeft", ariaLabel: "Previous image", onClick: onClick })));
214
+ React__default.createElement(Button, { size: mediumAndUp ? "large" : "small", variation: "subtle", type: "secondary", icon: "arrowLeft", ariaLabel: t("previousImage"), onClick: onClick })));
189
215
  }
190
216
  function NextButton({ onClick, hideButton, className }) {
191
217
  const { mediumAndUp } = useBreakpoints();
218
+ const { t } = useAtlantisI18n(lightBoxMessages);
192
219
  return (React__default.createElement("div", { className: `${className} ${hideButton ? styles.buttonHidden : styles.buttonVisible}` },
193
- React__default.createElement(Button, { size: mediumAndUp ? "large" : "small", variation: "subtle", type: "secondary", icon: "arrowRight", ariaLabel: "Next image", onClick: onClick })));
220
+ React__default.createElement(Button, { size: mediumAndUp ? "large" : "small", variation: "subtle", type: "secondary", icon: "arrowRight", ariaLabel: t("nextImage"), onClick: onClick })));
194
221
  }
195
222
  /**
196
223
  * Blurred, desaturated copy of the current image rendered as a full-bleed
@@ -216,26 +243,29 @@ function LightBoxOverlay({ className }) {
216
243
  */
217
244
  function LightBoxToolbar() {
218
245
  const { images, currentImageIndex, handleRequestClose } = useLightBoxContext();
246
+ const { t } = useAtlantisI18n(lightBoxMessages);
219
247
  return (React__default.createElement(AtlantisThemeContextProvider, { dangerouslyOverrideTheme: "dark" },
220
248
  React__default.createElement("div", { className: styles.toolbar },
221
249
  React__default.createElement(LightBoxOpenInNewTabAction, null),
222
250
  React__default.createElement("div", { className: styles.slideNumber },
223
251
  React__default.createElement(Text, null, `${currentImageIndex + 1}/${images.length}`)),
224
252
  React__default.createElement("div", { className: styles.closeButton },
225
- React__default.createElement(ButtonDismiss, { ariaLabel: "Close", onClick: handleRequestClose })))));
253
+ React__default.createElement(ButtonDismiss, { ariaLabel: t("close"), onClick: handleRequestClose })))));
226
254
  }
227
255
  /**
228
256
  * Opens the current image in a new browser tab. Included in the default
229
257
  * `LightBox.Toolbar`. Returns `null` if the current image has no `url`.
230
258
  */
231
- function LightBoxOpenInNewTabAction({ ariaLabel = "Open image in new tab", }) {
259
+ function LightBoxOpenInNewTabAction({ ariaLabel, }) {
232
260
  const { images, currentImageIndex } = useLightBoxContext();
261
+ const { t } = useAtlantisI18n(lightBoxMessages);
262
+ const effectiveAriaLabel = ariaLabel !== null && ariaLabel !== void 0 ? ariaLabel : t("openInNewTab");
233
263
  const currentImage = images[currentImageIndex];
234
264
  if (!(currentImage === null || currentImage === void 0 ? void 0 : currentImage.url))
235
265
  return null;
236
266
  return (React__default.createElement("div", { className: styles.leftAction },
237
- React__default.createElement(Tooltip, { message: ariaLabel },
238
- React__default.createElement(Button, { size: "small", variation: "subtle", type: "secondary", icon: "export", ariaLabel: ariaLabel, url: currentImage.url, external: true }))));
267
+ React__default.createElement(Tooltip, { message: effectiveAriaLabel },
268
+ React__default.createElement(Button, { size: "small", variation: "subtle", type: "secondary", icon: "export", ariaLabel: effectiveAriaLabel, url: currentImage.url, external: true }))));
239
269
  }
240
270
  /**
241
271
  * The animated hero image with swipe-to-navigate and slide animation.
package/dist/Menu-es.js CHANGED
@@ -2,7 +2,7 @@ import React__default, { useState, useRef, useId, useMemo } from 'react';
2
2
  import { useWindowDimensions, useRefocusOnActivator } from '@jobber/hooks';
3
3
  import classnames from 'classnames';
4
4
  import { AnimatePresence, motion } from 'framer-motion';
5
- import { u as useFloating, c as useDismiss, j as useListNavigation, d as useInteractions, F as FloatingPortal } from './floating-ui.react-es.js';
5
+ import { u as useFloating, c as useDismiss, g as useListNavigation, d as useInteractions, F as FloatingPortal } from './floating-ui.react-es.js';
6
6
  import { d as defineMessages, u as useAtlantisI18n } from './useAtlantisI18n-es.js';
7
7
  import { B as Button } from './Button-es.js';
8
8
  import { T as Typography } from './Typography-es.js';
@@ -0,0 +1,6 @@
1
+ export declare const modalMessages: {
2
+ closeModal: {
3
+ en: string;
4
+ es: string;
5
+ };
6
+ };
@@ -6,6 +6,7 @@ var classnames = require('classnames');
6
6
  var framerMotion = require('framer-motion');
7
7
  var jobberHooks = require('@jobber/hooks');
8
8
  var nestedEscape = require('../nestedEscape-cjs.js');
9
+ var useAtlantisI18n = require('../useAtlantisI18n-cjs.js');
9
10
  var Heading = require('../Heading-cjs.js');
10
11
  var Button = require('../Button-cjs.js');
11
12
  var ButtonDismiss = require('../ButtonDismiss-cjs.js');
@@ -13,6 +14,7 @@ var noop = require('../noop-cjs.js');
13
14
  var floatingUi_react = require('../floating-ui.react-cjs.js');
14
15
  var identity = require('../identity-cjs.js');
15
16
  var AtlantisPortalContent = require('../AtlantisPortalContent-cjs.js');
17
+ require('../AtlantisContext-cjs.js');
16
18
  require('../Typography-cjs.js');
17
19
  require('../tslib.es6-cjs.js');
18
20
  require('react-router-dom');
@@ -38,6 +40,13 @@ var sizes = {"small":"BSZvIAUzFEU-","large":"-ydIALYVvGg-","fullScreen":"_9wD-Ta
38
40
 
39
41
  const MODAL_HEADER_ID = "ATL-Modal-Header";
40
42
 
43
+ const modalMessages = useAtlantisI18n.defineMessages({
44
+ closeModal: {
45
+ en: "Close modal",
46
+ es: "Cerrar modal",
47
+ },
48
+ });
49
+
41
50
  function ModalLegacy({ open = false, title, size, dismissible = true, children, primaryAction, secondaryAction, tertiaryAction, onRequestClose, ariaLabel, }) {
42
51
  const modalClassName = classnames(styles$1.modal, size && sizes[size]);
43
52
  const containerClassName = classnames(styles$1.container, size === "fullScreen" && styles$1.containerFullScreen);
@@ -67,10 +76,11 @@ function ModalLegacy({ open = false, title, size, dismissible = true, children,
67
76
  : template;
68
77
  }
69
78
  function Header({ title, dismissible, onRequestClose }) {
79
+ const { t } = useAtlantisI18n.useAtlantisI18n(modalMessages);
70
80
  return (React.createElement("div", { className: styles$1.header, "data-testid": "modal-header" },
71
81
  React.createElement(Heading.Heading, { level: 2, id: MODAL_HEADER_ID }, title),
72
82
  dismissible && (React.createElement("div", { className: styles$1.closeButton },
73
- React.createElement(ButtonDismiss.ButtonDismiss, { onClick: onRequestClose, ariaLabel: "Close modal" })))));
83
+ React.createElement(ButtonDismiss.ButtonDismiss, { onClick: onRequestClose, ariaLabel: t("closeModal") })))));
74
84
  }
75
85
  function Actions({ primary, secondary, tertiary }) {
76
86
  const shouldShow = primary != undefined || secondary != undefined || tertiary != undefined;
@@ -197,13 +207,14 @@ function useModalStyles(size) {
197
207
  function ModalHeader({ title, children }) {
198
208
  const { header, dismissButton } = useModalStyles();
199
209
  const { dismissible, onRequestClose, modalLabelledBy } = useModalContext();
210
+ const { t } = useAtlantisI18n.useAtlantisI18n(modalMessages);
200
211
  if (children) {
201
212
  return React.createElement(React.Fragment, null, children);
202
213
  }
203
214
  return (React.createElement("div", { className: header, "data-testid": MODAL_HEADER_ID },
204
215
  React.createElement(Heading.Heading, { level: 2, id: modalLabelledBy }, title),
205
216
  dismissible && (React.createElement("div", { className: dismissButton },
206
- React.createElement(ButtonDismiss.ButtonDismiss, { onClick: onRequestClose, ariaLabel: "Close modal" })))));
217
+ React.createElement(ButtonDismiss.ButtonDismiss, { onClick: onRequestClose, ariaLabel: t("closeModal") })))));
207
218
  }
208
219
  function ModalActions({ primary, secondary, tertiary, }) {
209
220
  const { actionBar, rightAction, leftAction } = useModalStyles();
@@ -4,13 +4,15 @@ import classnames from 'classnames';
4
4
  import { AnimatePresence, motion } from 'framer-motion';
5
5
  import { useRefocusOnActivator, useFocusTrap } from '@jobber/hooks';
6
6
  import { a as addModalEscapeContainment } from '../nestedEscape-es.js';
7
+ import { d as defineMessages, u as useAtlantisI18n } from '../useAtlantisI18n-es.js';
7
8
  import { H as Heading } from '../Heading-es.js';
8
9
  import { B as Button } from '../Button-es.js';
9
10
  import { B as ButtonDismiss } from '../ButtonDismiss-es.js';
10
11
  import { n as noop } from '../noop-es.js';
11
- import { b as useFloatingNodeId, u as useFloating, c as useDismiss, g as useRole, d as useInteractions, a as useFloatingParentNodeId, e as FloatingTree, f as FloatingNode, F as FloatingPortal, h as FloatingFocusManager, i as FloatingOverlay } from '../floating-ui.react-es.js';
12
+ import { b as useFloatingNodeId, u as useFloating, c as useDismiss, h as useRole, d as useInteractions, a as useFloatingParentNodeId, e as FloatingTree, f as FloatingNode, F as FloatingPortal, i as FloatingFocusManager, j as FloatingOverlay } from '../floating-ui.react-es.js';
12
13
  import { b as identity } from '../identity-es.js';
13
14
  import { A as AtlantisPortalContent } from '../AtlantisPortalContent-es.js';
15
+ import '../AtlantisContext-es.js';
14
16
  import '../Typography-es.js';
15
17
  import '../tslib.es6-es.js';
16
18
  import 'react-router-dom';
@@ -36,6 +38,13 @@ var sizes = {"small":"BSZvIAUzFEU-","large":"-ydIALYVvGg-","fullScreen":"_9wD-Ta
36
38
 
37
39
  const MODAL_HEADER_ID = "ATL-Modal-Header";
38
40
 
41
+ const modalMessages = defineMessages({
42
+ closeModal: {
43
+ en: "Close modal",
44
+ es: "Cerrar modal",
45
+ },
46
+ });
47
+
39
48
  function ModalLegacy({ open = false, title, size, dismissible = true, children, primaryAction, secondaryAction, tertiaryAction, onRequestClose, ariaLabel, }) {
40
49
  const modalClassName = classnames(styles$1.modal, size && sizes[size]);
41
50
  const containerClassName = classnames(styles$1.container, size === "fullScreen" && styles$1.containerFullScreen);
@@ -65,10 +74,11 @@ function ModalLegacy({ open = false, title, size, dismissible = true, children,
65
74
  : template;
66
75
  }
67
76
  function Header({ title, dismissible, onRequestClose }) {
77
+ const { t } = useAtlantisI18n(modalMessages);
68
78
  return (React__default.createElement("div", { className: styles$1.header, "data-testid": "modal-header" },
69
79
  React__default.createElement(Heading, { level: 2, id: MODAL_HEADER_ID }, title),
70
80
  dismissible && (React__default.createElement("div", { className: styles$1.closeButton },
71
- React__default.createElement(ButtonDismiss, { onClick: onRequestClose, ariaLabel: "Close modal" })))));
81
+ React__default.createElement(ButtonDismiss, { onClick: onRequestClose, ariaLabel: t("closeModal") })))));
72
82
  }
73
83
  function Actions({ primary, secondary, tertiary }) {
74
84
  const shouldShow = primary != undefined || secondary != undefined || tertiary != undefined;
@@ -195,13 +205,14 @@ function useModalStyles(size) {
195
205
  function ModalHeader({ title, children }) {
196
206
  const { header, dismissButton } = useModalStyles();
197
207
  const { dismissible, onRequestClose, modalLabelledBy } = useModalContext();
208
+ const { t } = useAtlantisI18n(modalMessages);
198
209
  if (children) {
199
210
  return React__default.createElement(React__default.Fragment, null, children);
200
211
  }
201
212
  return (React__default.createElement("div", { className: header, "data-testid": MODAL_HEADER_ID },
202
213
  React__default.createElement(Heading, { level: 2, id: modalLabelledBy }, title),
203
214
  dismissible && (React__default.createElement("div", { className: dismissButton },
204
- React__default.createElement(ButtonDismiss, { onClick: onRequestClose, ariaLabel: "Close modal" })))));
215
+ React__default.createElement(ButtonDismiss, { onClick: onRequestClose, ariaLabel: t("closeModal") })))));
205
216
  }
206
217
  function ModalActions({ primary, secondary, tertiary, }) {
207
218
  const { actionBar, rightAction, leftAction } = useModalStyles();
@@ -0,0 +1,6 @@
1
+ export declare const popoverMessages: {
2
+ closeDialog: {
3
+ en: string;
4
+ es: string;
5
+ };
6
+ };
@@ -23,6 +23,8 @@ require('../_baseFor-cjs.js');
23
23
  require('../keysIn-cjs.js');
24
24
  require('../_isIterateeCall-cjs.js');
25
25
  require('../_setToString-cjs.js');
26
+ require('../useAtlantisI18n-cjs.js');
27
+ require('../AtlantisContext-cjs.js');
26
28
  require('../ButtonDismiss-cjs.js');
27
29
  require('../Button-cjs.js');
28
30
  require('react-router-dom');
@@ -21,6 +21,8 @@ import '../_baseFor-es.js';
21
21
  import '../keysIn-es.js';
22
22
  import '../_isIterateeCall-es.js';
23
23
  import '../_setToString-es.js';
24
+ import '../useAtlantisI18n-es.js';
25
+ import '../AtlantisContext-es.js';
24
26
  import '../ButtonDismiss-es.js';
25
27
  import '../Button-es.js';
26
28
  import 'react-router-dom';
@@ -7,6 +7,7 @@ var floatingUi_react = require('./floating-ui.react-cjs.js');
7
7
  var jobberHooks = require('@jobber/hooks');
8
8
  var floatingUi_reactDom = require('./floating-ui.react-dom-cjs.js');
9
9
  var AtlantisPortalContent = require('./AtlantisPortalContent-cjs.js');
10
+ var useAtlantisI18n = require('./useAtlantisI18n-cjs.js');
10
11
  var ButtonDismiss = require('./ButtonDismiss-cjs.js');
11
12
 
12
13
  const POPOVER_OFFSET = 10;
@@ -113,6 +114,13 @@ function PopoverWrapper({ children, setFloatingElement, UNSAFE_className, UNSAFE
113
114
  return React.createElement(floatingUi_react.FloatingPortal, null, content);
114
115
  }
115
116
 
117
+ const popoverMessages = useAtlantisI18n.defineMessages({
118
+ closeDialog: {
119
+ en: "Close dialog",
120
+ es: "Cerrar diálogo",
121
+ },
122
+ });
123
+
116
124
  function Popover({ onRequestClose, children, attachTo, open, preferredPlacement = "auto", UNSAFE_className, UNSAFE_style, }) {
117
125
  return (React.createElement(Popover.Provider, { attachTo: attachTo, open: open, preferredPlacement: preferredPlacement, UNSAFE_className: UNSAFE_className, UNSAFE_style: UNSAFE_style },
118
126
  React.createElement(Popover.DismissButton, { UNSAFE_className: UNSAFE_className, UNSAFE_style: UNSAFE_style, onClick: onRequestClose }),
@@ -153,7 +161,8 @@ Popover.DismissButton = function PopoverDismissButton(props) {
153
161
  const { UNSAFE_className, UNSAFE_style, children } = props, dismissButtonProps = tslib_es6.__rest(props, ["UNSAFE_className", "UNSAFE_style", "children"]);
154
162
  const popoverStyles = usePopoverStyles();
155
163
  const classes = classnames(popoverStyles.dismissButton, UNSAFE_className === null || UNSAFE_className === void 0 ? void 0 : UNSAFE_className.dismissButtonContainer);
156
- return (React.createElement("div", { className: classes, style: (_a = UNSAFE_style === null || UNSAFE_style === void 0 ? void 0 : UNSAFE_style.dismissButtonContainer) !== null && _a !== void 0 ? _a : {}, "data-testid": "ATL-Popover-Dismiss-Button-Container" }, children !== null && children !== void 0 ? children : (React.createElement(ButtonDismiss.ButtonDismiss, Object.assign({ ariaLabel: "Close dialog" }, dismissButtonProps)))));
164
+ const { t } = useAtlantisI18n.useAtlantisI18n(popoverMessages);
165
+ return (React.createElement("div", { className: classes, style: (_a = UNSAFE_style === null || UNSAFE_style === void 0 ? void 0 : UNSAFE_style.dismissButtonContainer) !== null && _a !== void 0 ? _a : {}, "data-testid": "ATL-Popover-Dismiss-Button-Container" }, children !== null && children !== void 0 ? children : (React.createElement(ButtonDismiss.ButtonDismiss, Object.assign({ ariaLabel: t("closeDialog") }, dismissButtonProps)))));
157
166
  };
158
167
 
159
168
  exports.Popover = Popover;
@@ -5,6 +5,7 @@ import { u as useFloating, F as FloatingPortal } from './floating-ui.react-es.js
5
5
  import { useRefocusOnActivator } from '@jobber/hooks';
6
6
  import { a as arrow, b as autoUpdate, o as offset, s as shift, l as limitShift, c as autoPlacement, f as flip } from './floating-ui.react-dom-es.js';
7
7
  import { A as AtlantisPortalContent } from './AtlantisPortalContent-es.js';
8
+ import { d as defineMessages, u as useAtlantisI18n } from './useAtlantisI18n-es.js';
8
9
  import { B as ButtonDismiss } from './ButtonDismiss-es.js';
9
10
 
10
11
  const POPOVER_OFFSET = 10;
@@ -111,6 +112,13 @@ function PopoverWrapper({ children, setFloatingElement, UNSAFE_className, UNSAFE
111
112
  return React__default.createElement(FloatingPortal, null, content);
112
113
  }
113
114
 
115
+ const popoverMessages = defineMessages({
116
+ closeDialog: {
117
+ en: "Close dialog",
118
+ es: "Cerrar diálogo",
119
+ },
120
+ });
121
+
114
122
  function Popover({ onRequestClose, children, attachTo, open, preferredPlacement = "auto", UNSAFE_className, UNSAFE_style, }) {
115
123
  return (React__default.createElement(Popover.Provider, { attachTo: attachTo, open: open, preferredPlacement: preferredPlacement, UNSAFE_className: UNSAFE_className, UNSAFE_style: UNSAFE_style },
116
124
  React__default.createElement(Popover.DismissButton, { UNSAFE_className: UNSAFE_className, UNSAFE_style: UNSAFE_style, onClick: onRequestClose }),
@@ -151,7 +159,8 @@ Popover.DismissButton = function PopoverDismissButton(props) {
151
159
  const { UNSAFE_className, UNSAFE_style, children } = props, dismissButtonProps = __rest(props, ["UNSAFE_className", "UNSAFE_style", "children"]);
152
160
  const popoverStyles = usePopoverStyles();
153
161
  const classes = classnames(popoverStyles.dismissButton, UNSAFE_className === null || UNSAFE_className === void 0 ? void 0 : UNSAFE_className.dismissButtonContainer);
154
- return (React__default.createElement("div", { className: classes, style: (_a = UNSAFE_style === null || UNSAFE_style === void 0 ? void 0 : UNSAFE_style.dismissButtonContainer) !== null && _a !== void 0 ? _a : {}, "data-testid": "ATL-Popover-Dismiss-Button-Container" }, children !== null && children !== void 0 ? children : (React__default.createElement(ButtonDismiss, Object.assign({ ariaLabel: "Close dialog" }, dismissButtonProps)))));
162
+ const { t } = useAtlantisI18n(popoverMessages);
163
+ return (React__default.createElement("div", { className: classes, style: (_a = UNSAFE_style === null || UNSAFE_style === void 0 ? void 0 : UNSAFE_style.dismissButtonContainer) !== null && _a !== void 0 ? _a : {}, "data-testid": "ATL-Popover-Dismiss-Button-Container" }, children !== null && children !== void 0 ? children : (React__default.createElement(ButtonDismiss, Object.assign({ ariaLabel: t("closeDialog") }, dismissButtonProps)))));
155
164
  };
156
165
 
157
166
  export { Popover as P, usePopoverStyles as a, usePopoverContext as u };
@@ -0,0 +1,20 @@
1
+ 'use strict';
2
+
3
+ var useAtlantisI18n = require('./useAtlantisI18n-cjs.js');
4
+
5
+ const commonMessages = useAtlantisI18n.defineMessages({
6
+ Loading: {
7
+ en: "Loading",
8
+ es: "Cargando",
9
+ },
10
+ Confirm: {
11
+ en: "Confirm",
12
+ es: "Confirmar",
13
+ },
14
+ Cancel: {
15
+ en: "Cancel",
16
+ es: "Cancelar",
17
+ },
18
+ });
19
+
20
+ exports.commonMessages = commonMessages;
@@ -0,0 +1,18 @@
1
+ import { d as defineMessages } from './useAtlantisI18n-es.js';
2
+
3
+ const commonMessages = defineMessages({
4
+ Loading: {
5
+ en: "Loading",
6
+ es: "Cargando",
7
+ },
8
+ Confirm: {
9
+ en: "Confirm",
10
+ es: "Confirmar",
11
+ },
12
+ Cancel: {
13
+ en: "Cancel",
14
+ es: "Cancelar",
15
+ },
16
+ });
17
+
18
+ export { commonMessages as c };
@@ -111,9 +111,9 @@ language should be direct and honest about the impact without being alarming.
111
111
 
112
112
  | Prop | Type | Required | Default | Description |
113
113
  |------|------|----------|---------|-------------|
114
- | `cancelLabel` | `string` | No | `Cancel` | Label for the cancel button. |
114
+ | `cancelLabel` | `string` | No | | Label for the cancel button. |
115
115
  | `children` | `ReactNode` | No | — | Child component. Not displayed if **message** prop is passed. |
116
- | `confirmLabel` | `string` | No | `Confirm` | Label for the confirm button. |
116
+ | `confirmLabel` | `string` | No | | Label for the confirm button. |
117
117
  | `message` | `string` | No | — | Text or rich text content for the body of the modal. Not displayed if **children** prop is passed. |
118
118
  | `onCancel` | `() => void` | No | — | Callback for when the cancel button is pressed. |
119
119
  | `onConfirm` | `() => void` | No | — | Callback for when the confirm button is pressed. |
@@ -230,7 +230,7 @@ window.HTMLElement.prototype.scrollIntoView = scrollIntoViewMock;
230
230
 
231
231
  | Prop | Type | Required | Default | Description |
232
232
  |------|------|----------|---------|-------------|
233
- | `ariaLabel` | `string` | No | `Open image in new tab` | Accessible label for the action, also used as the tooltip message. |
233
+ | `ariaLabel` | `string` | No | `"Open image in new tab"` | Accessible label for the action, also used as the tooltip message. |
234
234
 
235
235
  #### LightBox.Overlay
236
236
 
@@ -3809,4 +3809,4 @@ function useTransitionStyles(context, props) {
3809
3809
  };
3810
3810
  }
3811
3811
 
3812
- export { FloatingPortal as F, useFloatingParentNodeId as a, useFloatingNodeId as b, useDismiss as c, useInteractions as d, FloatingTree as e, FloatingNode as f, useRole as g, FloatingFocusManager as h, FloatingOverlay as i, useListNavigation as j, useClick as k, useTransitionStyles as l, FloatingArrow as m, useFloating as u };
3812
+ export { FloatingPortal as F, useFloatingParentNodeId as a, useFloatingNodeId as b, useDismiss as c, useInteractions as d, FloatingTree as e, FloatingNode as f, useListNavigation as g, useRole as h, FloatingFocusManager as i, FloatingOverlay as j, useClick as k, useTransitionStyles as l, FloatingArrow as m, useFloating as u };
package/dist/index.cjs CHANGED
@@ -135,6 +135,7 @@ require('./FilterPickerAction-cjs.js');
135
135
  require('./FilterPickerTrigger-cjs.js');
136
136
  require('./noop-cjs.js');
137
137
  require('./FilterPickerActivator-cjs.js');
138
+ require('./common.messages-cjs.js');
138
139
  require('./index-cjs.js');
139
140
  require('./DataList.module-cjs.js');
140
141
  require('./DataListTotalCount-cjs.js');
package/dist/index.mjs CHANGED
@@ -133,6 +133,7 @@ import './FilterPickerAction-es.js';
133
133
  import './FilterPickerTrigger-es.js';
134
134
  import './noop-es.js';
135
135
  import './FilterPickerActivator-es.js';
136
+ import './common.messages-es.js';
136
137
  import './index-es.js';
137
138
  import './DataList.module-es.js';
138
139
  import './DataListTotalCount-es.js';
@@ -1,24 +1,12 @@
1
1
  'use strict';
2
2
 
3
+ var common_messages = require('../../common.messages-cjs.js');
3
4
  var useAtlantisI18n = require('../../useAtlantisI18n-cjs.js');
4
5
  require('react');
5
6
  require('../../AtlantisContext-cjs.js');
6
7
 
7
- const commonMessages = useAtlantisI18n.defineMessages({
8
- Loading: {
9
- en: "Loading",
10
- es: "Cargando",
11
- },
12
- Confirm: {
13
- en: "Confirm",
14
- es: "Confirmar",
15
- },
16
- Cancel: {
17
- en: "Cancel",
18
- es: "Cancelar",
19
- },
20
- });
21
8
 
9
+
10
+ exports.commonMessages = common_messages.commonMessages;
22
11
  exports.defineMessages = useAtlantisI18n.defineMessages;
23
12
  exports.useAtlantisI18n = useAtlantisI18n.useAtlantisI18n;
24
- exports.commonMessages = commonMessages;
@@ -1,21 +1,4 @@
1
- import { d as defineMessages } from '../../useAtlantisI18n-es.js';
2
- export { u as useAtlantisI18n } from '../../useAtlantisI18n-es.js';
1
+ export { c as commonMessages } from '../../common.messages-es.js';
2
+ export { d as defineMessages, u as useAtlantisI18n } from '../../useAtlantisI18n-es.js';
3
3
  import 'react';
4
4
  import '../../AtlantisContext-es.js';
5
-
6
- const commonMessages = defineMessages({
7
- Loading: {
8
- en: "Loading",
9
- es: "Cargando",
10
- },
11
- Confirm: {
12
- en: "Confirm",
13
- es: "Confirmar",
14
- },
15
- Cancel: {
16
- en: "Cancel",
17
- es: "Cancelar",
18
- },
19
- });
20
-
21
- export { commonMessages, defineMessages };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jobber/components",
3
- "version": "9.1.0",
3
+ "version": "9.2.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",
@@ -545,5 +545,5 @@
545
545
  "> 1%",
546
546
  "IE 10"
547
547
  ],
548
- "gitHead": "e887305a950c2e207016a1b039df2e8e992acc45"
548
+ "gitHead": "93071542338ffaca3cd81bf6701a1ac8319e5341"
549
549
  }