@ornikar/kitt-universal 9.34.2 → 9.36.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 (76) hide show
  1. package/dist/definitions/forms/Checkbox/Checkbox.d.ts +6 -5
  2. package/dist/definitions/forms/Checkbox/Checkbox.d.ts.map +1 -1
  3. package/dist/definitions/forms/Checkbox/utils/getBackgroundColor.d.ts +10 -0
  4. package/dist/definitions/forms/Checkbox/utils/getBackgroundColor.d.ts.map +1 -0
  5. package/dist/definitions/forms/Checkbox/utils/getBorderColor.d.ts +10 -0
  6. package/dist/definitions/forms/Checkbox/utils/getBorderColor.d.ts.map +1 -0
  7. package/dist/definitions/forms/DatePicker/DatePicker.d.ts +5 -2
  8. package/dist/definitions/forms/DatePicker/DatePicker.d.ts.map +1 -1
  9. package/dist/definitions/forms/DatePicker/components/InputPart.d.ts +1 -0
  10. package/dist/definitions/forms/DatePicker/components/InputPart.d.ts.map +1 -1
  11. package/dist/definitions/forms/DatePicker/components/KeyboardDatePicker.d.ts +5 -2
  12. package/dist/definitions/forms/DatePicker/components/KeyboardDatePicker.d.ts.map +1 -1
  13. package/dist/definitions/forms/DatePicker/components/NativeUIDatePicker/DatePickerAndroid.d.ts +3 -2
  14. package/dist/definitions/forms/DatePicker/components/NativeUIDatePicker/DatePickerAndroid.d.ts.map +1 -1
  15. package/dist/definitions/forms/DatePicker/components/NativeUIDatePicker/DefaultNativeUIDatePicker.d.ts +3 -2
  16. package/dist/definitions/forms/DatePicker/components/NativeUIDatePicker/DefaultNativeUIDatePicker.d.ts.map +1 -1
  17. package/dist/definitions/forms/DatePicker/components/NativeUIDatePicker/NativeUIDatePicker.d.ts +3 -2
  18. package/dist/definitions/forms/DatePicker/components/NativeUIDatePicker/NativeUIDatePicker.d.ts.map +1 -1
  19. package/dist/definitions/forms/DatePicker/components/PressableDateInputs.d.ts +3 -2
  20. package/dist/definitions/forms/DatePicker/components/PressableDateInputs.d.ts.map +1 -1
  21. package/dist/definitions/forms/InputEmail/InputEmail.d.ts +3 -2
  22. package/dist/definitions/forms/InputEmail/InputEmail.d.ts.map +1 -1
  23. package/dist/definitions/forms/InputPassword/InputPassword.d.ts +3 -2
  24. package/dist/definitions/forms/InputPassword/InputPassword.d.ts.map +1 -1
  25. package/dist/definitions/forms/InputPhone/InputPhone.d.ts +3 -2
  26. package/dist/definitions/forms/InputPhone/InputPhone.d.ts.map +1 -1
  27. package/dist/definitions/forms/InputText/InputText.d.ts +1 -1
  28. package/dist/definitions/forms/InputText/InputText.d.ts.map +1 -1
  29. package/dist/definitions/forms/Radio/InnerCircle.d.ts +7 -0
  30. package/dist/definitions/forms/Radio/InnerCircle.d.ts.map +1 -0
  31. package/dist/definitions/forms/Radio/OuterCircle.d.ts +12 -0
  32. package/dist/definitions/forms/Radio/OuterCircle.d.ts.map +1 -0
  33. package/dist/definitions/forms/Radio/Radio.d.ts +5 -4
  34. package/dist/definitions/forms/Radio/Radio.d.ts.map +1 -1
  35. package/dist/definitions/forms/Radio/utils/getBackgroundColor.d.ts +10 -0
  36. package/dist/definitions/forms/Radio/utils/getBackgroundColor.d.ts.map +1 -0
  37. package/dist/definitions/forms/Radio/utils/getBorderColor.d.ts +10 -0
  38. package/dist/definitions/forms/Radio/utils/getBorderColor.d.ts.map +1 -0
  39. package/dist/definitions/forms/TextArea/TextArea.d.ts +3 -2
  40. package/dist/definitions/forms/TextArea/TextArea.d.ts.map +1 -1
  41. package/dist/definitions/native-base/KittNativeBaseProvider.d.ts +284 -147
  42. package/dist/definitions/native-base/KittNativeBaseProvider.d.ts.map +1 -1
  43. package/dist/definitions/themes/default.d.ts +29 -4
  44. package/dist/definitions/themes/default.d.ts.map +1 -1
  45. package/dist/definitions/themes/late-ocean/checkbox.d.ts +29 -4
  46. package/dist/definitions/themes/late-ocean/checkbox.d.ts.map +1 -1
  47. package/dist/definitions/themes/late-ocean/forms.d.ts +29 -4
  48. package/dist/definitions/themes/late-ocean/forms.d.ts.map +1 -1
  49. package/dist/definitions/themes/late-ocean/radio.d.ts +13 -0
  50. package/dist/definitions/themes/late-ocean/radio.d.ts.map +1 -1
  51. package/dist/index-browser-all.es.android.js +440 -190
  52. package/dist/index-browser-all.es.android.js.map +1 -1
  53. package/dist/index-browser-all.es.ios.js +440 -190
  54. package/dist/index-browser-all.es.ios.js.map +1 -1
  55. package/dist/index-browser-all.es.js +440 -190
  56. package/dist/index-browser-all.es.js.map +1 -1
  57. package/dist/index-browser-all.es.web.js +412 -180
  58. package/dist/index-browser-all.es.web.js.map +1 -1
  59. package/dist/index-node-14.17.cjs.js +433 -172
  60. package/dist/index-node-14.17.cjs.js.map +1 -1
  61. package/dist/index-node-14.17.cjs.web.js +408 -156
  62. package/dist/index-node-14.17.cjs.web.js.map +1 -1
  63. package/dist/linaria-themes-browser-all.es.android.js +44 -6
  64. package/dist/linaria-themes-browser-all.es.android.js.map +1 -1
  65. package/dist/linaria-themes-browser-all.es.ios.js +44 -6
  66. package/dist/linaria-themes-browser-all.es.ios.js.map +1 -1
  67. package/dist/linaria-themes-browser-all.es.js +44 -6
  68. package/dist/linaria-themes-browser-all.es.js.map +1 -1
  69. package/dist/linaria-themes-browser-all.es.web.js +44 -6
  70. package/dist/linaria-themes-browser-all.es.web.js.map +1 -1
  71. package/dist/linaria-themes-node-14.17.cjs.js +44 -6
  72. package/dist/linaria-themes-node-14.17.cjs.js.map +1 -1
  73. package/dist/linaria-themes-node-14.17.cjs.web.js +44 -6
  74. package/dist/linaria-themes-node-14.17.cjs.web.js.map +1 -1
  75. package/dist/tsbuildinfo +1 -1
  76. package/package.json +2 -2
@@ -2663,11 +2663,36 @@ const checkbox = {
2663
2663
  height: 20,
2664
2664
  width: 20,
2665
2665
  iconSize: 14,
2666
- borderColor: colors.separator,
2667
- backgroundColor: colors.uiBackgroundLight,
2668
- checkedBorderColor: colors.primary,
2669
- checkedBackgroundColor: colors.primary,
2670
- markColor: colors.uiBackgroundLight
2666
+ markColor: colors.uiBackgroundLight,
2667
+ textSpacing: 10,
2668
+ default: {
2669
+ borderColor: colors.separator,
2670
+ backgroundColor: colors.uiBackgroundLight
2671
+ },
2672
+ checked: {
2673
+ borderColor: colors.primary,
2674
+ backgroundColor: colors.primary
2675
+ },
2676
+ focus: {
2677
+ borderColor: colors.primary,
2678
+ backgroundColor: colors.uiBackgroundLight
2679
+ },
2680
+ hover: {
2681
+ borderColor: colors.primary,
2682
+ backgroundColor: colors.uiBackgroundLight
2683
+ },
2684
+ pressed: {
2685
+ borderColor: colors.primary,
2686
+ backgroundColor: colors.uiBackgroundLight
2687
+ },
2688
+ disabled: {
2689
+ borderColor: colors.separator,
2690
+ backgroundColor: colors.disabled
2691
+ },
2692
+ transition: {
2693
+ duration: '200ms',
2694
+ timingFunction: 'ease-out'
2695
+ }
2671
2696
  };
2672
2697
 
2673
2698
  const datePicker = {
@@ -2859,18 +2884,31 @@ const inputTag = {
2859
2884
  const radio = {
2860
2885
  size: 18,
2861
2886
  unchecked: {
2862
- backgroundColor: colors.uiBackgroundLight,
2863
2887
  borderWidth: 2,
2888
+ backgroundColor: colors.uiBackgroundLight,
2864
2889
  borderColor: lateOceanColorPalette.black200
2865
2890
  },
2866
2891
  checked: {
2867
2892
  backgroundColor: colors.primary,
2893
+ borderColor: colors.transparent,
2868
2894
  innerSize: 5,
2869
2895
  innerBackgroundColor: colors.uiBackgroundLight
2870
2896
  },
2897
+ hover: {
2898
+ backgroundColor: colors.uiBackgroundLight,
2899
+ borderColor: colors.primary
2900
+ },
2901
+ pressed: {
2902
+ backgroundColor: colors.uiBackgroundLight,
2903
+ borderColor: colors.primary
2904
+ },
2871
2905
  disabled: {
2872
2906
  backgroundColor: colors.disabled,
2873
2907
  borderColor: colors.separator
2908
+ },
2909
+ transition: {
2910
+ duration: '200ms',
2911
+ timingFunction: 'ease-out'
2874
2912
  }
2875
2913
  };
2876
2914
 
@@ -3298,75 +3336,121 @@ function useKittTheme() {
3298
3336
  }, [dimensions]);
3299
3337
  }
3300
3338
 
3301
- const CheckboxAndLabelPressableWrapper = /*#__PURE__*/styled__default.Pressable.withConfig({
3302
- displayName: "Checkbox__CheckboxAndLabelPressableWrapper",
3303
- componentId: "kitt-universal__sc-1sav1n6-0"
3304
- })(["display:flex;flex-direction:row;"]);
3305
- const CheckboxContainer = /*#__PURE__*/styled__default.View.withConfig({
3306
- displayName: "Checkbox__CheckboxContainer",
3307
- componentId: "kitt-universal__sc-1sav1n6-1"
3308
- })(["display:flex;flex-direction:row;align-items:center;justify-content:center;height:", "px;width:", "px;position:relative;border-radius:", "px;", " margin-right:", ";"], ({
3309
- theme
3310
- }) => theme.kitt.forms.checkbox.height, ({
3311
- theme
3312
- }) => theme.kitt.forms.checkbox.width, ({
3313
- theme
3314
- }) => theme.kitt.forms.checkbox.borderRadius, ({
3315
- $isChecked,
3316
- theme
3317
- }) => {
3318
- const {
3319
- checkedBackgroundColor,
3320
- checkedBorderColor,
3321
- borderColor,
3322
- borderWidth,
3323
- backgroundColor
3324
- } = theme.kitt.forms.checkbox;
3325
- if ($isChecked) {
3326
- return styled.css(["background-color:", ";border:", ";"], checkedBackgroundColor, `${borderWidth}px solid ${checkedBorderColor}`);
3327
- }
3328
- return styled.css(["background-color:", ";border:", ";"], backgroundColor, `${borderWidth}px solid ${borderColor}`);
3329
- }, ({
3330
- theme,
3331
- $hasLabel
3332
- }) => {
3333
- if (!$hasLabel) return '0px';
3334
- return `${theme.kitt.spacing * 2.5}px;`;
3335
- });
3336
- function Checkbox({
3337
- onChange,
3338
- onBlur,
3339
- onFocus,
3339
+ function getBackgroundColor$1({
3340
+ isDisabled,
3341
+ isPressed,
3342
+ isHovered,
3343
+ isFocused,
3344
+ isChecked
3345
+ }) {
3346
+ if (isChecked) return 'kitt.forms.checkbox.checked.backgroundColor';
3347
+ if (isDisabled) return 'kitt.forms.checkbox.disabled.backgroundColor';
3348
+ if (isPressed) return 'kitt.forms.checkbox.pressed.backgroundColor';
3349
+ if (isHovered) return 'kitt.forms.checkbox.hover.backgroundColor';
3350
+ if (isFocused) return 'kitt.forms.checkbox.focus.backgroundColor';
3351
+ return 'kitt.forms.checkbox.default.backgroundColor';
3352
+ }
3353
+
3354
+ function getBorderColor$1({
3355
+ isDisabled,
3356
+ isPressed,
3357
+ isHovered,
3358
+ isFocused,
3359
+ isChecked
3360
+ }) {
3361
+ if (isChecked) return 'kitt.forms.checkbox.checked.borderColor';
3362
+ if (isDisabled) return 'kitt.forms.checkbox.disabled.borderColor';
3363
+ if (isPressed) return 'kitt.forms.checkbox.pressed.borderColor';
3364
+ if (isHovered) return 'kitt.forms.checkbox.hover.borderColor';
3365
+ if (isFocused) return 'kitt.forms.checkbox.focus.borderColor';
3366
+ return 'kitt.forms.checkbox.default.borderColor';
3367
+ }
3368
+
3369
+ const Checkbox = /*#__PURE__*/React.forwardRef(({
3340
3370
  checked,
3341
3371
  hitSlop = 40,
3342
3372
  id,
3343
- children
3344
- }) {
3373
+ children,
3374
+ disabled,
3375
+ onChange,
3376
+ onBlur,
3377
+ onFocus
3378
+ }, ref) => {
3345
3379
  const theme = useKittTheme();
3346
- return /*#__PURE__*/jsxRuntime.jsxs(CheckboxAndLabelPressableWrapper, {
3380
+ return /*#__PURE__*/jsxRuntime.jsx(Pressable, {
3381
+ ref: ref,
3382
+ testID: id,
3347
3383
  accessibilityRole: "checkbox",
3348
3384
  accessibilityState: {
3349
3385
  checked
3350
3386
  },
3351
3387
  hitSlop: hitSlop,
3388
+ disabled: disabled,
3352
3389
  onPress: e => {
3353
3390
  if (onFocus) onFocus(e);
3354
3391
  if (onChange) onChange(!checked, e);
3355
3392
  if (onBlur) onBlur(e);
3356
3393
  },
3357
- children: [/*#__PURE__*/jsxRuntime.jsx(CheckboxContainer, {
3358
- $isChecked: checked,
3359
- $hasLabel: !!children,
3360
- testID: id,
3361
- children: checked ? /*#__PURE__*/jsxRuntime.jsx(Icon, {
3362
- align: "center",
3363
- color: theme.kitt.forms.checkbox.markColor,
3364
- size: theme.kitt.forms.checkbox.iconSize,
3365
- icon: /*#__PURE__*/jsxRuntime.jsx(kittIcons.CheckboxMark, {})
3366
- }) : null
3367
- }), children]
3394
+ children: ({
3395
+ isHovered,
3396
+ isPressed,
3397
+ isFocused
3398
+ }) => /*#__PURE__*/jsxRuntime.jsxs(HStack, {
3399
+ space: children ? 'kitt.forms.checkbox.textSpacing' : undefined,
3400
+ children: [/*#__PURE__*/jsxRuntime.jsx(View, {
3401
+ display: "flex",
3402
+ flexDirection: "row",
3403
+ alignItems: "center",
3404
+ justifyContent: "center",
3405
+ marginTop: children ? 'kitt.1' : undefined,
3406
+ height: "kitt.forms.checkbox.height",
3407
+ width: "kitt.forms.checkbox.width",
3408
+ borderRadius: "kitt.forms.checkbox.borderRadius",
3409
+ borderWidth: "kitt.forms.checkbox.borderWidth",
3410
+ borderColor: getBorderColor$1({
3411
+ isDisabled: disabled,
3412
+ isFocused,
3413
+ isHovered,
3414
+ isPressed,
3415
+ isChecked: checked
3416
+ }),
3417
+ backgroundColor: getBackgroundColor$1({
3418
+ isDisabled: disabled,
3419
+ isFocused,
3420
+ isHovered,
3421
+ isPressed,
3422
+ isChecked: checked
3423
+ }),
3424
+ _web: {
3425
+ style: {
3426
+ transitionDuration: theme.kitt.forms.checkbox.transition.duration,
3427
+ transitionProperty: 'all',
3428
+ transitionTimingFunction: theme.kitt.forms.checkbox.transition.timingFunction
3429
+ }
3430
+ },
3431
+ children: /*#__PURE__*/jsxRuntime.jsx(View, {
3432
+ opacity: checked ? 1 : 0,
3433
+ _web: {
3434
+ style: {
3435
+ transitionDuration: theme.kitt.forms.checkbox.transition.duration,
3436
+ transitionProperty: 'opacity',
3437
+ transitionTimingFunction: theme.kitt.forms.checkbox.transition.timingFunction
3438
+ }
3439
+ },
3440
+ children: /*#__PURE__*/jsxRuntime.jsx(Icon, {
3441
+ align: "center",
3442
+ color: theme.kitt.forms.checkbox.markColor,
3443
+ size: theme.kitt.forms.checkbox.iconSize,
3444
+ icon: /*#__PURE__*/jsxRuntime.jsx(kittIcons.CheckboxMark, {})
3445
+ })
3446
+ })
3447
+ }), children ? /*#__PURE__*/jsxRuntime.jsx(View, {
3448
+ flexShrink: 1,
3449
+ children: children
3450
+ }) : null]
3451
+ })
3368
3452
  });
3369
- }
3453
+ });
3370
3454
 
3371
3455
  function prefixWithZero(value, maxLength = 2) {
3372
3456
  return `${value}`.padStart(maxLength, '0');
@@ -3678,7 +3762,8 @@ const InputPart = /*#__PURE__*/React.forwardRef(({
3678
3762
  isHoveredInternal,
3679
3763
  isPressedInternal,
3680
3764
  onChange,
3681
- onBlur
3765
+ onBlur,
3766
+ onSubmitEditing
3682
3767
  }, ref) => {
3683
3768
  return /*#__PURE__*/jsxRuntime.jsx(InputText, {
3684
3769
  ref: ref,
@@ -3694,7 +3779,8 @@ const InputPart = /*#__PURE__*/React.forwardRef(({
3694
3779
  keyboardType: "numeric",
3695
3780
  textAlign: "center",
3696
3781
  onChange: onChange,
3697
- onBlur: onBlur
3782
+ onBlur: onBlur,
3783
+ onSubmitEditing: onSubmitEditing
3698
3784
  });
3699
3785
  });
3700
3786
 
@@ -3711,7 +3797,7 @@ function PartContainer({
3711
3797
  });
3712
3798
  }
3713
3799
 
3714
- function KeyboardDatePicker({
3800
+ const KeyboardDatePicker = /*#__PURE__*/React.forwardRef(({
3715
3801
  value,
3716
3802
  testID,
3717
3803
  id,
@@ -3726,9 +3812,9 @@ function KeyboardDatePicker({
3726
3812
  onChange,
3727
3813
  onBlur,
3728
3814
  onFocus,
3815
+ onSubmitEditing,
3729
3816
  ...props
3730
- }) {
3731
- const dayRef = React.useRef(null);
3817
+ }, ref) => {
3732
3818
  const monthRef = React.useRef(null);
3733
3819
  const yearRef = React.useRef(null);
3734
3820
  const defaultValue = value;
@@ -3764,7 +3850,7 @@ function KeyboardDatePicker({
3764
3850
  isStretch: stretch,
3765
3851
  width: "kitt.forms.datePicker.day.minWidth",
3766
3852
  children: /*#__PURE__*/jsxRuntime.jsx(InputPart, {
3767
- ref: dayRef,
3853
+ ref: ref,
3768
3854
  ...sharedInputPartProps,
3769
3855
  placeholder: placeholder?.day,
3770
3856
  value: state.displayedDay,
@@ -3780,7 +3866,10 @@ function KeyboardDatePicker({
3780
3866
  },
3781
3867
  onBlur: () => dispatch({
3782
3868
  type: 'day-blur'
3783
- })
3869
+ }),
3870
+ onSubmitEditing: () => {
3871
+ if (monthRef.current) monthRef.current.focus();
3872
+ }
3784
3873
  })
3785
3874
  }), /*#__PURE__*/jsxRuntime.jsx(PartContainer, {
3786
3875
  isStretch: stretch,
@@ -3802,7 +3891,10 @@ function KeyboardDatePicker({
3802
3891
  },
3803
3892
  onBlur: () => dispatch({
3804
3893
  type: 'month-blur'
3805
- })
3894
+ }),
3895
+ onSubmitEditing: () => {
3896
+ if (yearRef.current) yearRef.current.focus();
3897
+ }
3806
3898
  })
3807
3899
  }), /*#__PURE__*/jsxRuntime.jsx(PartContainer, {
3808
3900
  isStretch: stretch,
@@ -3820,14 +3912,15 @@ function KeyboardDatePicker({
3820
3912
  },
3821
3913
  onBlur: () => dispatch({
3822
3914
  type: 'year-blur'
3823
- })
3915
+ }),
3916
+ onSubmitEditing: onSubmitEditing
3824
3917
  })
3825
3918
  })]
3826
3919
  })
3827
3920
  });
3828
- }
3921
+ });
3829
3922
 
3830
- function PressableDateInputs({
3923
+ const PressableDateInputs = /*#__PURE__*/React.forwardRef(({
3831
3924
  disabled,
3832
3925
  stretch,
3833
3926
  id,
@@ -3838,7 +3931,7 @@ function PressableDateInputs({
3838
3931
  isHoveredInternal,
3839
3932
  isPressedInternal,
3840
3933
  onPress
3841
- }) {
3934
+ }, ref) => {
3842
3935
  const sharedInputPartProps = {
3843
3936
  isFocusedInternal,
3844
3937
  isHoveredInternal,
@@ -3846,6 +3939,7 @@ function PressableDateInputs({
3846
3939
  disabled
3847
3940
  };
3848
3941
  return /*#__PURE__*/jsxRuntime.jsx(Pressable, {
3942
+ ref: ref,
3849
3943
  display: "flex",
3850
3944
  flexDirection: "row",
3851
3945
  position: "relative",
@@ -3895,9 +3989,9 @@ function PressableDateInputs({
3895
3989
  })]
3896
3990
  })
3897
3991
  });
3898
- }
3992
+ });
3899
3993
 
3900
- function DatePickerAndroid({
3994
+ const DatePickerAndroid = /*#__PURE__*/React.forwardRef(({
3901
3995
  onBlur,
3902
3996
  onFocus,
3903
3997
  pickerDefaultDate,
@@ -3906,7 +4000,7 @@ function DatePickerAndroid({
3906
4000
  value,
3907
4001
  onChange,
3908
4002
  ...props
3909
- }) {
4003
+ }, ref) => {
3910
4004
  const [isFocused, setIsFocused] = React.useState(false);
3911
4005
  const [currentValue, setCurrentValue] = React.useState(value);
3912
4006
  const handleClose = () => {
@@ -3938,12 +4032,13 @@ function DatePickerAndroid({
3938
4032
  // eslint-disable-next-line react-hooks/exhaustive-deps
3939
4033
  }, []);
3940
4034
  return /*#__PURE__*/jsxRuntime.jsx(PressableDateInputs, {
4035
+ ref: ref,
3941
4036
  value: currentValue,
3942
4037
  isFocusedInternal: isFocused,
3943
4038
  onPress: handleModalOpen,
3944
4039
  ...props
3945
4040
  });
3946
- }
4041
+ });
3947
4042
 
3948
4043
  const BodyView = /*#__PURE__*/styled__default.View.withConfig({
3949
4044
  displayName: "Body__BodyView",
@@ -4403,7 +4498,7 @@ function ModalPlatformDateTimePicker({
4403
4498
  });
4404
4499
  }
4405
4500
 
4406
- function DefaultNativeUIDatePicker({
4501
+ const DefaultNativeUIDatePicker = /*#__PURE__*/React.forwardRef(({
4407
4502
  value,
4408
4503
  pickerUITestID,
4409
4504
  pickerUITitle,
@@ -4417,7 +4512,7 @@ function DefaultNativeUIDatePicker({
4417
4512
  onFocus,
4418
4513
  onBlur,
4419
4514
  ...props
4420
- }) {
4515
+ }, ref) => {
4421
4516
  const [isPickerUIVisible, setIsPickerUIVisible] = React.useState(isDefaultVisible);
4422
4517
  const [isFocused, setIsFocused] = React.useState(false);
4423
4518
  const [currentValue, setCurrentValue] = React.useState(value);
@@ -4428,6 +4523,7 @@ function DefaultNativeUIDatePicker({
4428
4523
  };
4429
4524
  return /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
4430
4525
  children: [/*#__PURE__*/jsxRuntime.jsx(PressableDateInputs, {
4526
+ ref: ref,
4431
4527
  value: currentValue,
4432
4528
  isFocusedInternal: isFocused || isFocusedInternal,
4433
4529
  isHoveredInternal: isHoveredInternal,
@@ -4453,9 +4549,9 @@ function DefaultNativeUIDatePicker({
4453
4549
  }
4454
4550
  })]
4455
4551
  });
4456
- }
4552
+ });
4457
4553
 
4458
- function NativeUIDatePicker({
4554
+ const NativeUIDatePicker = /*#__PURE__*/React.forwardRef(({
4459
4555
  value,
4460
4556
  pickerUITestID,
4461
4557
  isDefaultVisible,
@@ -4463,9 +4559,10 @@ function NativeUIDatePicker({
4463
4559
  onChange,
4464
4560
  onBlur,
4465
4561
  ...props
4466
- }) {
4562
+ }, ref) => {
4467
4563
  if (reactNative.Platform.OS === 'android') {
4468
4564
  return /*#__PURE__*/jsxRuntime.jsx(DatePickerAndroid, {
4565
+ ref: ref,
4469
4566
  pickerDefaultDate: pickerDefaultDate,
4470
4567
  pickerUITestID: pickerUITestID,
4471
4568
  isDefaultVisible: isDefaultVisible,
@@ -4476,6 +4573,7 @@ function NativeUIDatePicker({
4476
4573
  });
4477
4574
  }
4478
4575
  return /*#__PURE__*/jsxRuntime.jsx(DefaultNativeUIDatePicker, {
4576
+ ref: ref,
4479
4577
  value: value,
4480
4578
  isDefaultVisible: isDefaultVisible,
4481
4579
  pickerUITestID: pickerUITestID,
@@ -4483,36 +4581,41 @@ function NativeUIDatePicker({
4483
4581
  onBlur: onBlur,
4484
4582
  ...props
4485
4583
  });
4486
- }
4584
+ });
4487
4585
 
4488
- function DatePicker({
4586
+ const DatePicker = /*#__PURE__*/React.forwardRef(({
4489
4587
  fillMode = 'native',
4490
4588
  value,
4589
+ onSubmitEditing,
4491
4590
  ...props
4492
- }) {
4591
+ }, ref) => {
4493
4592
  // in apps, final-form can give a string value that will break the component
4494
4593
  const currentValue = value || undefined;
4495
4594
  if (fillMode === 'keyboard') {
4496
4595
  return /*#__PURE__*/jsxRuntime.jsx(KeyboardDatePicker, {
4596
+ ref: ref,
4497
4597
  ...props,
4498
- value: currentValue
4598
+ value: currentValue,
4599
+ onSubmitEditing: onSubmitEditing
4499
4600
  });
4500
4601
  }
4501
4602
  return /*#__PURE__*/jsxRuntime.jsx(NativeUIDatePicker, {
4603
+ ref: ref,
4502
4604
  ...props,
4503
4605
  value: currentValue
4504
4606
  });
4505
- }
4607
+ });
4506
4608
 
4507
- function InputEmail(props) {
4609
+ const InputEmail = /*#__PURE__*/React.forwardRef((props, ref) => {
4508
4610
  return /*#__PURE__*/jsxRuntime.jsx(InputText, {
4611
+ ref: ref,
4509
4612
  autoComplete: "email",
4510
4613
  keyboardType: "email-address",
4511
4614
  textContentType: "emailAddress",
4512
4615
  autoCapitalize: "none",
4513
4616
  ...props
4514
4617
  });
4515
- }
4618
+ });
4516
4619
 
4517
4620
  const getColorFromState = state => {
4518
4621
  switch (state) {
@@ -4594,13 +4697,14 @@ function InputPressable({
4594
4697
  });
4595
4698
  }
4596
4699
 
4597
- function InputPassword({
4700
+ const InputPassword = /*#__PURE__*/React.forwardRef(({
4598
4701
  isPasswordDefaultVisible,
4599
4702
  right,
4600
4703
  ...props
4601
- }) {
4704
+ }, ref) => {
4602
4705
  const [isVisible, setIsVisible] = React.useState(Boolean(isPasswordDefaultVisible));
4603
4706
  return /*#__PURE__*/jsxRuntime.jsx(InputText, {
4707
+ ref: ref,
4604
4708
  ...props,
4605
4709
  textContentType: "password",
4606
4710
  autoComplete: "password",
@@ -4615,16 +4719,17 @@ function InputPassword({
4615
4719
  })
4616
4720
  })
4617
4721
  });
4618
- }
4722
+ });
4619
4723
 
4620
- function InputPhone(props) {
4724
+ const InputPhone = /*#__PURE__*/React.forwardRef((props, ref) => {
4621
4725
  return /*#__PURE__*/jsxRuntime.jsx(InputText, {
4726
+ ref: ref,
4622
4727
  ...props,
4623
4728
  autoComplete: "tel",
4624
4729
  keyboardType: "number-pad",
4625
4730
  textContentType: "telephoneNumber"
4626
4731
  });
4627
- }
4732
+ });
4628
4733
 
4629
4734
  const getTypographyColor = type => type ? 'white' : 'black';
4630
4735
  const InputTagContainer = /*#__PURE__*/styled__default(reactNative.View).withConfig({
@@ -4688,86 +4793,154 @@ function Label({
4688
4793
  });
4689
4794
  }
4690
4795
 
4691
- const OuterRadio = /*#__PURE__*/styled__default.View.withConfig({
4692
- displayName: "Radio__OuterRadio",
4693
- componentId: "kitt-universal__sc-1mdgr2o-0"
4694
- })(["background-color:", ";width:", "px;height:", "px;border-radius:", "px;border-width:", "px;border-color:", ";"], ({
4695
- theme,
4696
- disabled
4697
- }) => theme.kitt.forms.radio[disabled ? 'disabled' : 'unchecked'].backgroundColor, ({
4698
- theme
4699
- }) => theme.kitt.forms.radio.size, ({
4700
- theme
4701
- }) => theme.kitt.forms.radio.size, ({
4702
- theme
4703
- }) => theme.kitt.forms.radio.size / 2, ({
4704
- theme
4705
- }) => theme.kitt.forms.radio.unchecked.borderWidth, ({
4706
- theme,
4707
- disabled
4708
- }) => theme.kitt.forms.radio[disabled ? 'disabled' : 'unchecked'].borderColor);
4709
- const SelectedOuterRadio = /*#__PURE__*/styled__default.View.withConfig({
4710
- displayName: "Radio__SelectedOuterRadio",
4711
- componentId: "kitt-universal__sc-1mdgr2o-1"
4712
- })(["background-color:", ";width:", "px;height:", "px;border-radius:", "px;justify-content:center;align-items:center;"], ({
4713
- theme
4714
- }) => theme.kitt.forms.radio.checked.backgroundColor, ({
4715
- theme
4716
- }) => theme.kitt.forms.radio.size, ({
4717
- theme
4718
- }) => theme.kitt.forms.radio.size, ({
4719
- theme
4720
- }) => theme.kitt.forms.radio.size / 2);
4721
- const SelectedInnerRadio = /*#__PURE__*/styled__default.View.withConfig({
4722
- displayName: "Radio__SelectedInnerRadio",
4723
- componentId: "kitt-universal__sc-1mdgr2o-2"
4724
- })(["background-color:", ";width:", "px;height:", "px;border-radius:", "px;"], ({
4725
- theme
4726
- }) => theme.kitt.forms.radio.checked.innerBackgroundColor, ({
4727
- theme
4728
- }) => theme.kitt.forms.radio.checked.innerSize, ({
4729
- theme
4730
- }) => theme.kitt.forms.radio.checked.innerSize, ({
4731
- theme
4732
- }) => theme.kitt.forms.radio.checked.innerSize / 2);
4733
- const Container$3 = /*#__PURE__*/styled__default.Pressable.withConfig({
4734
- displayName: "Radio__Container",
4735
- componentId: "kitt-universal__sc-1mdgr2o-3"
4736
- })(["flex-direction:row;align-items:center;"]);
4737
- const Text = /*#__PURE__*/styled__default(Typography.Text).withConfig({
4738
- displayName: "Radio__Text",
4739
- componentId: "kitt-universal__sc-1mdgr2o-4"
4740
- })(["margin-left:", "px;"], ({
4741
- theme
4742
- }) => theme.kitt.spacing * 2);
4743
- function Radio({
4796
+ function InnerCircle({
4797
+ isChecked
4798
+ }) {
4799
+ const theme = /*#__PURE__*/styled.useTheme();
4800
+ const sharedTransform = [{
4801
+ scale: isChecked ? 1 : 0
4802
+ }];
4803
+ return /*#__PURE__*/jsxRuntime.jsx(View, {
4804
+ width: "kitt.forms.radio.innerCircle.size",
4805
+ height: "kitt.forms.radio.innerCircle.size",
4806
+ borderRadius: "kitt.forms.radio.innerCircle.borderRadius",
4807
+ backgroundColor: "kitt.forms.radio.innerCircle.backgroundColor",
4808
+ _web: {
4809
+ style: {
4810
+ transform: sharedTransform,
4811
+ transitionProperty: 'all',
4812
+ transitionDuration: theme.kitt.forms.radio.transition.duration,
4813
+ transitionTimingFunction: theme.kitt.forms.radio.transition.timingFunction
4814
+ }
4815
+ },
4816
+ _ios: {
4817
+ style: {
4818
+ transform: sharedTransform
4819
+ }
4820
+ },
4821
+ _android: {
4822
+ style: {
4823
+ transform: sharedTransform
4824
+ }
4825
+ }
4826
+ });
4827
+ }
4828
+
4829
+ function getBackgroundColor({
4830
+ isDisabled,
4831
+ isPressed,
4832
+ isHovered,
4833
+ isFocused,
4834
+ isChecked
4835
+ }) {
4836
+ if (isChecked) return 'kitt.forms.radio.checked.backgroundColor';
4837
+ if (isDisabled) return 'kitt.forms.radio.disabled.backgroundColor';
4838
+ if (isPressed) return 'kitt.forms.radio.pressed.backgroundColor';
4839
+ if (isHovered) return 'kitt.forms.radio.hover.backgroundColor';
4840
+ if (isFocused) return 'kitt.forms.radio.focus.backgroundColor';
4841
+ return 'kitt.forms.radio.default.backgroundColor';
4842
+ }
4843
+
4844
+ function getBorderColor({
4845
+ isDisabled,
4846
+ isPressed,
4847
+ isHovered,
4848
+ isFocused,
4849
+ isChecked
4850
+ }) {
4851
+ if (isChecked) return 'kitt.forms.radio.checked.borderColor';
4852
+ if (isDisabled) return 'kitt.forms.radio.disabled.borderColor';
4853
+ if (isPressed) return 'kitt.forms.radio.pressed.borderColor';
4854
+ if (isHovered) return 'kitt.forms.radio.hover.borderColor';
4855
+ if (isFocused) return 'kitt.forms.radio.focus.borderColor';
4856
+ return 'kitt.forms.radio.default.borderColor';
4857
+ }
4858
+
4859
+ function OuterCircle({
4860
+ children,
4861
+ isChecked,
4862
+ isDisabled,
4863
+ isHovered,
4864
+ isFocused,
4865
+ isPressed
4866
+ }) {
4867
+ const theme = /*#__PURE__*/styled.useTheme();
4868
+ return /*#__PURE__*/jsxRuntime.jsx(View, {
4869
+ alignItems: "center",
4870
+ justifyContent: "center",
4871
+ borderWidth: "kitt.forms.radio.borderWidth",
4872
+ width: "kitt.forms.radio.size",
4873
+ height: "kitt.forms.radio.size",
4874
+ borderRadius: "kitt.forms.radio.borderRadius",
4875
+ backgroundColor: getBackgroundColor({
4876
+ isChecked,
4877
+ isDisabled,
4878
+ isFocused,
4879
+ isHovered,
4880
+ isPressed
4881
+ }),
4882
+ borderColor: getBorderColor({
4883
+ isChecked,
4884
+ isDisabled,
4885
+ isFocused,
4886
+ isHovered,
4887
+ isPressed
4888
+ }),
4889
+ _web: {
4890
+ style: {
4891
+ transitionProperty: 'all',
4892
+ transitionDuration: theme.kitt.forms.radio.transition.duration,
4893
+ transitionTimingFunction: theme.kitt.forms.radio.transition.timingFunction
4894
+ }
4895
+ },
4896
+ children: children
4897
+ });
4898
+ }
4899
+
4900
+ const Radio = /*#__PURE__*/React.forwardRef(({
4744
4901
  id,
4745
4902
  checked,
4746
4903
  onChange,
4747
4904
  value,
4748
- disabled = false,
4905
+ disabled,
4749
4906
  children
4750
- }) {
4751
- return /*#__PURE__*/jsxRuntime.jsxs(Container$3, {
4907
+ }, ref) => {
4908
+ return /*#__PURE__*/jsxRuntime.jsx(Pressable, {
4909
+ ref: ref,
4752
4910
  nativeID: id,
4753
4911
  disabled: disabled,
4754
4912
  accessibilityRole: "radio",
4755
4913
  "aria-checked": checked,
4756
4914
  focusable: checked && !disabled,
4915
+ flexDirection: "row",
4916
+ alignItems: "center",
4757
4917
  onPress: () => {
4758
4918
  onChange(value);
4759
4919
  },
4760
- children: [checked && !disabled ? /*#__PURE__*/jsxRuntime.jsx(SelectedOuterRadio, {
4761
- children: /*#__PURE__*/jsxRuntime.jsx(SelectedInnerRadio, {})
4762
- }) : /*#__PURE__*/jsxRuntime.jsx(OuterRadio, {
4763
- disabled: disabled
4764
- }), /*#__PURE__*/jsxRuntime.jsx(Text, {
4765
- base: "body",
4766
- color: disabled ? 'black-light' : 'black',
4767
- children: children
4768
- })]
4920
+ children: ({
4921
+ isHovered,
4922
+ isPressed,
4923
+ isFocused
4924
+ }) => /*#__PURE__*/jsxRuntime.jsxs(HStack, {
4925
+ space: children ? 'kitt.2' : undefined,
4926
+ alignItems: "center",
4927
+ children: [/*#__PURE__*/jsxRuntime.jsx(OuterCircle, {
4928
+ isChecked: checked,
4929
+ isDisabled: disabled,
4930
+ isHovered: isHovered,
4931
+ isFocused: isFocused,
4932
+ isPressed: isPressed,
4933
+ children: /*#__PURE__*/jsxRuntime.jsx(InnerCircle, {
4934
+ isChecked: checked
4935
+ })
4936
+ }), children ? /*#__PURE__*/jsxRuntime.jsx(Typography.Text, {
4937
+ base: "body",
4938
+ color: disabled ? 'black-light' : 'black',
4939
+ children: children
4940
+ }) : null]
4941
+ })
4769
4942
  });
4770
- }
4943
+ });
4771
4944
 
4772
4945
  const StyledAnimatedView = /*#__PURE__*/styled__default(Animated__default.View).withConfig({
4773
4946
  displayName: "AnimatedContainer__StyledAnimatedView",
@@ -5063,17 +5236,17 @@ function RadioButtonGroup({
5063
5236
  }
5064
5237
  RadioButtonGroup.RadioButton = RadioButtonGroupItem;
5065
5238
 
5066
- function TextArea({
5239
+ const TextArea = /*#__PURE__*/React.forwardRef(({
5067
5240
  ...props
5068
- }) {
5069
- const theme = /*#__PURE__*/styled.useTheme();
5241
+ }, ref) => {
5070
5242
  return /*#__PURE__*/jsxRuntime.jsx(InputText, {
5243
+ ref: ref,
5071
5244
  multiline: true,
5072
5245
  textAlignVertical: "top",
5073
- minHeight: theme.kitt.forms.textArea.minHeight,
5246
+ minHeight: "kitt.forms.textArea.minHeight",
5074
5247
  ...props
5075
5248
  });
5076
- }
5249
+ });
5077
5250
 
5078
5251
  function Highlight({
5079
5252
  variant = 'regular',
@@ -5607,9 +5780,13 @@ function Message({
5607
5780
  }
5608
5781
 
5609
5782
  const createKittSpaces = spacing => {
5610
- const sizes = {};
5783
+ const sizes = {
5784
+ positive: {},
5785
+ negative: {}
5786
+ };
5611
5787
  for (let size = 1; size <= 64; size++) {
5612
- sizes[`kitt.${size}`] = size * spacing;
5788
+ sizes.positive[`kitt.${size}`] = size * spacing;
5789
+ sizes.negative[`-kitt.${size}`] = -size * spacing;
5613
5790
  }
5614
5791
  return sizes;
5615
5792
  };
@@ -5656,10 +5833,62 @@ function createKittNativeBaseCustomTheme(theme, appTheme) {
5656
5833
  backgroundColor: theme.forms.radioButtonGroup.item.backgroundColor
5657
5834
  }
5658
5835
  },
5659
- skeleton: {
5660
- backgroundColor: theme.skeleton.backgroundColor,
5661
- flareColor: theme.skeleton.flareColor
5836
+ checkbox: {
5837
+ markColor: theme.forms.checkbox.markColor,
5838
+ checked: {
5839
+ backgroundColor: theme.forms.checkbox.checked.backgroundColor,
5840
+ borderColor: theme.forms.checkbox.checked.borderColor
5841
+ },
5842
+ hover: {
5843
+ backgroundColor: theme.forms.checkbox.hover.backgroundColor,
5844
+ borderColor: theme.forms.checkbox.hover.borderColor
5845
+ },
5846
+ pressed: {
5847
+ backgroundColor: theme.forms.checkbox.pressed.backgroundColor,
5848
+ borderColor: theme.forms.checkbox.pressed.borderColor
5849
+ },
5850
+ focus: {
5851
+ backgroundColor: theme.forms.checkbox.focus.backgroundColor,
5852
+ borderColor: theme.forms.checkbox.focus.borderColor
5853
+ },
5854
+ default: {
5855
+ backgroundColor: theme.forms.checkbox.default.backgroundColor,
5856
+ borderColor: theme.forms.checkbox.default.borderColor
5857
+ }
5858
+ },
5859
+ radio: {
5860
+ checked: {
5861
+ backgroundColor: theme.forms.radio.checked.backgroundColor,
5862
+ borderColor: theme.forms.radio.checked.borderColor
5863
+ },
5864
+ hover: {
5865
+ backgroundColor: theme.forms.radio.hover.backgroundColor,
5866
+ borderColor: theme.forms.radio.hover.borderColor
5867
+ },
5868
+ pressed: {
5869
+ backgroundColor: theme.forms.radio.pressed.backgroundColor,
5870
+ borderColor: theme.forms.radio.pressed.borderColor
5871
+ },
5872
+ focus: {
5873
+ backgroundColor: theme.forms.radio.pressed.backgroundColor,
5874
+ borderColor: theme.forms.radio.pressed.borderColor
5875
+ },
5876
+ disabled: {
5877
+ backgroundColor: theme.forms.radio.disabled.backgroundColor,
5878
+ borderColor: theme.forms.radio.disabled.borderColor
5879
+ },
5880
+ default: {
5881
+ backgroundColor: theme.forms.radio.unchecked.backgroundColor,
5882
+ borderColor: theme.forms.radio.unchecked.borderColor
5883
+ },
5884
+ innerCircle: {
5885
+ backgroundColor: theme.forms.radio.checked.innerBackgroundColor
5886
+ }
5662
5887
  }
5888
+ },
5889
+ skeleton: {
5890
+ backgroundColor: theme.skeleton.backgroundColor,
5891
+ flareColor: theme.skeleton.flareColor
5663
5892
  }
5664
5893
  },
5665
5894
  app: appTheme?.colors
@@ -5672,7 +5901,7 @@ function createKittNativeBaseCustomTheme(theme, appTheme) {
5672
5901
  xl: Number.MAX_SAFE_INTEGER,
5673
5902
  xs: Number.MAX_SAFE_INTEGER,
5674
5903
  // Allow values like kitt.X
5675
- ...spaces,
5904
+ ...spaces.positive,
5676
5905
  kitt: {
5677
5906
  avatar: {
5678
5907
  borderRadius: theme.avatar.borderRadius,
@@ -5701,6 +5930,15 @@ function createKittNativeBaseCustomTheme(theme, appTheme) {
5701
5930
  item: {
5702
5931
  borderRadius: theme.forms.radioButtonGroup.item.borderRadius
5703
5932
  }
5933
+ },
5934
+ checkbox: {
5935
+ borderRadius: theme.forms.checkbox.borderRadius
5936
+ },
5937
+ radio: {
5938
+ borderRadius: theme.forms.radio.size * 0.5,
5939
+ innerCircle: {
5940
+ borderRadius: theme.forms.radio.checked.innerSize * 0.5
5941
+ }
5704
5942
  }
5705
5943
  },
5706
5944
  tooltip: {
@@ -5735,6 +5973,12 @@ function createKittNativeBaseCustomTheme(theme, appTheme) {
5735
5973
  item: {
5736
5974
  borderWidth: theme.forms.radioButtonGroup.item.borderWidth
5737
5975
  }
5976
+ },
5977
+ checkbox: {
5978
+ borderWidth: theme.forms.checkbox.borderWidth
5979
+ },
5980
+ radio: {
5981
+ borderWidth: theme.forms.radio.unchecked.borderWidth
5738
5982
  }
5739
5983
  },
5740
5984
  cardModal: {
@@ -5749,7 +5993,8 @@ function createKittNativeBaseCustomTheme(theme, appTheme) {
5749
5993
  app: appTheme?.borderWidths
5750
5994
  },
5751
5995
  sizes: {
5752
- ...spaces,
5996
+ ...spaces.positive,
5997
+ ...spaces.negative,
5753
5998
  ...overridenNativeBaseSizeandSpaceScale,
5754
5999
  kitt: {
5755
6000
  avatar: {
@@ -5796,6 +6041,21 @@ function createKittNativeBaseCustomTheme(theme, appTheme) {
5796
6041
  item: {
5797
6042
  minHeight: theme.forms.radioButtonGroup.item.minHeight
5798
6043
  }
6044
+ },
6045
+ checkbox: {
6046
+ height: theme.forms.checkbox.height,
6047
+ width: theme.forms.checkbox.width,
6048
+ iconSize: theme.forms.checkbox.iconSize,
6049
+ textSpacing: theme.forms.checkbox.textSpacing
6050
+ },
6051
+ radio: {
6052
+ size: theme.forms.radio.size,
6053
+ innerCircle: {
6054
+ size: theme.forms.radio.checked.innerSize
6055
+ }
6056
+ },
6057
+ textArea: {
6058
+ minHeight: theme.forms.textArea.minHeight
5799
6059
  }
5800
6060
  },
5801
6061
  iconButton: {
@@ -5825,7 +6085,8 @@ function createKittNativeBaseCustomTheme(theme, appTheme) {
5825
6085
  app: appTheme?.sizes
5826
6086
  },
5827
6087
  space: {
5828
- ...spaces,
6088
+ ...spaces.positive,
6089
+ ...spaces.negative,
5829
6090
  ...overridenNativeBaseSizeandSpaceScale,
5830
6091
  kitt: {
5831
6092
  button: {