@simplybusiness/mobius 6.1.1 → 6.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.
package/dist/cjs/index.js CHANGED
@@ -62,6 +62,7 @@ __export(index_exports, {
62
62
  Logo: () => Logo,
63
63
  LoqateAddressLookupService: () => LoqateAddressLookupService,
64
64
  MIN_MAX_ERROR: () => MIN_MAX_ERROR,
65
+ MaskedField: () => MaskedField,
65
66
  Modal: () => Modal2,
66
67
  NumberField: () => NumberField,
67
68
  Option: () => Option2,
@@ -2582,7 +2583,8 @@ var import_react37 = require("react");
2582
2583
  var DrawerContext = (0, import_react37.createContext)({
2583
2584
  onClose: () => {
2584
2585
  },
2585
- closeLabel: void 0
2586
+ closeLabel: void 0,
2587
+ headerId: void 0
2586
2588
  });
2587
2589
 
2588
2590
  // src/components/Drawer/Drawer.tsx
@@ -2611,7 +2613,8 @@ var Drawer = (0, import_react38.forwardRef)((props, ref) => {
2611
2613
  CSSVariable: TRANSITION_CSS_VARIABLE
2612
2614
  }
2613
2615
  });
2614
- const hiddenId = `screen-reader-announce-${(0, import_react38.useId)()}`;
2616
+ const hiddenId = `dialog-screen-reader-announce-${(0, import_react38.useId)()}`;
2617
+ const headerId = `dialog-header-${(0, import_react38.useId)()}`;
2615
2618
  const dialogClasses = (0, import_dedupe22.default)(
2616
2619
  "mobius",
2617
2620
  "mobius-drawer",
@@ -2627,9 +2630,10 @@ var Drawer = (0, import_react38.forwardRef)((props, ref) => {
2627
2630
  const contextValue = (0, import_react38.useMemo)(
2628
2631
  () => ({
2629
2632
  onClose: close,
2630
- closeLabel
2633
+ closeLabel,
2634
+ headerId
2631
2635
  }),
2632
- [close, closeLabel]
2636
+ [close, closeLabel, headerId]
2633
2637
  );
2634
2638
  return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)(
2635
2639
  "dialog",
@@ -2639,6 +2643,7 @@ var Drawer = (0, import_react38.forwardRef)((props, ref) => {
2639
2643
  onCancel: close,
2640
2644
  className: dialogClasses,
2641
2645
  "aria-describedby": hiddenId,
2646
+ "aria-labelledby": headerId,
2642
2647
  children: [
2643
2648
  /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(VisuallyHidden, { children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { id: hiddenId, children: announce }) }),
2644
2649
  /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(DrawerContext.Provider, { value: contextValue, children })
@@ -2651,8 +2656,8 @@ Drawer.displayName = "Drawer";
2651
2656
  // src/components/Drawer/useDrawer.ts
2652
2657
  var import_react39 = require("react");
2653
2658
  var useDrawer = () => {
2654
- const { onClose, closeLabel } = (0, import_react39.useContext)(DrawerContext);
2655
- return { onClose, closeLabel };
2659
+ const { onClose, closeLabel, headerId } = (0, import_react39.useContext)(DrawerContext);
2660
+ return { onClose, closeLabel, headerId };
2656
2661
  };
2657
2662
 
2658
2663
  // src/components/Drawer/Header.tsx
@@ -2661,9 +2666,9 @@ var import_icons8 = require("@simplybusiness/icons");
2661
2666
  var import_jsx_runtime29 = require("react/jsx-runtime");
2662
2667
  var Header = (0, import_react40.forwardRef)(
2663
2668
  ({ children, ...otherProps }, ref) => {
2664
- const { onClose, closeLabel } = useDrawer();
2669
+ const { onClose, closeLabel, headerId } = useDrawer();
2665
2670
  return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)("header", { ref, ...otherProps, className: "mobius-drawer__header", children: [
2666
- children,
2671
+ /* @__PURE__ */ (0, import_jsx_runtime29.jsx)("h2", { id: headerId, children }),
2667
2672
  /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(
2668
2673
  Button,
2669
2674
  {
@@ -3286,8 +3291,9 @@ Modal2.displayName = "Modal";
3286
3291
  // src/components/NumberField/NumberField.tsx
3287
3292
  var import_dedupe36 = __toESM(require("classnames/dedupe"));
3288
3293
  var import_react57 = require("react");
3294
+ var import_react58 = require("react");
3289
3295
  var import_jsx_runtime45 = require("react/jsx-runtime");
3290
- var NumberField = (0, import_react57.forwardRef)((props, ref) => {
3296
+ var NumberField = (0, import_react58.forwardRef)((props, ref) => {
3291
3297
  const {
3292
3298
  minValue,
3293
3299
  maxValue,
@@ -3297,6 +3303,14 @@ var NumberField = (0, import_react57.forwardRef)((props, ref) => {
3297
3303
  className,
3298
3304
  ...otherProps
3299
3305
  } = props;
3306
+ const focusedInputRef = (0, import_react57.useRef)(null);
3307
+ const wheelHandler = (0, import_react57.useCallback)((ev) => ev.preventDefault(), []);
3308
+ (0, import_react57.useEffect)(() => {
3309
+ return () => {
3310
+ focusedInputRef.current?.removeEventListener("wheel", wheelHandler);
3311
+ focusedInputRef.current = null;
3312
+ };
3313
+ }, [wheelHandler]);
3300
3314
  const containerClasses = (0, import_dedupe36.default)("mobius-number-field", className, {
3301
3315
  "--hide-spin-buttons": hideSpinButtons
3302
3316
  });
@@ -3309,10 +3323,33 @@ var NumberField = (0, import_react57.forwardRef)((props, ref) => {
3309
3323
  event.preventDefault();
3310
3324
  }
3311
3325
  };
3326
+ const {
3327
+ onFocus: customOnFocus,
3328
+ onBlur: customOnBlur,
3329
+ ...rest
3330
+ } = otherProps;
3331
+ const forwardedProps = {
3332
+ ...rest,
3333
+ onFocus: (e) => {
3334
+ const el = e.currentTarget;
3335
+ focusedInputRef.current?.removeEventListener("wheel", wheelHandler);
3336
+ focusedInputRef.current = el;
3337
+ el.addEventListener("wheel", wheelHandler, { passive: false });
3338
+ customOnFocus?.(e);
3339
+ },
3340
+ onBlur: (e) => {
3341
+ const el = e.currentTarget;
3342
+ el.removeEventListener("wheel", wheelHandler);
3343
+ if (focusedInputRef.current === el) {
3344
+ focusedInputRef.current = null;
3345
+ }
3346
+ customOnBlur?.(e);
3347
+ }
3348
+ };
3312
3349
  return /* @__PURE__ */ (0, import_jsx_runtime45.jsx)(
3313
3350
  TextField,
3314
3351
  {
3315
- ...otherProps,
3352
+ ...forwardedProps,
3316
3353
  className: containerClasses,
3317
3354
  onBeforeInput: handleBeforeInput,
3318
3355
  type: "number",
@@ -3327,9 +3364,9 @@ var NumberField = (0, import_react57.forwardRef)((props, ref) => {
3327
3364
  NumberField.displayName = "NumberField";
3328
3365
 
3329
3366
  // src/components/Option/Option.tsx
3330
- var import_react58 = require("react");
3367
+ var import_react59 = require("react");
3331
3368
  var import_jsx_runtime46 = require("react/jsx-runtime");
3332
- var Option2 = (0, import_react58.forwardRef)((props, ref) => {
3369
+ var Option2 = (0, import_react59.forwardRef)((props, ref) => {
3333
3370
  const { isDisabled, ...rest } = props;
3334
3371
  const mappedProps = {
3335
3372
  ...rest,
@@ -3341,7 +3378,7 @@ Option2.displayName = "Option";
3341
3378
 
3342
3379
  // src/components/PasswordField/PasswordField.tsx
3343
3380
  var import_dedupe37 = __toESM(require("classnames/dedupe"));
3344
- var import_react59 = require("react");
3381
+ var import_react60 = require("react");
3345
3382
 
3346
3383
  // src/components/PasswordField/ShowHideButton.tsx
3347
3384
  var import_jsx_runtime47 = require("react/jsx-runtime");
@@ -3365,12 +3402,12 @@ var ShowHideButton = ({
3365
3402
 
3366
3403
  // src/components/PasswordField/PasswordField.tsx
3367
3404
  var import_jsx_runtime48 = require("react/jsx-runtime");
3368
- var PasswordField = (0, import_react59.forwardRef)(
3405
+ var PasswordField = (0, import_react60.forwardRef)(
3369
3406
  ({ className, ...props }, ref) => {
3370
- const [show, setShow] = (0, import_react59.useState)(false);
3407
+ const [show, setShow] = (0, import_react60.useState)(false);
3371
3408
  const type = show ? "text" : "password";
3372
3409
  const classes = (0, import_dedupe37.default)("mobius-password-field", className);
3373
- const localRef = (0, import_react59.useRef)(null);
3410
+ const localRef = (0, import_react60.useRef)(null);
3374
3411
  const handleShowHideButtonClick = () => {
3375
3412
  setShow((oldShow) => !oldShow);
3376
3413
  localRef.current?.focus();
@@ -3390,30 +3427,30 @@ var PasswordField = (0, import_react59.forwardRef)(
3390
3427
  PasswordField.displayName = "PasswordField";
3391
3428
 
3392
3429
  // src/components/Popover/Popover.tsx
3393
- var import_react60 = require("@floating-ui/react");
3430
+ var import_react61 = require("@floating-ui/react");
3394
3431
  var import_icons11 = require("@simplybusiness/icons");
3395
3432
  var import_classnames3 = __toESM(require("classnames"));
3396
- var import_react61 = require("react");
3433
+ var import_react62 = require("react");
3397
3434
  var import_jsx_runtime49 = require("react/jsx-runtime");
3398
3435
  var OFFSET_FROM_CONTENT_DEFAULT = 10;
3399
3436
  var Popover = (props) => {
3400
3437
  const { trigger, children, onOpen, onClose, className } = props;
3401
- const arrowRef = (0, import_react61.useRef)(null);
3402
- const [isOpen, setIsOpen] = (0, import_react61.useState)(false);
3403
- const { refs, floatingStyles, context } = (0, import_react60.useFloating)({
3438
+ const arrowRef = (0, import_react62.useRef)(null);
3439
+ const [isOpen, setIsOpen] = (0, import_react62.useState)(false);
3440
+ const { refs, floatingStyles, context } = (0, import_react61.useFloating)({
3404
3441
  open: isOpen,
3405
3442
  onOpenChange: setIsOpen,
3406
- whileElementsMounted: import_react60.autoUpdate,
3443
+ whileElementsMounted: import_react61.autoUpdate,
3407
3444
  middleware: [
3408
- (0, import_react60.arrow)({
3445
+ (0, import_react61.arrow)({
3409
3446
  element: arrowRef
3410
3447
  }),
3411
- (0, import_react60.offset)(OFFSET_FROM_CONTENT_DEFAULT),
3412
- (0, import_react60.shift)(),
3413
- (0, import_react60.flip)()
3448
+ (0, import_react61.offset)(OFFSET_FROM_CONTENT_DEFAULT),
3449
+ (0, import_react61.shift)(),
3450
+ (0, import_react61.flip)()
3414
3451
  ]
3415
3452
  });
3416
- const dismiss = (0, import_react60.useDismiss)(context, {
3453
+ const dismiss = (0, import_react61.useDismiss)(context, {
3417
3454
  bubbles: true,
3418
3455
  outsidePress: (event) => {
3419
3456
  const toggle = refs.reference.current;
@@ -3424,7 +3461,7 @@ var Popover = (props) => {
3424
3461
  return true;
3425
3462
  }
3426
3463
  });
3427
- const { getReferenceProps, getFloatingProps } = (0, import_react60.useInteractions)([dismiss]);
3464
+ const { getReferenceProps, getFloatingProps } = (0, import_react61.useInteractions)([dismiss]);
3428
3465
  const containerClasses = (0, import_classnames3.default)(
3429
3466
  "mobius",
3430
3467
  "mobius-popover__container",
@@ -3439,7 +3476,7 @@ var Popover = (props) => {
3439
3476
  setIsOpen(true);
3440
3477
  onOpen?.();
3441
3478
  };
3442
- const triggerComponent = (0, import_react61.cloneElement)(trigger, {
3479
+ const triggerComponent = (0, import_react62.cloneElement)(trigger, {
3443
3480
  ref: refs.setReference,
3444
3481
  className: (0, import_classnames3.default)(
3445
3482
  trigger.props.className,
@@ -3487,7 +3524,7 @@ var Popover = (props) => {
3487
3524
  /* @__PURE__ */ (0, import_jsx_runtime49.jsx)("div", { className: "mobius-popover__body", children })
3488
3525
  ] }),
3489
3526
  /* @__PURE__ */ (0, import_jsx_runtime49.jsx)(
3490
- import_react60.FloatingArrow,
3527
+ import_react61.FloatingArrow,
3491
3528
  {
3492
3529
  ref: arrowRef,
3493
3530
  context,
@@ -3503,7 +3540,7 @@ var Popover = (props) => {
3503
3540
 
3504
3541
  // src/components/Progress/Progress.tsx
3505
3542
  var import_dedupe38 = __toESM(require("classnames/dedupe"));
3506
- var import_react62 = require("react");
3543
+ var import_react63 = require("react");
3507
3544
  var import_jsx_runtime50 = require("react/jsx-runtime");
3508
3545
  function warnAboutInvalidValues(value, minValue, maxValue) {
3509
3546
  if (minValue > maxValue) {
@@ -3545,9 +3582,9 @@ var getLabelComponent = (label, progressLabelId, showLabel) => {
3545
3582
  var DEFAULT_VALUE = 0;
3546
3583
  var DEFAULT_MIN_VALUE = 0;
3547
3584
  var DEFAULT_MAX_VALUE = 100;
3548
- var Progress = (0, import_react62.forwardRef)((props, ref) => {
3549
- const progressId = (0, import_react62.useId)();
3550
- const progressLabelId = (0, import_react62.useId)();
3585
+ var Progress = (0, import_react63.forwardRef)((props, ref) => {
3586
+ const progressId = (0, import_react63.useId)();
3587
+ const progressLabelId = (0, import_react63.useId)();
3551
3588
  const {
3552
3589
  id,
3553
3590
  label,
@@ -3603,9 +3640,9 @@ Progress.displayName = "Progress";
3603
3640
 
3604
3641
  // src/components/Radio/Radio.tsx
3605
3642
  var import_dedupe39 = __toESM(require("classnames/dedupe"));
3606
- var import_react63 = require("react");
3643
+ var import_react64 = require("react");
3607
3644
  var import_jsx_runtime51 = require("react/jsx-runtime");
3608
- var Radio = (0, import_react63.forwardRef)(
3645
+ var Radio = (0, import_react64.forwardRef)(
3609
3646
  (props, ref) => {
3610
3647
  const {
3611
3648
  children,
@@ -3627,10 +3664,10 @@ var Radio = (0, import_react63.forwardRef)(
3627
3664
  const isMultiline = label && children;
3628
3665
  const isControlled = selected !== void 0;
3629
3666
  const isChecked = isControlled ? selected === value : defaultChecked;
3630
- const hasIconFirst = (0, import_react63.useMemo)(() => {
3631
- if (!children || import_react63.Children.count(children) === 0) return false;
3632
- const firstChild = import_react63.Children.toArray(children)[0];
3633
- if (!(0, import_react63.isValidElement)(firstChild)) return false;
3667
+ const hasIconFirst = (0, import_react64.useMemo)(() => {
3668
+ if (!children || import_react64.Children.count(children) === 0) return false;
3669
+ const firstChild = import_react64.Children.toArray(children)[0];
3670
+ if (!(0, import_react64.isValidElement)(firstChild)) return false;
3634
3671
  const props2 = firstChild.props;
3635
3672
  return "icon" in props2 && props2.icon !== void 0;
3636
3673
  }, [children]);
@@ -3697,7 +3734,7 @@ Radio.displayName = "Radio";
3697
3734
 
3698
3735
  // src/components/Radio/RadioGroup.tsx
3699
3736
  var import_dedupe40 = __toESM(require("classnames/dedupe"));
3700
- var import_react64 = require("react");
3737
+ var import_react65 = require("react");
3701
3738
  var import_jsx_runtime52 = require("react/jsx-runtime");
3702
3739
  var getDefaultVal = (children, defaultValue) => {
3703
3740
  if (Array.isArray(children) && defaultValue) {
@@ -3707,7 +3744,7 @@ var getDefaultVal = (children, defaultValue) => {
3707
3744
  }
3708
3745
  return "";
3709
3746
  };
3710
- var RadioGroup = (0, import_react64.forwardRef)((props, ref) => {
3747
+ var RadioGroup = (0, import_react65.forwardRef)((props, ref) => {
3711
3748
  const {
3712
3749
  label,
3713
3750
  isDisabled = false,
@@ -3726,16 +3763,12 @@ var RadioGroup = (0, import_react64.forwardRef)((props, ref) => {
3726
3763
  ...rest
3727
3764
  } = props;
3728
3765
  const defaultSelected = getDefaultVal(children, value || defaultValue);
3729
- const [selected, setSelected] = (0, import_react64.useState)(defaultSelected);
3730
- const selectedRef = (0, import_react64.useRef)(null);
3731
- (0, import_react64.useEffect)(() => {
3766
+ const [selected, setSelected] = (0, import_react65.useState)(defaultSelected);
3767
+ (0, import_react65.useEffect)(() => {
3732
3768
  if (value !== void 0) {
3733
3769
  setSelected(value);
3734
3770
  }
3735
3771
  }, [value]);
3736
- (0, import_react64.useEffect)(() => {
3737
- selectedRef.current?.focus();
3738
- });
3739
3772
  const validationClasses = useValidationClasses({
3740
3773
  validationState,
3741
3774
  isInvalid
@@ -3757,15 +3790,15 @@ var RadioGroup = (0, import_react64.forwardRef)((props, ref) => {
3757
3790
  [`--is-${orientation}`]: true
3758
3791
  });
3759
3792
  const labelClasses = (0, import_dedupe40.default)(radioClasses, validationClasses);
3760
- const errorMessageId = (0, import_react64.useId)();
3761
- const defaultNameAttrId = (0, import_react64.useId)();
3793
+ const errorMessageId = (0, import_react65.useId)();
3794
+ const defaultNameAttrId = (0, import_react65.useId)();
3762
3795
  const nameAttribute = name || defaultNameAttrId;
3763
3796
  const shouldErrorMessageShow = errorMessage ? errorMessageId : void 0;
3764
3797
  const describedBy = spaceDelimitedList([
3765
3798
  shouldErrorMessageShow,
3766
3799
  props["aria-describedby"]
3767
3800
  ]);
3768
- const labelId = (0, import_react64.useId)();
3801
+ const labelId = (0, import_react65.useId)();
3769
3802
  return /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(
3770
3803
  "div",
3771
3804
  {
@@ -3784,10 +3817,9 @@ var RadioGroup = (0, import_react64.forwardRef)((props, ref) => {
3784
3817
  role: "radiogroup",
3785
3818
  children: /* @__PURE__ */ (0, import_jsx_runtime52.jsxs)(Stack, { gap: "xs", children: [
3786
3819
  label && /* @__PURE__ */ (0, import_jsx_runtime52.jsx)(Label, { htmlFor: name, id: labelId, className: labelClasses, children: label }),
3787
- /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("div", { className: radioWrapperClasses, children: import_react64.Children.map(children, (child) => {
3788
- if ((0, import_react64.isValidElement)(child)) {
3789
- const props2 = child.props;
3790
- return (0, import_react64.cloneElement)(
3820
+ /* @__PURE__ */ (0, import_jsx_runtime52.jsx)("div", { className: radioWrapperClasses, children: import_react65.Children.map(children, (child) => {
3821
+ if ((0, import_react65.isValidElement)(child)) {
3822
+ return (0, import_react65.cloneElement)(
3791
3823
  child,
3792
3824
  {
3793
3825
  orientation,
@@ -3798,8 +3830,7 @@ var RadioGroup = (0, import_react64.forwardRef)((props, ref) => {
3798
3830
  setSelected,
3799
3831
  isRequired,
3800
3832
  "aria-describedby": describedBy,
3801
- onChange,
3802
- ref: props2.value === selected ? selectedRef : void 0
3833
+ onChange
3803
3834
  }
3804
3835
  );
3805
3836
  }
@@ -3850,10 +3881,10 @@ Segment.displayName = "Segment";
3850
3881
 
3851
3882
  // src/components/Select/Select.tsx
3852
3883
  var import_dedupe43 = __toESM(require("classnames/dedupe"));
3853
- var import_react65 = require("react");
3884
+ var import_react66 = require("react");
3854
3885
  var import_icons12 = require("@simplybusiness/icons");
3855
3886
  var import_jsx_runtime55 = require("react/jsx-runtime");
3856
- var Select = (0, import_react65.forwardRef)((props, ref) => {
3887
+ var Select = (0, import_react66.forwardRef)((props, ref) => {
3857
3888
  const {
3858
3889
  label,
3859
3890
  onChange,
@@ -3894,7 +3925,7 @@ var Select = (0, import_react65.forwardRef)((props, ref) => {
3894
3925
  otherProps.className
3895
3926
  );
3896
3927
  const iconClasses = (0, import_dedupe43.default)("mobius-select__icon", sharedClasses);
3897
- const errorMessageId = (0, import_react65.useId)();
3928
+ const errorMessageId = (0, import_react66.useId)();
3898
3929
  const shouldErrorMessageShow = errorMessage ? errorMessageId : void 0;
3899
3930
  const describedBy = spaceDelimitedList([
3900
3931
  shouldErrorMessageShow,
@@ -3932,10 +3963,10 @@ Select.displayName = "Select";
3932
3963
 
3933
3964
  // src/components/Slider/Slider.tsx
3934
3965
  var import_dedupe44 = __toESM(require("classnames/dedupe"));
3935
- var import_react67 = require("react");
3966
+ var import_react68 = require("react");
3936
3967
 
3937
3968
  // src/components/Slider/helpers.ts
3938
- var import_react66 = require("react");
3969
+ var import_react67 = require("react");
3939
3970
  function numberFormatter(value, formatOptions, locale = navigator.languages?.[0] || "en-GB") {
3940
3971
  if (!formatOptions) {
3941
3972
  return value?.toString() || "";
@@ -3965,11 +3996,11 @@ var Slider = (props) => {
3965
3996
  formatOptions,
3966
3997
  isDisabled = false
3967
3998
  } = props;
3968
- const trackRef = (0, import_react67.useRef)(null);
3969
- const [currentValue, setCurrentValue] = (0, import_react67.useState)(
3999
+ const trackRef = (0, import_react68.useRef)(null);
4000
+ const [currentValue, setCurrentValue] = (0, import_react68.useState)(
3970
4001
  value || defaultValue || 0
3971
4002
  );
3972
- const [isDragging, setIsDraggging] = (0, import_react67.useState)(false);
4003
+ const [isDragging, setIsDraggging] = (0, import_react68.useState)(false);
3973
4004
  const { labelProps, fieldProps } = useLabel({
3974
4005
  id,
3975
4006
  label,
@@ -4031,14 +4062,14 @@ var Slider = (props) => {
4031
4062
  };
4032
4063
 
4033
4064
  // src/components/SVG/SVG.tsx
4034
- var import_react68 = require("react");
4065
+ var import_react69 = require("react");
4035
4066
  var import_dedupe45 = __toESM(require("classnames/dedupe"));
4036
4067
  var import_jsx_runtime57 = require("react/jsx-runtime");
4037
- var SVG = (0, import_react68.forwardRef)(
4068
+ var SVG = (0, import_react69.forwardRef)(
4038
4069
  (props, ref) => {
4039
4070
  const { children, className, ...otherProps } = props;
4040
4071
  const classes = (0, import_dedupe45.default)("mobius", "mobius-svg", className);
4041
- const svgNode = import_react68.Children.only(children);
4072
+ const svgNode = import_react69.Children.only(children);
4042
4073
  const { children: svgChildren, viewBox, xmlns } = svgNode.props;
4043
4074
  return /* @__PURE__ */ (0, import_jsx_runtime57.jsx)(
4044
4075
  "svg",
@@ -4056,10 +4087,10 @@ var SVG = (0, import_react68.forwardRef)(
4056
4087
  SVG.displayName = "SVG";
4057
4088
 
4058
4089
  // src/components/Switch/Switch.tsx
4059
- var import_react69 = require("react");
4090
+ var import_react70 = require("react");
4060
4091
  var import_dedupe46 = __toESM(require("classnames/dedupe"));
4061
4092
  var import_jsx_runtime58 = require("react/jsx-runtime");
4062
- var Switch = (0, import_react69.forwardRef)((props, ref) => {
4093
+ var Switch = (0, import_react70.forwardRef)((props, ref) => {
4063
4094
  const {
4064
4095
  checked = false,
4065
4096
  className,
@@ -4067,8 +4098,8 @@ var Switch = (0, import_react69.forwardRef)((props, ref) => {
4067
4098
  isDisabled = false,
4068
4099
  ...otherProps
4069
4100
  } = props;
4070
- const [enabled, setEnabled] = (0, import_react69.useState)(checked);
4071
- (0, import_react69.useEffect)(() => {
4101
+ const [enabled, setEnabled] = (0, import_react70.useState)(checked);
4102
+ (0, import_react70.useEffect)(() => {
4072
4103
  setEnabled(checked);
4073
4104
  }, [checked]);
4074
4105
  const classes = (0, import_dedupe46.default)(
@@ -4105,10 +4136,10 @@ var Switch = (0, import_react69.forwardRef)((props, ref) => {
4105
4136
  Switch.displayName = "Switch";
4106
4137
 
4107
4138
  // src/components/Table/Table.tsx
4108
- var import_react70 = require("react");
4139
+ var import_react71 = require("react");
4109
4140
  var import_dedupe47 = __toESM(require("classnames/dedupe"));
4110
4141
  var import_jsx_runtime59 = require("react/jsx-runtime");
4111
- var Table = (0, import_react70.forwardRef)(
4142
+ var Table = (0, import_react71.forwardRef)(
4112
4143
  (props, ref) => {
4113
4144
  const classes = (0, import_dedupe47.default)("mobius", "mobius-table", props.className);
4114
4145
  return /* @__PURE__ */ (0, import_jsx_runtime59.jsx)("table", { ref, ...props, className: classes });
@@ -4117,40 +4148,40 @@ var Table = (0, import_react70.forwardRef)(
4117
4148
  Table.displayName = "Table";
4118
4149
 
4119
4150
  // src/components/Table/Head.tsx
4120
- var import_react71 = require("react");
4151
+ var import_react72 = require("react");
4121
4152
  var import_dedupe48 = __toESM(require("classnames/dedupe"));
4122
4153
  var import_jsx_runtime60 = require("react/jsx-runtime");
4123
- var Head = (0, import_react71.forwardRef)((props, ref) => {
4154
+ var Head = (0, import_react72.forwardRef)((props, ref) => {
4124
4155
  const classes = (0, import_dedupe48.default)("mobius", "mobius-table__head", props.className);
4125
4156
  return /* @__PURE__ */ (0, import_jsx_runtime60.jsx)("thead", { ref, ...props, className: classes });
4126
4157
  });
4127
4158
  Head.displayName = "Table.Head";
4128
4159
 
4129
4160
  // src/components/Table/Body.tsx
4130
- var import_react72 = require("react");
4161
+ var import_react73 = require("react");
4131
4162
  var import_dedupe49 = __toESM(require("classnames/dedupe"));
4132
4163
  var import_jsx_runtime61 = require("react/jsx-runtime");
4133
- var Body = (0, import_react72.forwardRef)((props, ref) => {
4164
+ var Body = (0, import_react73.forwardRef)((props, ref) => {
4134
4165
  const classes = (0, import_dedupe49.default)("mobius", "mobius-table__body", props.className);
4135
4166
  return /* @__PURE__ */ (0, import_jsx_runtime61.jsx)("tbody", { ref, ...props, className: classes });
4136
4167
  });
4137
4168
  Body.displayName = "Table.Body";
4138
4169
 
4139
4170
  // src/components/Table/Foot.tsx
4140
- var import_react73 = require("react");
4171
+ var import_react74 = require("react");
4141
4172
  var import_dedupe50 = __toESM(require("classnames/dedupe"));
4142
4173
  var import_jsx_runtime62 = require("react/jsx-runtime");
4143
- var Foot = (0, import_react73.forwardRef)((props, ref) => {
4174
+ var Foot = (0, import_react74.forwardRef)((props, ref) => {
4144
4175
  const classes = (0, import_dedupe50.default)("mobius", "mobius-table__foot", props.className);
4145
4176
  return /* @__PURE__ */ (0, import_jsx_runtime62.jsx)("tfoot", { ref, ...props, className: classes });
4146
4177
  });
4147
4178
  Foot.displayName = "Table.Foot";
4148
4179
 
4149
4180
  // src/components/Table/Row.tsx
4150
- var import_react74 = require("react");
4181
+ var import_react75 = require("react");
4151
4182
  var import_dedupe51 = __toESM(require("classnames/dedupe"));
4152
4183
  var import_jsx_runtime63 = require("react/jsx-runtime");
4153
- var Row = (0, import_react74.forwardRef)(
4184
+ var Row = (0, import_react75.forwardRef)(
4154
4185
  (props, ref) => {
4155
4186
  const classes = (0, import_dedupe51.default)("mobius", "mobius-table__row", props.className);
4156
4187
  return /* @__PURE__ */ (0, import_jsx_runtime63.jsx)("tr", { ref, ...props, className: classes });
@@ -4159,10 +4190,10 @@ var Row = (0, import_react74.forwardRef)(
4159
4190
  Row.displayName = "Table.Row";
4160
4191
 
4161
4192
  // src/components/Table/HeaderCell.tsx
4162
- var import_react75 = require("react");
4193
+ var import_react76 = require("react");
4163
4194
  var import_dedupe52 = __toESM(require("classnames/dedupe"));
4164
4195
  var import_jsx_runtime64 = require("react/jsx-runtime");
4165
- var HeaderCell = (0, import_react75.forwardRef)((props, ref) => {
4196
+ var HeaderCell = (0, import_react76.forwardRef)((props, ref) => {
4166
4197
  const classes = (0, import_dedupe52.default)(
4167
4198
  "mobius",
4168
4199
  "mobius-table__head-cell",
@@ -4173,10 +4204,10 @@ var HeaderCell = (0, import_react75.forwardRef)((props, ref) => {
4173
4204
  HeaderCell.displayName = "Table.HeaderCell";
4174
4205
 
4175
4206
  // src/components/Table/Cell.tsx
4176
- var import_react76 = require("react");
4207
+ var import_react77 = require("react");
4177
4208
  var import_dedupe53 = __toESM(require("classnames/dedupe"));
4178
4209
  var import_jsx_runtime65 = require("react/jsx-runtime");
4179
- var Cell = (0, import_react76.forwardRef)(
4210
+ var Cell = (0, import_react77.forwardRef)(
4180
4211
  (props, ref) => {
4181
4212
  const classes = (0, import_dedupe53.default)(
4182
4213
  "mobius",
@@ -4201,13 +4232,13 @@ Table2.displayName = "Table";
4201
4232
 
4202
4233
  // src/components/TextArea/TextArea.tsx
4203
4234
  var import_dedupe55 = __toESM(require("classnames/dedupe"));
4204
- var import_react78 = require("react");
4235
+ var import_react79 = require("react");
4205
4236
 
4206
4237
  // src/components/TextAreaInput/TextAreaInput.tsx
4207
4238
  var import_dedupe54 = __toESM(require("classnames/dedupe"));
4208
- var import_react77 = require("react");
4239
+ var import_react78 = require("react");
4209
4240
  var import_jsx_runtime66 = require("react/jsx-runtime");
4210
- var TextAreaInput = (0, import_react77.forwardRef)((props, ref) => {
4241
+ var TextAreaInput = (0, import_react78.forwardRef)((props, ref) => {
4211
4242
  const { isSelected, isDisabled, isReadOnly, isRequired, ...otherProps } = props;
4212
4243
  const classes = (0, import_dedupe54.default)(
4213
4244
  "mobius",
@@ -4234,7 +4265,7 @@ TextAreaInput.displayName = "TextAreaInput";
4234
4265
 
4235
4266
  // src/components/TextArea/TextArea.tsx
4236
4267
  var import_jsx_runtime67 = require("react/jsx-runtime");
4237
- var TextArea = (0, import_react78.forwardRef)((props, ref) => {
4268
+ var TextArea = (0, import_react79.forwardRef)((props, ref) => {
4238
4269
  const {
4239
4270
  isDisabled,
4240
4271
  className,
@@ -4279,10 +4310,10 @@ var TextArea = (0, import_react78.forwardRef)((props, ref) => {
4279
4310
  TextArea.displayName = "TextArea";
4280
4311
 
4281
4312
  // src/components/Title/Title.tsx
4282
- var import_react79 = require("react");
4313
+ var import_react80 = require("react");
4283
4314
  var import_dedupe56 = __toESM(require("classnames/dedupe"));
4284
4315
  var import_jsx_runtime68 = require("react/jsx-runtime");
4285
- var Title = (0, import_react79.forwardRef)(
4316
+ var Title = (0, import_react80.forwardRef)(
4286
4317
  (props, ref) => {
4287
4318
  const {
4288
4319
  elementType: Element = "div",
@@ -4304,7 +4335,7 @@ Title.displayName = "Title";
4304
4335
 
4305
4336
  // src/components/Trust/Trust.tsx
4306
4337
  var import_dedupe57 = __toESM(require("classnames/dedupe"));
4307
- var import_react80 = require("react");
4338
+ var import_react81 = require("react");
4308
4339
 
4309
4340
  // src/components/Trust/constants.ts
4310
4341
  var REQUIRED_TRUSTPILOT_CLASS_NAME = "trustpilot-widget";
@@ -4363,7 +4394,7 @@ var TRUSTPILOT_WIDGET = {
4363
4394
 
4364
4395
  // src/components/Trust/Trust.tsx
4365
4396
  var import_jsx_runtime69 = require("react/jsx-runtime");
4366
- var Trust = (0, import_react80.forwardRef)((props, ref) => {
4397
+ var Trust = (0, import_react81.forwardRef)((props, ref) => {
4367
4398
  const {
4368
4399
  elementType: Element = "div",
4369
4400
  variant,
@@ -4374,8 +4405,8 @@ var Trust = (0, import_react80.forwardRef)((props, ref) => {
4374
4405
  stars,
4375
4406
  className
4376
4407
  } = props;
4377
- const [isMounted, setIsMounted] = (0, import_react80.useState)(false);
4378
- const trustRef = (0, import_react80.useRef)(null);
4408
+ const [isMounted, setIsMounted] = (0, import_react81.useState)(false);
4409
+ const trustRef = (0, import_react81.useRef)(null);
4379
4410
  const {
4380
4411
  templateId,
4381
4412
  className: variantClassName,
@@ -4401,13 +4432,13 @@ var Trust = (0, import_react80.forwardRef)((props, ref) => {
4401
4432
  },
4402
4433
  className
4403
4434
  );
4404
- (0, import_react80.useEffect)(() => {
4435
+ (0, import_react81.useEffect)(() => {
4405
4436
  const hasTrustpilotLoaded = trustRef.current && window?.Trustpilot && window?.Trustpilot.loadFromElement;
4406
4437
  if (isMounted && hasTrustpilotLoaded) {
4407
4438
  window.Trustpilot.loadFromElement(trustRef.current, true);
4408
4439
  }
4409
4440
  }, [isMounted]);
4410
- (0, import_react80.useEffect)(() => {
4441
+ (0, import_react81.useEffect)(() => {
4411
4442
  setIsMounted(true);
4412
4443
  }, []);
4413
4444
  if (!isMounted) return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("div", { style: styles });
@@ -4433,10 +4464,10 @@ var Trust = (0, import_react80.forwardRef)((props, ref) => {
4433
4464
  });
4434
4465
 
4435
4466
  // src/components/ExpandableText/ExpandableText.tsx
4436
- var import_react81 = require("react");
4467
+ var import_react82 = require("react");
4437
4468
  var import_dedupe58 = __toESM(require("classnames/dedupe"));
4438
4469
  var import_jsx_runtime70 = require("react/jsx-runtime");
4439
- var ExpandableText = (0, import_react81.forwardRef)((props, ref) => {
4470
+ var ExpandableText = (0, import_react82.forwardRef)((props, ref) => {
4440
4471
  const {
4441
4472
  text,
4442
4473
  maxLines = 3,
@@ -4449,14 +4480,14 @@ var ExpandableText = (0, import_react81.forwardRef)((props, ref) => {
4449
4480
  onToggle,
4450
4481
  ...otherProps
4451
4482
  } = props;
4452
- const [isExpanded, setIsExpanded] = (0, import_react81.useState)(false);
4453
- const [isCollapsed, setIsCollapsed] = (0, import_react81.useState)(false);
4454
- const textRef = (0, import_react81.useRef)(null);
4483
+ const [isExpanded, setIsExpanded] = (0, import_react82.useState)(false);
4484
+ const [isCollapsed, setIsCollapsed] = (0, import_react82.useState)(false);
4485
+ const textRef = (0, import_react82.useRef)(null);
4455
4486
  const { down } = useBreakpoint();
4456
- const baseId = (0, import_react81.useId)();
4487
+ const baseId = (0, import_react82.useId)();
4457
4488
  const expandButtonId = `expandable-text-expand-${baseId}`;
4458
4489
  const shouldCollapse = breakpoint ? down(breakpoint) : true;
4459
- (0, import_react81.useEffect)(() => {
4490
+ (0, import_react82.useEffect)(() => {
4460
4491
  if (!shouldCollapse || !textRef.current) {
4461
4492
  setIsCollapsed(false);
4462
4493
  return;
@@ -4517,3 +4548,64 @@ var ExpandableText = (0, import_react81.forwardRef)((props, ref) => {
4517
4548
  );
4518
4549
  });
4519
4550
  ExpandableText.displayName = "ExpandableText";
4551
+
4552
+ // src/components/MaskedField/MaskedField.tsx
4553
+ var import_react83 = require("react");
4554
+ var import_react_imask = require("react-imask");
4555
+ var import_jsx_runtime71 = require("react/jsx-runtime");
4556
+ var MaskedField = (0, import_react83.forwardRef)((props, ref) => {
4557
+ const {
4558
+ mask,
4559
+ value,
4560
+ defaultValue,
4561
+ useMaskedValue = false,
4562
+ onChange,
4563
+ "aria-describedby": ariaDescribedBy,
4564
+ "aria-label": ariaLabel,
4565
+ ...textFieldProps
4566
+ } = props;
4567
+ const { ref: maskRef, value: maskedValue } = (0, import_react_imask.useIMask)(mask, {
4568
+ defaultValue,
4569
+ onAccept: (value2, maskRef2) => {
4570
+ if (onChange) {
4571
+ const valueToEmit = useMaskedValue ? value2 : maskRef2.unmaskedValue;
4572
+ const syntheticEvent = {
4573
+ target: {
4574
+ value: valueToEmit,
4575
+ name: textFieldProps.name
4576
+ },
4577
+ currentTarget: {
4578
+ value: valueToEmit,
4579
+ name: textFieldProps.name
4580
+ }
4581
+ };
4582
+ onChange(syntheticEvent);
4583
+ }
4584
+ }
4585
+ });
4586
+ const inputRef = (node) => {
4587
+ if (maskRef) {
4588
+ maskRef.current = node;
4589
+ }
4590
+ if (ref) {
4591
+ if (typeof ref === "function") {
4592
+ ref(node);
4593
+ } else {
4594
+ ref.current = node;
4595
+ }
4596
+ }
4597
+ };
4598
+ return /* @__PURE__ */ (0, import_jsx_runtime71.jsx)(
4599
+ TextField,
4600
+ {
4601
+ ...textFieldProps,
4602
+ ref: inputRef,
4603
+ value: maskedValue,
4604
+ onChange: () => {
4605
+ },
4606
+ "aria-describedby": ariaDescribedBy,
4607
+ "aria-label": ariaLabel
4608
+ }
4609
+ );
4610
+ });
4611
+ MaskedField.displayName = "MaskedField";